[XSL]: acces au variable

Résolu/Fermé
Fra - 19 avril 2005 à 14:25
fras34 Messages postés 92 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 27 mai 2007 - 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

7 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
19 avril 2005 à 17:40
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...

2
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
19 avril 2005 à 17:12
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>


0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
19 avril 2005 à 17:34
Au fait pourquoi tu veux utiliser une variable?
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
19 avril 2005 à 16:41
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à...

-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fras34 Messages postés 92 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 27 mai 2007 36
19 avril 2005 à 17:08
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.
-1
fras34 Messages postés 92 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 27 mai 2007 36
19 avril 2005 à 17:25
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> 
-1
fras34 Messages postés 92 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 27 mai 2007 36
19 avril 2005 à 17:55
YESSS

Merci je galère la dessus depuis ce matin

Trop cool
-2