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] xsl:if sur parm, order d'apres param


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Points : 114
    Points
    114
    Par défaut [XSLT] xsl:if sur parm, order d'apres param
    Bonjour tout le monde

    J'ai un petit souci avec XSL, voici mon fichier XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <repertoire>
         <personne id="1">
             <nom pays="Belgique" ville="Yvoir">Dupont</nom>
             <prenom>Jean</prenom>
             <age jour="22" mois="06" annee="1978">29</age>
         </personne>
         ...
    </repertoire>
    Les ... signifie qu'il y'a plusieurs node personne
    j'utilise PHP pour afficher le résultat, jusque là pas de souci, j'envoi 2 paramètre à mon XSL via PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(isset($_GET['orderby'])){ $orderby = $_GET['orderby']; }
    else{ $orderby = 'nom'; }
    $xslt->setParameter('', 'orderby', $orderby );
    if(isset($_GET['sens'])){ $sens = $_GET['sens']; }
    else{ $sens = 'ascending'; }
    $xslt->setParameter('', 'sens', $sens );
    et dans mon fichier XSL je voudrai donc effectuer un triage en fonction de ces 2 paramètre, pour les élément tel que nom,prenom,age pas de souci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:param name="orderby"/>
    <xsl:param name="sens"/>
    <xsl:template match="/">
         <xsl:for-each select="repertoire/personne">
             <xsl:sort select="*[name()=$orderby]" order="{$sens}"/>
             etc...
         </xsl:for-each>
    </xsl:template>
    Mon problème est que pays,ville,jour,mois,annee sont des attribut et non des élément la logique voudrai donc que lorsque c'est pays/ville/jour/mois/annee il devrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:param name="orderby"/>
    <xsl:param name="sens"/>
    <xsl:template match="/">
         <xsl:for-each select="repertoire/personne">
             <xsl:sort select="*@[name()=$orderby]" order="{$sens}"/>
             etc...
         </xsl:for-each>
    </xsl:template>
    Mais je ne sais pas comment faire en sorte que si $orderby = nom ou prenom ou age alors il ne mette pas le @ et si $orderby = pays ou ville ou jour ou mois ou annee alors le @ ( pour spécifier attribut ) ce place

    Je sais pas si c'est clair ce que je raconte, sinon hésite pas à me le dire et j'essayerai de mieux détailler.

    d'avance merci de votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Points : 114
    Points
    114
    Par défaut
    arrffffff j'ai toujour pas résolu ce problème donc un petit up svp

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    En mettant les deux tout simplement,cela ne declencheras pas d'erreur, il se contentera de trier comme si tous ces element absent avaient la valeur nul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:for-each select="repertoire/personne">
              <xsl:sort select="*[name()=$orderby]" order="{$sens}"/>
             <xsl:sort select="*@[name()=$orderby]" order="{$sens}"/>
             etc...
         </xsl:for-each>

Discussions similaires

  1. [XSL] passer sur le tableau suivant apres X lectures
    Par zejo63 dans le forum XSL/XSLT/XPATH
    Réponses: 18
    Dernier message: 13/07/2007, 17h53
  2. Réponses: 8
    Dernier message: 26/04/2007, 17h24
  3. [XSLT] <xsl:if> test sur plusieurs condition
    Par oxilab dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 30/06/2006, 20h30
  4. [XSLT][ACCESS]condition sur valeur
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 23
    Dernier message: 10/01/2005, 14h14
  5. definir un nombre decimal sur 2 numero max apres la vergule
    Par nil dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/02/2004, 21h49

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