IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT]Sort sur un attribut dont la valeur est en param


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 15
    Points
    15
    Par défaut [XSLT]Sort sur un attribut dont la valeur est en param
    Bonjour,

    je voudrais faire un tri sur un attribut dont le nom est passé en paramètre.
    Je m'explique, tout d'abord voici mon fichier xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="TableauxSynthetiques.xsl"?>
    <racine>
    <row numero="F3" libelle="Truc" t1="13" t2="50" t3="47" t4="190" total="300" cible="600" atteinte="50%"/>
    </racine>
    Voici maintenant mon fichier xsl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:param name="order">ascending</xsl:param>
    <xsl:param name="field">cible</xsl:param>
     
    <xsl:template match="/">
     
    <table width="100%" border="1">
     
    	<tr class="header">
    		<th><a href="d2restitutionTableauSynthetique.asp"><u></u></a></th>
    		<th>Libellé</th>
    		<th>T1</th>
    		<th>T2</th>
    		<th>T3</th>
    		<th>T4</th>
    		<th>Total</th>
    		<th>Cible</th>
    		<th width="80"><a href="d2restitutionTableauSynthetiqueTri.asp"><u>Atteinte de la cible</u></a></th>
    	</tr>
     
    	<xsl:for-each select="racine/row">
    	<xsl:sort select="*[name()=$field]" order="{$order}"/>
    		<tr>
    			<td width="30" class="11px" align="center"><xsl:value-of select="@numero"/></td>
    			<td class="11px" align="center"><xsl:value-of select="@libelle"/></td>
    			<td class="11px" align="right"><xsl:value-of select="@t1"/></td>
    			<td class="11px" align="right"><xsl:value-of select="@t2"/></td>
    			<td class="11px" align="right"><xsl:value-of select="@t3"/></td>
    			<td class="11px" align="right"><xsl:value-of select="@t4"/></td>
    			<td class="11px" align="right"><xsl:value-of select="@total"/></td>
    			<td class="11px" align="right"><xsl:value-of select="@cible"/></td>
    			<td class="11px" align="right"><xsl:value-of select="@atteinte"/></td>
    		</tr>
    	</xsl:for-each>
     
    </table>
    </xsl:template>
    </xsl:stylesheet>
    Je voudrais donc effectuer un tri sur le champ passé en param (field). Cependant ce code ne marche pas car je veux faire un tri sur un attribut et non sur un élément. Où ajouter le '@' dans la balise sort ?

    Merci pour votre aide !

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:sort select="@*[name()=$field]" order="{$order}"/>

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup pour la rapidité de ta réponse.

  4. #4
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 40
    Points : 37
    Points
    37
    Par défaut
    bonjour!

    Je suis dans la même situation! Alors j'ai écrit ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsl:param name="sort">priority</xsl:param> 		
     
    <xsl:template match="list">
    	<xsl:for-each select="ticket">
    		<xsl:sort select="@*[name()=$sort]"/>
    		<xsl:value-of select="substring-after(@priority,'pr_')"/>
    		<a href="viewUser.aspx?userID={@sender}" target="_self">
    	</xsl:for-each>
    </xsl:template>
    Et cela fonctionne.
    Mais maintenant, si je veux que priority déclaré dans <xsl:param> soit pris dynamiquement, en fonction d'un attribut se trouvant sur la requête (paramètre passé avec l'url):

    http://localhost/ServeLine/SL/viewTicketsAdmin.aspx?sort=priority

    Comment faut-il faire?

    Merci pour votre aide!

    Adrien

Discussions similaires

  1. [XSLT][HTML] Afficher un attribut et plusieurs valeurs ?
    Par Najla dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/11/2006, 16h32
  2. [XSLT] Condition sur 1 caractere d'une valeur
    Par syvid dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/06/2006, 17h40
  3. [XSLT] boucler sur des attributs
    Par damyrid dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 30/03/2006, 10h43
  4. [XSLT] Attribut dont le nom est stocké dans une variable ?
    Par Xfennec dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/03/2006, 11h20
  5. prob requete: compter les attributs dont la valeur=1
    Par klik dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/07/2005, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo