2017-10-11 238 views
0

如何获得给定XML中节点的相对位置。假设我有下面的xml,我想知道第二个a中的第一个b节点是位置3.XML节点位置

<a> 
    <b></b> 
    <b></b> 
</a> 
<a> 
    <b></b> 
    <b></b> 
</a> 


<xsl:for-each select="a"> 
      <dummy> 
      <xsl:for-each select="b"> 
       <xsl:variable name="pos" select="position()" /> 
       <dummy2><xsl:value-of select="$pos"/></dummy2> 
      </xsl:for-each> 
      </dummmy> 
</xsl:for-each> 

我期望dummy2具有1,2,3,4值。

<dummy> 
    <dummy2>1<dummy2> 
    <dummy2>2<dummy2> 
</dummmy> 
<dummy> 
    <dummy2>3<dummy2> 
    <dummy2>4<dummy2> 
</dummmy> 
+0

可能的复制[xsl找到祖先节点的相对位置](https://stackoverflow.com/questions/16719736/xsl-finding-relative-position-to-ancestor-node) – bated

+0

@bated - 我想序列继续 我的情况。你提到的一个并不建议做一个方法 – raghzz

+0

你需要的答案隐藏在问题的答案的评论中。尝试做''而不是'' –

回答

0

对于当前结果检查,您需要分配所有的转换在一个变量一样

<xsl:variable name="Data"> 
    <xsl:for-each select="a"> 
     <dummy> 
      <xsl:for-each select="b"> 
       <dummy2><xsl:number level="any"/></dummy2> 
      </xsl:for-each> 
     </dummy> 
    </xsl:for-each> 
    </xsl:variable> 

之后,你可以很容易地理解您的查询的结果数据的

<xsl:value-of select="count($Data//dummy/dummy2[not(.=preceding-sibling::*)])"></xsl:value-of>