2017-10-11 4 views
0

주어진 XML에서 노드의 상대 위치를 얻는 방법. 내가 xml 이하라고 가정하면, 첫 번째 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: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 조상 노드의 상대 위치 찾기] (https://stackoverflow.com/questions/16719736/xsl-finding-relative-position-to-ancestor-node) – bated

+0

@bated - 시퀀스를 계속 사용하고 싶습니다. 내 경우. 당신이 추천 한 사람은 그것을 할 방법을 제안하지 않습니다. – raghzz

+0

질문에 대한 대답에 코멘트가 숨겨져 있습니다. '' –

답변

0

, 당신은 당신이 쉽게의

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