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 :

XSL problème de hiérarchie


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut XSL problème de hiérarchie
    Bonjour

    je chercher à transformer un document xml via un template xsl. Jusque-là rien d'extraordinaire.

    Mon Xml contient des noeuds de types applications et des noeuds de type folder qui peuvent être au même niveau ou hiérarchisé.
    Par exemple :
    Code xml : 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
    18
    19
    20
    21
    22
    23
    24
     
    <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <application>
                <name>RH1</name>
         </application>
        <folder name="RH">
            <application>
                <name>RH2</name>
            </application>
        </folder>
        <folder name="Group 1">
                <application>
                    <name>test 5</name>
                </application>
            <folder name="Group 11">
                <application>
                    <name>test 4</name>
                </application>
            </folder>
            <application>
                <name>test 3</name>
            </application>
        </folder>
    </root>

    Mon but est de les afficher dans cet ordre.
    Pour cela j'avais au départ un xsl du type :
    Code xml : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?xml version="1.0" encoding="utf-8" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
    <xsl:template match="/"> 
        <ul id="tt" class="easyui-tree" data-options="animate:true,dnd:true,checkbox:true,checkonlyLeafCheck:true">
            <xsl:apply-templates select="root/folder" />
            <xsl:apply-templates select="root/application" />
    	</ul>
    </xsl:template>
     
    <xsl:template match="folder"> 
        <li>
            <span><xsl:value-of select="@name" /></span>
            <ul>
                <xsl:apply-templates select="folder" />
                <xsl:apply-templates select="application" />
            </ul>
        </li>
    </xsl:template>
     
    <xsl:template match="application"> 
        <li>
            <a href="#"><xsl:value-of select="name" /></a>
        </li>
    </xsl:template>
    </xsl:stylesheet>

    Mais du coup il ne conserve pas l'ordre. Il prend tout d'abord les folder puis les applications.

    Comment puis-je faire pour conserver l'ordre de mon xml ?

    Merci d'avance

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Lignes #6-7 se réécritent comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="root/folder|root/application" />
    Le même pour lignes #15-16.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="folder|application" />
    Comme ça les matches seraient suivis l'ordre documentaire.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En fait, le plus simple est de juste faire <xsl:apply-templates/> et de laisser le moteur se débrouiller à faire les matching -_-°...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    J'avais même pas imaginé qu'on pouvait faire ça comme ça. Merci à tous les deux !

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

Discussions similaires

  1. [XSL]problème avec <xsl:when>
    Par Devil666 dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 27/05/2005, 16h54
  2. [html][xsl]Problème valeur attribut html
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/04/2005, 13h37
  3. [XSL] problème de syntaxe
    Par Flushovsky dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 14/03/2005, 22h06
  4. [XSL] Problème d'incrémentation
    Par OXyGN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 28/01/2005, 12h48
  5. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34

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