2013-08-23 26 views
3

阿罗哈,XSLT非法属性“分隔符”

在写一个XSLT样式表,我遇到了一个问题,我解决不了。我的基本XML结构如下

<nonUniqueConstraint name = "..."> 
    <column name = "..."/> 
    <column name = "..."/> 
</nonUniqueConstraint> 

我想打印所有列的名称。所以我用下面的语句(我遍历所有nonUniqueConstraints):

<xsl:value-of select="./column/@name" separator=", "/> 

然而,当我运行Ant构建文件,它输出以下:

错误! [ERR 0510] [ERR XTSE0090]非法atttribute '分隔符' 是 指定

我寻找错误并发现了以下说明:

[ERR XTSE0090]这是一个静态错误从XSLT 命名空间的元件具有其名称空间或者是空的属性(即 是,与前缀的名称的属性)或XSLT命名空间,其他 比此文档中的元素定义的属性。

使用分离属性不过我看到许多实例中,例如here

我怎样才能解决这个问题?

干杯

回答

3

我想你应该检查你是哪个XSLT处理器运行。

的错误是有点奇怪,这是因为错误代码XTSE0090仅定义在XSLT 2.0,但XSLT 2.0允许分离器属性。 Jirka的答复只是部分正确。如果您正在运行XSLT 1.0处理器,它将始终拒绝分隔符属性,但不太可能使用XSLT 2.0错误代码XTSE0090。如果您运行的是2.0处理器,则无论样式表指定version =“1.0”还是version =“2.0”,它都应接受separator属性。所以有一些奇怪的事情发生。

要检查你使用的XSLT处理器,使用XSLT系统属性()函数来写一条消息。

+1

Jirka的回答使错误消失,但它只输出第一列元素的名称。 – slashburn

+1

处理器检查显示我只安装了XSLT处理器1.0。因此,在运行1.0处理器时指定版本2.0毫无用处。 – slashburn

4

看样式表元素的版本属性 - 它应该是2.0,使属性“分隔符”在XSL:value-of的

<xsl:stylesheet version="2.0"...