Voici un élément de réponse dans un projet j'ai eu à faire un truc similaire. Faut vérifier le code bien sur.
Hope that helps
- - - - - - - - - 8< - - - - - - -
J'ai englobé le tout dans un noeud root.
J'ai ajouté le template de base qui match 'objectClass'
et le template recursif.
<xsl:call-template name="RecursiveSearch">
<xsl:with-param name="Level" select="1"/> <!-- on passe le niveau courant -->
<xsl:with-param name="Superior" select="$valuePossibleSuperior"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<xsl:template name="RecursiveSearch">
<xsl:param name="Level"/> <!-- on reçoit le niveau de l'objectClass pere -->
<xsl:param name="Superior" />
# Re: Question sur XSLT
Posté par Narmer . En réponse au journal Question sur XSLT. Évalué à 5.
Voici un élément de réponse dans un projet j'ai eu à faire un truc similaire. Faut vérifier le code bien sur.
Hope that helps
- - - - - - - - - 8< - - - - - - -
J'ai englobé le tout dans un noeud root.
J'ai ajouté le template de base qui match 'objectClass'
et le template recursif.
- - - - - - XML - - - - - -
<root>
<objectClass name="toto">
<possibleSuperior>titi</possibleSuperior>
<possibleSuperior>tutu</possibleSuperior>
</objectClass>
<objectClass name="tutu">
<possibleSuperior>tata</possibleSuperior>
</objectClass>
<objectClass name="tata">
<possibleSuperior>user</possibleSuperior>
</objectClass>
</root>
- - - - - XSL - - - - - - - - - - - - -
<xsl:template match="objectClass">
<xsl:for-each select="possibleSuperior">
<xsl:variable name="valuePossibleSuperior" select="." />
<xsl:choose>
<xsl:when test="$valuePossibleSuperior = 'user'">
<xsl:value-of select="1"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="RecursiveSearch">
<xsl:with-param name="Level" select="1"/> <!-- on passe le niveau courant -->
<xsl:with-param name="Superior" select="$valuePossibleSuperior"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<xsl:template name="RecursiveSearch">
<xsl:param name="Level"/> <!-- on reçoit le niveau de l'objectClass pere -->
<xsl:param name="Superior" />
<xsl:for-each select="root/objectClass[@name=$Superior]/possibleSuperior">
<xsl:variable name="valuePossibleSuperior" select="." />
<xsl:choose>
<xsl:when test="$valuePossibleSuperior = 'user'">
<xsl:value-of select=" number($Level) + 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="RecursiveSearch">
<xsl:with-param name="Level" select="number($Level) + 1"/> <!-- on passe le niveau courant -->
<xsl:with-param name="Superior" select="$valuePossibleSuperior"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>