From: Eric van der Vlist (vdv@dyomedea.com)
Date: 18/10/2000 - 08:22
Bonjour,
Il faut penser différement :)
Vous ne pouvez pas faire:
> if (quelque chose)
> a='p1'
> else
> a='p2'
il faut donc faire:
a=(if (quelque chose) 'p1' sinon 'p2') ...
En xsl, cela s'écrit:
<xsl:variable name="cl">
<xsl:choose>
<xsl:when test="@val=toto">p1</xsl:when>
<xsl:otherwise>p2</xsl:otherwise>
</xsl:choose>
</xsl:variable>
De plus, si vous voulez tester si @val est égal à la chaine de
caractères 'toto' (et non à l'élement fils du noeud contexte ayant pour
nom toto), il faut écrire:
<xsl:when test="@val='toto'">
Cordialement,
Eric
Frederic Laurent wrote:
>
> bonjour,
>
> j'aimerais utiliser les variables dans les feuilles de style de la même
> manière que dans un langage de programmation c'est à dire
>
> int a;
> if (quelque chose)
> a='p1'
> else
> a='p2'
>
> et puis aprés j'utilise cette variable a pour générer un noeud par
> exemple
> <p class="$a">...</p>
>
> Dans xsl, la définition d'une variable est considérée comme une valeur
> finale
> valable au bloc dans lequel est faite la déclaration. Or moi je voudrais
> une
> définition valable à ma règle (xsl:template)
>
> J'ai deux fichiers de test
>
> ---------------------- t.xml -----------------------
> <?xml version="1.0" encoding="ISO-8859-1" ?>
> <doc>
> <a val="toto">un element</a>
> <a val="tutu">un text</a>
> </doc>
> ----------------------------------------------------
>
> Si je décommente le xsl:variable, cl vaut def dans tous les cas
> si je commente, j'ai
> XSL Error: pattern = '$cl'
> VariableReference given for variable out of context or without
> definition! Name = cl, source tree node: a
> XPATH: pattern = '$cl'
>
> d'où ma questions : comment faire ???
>
> ------------------ t.xsl ---------------------------
> <?xml version='1.0' encoding="ISO-8859-1" ?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
> <xsl:output method="html" indent="yes" encoding="ISO-8859-1"/>
>
> <xsl:template match="/">
> <html><head>
> </head>
> <body>
> <xsl:apply-templates />
> </body></html>
> </xsl:template>
>
> <xsl:template match="a">
> <!-- <xsl:variable name="cl">def</xsl:variable> -->
> <xsl:choose>
> <xsl:when test="@val=toto"><xsl:variable
> name="cl">p1</xsl:variable></xsl:when>
> <xsl:otherwise><xsl:variable
> name="cl">p2</xsl:variable></xsl:otherwise>
> </xsl:choose>
>
> <p class="{$cl}">
> <xsl:value-of select="text()"/>
> </p>
> </xsl:template>
>
> </xsl:stylesheet>
>
> ----------------------------------------------------
>
> merci d'avance
> --
> Frédéric LAURENT
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de
> tout sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant
> la commande "unsubscribe" a xml-tech-request@xmlfr.org
> (mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
--
------------------------------------------------------------------------
Eric van der Vlist Dyomedea http://dyomedea.com
http://xmlfr.org http://4xt.org http://ducotede.com
------------------------------------------------------------------------
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|