filtrer le noeud, récupérer l'attribut
Bonjour à tous,
Je souhaite remplacer la valeur d'un attribut par celle d'une autre balise pointée justement par la valeur courante de l'attribut :
Code:
1 2 3 4 5 6 7 8
|
<xsl:template match="node()">
<xsl:copy>
<xsl:copy-of select="@*[local-name()!='ref']" />
<xsl:attribute name="ref"><xsl:value-of select="//po[@idm=@ref]/@id" /></xsl:attribute>
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template> |
Comme on peut e voir, je copie la balise courante, je copie les attributs qui ne sont pas "ref", je récrée l'attribut "ref" en tentant de changer sa valeur, puis je copie les noeuds fils.
=> "ref" est sensé prendre la valeur de l'attribut "id" d'une balise "po" (supposée unique) dont l'attribut "idm" correspond à "ref".
Je pense que mon filtre est maladroit (surtout si "po" avait un attribut ref) ; mais je ne vois pas comment l'écrire autrement.
Merci de votre avis, comme d'hab'