bonjour à tous, j'ai un petit souci alors je m'adresse à la communauté compétente.
je récupère un chemin xpath (via un formulaire) et je voudrais pour chaque élément du xpath faire un test sur un attribut du parent direct puis afficher les attributs des éléments du xpath (j'espère ne pas âtre trop flou).
voici un exemple de xml :
un xpath possible que je vais obtenir via le formulaire serait : AA/BB/CC
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <AA> <BB b = "nord"> <CC c="ok0" n="toto"/> <CC c="ok1" n="titi"/> </BB> <BB b= "sud"> <CC c="ok2" n="toto"/> <CC c="ok3" n="tata"/> </BB> </AA>
il selectionne donc ici tous les éléments CC
puis le code xsl :
ce que je voudrais afficher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 //definir le parent <xsl:variable name="parent" select="concat($xpath, '/', 'parent::BB')" /> //evaluation (la synthaxe n'est pas correcte mais cela reflete ce que j'aimerais faire <xsl:for-each select="dyn:evaluate($xpath)"> <xsl:choose> <xsl:when test=" dyn:evaluate($parent)[@nom] = 'nord' "> // test @nom = 'nord' <xsl:value-of select="dyn:evaluate($xpath_final)[@nom]" />:nord<br /><br /> // affiche les attributs du xpath d'origine </xsl:when> <xsl:when test=" dyn:evaluate($parent)[@nom] = 'sud' "> // test @nom = 'sud' <xsl:value-of select="dyn:evaluate($xpath_final)[@nom]" />:sud<br /><br /> </xsl:when> </xsl:choose> //... </xsl:for-each>
ok0:nord
ok1:nord
ok2:sud
ok3:sud
mais si j'ai un xpath tel que AA/BB/CC[@n='toto']
je voudrais afficher
ok0:nord
ok2:sud
à savoir que là c'est tres simplifié !
(en réalité ce qui sera afficher est en fait du svg en fonction des attributs du xml mais ce sera déjà un bon début ^^)
en fait je me demande comment identifier les differents xpath dans cette boucle et si c'est possible ?
merci à tous
Partager