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 : Sélectionner tout - Visualiser dans une fenêtre à part
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'