XSLT非法属性'separator'

时间:2013-08-23 13:47:45

标签: xslt xpath xslt-1.0 xslt-2.0

阿罗哈,

在编写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的元素的静态错误   命名空间有一个名称空间为null的属性   是,具有无前缀名称的属性)或XSLT名称空间,其他   而不是为本文档中的元素定义的属性。

尽管如此,我已经看过许多使用separator属性的例子,例如: here

我该如何解决这个问题?

干杯

2 个答案:

答案 0 :(得分:4)

查看版本属性上的stylesheet元素 - 在xsl:value-of

上启用属性“separator”应为2.0
<xsl:stylesheet version="2.0"...

答案 1 :(得分:3)

我认为你应该检查一下你正在运行的XSLT处理器。

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

要检查您正在使用的XSLT处理器,请使用XSLT system-property()函数编写消息。