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

XML/XSL et SOAP Discussion :

[XSLT] : insertion balise et tri


Sujet :

XML/XSL et SOAP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 71
    Points : 50
    Points
    50
    Par défaut [XSLT] : insertion balise et tri
    Bonsoir,
    Voici un problème que je n'arrive pas à résoudre.
    Je fais donc appel aux compétences avérées de ce site.

    J'ai un fichier XML de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <PV2>
    <PV2.8.1>ME</PV2.8.1>
    <PV2.23.1>N</PV2.23.1>
    <PV2.39.1>5</PV2.39.1>
    </PV2>
    Fichier généré par un EAI qui ne sort les balises que lorsqu'elles sont remplies.
    Je n'ai donc pas structure fixe.
    Je voudrais dans mon exemple, ajouter la balise PV2.9.1 dans l'ordre c'est à dire derrière PV2.8.1.
    Jusque là ça va, sauf que la balise PV2.8.1 n'est pas forcément présente.

    J'avais donc pensé ajouté la balise systématiquement à la fin et ensuite trié les balises.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template match="*">
        <xsl:copy>
          <xsl:apply-templates select="@*|*|text()">
            <xsl:sort select="name(current())" data-type="number"/>
          </xsl:apply-templates>
      </xsl:copy>
    </xsl:template>
    Mais le tri me donne cela quelque soit le data-type paramétré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <PV2>
    <PV2.23.1>N</PV2.23.1>
    <PV2.39.1>5</PV2.39.1>
    <PV2.8.1>ME</PV2.8.1>
    <PV2.9.1>ME</PV2.9.1>
    </PV2>
    Auriez-vous une piste de résolution?

    Merci.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    C'est normal que le tri ne fonctionne pas car tu lui demandes de trier de façon numérique des noms de tag qui ne sont pas numériques. Pour que le tri fonctionne, tu dois sélectionner la partie du nom qui peut être converti en nombre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template match="PV2">
        <xsl:copy>
            <xsl:apply-templates select="*">
                <xsl:sort select="substring-after(name(.),'.')" data-type="number" order="ascending"/>
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    Effectivement, je devis être fatigué.

    Par contre, y-aurait-il une méthode plus propre de faire l'insert de ma balise?

    Cordialement

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    "Plus propre" je dirais que ça se discute. Mais il y a une méthode en une seule passe.

    D'abord tu insères toutes les balises qui devraient être avant celle que tu ajoutes.
    Puis tu insères la balises à ajouter.
    Puis toutes celles qui devraient être après celle que tu ajoutes.

    C'est lourdingue mais ça marche.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    Je vais essayer mais il peut y avoir pas mal de balises sur chaque noeud et ça pourrait être vite lourd.

    en tout cas, merci pour ce conseil.

Discussions similaires

  1. [XSLT][>HTML] balise IMG disparue
    Par lguittet dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 22/08/2006, 11h54
  2. [XSLT] Insertion du nom du fichier XML par transformation XSL
    Par stepd dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/07/2006, 11h40
  3. [PHP][XSLT] Encodage balise url
    Par thibaut06 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/02/2006, 17h46
  4. Quel algorithme pour insertion d'objets "triés" da
    Par phplive dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2005, 09h27
  5. XSLT et balise HTML div
    Par haypo dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/07/2003, 20h38

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