Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

From: PENNEC Vincent (vincent.pennec@cub-brest.fr)
Date: 19/11/2003 - 11:29


        Bonjour,

Pourquoi appeler le template manuellement pour chaque option ? Il faut laisser cela au parser XSL

Le XML simplifié
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="xsl_if.xslt" ?>
 
<root>

<select>
 <option value="E">Economique</option>
 <option value="B">Business</option>
 <option value="F">Première</option>
</select>

<CABIN_OUT>
 <CODE>B</CODE>
</CABIN_OUT>
</root>

Le XSL:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html>
  <body>
   <form name="form" action="traitement.php">
    <select name="cabine">
     <!-- on laisse le parser gérer -->
     <xsl:apply-templates select="//option"/>
    </select>
   </form>
  </body>
 </html>
</xsl:template>

<xsl:template match="//option">
<option>
 <xsl:if test="./@value=//CABIN_OUT/CODE">
  <xsl:attribute name="selected">selected</xsl:attribute>
 </xsl:if>

 <xsl:attribute name="value"><xsl:value-of select="./@value"/></xsl:attribute>
 <xsl:value-of select="."/>
</option>
</xsl:template>

</xsl:stylesheet>

         
        Cordialement,
         
        Vincent PENNEC

> -----Message d'origine-----
> De : Ziad EL KHATIB [mailto:z.elkhatib@vivacances.fr]
> Envoyé : mercredi 19 novembre 2003 11:09
> À : xml-tech@xmlfr.org
> Objet : [xml-tech]
>
>
> Pour finir,
>
> Je ne suis pas sur que ce soit plus performant en fait de
> faire de cette manière la. C'est certainement plus jolie et
> plus propre car on se retrouve avec une seule boucle if a
> écrire. Mais au finale cette boucle est appelée pour chaque
> valeur... n'est ce pas pareil que d'écrire la boucle pour
> chaque valeur (point de vue performance ?) ?
>
>
> -----Message d'origine-----
> De : Ziad EL KHATIB
> Envoyé : mercredi 19 novembre 2003 11:00
> À : xml-tech@xmlfr.org
> Objet : [xml-tech]
>
>
> Ok non c'est bon, j'avais oublié de passer en deuxième param
> la valeur de l'option, c'est pour ça que c'était vide...
>
> Merci Denis ;-)
>
> -----Message d'origine-----
> De : Ziad EL KHATIB
> Envoyé : mercredi 19 novembre 2003 10:25
> À : xml-tech@xmlfr.org
> Objet : [xml-tech]
> ÿso-8859-1?Q?RE_:_[xml-tech]_Réf._:_ÿso-8859-1??ÿso-8859-1?Q?Q
> ?RE_:_[xml-tech]_Réf._:_xsl?ÿso-8859-1?Q?:if_...?X-MimeOLE:_Pr
> oduced_By_Microsoft_Exc?ÿso-8859-1?Q?hange_V6.0.6249.0?X-MimeO
> LE: Produced By Microsoft Exchange V6.0.6249.0
>
>
> Ok alors la j'ai plus d'erreurs, par contre ma liste de
> selection est vide, je n'arrive pas a le mettre en place:
>
> <select>
> <xsl:attribute name="name">CABIN</xsl:attribute>
> <xsl:attribute name="checked"><xsl:value-of
> select="./CABIN_OUT/CODE"/></xsl:attribute>
> <xsl:attribute name="class">content_listbox</xsl:attribute>
> <xsl:call-template name="selection">
> <xsl:with-param name="valeur">E</xsl:with-param>
> </xsl:call-template>
> <xsl:call-template name="selection">
> <xsl:with-param name="valeur">B</xsl:with-param>
> </xsl:call-template>
> <xsl:call-template name="selection">
> <xsl:with-param name="valeur">F</xsl:with-param>
> </xsl:call-template>
> </select>
>
> <xsl:template name="selection">
> <xsl:param name="valeur"/>
> <option>
> <xsl:attribute name="value"><xsl:value-of
> select="$valeur"/></xsl:attribute>
> <xsl:if test="./CABIN_OUT/CODE = '$valeur'" >
> <xsl:attribute
> name="selected">selected</xsl:attribute>
> </xsl:if>
> </option>
> </xsl:template>
>
> -----Message d'origine-----
> De : Denis BAYARD [mailto:denis.bayard@edfgdf.fr]
> Envoyé : mardi 18 novembre 2003 14:45
> À : xml-tech@xmlfr.org
> Objet : [xml-tech] Réf. :
> ÿso-8859-1?Q?RE_:_[xml-tech]_Réf._:_xsl:if_...?X-MimeOLE:
> Produced By Microsoft Exchange V6.0.6249.0
>
> La règle ne doit pas être inclue dans une autre règle, elle
> doit être au
> même niveau (pas de template dans un template).
> En résumant le code :
>
> <xsl:template match="il s'agit ici de votre template">
>
> bla bla bla ... de votre règle
>
> <select>
> bla bla bla ... de ma proposition plus bas
> entre les 2
> balises "select"
> </select>
>
> bla bla bla ... de votre règle
> </xsl:template>
>
> <xsl:template name="selection">
>
> bla bla bla ... de la règle "selection" plus bas
>
> </xsl:template>
>

