Les Allergies
Alimentaires
Posez votre question Signaler

[XSL]: acces au variable [Résolu]

Fra - Dernière réponse le 19 avril 2005 à 17:55
Bonjour,

je debutte en XML et j'ai du mal avec les acces aux variable.
je voudrais mette un lien dans une variable que je desir recupérer en plusieurs endroit de mon script.

Mais visiblement la variable n'est pas accessible.
<xsl:template match="/">
 <xsl:variable name="chanelLink" select="rss/channel/link"/>
 <html>
	<xsl:call-template name="data"></xsl:call-template>
 </html>
</xsl:template>

<xsl:template name="data">
 <a href="{$chanelLink}"><xsl:value-of select="rss/channel/title"/></a>
</xsl:template>


Erreur :
"Impossible de résoudre une référence à une variable ou un paramètre « chanelLink ». La variable ou le paramètre ne sont peut être pas définis ou sont absents de la portée. "

Merci
Lire la suite 

[XSL]: acces au variable »

7 réponses
Réponse
+2
moins plus
Bon sans garantie mais un truc du genre ne marcherait pas?


<xsl:variable name="chanelTitre">
<xsl:choose>
	 <xsl:when test="rss/channel/configs/categorie != 'all' ">
                 rss/channel/configs/categorie
         </xsl:when>
	 <xsl:otherwise>
                 rss/channel/title
         </xsl:otherwise>
</xsl:choose>	
</xsl:variable>


Je me souviens que je m'étais battu avec ce genre de choses aussi...

Ajouter un commentaire
Réponse
+0
moins plus
Au fait pourquoi tu veux utiliser une variable?
Ajouter un commentaire
Réponse
-1
moins plus
Salut,
Je crois qu'il faut que tu définisse chanelLink en dehors du template match, quite à ne lui donner sa valeur qu'à ce moment là...

Ajouter un commentaire
Réponse
-1
moins plus
Ok, si je sort la variable du macth ça fontionne.

Mais en plus il faut que l'attibution de la variable soit conditionnel.

<xsl:choose>
	<xsl:when test="rss/channel/configs/categorie != 'all'">
		<xsl:variable name="chanelTitre" select="rss/channel/configs/categorie"/>
	</xsl:when>
	<xsl:otherwise>
		<xsl:variable name="chanelTitre" select="rss/channel/title"/>
	</xsl:otherwise>
<xsl:choose>

<xsl:template match="/">
 <html>
	<xsl:call-template name="data"></xsl:call-template>
 </html>
</xsl:template>

<xsl:template name="data">
 <a href="{$chanelLink}"><xsl:value-of select="rss/channel/title"/></a>
</xsl:template>


Et la ça genere une erreur.
Ajouter un commentaire
Réponse
-1
moins plus
Un truc comme ça ne marcherait pas aussi bien?

<xsl:variable name="chanelLink"/>

<xsl:template match="/">
<xsl:variable name="chanelLink" select="rss/channel/link"/>
<html>
<xsl:call-template name="data"></xsl:call-template>
</html>
</xsl:template>

<xsl:template name="data">
<a href="{$chanelLink}"><xsl:value-of select="rss/channel/title"/></a>
</xsl:template>


Ajouter un commentaire
Réponse
-1
moins plus
La variable du lien fonctionne, merci.
Mais pas celle du titre. Elle ne prend pas en compte que categorie != 'all'
<!-- le lien : ok -->
<xsl:variable name="chanelLink" select="rss/channel/link"/>
<!-- variable du  titre -->
<xsl:variable name="chanelTitre"/>
<xsl:choose>
	<xsl:when test="rss/channel/configs/categorie != 'all' ">
		<xsl:variable name="chanelTitre" select="rss/channel/configs/categorie"/>
	</xsl:when>
	<xsl:otherwise>
		<xsl:variable name="chanelTitre" select="rss/channel/title"/>
	</xsl:otherwise>
</xsl:choose>
<!-- Masque -->
<xsl:template match="/">
<html>
<head>
	<title><xsl:copy-of select="$chanelTitre"/></title>
</head>
<body>
 <xsl:call-template name="data"></xsl:call-template> 
</body>
 </html>
</xsl:template>

<xsl:template name="data">
<a href="{$chanelLink}"><xsl:value-of select="rss/channel/title"/></a>
</xsl:template> 
Ajouter un commentaire
Réponse
-2
moins plus
YESSS

Merci je galère la dessus depuis ce matin

Trop cool
Ajouter un commentaire
Ce document intitulé « [XSL]: acces au variable » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?