使用XSLT选择整个文档中的最后一个元素

时间:2013-03-28 21:04:13

标签: xslt xpath xslt-2.0 saxon

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

我正在尝试像

这样的东西
<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"/>

我错过了什么?

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

1 个答案:

答案 0 :(得分:2)

您不是在寻找最后一个node_name,而是在寻找所有node_names中的最后一个。因此,以下XPath表达式应该起作用:

(//node_name)[last()]