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] structures imbriquées


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut [XSLT] structures imbriquées
    Bonjour,

    J'ai un fichier XML présentant des structures récurrentes (une arborescence):
    Code : 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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="ex-033_nested.xsl"?>
    <items>
      <item>
        <item><id>1.1</id></item>
        <item><id>1.2</id></item>
        <item>
          <item><id>1.2.1</id></item>
            <item>
              <item><id>1.2.1.1</id></item>
              <item><id>1.2.1.2</id></item>
            </item>
          <item><id>1.2.2</id></item>
        </item>
      </item>
      <item>
        <item><id>2.1</id></item>
        <item><id>2.2</id></item>
      </item>
      <item><id>3</id></item>
    </items>
    J'ai ensuite le XSL suivant pour le présenter:
    Code : 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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" indent="yes"/>
     
      <xsl:template match="/">
        <html>
          <head>
          </head>
          <body>
            <xsl:apply-templates />
          </body>
        </html>
      </xsl:template>
     
      <xsl:template match="item">
        <ul>
          <li>
            <xsl:value-of select="./item" />
            <xsl:apply-templates />
          </li>
        </ul>
      </xsl:template>
     
    </xsl:stylesheet>
    Ça marche sauf qu'il y a répétition d'un item!


    J'ai donc localisé le problème potentiel:
    Code : 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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes"/>
     
      <xsl:template match="/">
        <html>
          <head>
          </head>
          <body>
            <xsl:with-param name="noeud" select="/" />
            <xsl:apply-templates />
          </body>
        </html>
      </xsl:template>
     
      <xsl:template match="item">
        <xsl:param name="noeud" />
        <xsl:choose>
          <xsl:when test="$noeud/*">
            <xsl:apply-templates />
            <xsl:with-param name="noeud" select="$noeud/*" />
          </xsl:when>
          <xsl:otherwise>
            <ul>
              <li>
                <xsl:value-of select="./item" />
              </li>
            </ul>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:template>
     
    </xsl:stylesheet>
    Mais là ça ne marche plus du tout !!!

    Une bonne volonté pour éclairer ma chandelle?

    Merci,
    P.

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

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

    je verrais plutôt cela :
    Code : 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
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" indent="yes"/>
     
      <xsl:template match="/">
        <html>
          <head>
          </head>
          <body>
            <xsl:apply-templates />
          </body>
        </html>
      </xsl:template>
     
      <xsl:template match="item">
        <ul>
            <xsl:apply-templates />
        </ul>
      </xsl:template>
     
      <xsl:template match="id">
          <li><xsl:value-of select="."/></li>
      </xsl:template>
     
    </xsl:stylesheet>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut [Résolu]
    Et oui, ça marche à merveille, comment n'y ai je pas pensé plus tôt!!

    Mille mercis,

    P.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2007, 10h55
  2. structure imbriquée malloc problème
    Par tuxout dans le forum C
    Réponses: 3
    Dernier message: 26/02/2007, 06h49
  3. [XSLT] Template imbriqué dans un if
    Par LeNouv_O dans le forum XSL/XSLT/XPATH
    Réponses: 26
    Dernier message: 20/06/2006, 14h40
  4. Malloc / structures imbriquées
    Par Lolita59 dans le forum C
    Réponses: 14
    Dernier message: 11/05/2006, 15h43
  5. Réponses: 3
    Dernier message: 20/11/2005, 20h04

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