XSLT 2.0破坏了我的样式表



我有一个1.0版的样式表。我需要转换到2.0版本,以利用一些额外的特性。但是现在,当我使用下面的语法时,我得到了所有的结果,而不仅仅是第一个结果。这在v1.0中有效,但在v2.0中不起作用:

//elementName[1]

有一个简单的解决方案吗?

XPath将在两个版本中返回相同的节点(即文档中的所有elementName元素,它们是在各自的父元素中具有该名称的第一个子元素),但是

<xsl:value-of select="//elementName[1]"/>

将给出不同的结果。在XSLT 1.0中,当给定一组节点时,value-of的行为是按文档顺序输出该集合中第一个节点的值,而忽略其他节点,但在2.0中,它将输出所有的值,以空格分隔。如果你想限制序列中的第一项,你应该明确地使用(....)[1]

是的,解决方法很简单…

(//elementName)[1]

这将给你第一个出现。前面的xpath是其父节点的第一个elementName子节点的每个elementName

规范中的一个好例子:

注意:位置路径//para[1] 的含义相同位置路径/后代::para[1]。后者选择前者后代元素;前者选择所有的后代段父元素的第一段子元素。

相关内容

  • 没有找到相关文章

最新更新