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] noeud à plat >> arborescence


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [XSLT] noeud à plat >> arborescence
    Bonjour à tous !

    J'ai un problème sur une transformation XSL. Pourriez-vous m'aider à terminer ma feuille de style XSL afin d'avoir le résultat attendu çi-dessous, je sèche.

    Merci !

    XML de départ, les noeuds sont tous au même niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <root>
      <Data type="Home" position="1">Valeur<Data>
      <Data type="Archive" position="1">Valeur1<Data>
      <Data type="Archive" position="1">Valeur2<Data>
      <Data type="Archive" position="1">Valeur3<Data>
      <Data type="Home" position="2">Valeur<Data>
      <Data type="Archive" position="2">Valeur1<Data>
      <Data type="Archive" position="2">Valeur2<Data>
      <Data type="Archive" position="2">Valeur3<Data>
    </root>
    Résultat attendu : les noeuds de type = "Archive" doivent être créées à l'intérieur des noeuds de type = "Home".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <home type="Home" position="1">
      <archives>
        <archive>Valeur1</archive>
        <archive>Valeur2</archive>
        <archive>Valeur3</archive>
      </archives>
    </home >
    <home type="Home" position="2">
      <archives>
        <archive>Valeur1</archive>
        <archive>Valeur2</archive>
        <archive>Valeur3</archive>
      </archives>
    </home>
    Début du XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="root">
      <xsl:apply-templates select="Data"/>
    </xsl:template>
    <xsl:template match="Data">
      <xsl:if test="@type='Home'">
        ...			
        <archives>
          	Que faire ici pour intégrer les noeuds Data de type archive ?
        </archives>
      </xsl:if>
    </xsl:template>
    </xsl:stylesheet>
    J'ai essayé pas mal de chose avec les template mode et les copy-of mais rien n'y fait, je m'y prends mal !

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Le plus simple me parait de jouer avec un mode au niveau du template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:template match="Data[@type='Home']">
      ...
      <xsl:variable name="pos" select="@position"/>
      <xsl:apply-templates select="../Data[@type='Archive' and @position=$pos]" mode="arch"/>
      ...
    </xsl:template>
    <xsl:template match="Data[@type='Archive']"/>
    <xsl:template match="Data" mode="arch">
      ...
    </xsl:template>

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour Alain,

    Cela fonctionne parfaitement !

    Un grand merci !

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

Discussions similaires

  1. [XSLT] Noeuds vides
    Par err747 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/03/2008, 23h37
  2. [XSLT]Algo pour créer une arborescence
    Par Yudala dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/03/2007, 14h49
  3. [XSLT] Noeud courant
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 31/10/2006, 14h33
  4. [XSLT] xml plat à xml arborescent
    Par enigma dans le forum XSL/XSLT/XPATH
    Réponses: 24
    Dernier message: 24/06/2005, 22h43
  5. Pb d'Ajout un noeud fils dans une arborescence
    Par oramine dans le forum Oracle
    Réponses: 5
    Dernier message: 21/12/2004, 15h39

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