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 :

Affichage d'une arborescence


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 Affichage d'une arborescence
    Bonjour,

    je me lance dans le xsl (enfin j'en avais fait un tout petit peu il y a quelques années mais depuis ma mémoire a été effacée)

    J'ai un fichier xml de type arborescence
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <folder name="RH" order="2">
          <application>
             <url>http://urlftcarto.com/test1?test=1&amp;test=2&amp;test=3</url>
             <role>role 1</role>
             <name>test 1</name>
             <customname></customname>
             <basicat>TST1</basicat>
             <icon></icon>
          </application>
          <application>
             <url>http://urlftcarto.com/test2</url>
             <role>role 2</role>
             <name>test 2</name>
             <customname></customname>
             <basicat>TST2</basicat>
             <icon></icon>
          </application>
       </folder>
       <folder name="Group 1">
          <folder name="Group 11">
             <folder name="Group 111">
             </folder>
             <application>
             <url>http://urlftcarto.com/test4</url>
             <role>role 4</role>
             <name>test 4</name>
             <customname>My new Application</customname>
             <basicat>TST4</basicat>
             <icon></icon>
          </application>
          </folder>
          <application>
             <url>http://urlftcarto.com/test3</url>
             <role>role 3</role>
             <name>test 3</name>
             <customname>My Application</customname>
             <basicat>TST3</basicat>
             <icon></icon>
          </application>
       </folder>
    </root>

    En gros, il peut y avoir des folders dans des folders sans limite particulière
    Je veux afficher cela à l'écran via des ul et li (ce qui me parait le plus pertinent)
    J'ai actuellement un xsl qui ressemble à cela
    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
    27
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
    <xsl:template match="/"> 
       <div>
       <p>Liste folder</p>
       <ul>
          <xsl:apply-templates select="root/folder" />
       </ul>
       </div>
    </xsl:template>
     
    <xsl:template match="folder"> 
       <li>
          <xsl:value-of select="@name" />
          <ul>
             <xsl:apply-templates select="folder" />
             <xsl:apply-templates select="application" />
          </ul>
       </li>
    </xsl:template>
     
    <xsl:template match="application"> 
       <li>
          <xsl:value-of select="url" />
       </li>
    </xsl:template>
    </xsl:stylesheet>

    Jusqu'ici tout va bien.
    Mais j'aimerais gérer une notion d'ordre à la manière des favoris des navigateurs. Entre les folders, entre les applications mais aussi entre folder et application qui sont sur le même niveau.

    Avez-vous des idées pour faire cela ? De la réorganisation dans mon xml (utiliser une structure mère qui contient l'ordre et qui aura ensuite des fils de type folder ou application ?) ?
    J'ai l'impression aussi qu'il me faudra me passer des xsl:apply-templates pour aller vers des foreach mais quid de la récursivité que j'ai facilement ici avec
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:template match="folder"> 
       <li>
          <xsl:value-of select="@name" />
          <ul>
             <xsl:apply-templates select="folder" />
             <xsl:apply-templates select="application" />
          </ul>
       </li>
    </xsl:template>

    Merci d'avance de votre aide

  2. #2
    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
    Je comprends pas, ton XML a déjà une notion d'ordre : le premier <folder> est le premier folder, le second <folder> est le second folder...

    Si tu veux entremêler folders et applications je ne vois pas ce qui te gêne (à part peut-être l'abominable illisibilité.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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
    Je réfléchis à la suite que je ne vous ai pas présentée. Meaculpa.

    L'utilisateur pourra glisser-déposer n'importe quel élément de l’arborescence, n'importe où dans l'arbo. Je cherche donc le meilleur moyen de représenter cela dans mon xml.

    Je pensais ajouter une notion d'ordre sur chaque noeud.
    Mais peut-être la solution se trouve-t-elle dans une regénération du xml lors d'un glisser-déposer.

  4. #4
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour,

    Je pensais ajouter une notion d'ordre sur chaque noeud.
    Là, moi non plus, je ne saisi pas trop. Je comprends la même chose que thelvin.
    C'est la structure même de ton document XML qui t'indique implicitement une notion d'ordre.
    Après, rien ne t'empêche de ne travailler qu'avec des sur-ordre ou des sous-ordres (perso, j'ai appris cela en maths).

    L'utilisateur pourra glisser-déposer n'importe quel élément de l’arborescence, n'importe où dans l'arbo. Je cherche donc le meilleur moyen de représenter cela dans mon xml.
    Ce que a fait semble très pratique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <file path="..." name="...">
      <file path="..." name="..."/>
    </file>
    Dit rapidement, l'utilisateur fait son copier coller, tu récupère les données de l'évênement, tu ajourne la vue, tu ajourne la logique, ton fichier XML à l'aide de l'API DOM ou JDOM par exemple.

  5. #5
    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
    Je pense en effet que je vais laisser tomber cette vision d'ordre via des attributs et garder celui du xml comme ordre d'affichage avec mise à jour du xml suivant les actions de l'utilisateur.

    Merci de votre aide

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/04/2014, 16h21
  2. Affichage d'une arborescence
    Par kotakota dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 16/07/2012, 15h25
  3. Affichage d'une arborescence
    Par lina22 dans le forum Langage
    Réponses: 2
    Dernier message: 10/07/2009, 16h08
  4. Affichage d'une arborescence de dossiers
    Par Contractofoued dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 04/09/2007, 15h07

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