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 :

tri via xslt


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut tri via xslt
    bonjour,
    j'ai une question sur xslt
    j'ai un un document xml structuré de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <magasins>
     <magasin nom="1">
      <client CodePostal="6000" test="tata"/>
      <client CodePostal="5500" test="tata"/>
     </magasin>
     <magasin nom="2">
      <client CodePostal="9000" test="tata"/>
      <client CodePostal="1500" test="tata"/>
     </magasin>
    </magasins>
    je voudrais trier par code postal en gardant la structure par magasin (sans les mélanger quoi).
    à savoir cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <magasins>
     <magasin nom="1">
      <client CodePostal="5500" test="tata"/>
      <client CodePostal="6000" test="tata"/>
     </magasin>
     <magasin nom="2">
      <client CodePostal="1500" test="tata"/>
      <client CodePostal="9000" test="tata"/>
     </magasin>
    </magasins>
    est-ce que quelqu'un sait comment faire ce tri via xslt ?

    j'avais déjà posé une question du même style, mais avec comme élément racine magasin (sans s)
    et ca donnait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:template match="magasin">
    		<xsl:copy>
    			<xsl:for-each select="client">
    				<xsl:sort select="@CodePostal"/>
    				<xsl:copy-of select="."/>
    			</xsl:for-each>
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>
    merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 39
    Points
    39
    Par défaut
    Salut

    Bah disons que si tu rajoutes un tag magasins qui est père de tes tags magasin, ça donne pour le XSL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
       <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
       <xsl:template match="/magasins/magasin"> 
          <xsl:copy> 
             <xsl:for-each select="client"> 
                <xsl:sort select="@CodePostal"/> 
                <xsl:copy-of select="."/> 
             </xsl:for-each> 
          </xsl:copy> 
       </xsl:template> 
    </xsl:stylesheet>

    on change juste le <xsl:template match> en indiquant qu'il faut faire la même chose mais à un autre niveau d'arborescence (on remplace magasin pas magasins/magasin)

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    merci pour cette réponse
    elle marche presque
    mais en fait il me manque le root element maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <magasin>
      <client>
      <client>
    </magasin>
    <magasin>
      <client>
      <client>
    </magasin>
    une idée ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 39
    Points
    39
    Par défaut
    oups... désolé en effet il manquait un truc...

    Comme ça ça devrait aller mieux :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:template match="/magasins">
    		<xsl:copy>
    			<xsl:apply-templates select="magasin"/>
    		</xsl:copy>
    	</xsl:template>
    	<xsl:template match="magasin">
    		<xsl:copy>
    			<xsl:for-each select="client">
    				<xsl:sort select="@CodePostal"/>
    				<xsl:copy-of select="."/>
    			</xsl:for-each>
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>
    Je rajoute un template pour pouvoir faire des xsl:copy à la fois au niveau magasins et au niveau magasin afin d'obtenir toutes ces balises en sortie

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    c'est ca
    merci beaucoup !

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

Discussions similaires

  1. [Requête] Tri via une liste déroulante
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/01/2006, 18h16
  2. Transformer XML de 500 Mo via XSLT
    Par Pignoufy dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 08/11/2005, 20h58
  3. probleme de transformation d'un XML via XSLT
    Par nayron_1 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 08/11/2005, 14h19
  4. transformation XML->TXT via XSLT
    Par manumanien dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 07/06/2005, 20h30
  5. transformation xml via xslt
    Par ronnie dans le forum XSL/XSLT/XPATH
    Réponses: 17
    Dernier message: 10/05/2005, 10h58

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