Je suppose que mon problème est assez courant, donc il doit y avoir une solution facile. Considérons l'extrait de code XML suivant:XSLT: Correspondance des attributs Xpath aux attributs de chaque portée
<categories>
<category name="cat1" />
<category name="cat2" />
<category name="cat3" />
<category name="cat4" />
</categories>
<data>
<catval name="cat2">foo</catval>
<catval name="cat4">bar</catval>
<catval name="cat3">boo</catval>
</data>
J'ai besoin de sortir les valeurs catval dans l'ordre défini dans l'élément de catégories (y compris les catégories qui ont pas de données). S'il vous plaît noter que dans l'entrée réelle xml, il ya plusieurs données éléments partout et la sortie est beaucoup plus complexe, donc la création d'un modèle pour catégories n'est pas possible. J'utilise une construction comme ce qui suit:
<xsl:template match="data">
<xsl:variable name="currentdata" select="." />
<xsl:for-each select="../categories/category">
<xsl:value-of select="@name" />:
<xsl:value-of
select="$currentdata/catval[@[email protected]]" /> <!-- ??? -->
</xsl:for-each>
</xsl:template>
Je ne sais pas si cela est la meilleure approche pour résoudre mon problème, mais même si ce n'est pas: Comment puis-je correspondre au nom attribut $ currentdata/catval à l'attribut nom de l'élément catégorie dans le contexte de la boucle for-each?
Edit: Je ne l'ai pas mentionné avant que il peut y avoir plusieurs éléments de données dans le document. – FRotthowe