XPath到达所有等于当前节点的节点?

时间:2017-02-21 19:37:21

标签: xslt xpath

在XML文件中,我有一些代码部分如下所示:

<index indexName="Mots-matière">
  <term anchor="d0e7624">apprentissage automatique</term>
</index>

因此,例如,我尝试收集<term>apprentissage automatique</term>属性的元素有很多@anchor

选择所有与当前节点相同的节点的好方法是什么?

我想到这样的事情,但我确实想念一些事情:

<xsl:for-each select="current() = //term">
  <xsl:value-of select="term/@anchor"/>
</xsl:for-each>

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的语法就是这个..

<xsl:for-each select="//term[. = current()]">
       <xsl:value-of select="@anchor"/>
</xsl:for-each>

请注意,在这种情况下,您只需要选择@anchor属性,因为您将位于term内的xsl:for-each元素上。

当然,只有当前节点是具有您想要的值的节点时,这才有效。

或者,您可以使用xsl:key。在样式表的顶部定义一个像这样的键......

<xsl:key name="terms" match="term" use="." />

然后你可以这样做......

<xsl:for-each select="key('terms, current())">
       <xsl:value-of select="@anchor"/>
</xsl:for-each>