3

阿罗哈,

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

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

我想打印所有列的名称。因此我使用了以下语句(我正在遍历所有非唯一约束):

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

但是,当我运行我的 Ant 构建文件时,它会输出以下内容:

错误![ERR 0510][ERR XTSE0090] 指定了非法属性“分隔符”

我查找错误并找到以下描述:

[ERR XTSE0090] 如果 XSLT 命名空间中的元素具有其命名空间为 null(即,具有无前缀名称的属性)或 XSLT 命名空间的属性,而不是为此中的元素定义的属性,这是一个静态错误文档。

尽管如此,我还是看到了许多使用分隔符属性的示例,例如这里

我该如何解决这个问题?

干杯

4

2 回答 2

4

查看版本属性上的样式表元素 - 在 xsl:value-of 启用属性“分隔符”应该是 2.0

<xsl:stylesheet version="2.0"...
于 2013-08-23T13:56:53.977 回答
3

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

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

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

于 2013-08-23T18:19:57.103 回答