【问题标题】:XSLT Illegal attribute 'separator'XSLT 非法属性“分隔符”
【发布时间】:2013-08-26 14:29:33
【问题描述】:

阿罗哈,

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

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

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

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

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

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

查找错误,发现如下描述:

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

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

我该如何解决这个问题?

干杯

【问题讨论】:

    标签: xslt xpath xslt-1.0 xslt-2.0


    【解决方案1】:

    我认为您应该检查您正在运行的 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() 函数来编写消息。

    【讨论】:

    • Jirka 的回答使错误消失,但它只输出第一列元素的名称。
    • 处理器检查显示我只安装了 XSLT 处理器 1.0。所以在运行 1.0 处理器时指定 2.0 版本是没有用的。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2015-01-02
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      相关资源
      最近更新 更多