>
>
> Merci Denis,
>
> J'ai créé le template mais le problème c'est que je fais pleins de
> traitements dans cette page et toute la page est englobée
> dans un template
> déjà. Du coup, j'ai une erreur qui dit que je n'ai pas le
> droit de créer
> un template dans un template. Une idée ?
>
> -----Message d'origine-----
> De : Denis BAYARD [mailto:denis.bayard@edfgdf.fr]
> Envoyé : mardi 18 novembre 2003 12:06
> À : xml-tech@xmlfr.org
> Objet : [xml-tech] Réf. : xsl:if ...
>
> Bonjour
> Il est possible de créer une règle (appelée ici abitrairement
> "selection"), et de l'appeler pour chaque option. Je n'ai pas
> testé le code suivant, mais l'idée y est présente.
>
> <select>
> <xsl:attribute name="name">CABIN</xsl:attribute>
> <xsl:attribute name="checked"><xsl:value-of
> select="./CABIN_OUT/CODE"/></xsl:attribute>
> <xsl:attribute name="class">content_listbox</xsl:attribute>
>
> <xsl:call-template name="selection">
> <xsl:with-param name="valeur">E</xsl:with-param>
> </xsl:call-template> <xsl:call-template name="selection">
> <xsl:with-param name="valeur">B</xsl:with-param>
> </xsl:call-template> <xsl:call-template name="selection">
> <xsl:with-param name="valeur">F</xsl:with-param>
> </xsl:call-template> </select>
>
> <!-- Et voici la règle -->
> <xsl:template name="selection">
> <xsl:param name="valeur"/>
>
> <option>
> <xsl:attribute name="value"><xsl:value-of
> select="$valeur"/></xsl:attribute>
>
> <xsl:if test="./CABIN_OUT/CODE = '$valeur'" >
> <xsl:attribute
> name="selected">selected</xsl:attribute>
> </xsl:if>
> </option>
>
> </xsl:template>
>
>

>
>
> Bonjour tout le monde,
> Dans mon xsl, j'ai pas mal de listes de selection (cf exemple
> ci-dessous). Et pour chaque option du select, je fais un test
> if et je le mets a selected=selected. Ce qui fait que je peux
> arriver a avoir pas mal de boucles if(3 dans mon exemples
> deja...). Il y a surement un moyen d'eviter ca et d'optimiser
> le code. Je connais xsl:choose et xsl:when, est ce que c'est
> mieux ? y a-t-il autre chose ?
>
> Merci.
> <select>
> <xsl:attribute name="name">CABIN</xsl:attribute>
> <xsl:attribute name="checked"><xsl:value-of
> select="./CABIN_OUT/CODE"/></xsl:attribute>
> <xsl:attribute name="class">content_listbox</xsl:attribute>
> <option>
> <xsl:attribute name="value">E</xsl:attribute>
> <xsl:if test="./CABIN_OUT/CODE = 'E'" >
> <xsl:attribute name="selected">selected</xsl:attribute>
> </xsl:if>
> Economique
> </option>
> <option>
> <xsl:attribute name="value">B</xsl:attribute>
> <xsl:if test="./CABIN_OUT/CODE = 'B'" >
> <xsl:attribute name="selected">selected</xsl:attribute>
> </xsl:if>
> Business
> </option>
> <option>
> <xsl:attribute name="value">F</xsl:attribute>
> <xsl:if test="./CABIN_OUT/CODE = 'F'" >
> <xsl:attribute name="SELECTED"/>
> </xsl:if>
> Première
> </option>
> </select>
>
>

--
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:06 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement