Re: [XSL SORT] utilisation d'un paramètre / clé de tri
"RACHOVITCH Yoni" <[email protected]>
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Message-ID | <[email protected]> |
Merci en utilisant quelques balises <xsl:if...> et votre proposition, je peux rendre mes tris "plus dynamiques". D'ailleurs est-il possible de faire un <xsl:sort> non pas sur un noeud, mais sur une variable, comme par exemple, la concaténation de plusieurs noeuds (Prénom + Nom par exemple)? en vous remerciant Cordialement Yoni Rachovitch -----Message d'origine----- De : [email protected] [mailto:[email protected]]De la part de Stéphane Bonhomme Envoyé : mercredi 22 mars 2006 13:56 À : [email protected] Objet : [xml-tech] Re: [XSL SORT] utilisation d'un paramètre / clé de tri Bonjour <xsl:sort select="*[name()=$field]" order="{$order}"/> vous permet de trier d'apres les fils directs de l'élément add dont le nom est égal à $field il n'y a pas d'élément dont le nom est "sub2xml/tech" mais un élément subxml et un element tech peut-être pouvez-vous passer deux paramêtres ($field_1 avec 'subxml' et $field_2 avec 'tech') et écrire : <xsl:sort select="*[name()=$field_1]/*[name()=$field_2]" ... Dans cette solution on fixe arbitrairement la profondeur de l'élément sur lequel on veut trier, ce qui est peut-être trop contraignant pour vous, mais une solution générale serait plus corsée à trouver... Cordialement, Stéphane. RACHOVITCH Yoni wrote: >Bonjour, >je récupère un paramètre au début de mon styleshhet afin de l'utiliser pour trier mes données dans un xsl:sort. >Le problème vient que le tri ne fonctionne pas quand c'est le paramètre qui est déclaré dans le select, or cela marche quand j'écris "en dur" la clé de tri. >si vous avez des idées >en vous remerciant >Cordialement > >Yoni Rachovitch > ><?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"/> > > > <xsl:param name="order"/> > <xsl:param name="incode"/> > <xsl:param name="field"/> <= affectation de la valeur "sub2xml/tech" dans un script à part... xslProc.addParameter("field", "sub2xml/tech" ); > ><xsl:template match="/"> > <xsl:apply-templates select="dml"> > </xsl:apply-templates> > </xsl:template> > ><xsl:template match="xml"> > ><table> > <xsl:variable name="neworder"> > <xsl:if test="$order='ascending'">descending</xsl:if> > <xsl:if test="$order='descending'">ascending</xsl:if> > </xsl:variable> > > <tr> > <th><a href="javascript:tri(sub2xml/tech','{$neworder}')">tech</a></th> > <th><a href="javascript:tri(sub2xml/tech2,'{$neworder}')">tech</a></th> > </tr> > > <xsl:apply-templates select="subxml/add"> > <xsl:sort select="sub2xml/tech" order="{$order}"/> <== CA MARCHE > <!-- > <xsl:sort select="*[name()=$field]" order="{$order}"/> <== CA NE MARCHE PAS > --> > </xsl:apply-templates> > ></table> > ></xsl:template> >. >. >. >. > > > >-- >Devenez redacteur <XML>fr et contribuez au developpement du >xml francophone (http://xmlfr.org/infos/redacteurs/) ! > >Liste de diffusion "[email protected]" (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 [email protected] >(mailto:[email protected]?Subject=unsubscribe) > >--------------------------------------------------------------------------------------- >Wanadoo vous informe que cet e-mail a ete controle par l'anti-virus mail. >Aucun virus connu a ce jour par nos services n'a ete detecte. > > > > -- Stéphane Bonhomme -- Exselt Services Formations, Conseil et Réalisations en Ingénierie Documentaire, Technologies Web et Logiciels Libres [email protected] - http://www.exselt.com 04 76 17 09 40 / 06 88 57 27 08 -- Devenez redacteur <XML>fr et contribuez au developpement du xml francophone (http://xmlfr.org/infos/redacteurs/) ! Liste de diffusion "[email protected]" (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 [email protected] (mailto:[email protected]?Subject=unsubscribe)