[XSL] Stocker un jeu de noeud dans une variable
Bonjour,
Stocker un jeu de noeud dans une variable est possible si l'on utilise l'attribut select de xsl:variable :
Code:
<xsl:variable name="var" select="//b" />
En revanche, je désire définir le contenu de la variable entre ses balises et non par select, parce que notement, j'ai besoin de tests conditionnels pour le choix de l'affectation, je n'obtient plus un jeu de noeuds.
Code:
1 2 3
| <xsl:variable name="var">
<xsl:value-of select="//b" />
</xsl:variable> |
Reformuler autrement, j'aimerais bien qu'un call-template puisse me retourner un jeu de noeud, de la même manière.
J'utilise le moteur XSLT de Firefox qui me donne une erreur lorsque j'essaie d'accèder à la propriété p d'un noeud b du code test.xml suivant :
Code:
1 2 3 4 5 6 7
| <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<a>
<b p="1">x</b>
<b p="2">y</b>
<b p="3">z</b>
</a> |
le fichier test.xsl étant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />
<xsl:template match="/">
<html>
<body>
<xsl:variable name="var">
<xsl:call-template name="fonction" />
</xsl:variable>
<xsl:value-of select="//b[@p = '2']" />
<br />
<xsl:value-of select="$var" />
<br />
<xsl:value-of select="$var/@p" />
</body>
</html>
</xsl:template>
<xsl:template name="fonction">
<xsl:value-of select="//b[@p = '2']" />
</xsl:template>
</xsl:stylesheet> |
La ligne fautive :
Code:
<xsl:value-of select="$var/@p" />
Les deux premiers value-of affichent le contenu de la balise b c'est à dire "y". J'ai tenté à tout hasard un copy-of à la place de value-of dans le template "fonction".
Avez vous une solution à ce problème ?
Blustuff.