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]Hiérarchiser à partir des attributs


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut [XSLT]Hiérarchiser à partir des attributs
    Bonjour,

    Un problème à peine résolu, j'ai une autre difficulté :

    J'ai un document xml qui contient des éléments de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <title value="nom du titre 1" level="1"/>
    <title value="nom du titre 2" level="2"/>
    <title value="nom du titre 3" level="2"/>
    <title value="nom du titre 4" level="3"/>
    <title value="nom du titre 5" level="1"/>
    ...
    <title value="nom du titre n" level="X"/>
    Et j'aimerais avoir en sortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <topic value="nom du titre 1">
      <topic value="nom du titre 2"/>
      <topic value="nom du titre 3">
        <topic value="nom du titre 4"/>
      </topic>
    </topic>
    <topic value="nom du titre 5">
    ...
      <title value="nom du titre n">
    En français, je veux que chaque élément soit fils de l'élément de level supérieur, tout en conservant l'ordre de lecture.
    J'espère que c'est à peu prés claire comme explication !

    Merci,
    Hefbee

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:template match="/">
        <xsl:apply-template select="//title[@level='1']"/>
    </xsl:template>
    <xsl:template match="title">
        <topic>
            <xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
            <xsl:variable name="a" select="@level"/>
            <xsl:apply-template select="//title[@level=$a]"/>
        </topic>
    </xsl:template>

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Tout d'abord, merci pour ta réponse, heureusement que tu es là !

    En utilisant ton code brute, il y a une boucle infinie encore (overflow).
    Je pense qu'il faut mettre ceci à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="a" select="@level+1"/>
    Cependant, j'avais essayé quelque chose dans ce genre, mais malheureusement, le résultat est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <topic value="nom du titre 1">
      <topic value="nom du titre 2">
        *Tous les topic de level 3*
      </topic>
      <topic value="nom du titre 3">
        *Tous les topic de level 3*
      </topic>
     ...
    De facon générale, tous les topics de level inférieurs sont inclus sous tous les topics de level supérieur, ce qui fait le plan n'est pas conservé, et que j'ai plein de doublon... J'espere que tu comprends ce que je veux dire.
    Merci

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

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

    problème classique quand on manipule des documents ODF ou OpenXML...

    Il existe un algorithme reposant sur generate-id() : http://xml.developpez.com/sources/?p...bo#IV_position

  5. #5
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    excuse moi , je n'avais pas bien compris ton problème

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Pas de problème Fraoustin, quelque soit le résultat, il serait fort incorrect de ne pas être reconnaissant pour l'aide apportée.

    Je vais tester la solution de grandfather, mais apparement, il n'y a aucune raison que cela ne fonctionne pas...

    Merci à tous les 2...

    EDIT : Ca marche nickel

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/10/2007, 10h31
  2. [xslt][xpath]Utilisation des attributs XML
    Par Little_flower dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/05/2007, 12h42
  3. [XSLT] Lire le nom des attributs
    Par SONY30 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 21/09/2006, 16h20
  4. [XSLT] boucler sur des attributs
    Par damyrid dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 30/03/2006, 10h43
  5. [XSLT] Dédoublonner des attributs
    Par 242 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 10/11/2005, 15h44

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