2017-10-11 107 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>