2017-10-11 14 views
0

Comment obtenir la position relative d'un noeud dans un fichier XML donné. Dire que j'ai ci-dessous xml, je veux savoir premier noeud b en seconde une est la position 3.Position du noeud 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> 

Je me attends dummy2 avoir 1,2,3,4 valeurs.

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

possible en double de [xsl trouver la position relative au nœud ancêtre] (https://stackoverflow.com/questions/16719736/xsl-finding-relative-position-to-ancestor-node) – bated

+0

@bated - Je voudrais que la séquence continue dans mon cas. Celui que vous avez mentionné ne suggère pas un moyen de le faire – raghzz

+0

La réponse dont vous avez besoin est cachée de toute façon dans les commentaires dans la réponse à la question. Essayez de faire '' au lieu de '' –

Répondre

0

Pour vérifier avec un résultat courant, vous devez affecter toutes les conversions dans une variable comme

<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> 

Après cela, vous pouvez facilement interpréter votre requête dans les données de résultat

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