2017-10-12 67 views
0

如何獲取給定XML中節點的相對位置。我想只考慮「a」節點中的「b」節點,而不是x-> y - > b,我將b計數爲1,2,3,4而不是3,4,5,6。我嘗試過在xsl:number中使用「multiple」和「any」,但不起作用。XSL sibling count

<x> 
    <y> 
     <b></b> 
     <b></b> 
    </y> 
    </x> 
    <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:number level="any"/></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:for-each select="a"> 
     <dummy> 
      <xsl:for-each select="b"> 
       <dummy2><xsl:value-of select="count(preceding::b[parent::a])+1" /></dummy2> 
      </xsl:for-each> 
     </dummy> 
    </xsl:for-each> 
+0

'B [父::一]'會比前一個::'X/Y/A/B'。根據允許的XML結構,可以嘗試'count(之前:: b [./ parent :: a = current()/ parent :: a])+ 1',但是現在我懷疑是否在XPath中等於兩個節點(這是一段時間,我沒有做一些!) – Xenos

3

你仍然可以做到這一點與xsl:number

嘗試......

<dummy2><xsl:number level="any" count="b[parent::a]" /></dummy2> 

或者,也許這...

<dummy2><xsl:number level="any" count="a/b" /></dummy2>