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 :

[Débutant][XSLT] Tri "multiple"


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Points : 89
    Points
    89
    Par défaut [Débutant][XSLT] Tri "multiple"
    Bonjour à tous !

    J'utilise actuellement un fichier XSL qui ordonne mes records XML par code postal :

    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
    <?xml version="1.0"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="windows-1252"/>
     <xsl:template match="*">
        <xsl:copy>
          <xsl:for-each select="@*">
            <xsl:copy-of select="."/>
          </xsl:for-each>
          <xsl:apply-templates select="node()">
            <xsl:sort select="@CodePostal"/>
          </xsl:apply-templates>      
        </xsl:copy>
      </xsl:template>
     
    </xsl:stylesheet>
    Ce fichier fonctionne très bien mais les besoins ont maintenant changé. Il faut que le fichier XML soit trié par attribut ToBeTreated (0 ou 1; les records ayant 1 d'abord, ceux ayant 0 ensuite), tout en gardant le tri précédent en tri "secondaire". C'est un peu confus, je vais donc donner un petit exemple de ce que je cherche à avoir dans mon XML de sortie après le tri :

    <Record ToBeTreated="1" CodePostal="01000" ... />
    <Record ToBeTreated="1" CodePostal="02000" ... />
    <Record ToBeTreated="1" CodePostal="03000" ... />
    <Record ToBeTreated="1" CodePostal="03100" ... />
    <Record ToBeTreated="1" CodePostal="04000" ... />
    <Record ToBeTreated="1" CodePostal="05000" ... />
    <Record ToBeTreated="1" CodePostal="06000" ... />
    <Record ToBeTreated="0" CodePostal="01000" ... />
    <Record ToBeTreated="0" CodePostal="02000" ... />
    <Record ToBeTreated="0" CodePostal="02100" ... />
    <Record ToBeTreated="0" CodePostal="03000" ... />
    <Record ToBeTreated="0" CodePostal="04000" ... />
    <Record ToBeTreated="0" CodePostal="05000" ... />
    <Record ToBeTreated="0" CodePostal="06000" ... />

    Et ainsi de suite ...

    La question est donc la suivante : comment modifier mon fichier XSL de telle manière qu'il adopte le nouveau tri?

    Merci d'avance pour vos lumières

  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 : 48
    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
    tu rajoutes une balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="windows-1252"/>
     <xsl:template match="*">
        <xsl:copy>
          <xsl:for-each select="@*">
            <xsl:copy-of select="."/>
          </xsl:for-each>
          <xsl:apply-templates select="node()">
            <xsl:sort select="@ToBeTreated" order="descending"/>
            <xsl:sort select="@CodePostal"/>
          </xsl:apply-templates>      
        </xsl:copy>
      </xsl:template>
    </xsl:stylesheet>

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Points : 89
    Points
    89
    Par défaut
    Tout simplement, ok. Ca marche nickel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Débutant XSLT, problème de balises multiples
    Par carapass dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/08/2008, 23h19

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