0

我想在文档中的任何位置选择与特定模式匹配的最后一个节点。

我正在尝试类似的东西

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:copy-of select="//node_name[last()]"/>
  </xsl:template>
</xsl:stylesheet>

但是,当在以下文档上使用 Saxon 9.4 运行它时:-

<a>
  <node_name attr="1"/>
  <b>
    <c>
    </c>
    <node_name attr="2"/>
  </b>
</a>

我在复制语句所在的位置得到这个输出:-

<node_name attr="1"/><node_name attr="2"/>

而我实际上想要输出: -

<node_name attr="2"/>

我在这里错过了什么?

此外,我的文档的性质是,我事先不知道该节点的确切路径是什么(因为它由一堆递归元素组成)。

4

1 回答 1

2

您不是在寻找node_name最后一个,而是在寻找所有节点名称中的最后一个。因此,以下 XPath 表达式应该可以工作:

(//node_name)[last()]
于 2013-03-28T21:24:49.103 回答