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] imposer l'ordre de creation de balise


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Par défaut [XSLT] imposer l'ordre de creation de balise
    Bonjour,

    Je connais très peu XLST , mais je crois que son utilisation correspondrais à ma demande.
    Voila, j'ai un fichier XML contenant des données que je voudrais réagencer :
    voici le style de dnnées que j'ai :

    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    - <SiteDepot CodeSite="750295">
      <CP No="21000" LDCPM="0" PM="0" /> 
      <CPEM No="21000" NbEM="0" NbLDCP="0" /> 
      <CP No="45000" LDCPM="0" PM="0" /> 
      <CPEM No="45000" NbEM="0" NbLDCP="0" /> 
      <CP No="77000" LDCPM="0" PM="0" /> 
      <CPEM No="77000" NbEM="0" NbLDCP="0" /> 
      <CP No="91000" LDCPM="0" PM="0" /> 
      <CPEM No="91000" NbEM="0" NbLDCP="0" /> 
      <CP No="95000" LDCPM="0" PM="0" /> 
      <CPEM No="95000" NbEM="0" NbLDCP="0" /> 
      </SiteDepot>
    Je voudrais modifier mon xml et avoir une structure comme suit , avec un rangement qui range tous les "CP No" en haut, et tous les "CPEM" en bas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    - <SiteDepot CodeSite="750295">
      <CP No="21000" LDCPM="0" PM="0" /> 
      <CP No="45000" LDCPM="0" PM="0" /> 
      <CP No="77000" LDCPM="0" PM="0" /> 
      <CP No="91000" LDCPM="0" PM="0" /> 
      <CP No="95000" LDCPM="0" PM="0" /> 
      <CPEM No="21000" NbEM="0" NbLDCP="0" /> 
      <CPEM No="45000" NbEM="0" NbLDCP="0" /> 
      <CPEM No="77000" NbEM="0" NbLDCP="0" /> 
      <CPEM No="91000" NbEM="0" NbLDCP="0" /> 
      <CPEM No="95000" NbEM="0" NbLDCP="0" /> 
      </SiteDepot>
    Est-ce possible avec XSLT ? et quel code utiliser ? car j'ai beau chercher, je n'ai rien trouvé ;-(

    Merci par avance de votre aide ...

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    C'est tout à fait possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?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="SiteDepot">
            <xsl:copy>
                <xsl:copy-of select="@*"/>
                <xsl:copy-of select="CP"/>
                <xsl:copy-of select="CPEM"/>
            </xsl:copy>
        </xsl:template>
    </xsl:stylesheet>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Par défaut
    merci , je vais essayé de suite ...

    J'ai encore une question de débutant :
    par ailleurs, que dois-je rajouter dans le code
    si avant la balise "Codesite", j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    - <Annonce xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    - <Parution NumeroPublication="1">
    - <Edition Nom="Toto" >
    - <SiteDepot CodeSite="109650">
        <CP No="10000" LDCPM="0" PM="0" /> 
        <CPEM No="10000" NbEM="0" NbLDCP="0" /> 
      </SiteDepot>
     </Edition>
      </Parution>
      </Annonce>
    Merci encore pour votre rapidité ... vous m'aidez bien !!

  4. #4
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par astrolane Voir le message
    par ailleurs, que dois-je rajouter dans le code
    si avant la balise "Codesite", j'ai :
    Simplement un template "générique" qui se contente de parcourir l'arbre en profondeur et de recopier les éléments et leurs attributs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="*">
      <xsl:copy>
        <xsl:copy-of select="@*" />
        <xsl:apply-templates select="*" />
      </xsl:copy>
    </xsl:template>
    Le cas particulier de l'élément SiteDepot étant lui pris en charge par le template ad hoc.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Par défaut
    merci pour tout , je n'avais pas vu la réponse !! Je cherchais désespérement mon post .... et je l'ai retrouvé avec votre réponse :-)

    Encore merci , grâce à vous , j'ai pû avancer ... je peux passer un week-end tranquille !!!

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

Discussions similaires

  1. [XSLT]Modifier l'ordre des balises XML
    Par Philos15 dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 18/10/2006, 09h54
  2. imposer un ordre d'affichage
    Par imane_bennouna dans le forum Struts 1
    Réponses: 5
    Dernier message: 12/09/2006, 09h24
  3. [XSLT] comment afficher tous les noms de balises
    Par stanilas dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/11/2005, 22h24
  4. [XSLT] Encadrer des paragraphes ayant les mêmes balises
    Par billou13 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 21/10/2005, 10h18
  5. [XSLT]Problèmes d'ordre de lecture et d'écriture
    Par leup dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/07/2005, 10h36

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