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] XSL unique pour structure XML différente.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Points : 884
    Points
    884
    Par défaut [XSLT] XSL unique pour structure XML différente.
    Bonjour,

    Voici mon besoin : je veux appliquer une transformation XSLT à des fichiers XML pouvant avoir une structure différente.

    Ci-dessous exemple de XML avec le résultat souhaité.

    Exemple XML 1
    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="UTF-8"?>
    <root>
      <noeud>
        <col1>Val 1</col1>
        <col2>Val 2</col2>
        <col3>Val 3</col3>
      </noeud>
      <noeud>
        <col1>Val 1</col1>
        <col2>Val 2</col2>
        <col3>Val 3</col3>
        <elements>
           <element>
              <col4>Val 4</col4>
           </element>
           <element>
              <col4>Val 4</col4>
           </element>
        </elements>
      </noeud>
    </root>
    Résultat HTML souhaité
    ----Col1-----Col2-----Col3-----Col4------
    -------Val1-----Val2-----Val3
    -------Val1-----Val2-----Val3-----Val4------
    ----------------------------------Val4------

    Exemple XML 2
    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="UTF-8"?>
    <root>
      <noeud1>
         <col1>Val1</col1>
         <noeud2>
           <col2>Val2</col2>
           <noeud3>
              <col3>Val3</col3>
           </noeud3>
           <noeud3>
              <col3>Val4</col3>
           </noeud3>
         </noeud2>
      </noeud1>
      <noeud1>
         <col1>Val1</col1>
         <noeud2>
           <col2>Val2</col2>
           <noeud3>
              <col3>Val3</col3>
           </noeud3>
         </noeud2>
      </noeud1>
    </root>
    Résultat HTML souhaité
    ----Col1-----Col2-----Col3-----
    -------Val1-----Val2-----Val3
    -------------------------Val4
    -------Val1-----Val2-----Val3

    Exemple XML 3
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <noeud1>
         <col1>Val1</col1>
         <noeud2>
           <noeud3>
             <col2>Val2</col2> 
             <noeud4>
                <noeud5>
                   <col3>Val3</col3>
                </noeud5>
                <noeud5>
                   <col3>Val4</col3>
                </noeud5>
             </noeud4>
           </noeud3>
         </noeud2>
       </noeud1>
      <noeud1>
         <col1>Val1</col1>
         <noeud2>
           <noeud3>
             <col2>Val2</col2> 
             <noeud4>
                <noeud5>
                   <col3>Val3</col3>
                </noeud5>
             </noeud4>
           </noeud3>
         </noeud2>
       </noeud1>
    </root>
    Résultat HTML souhaité
    ----Col1-----Col2-----Col3-----
    -------Val1-----Val2-----Val3
    -------------------------Val4
    -------Val1-----Val2-----Val3


    Est-il réellement envisageable de faire un seul fichier XSL pour gérer ces différents types de fichier XML ?

    Merci d'avance.
    Merci.

  2. #2
    Membre habitué Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Points : 156
    Points
    156
    Par défaut
    Est-il réellement envisageable de faire un seul fichier XSL pour gérer ces différents types de fichier XML ?
    C'est possible, tu peux faire des tests en XSLT en utilisant les balises choose ou if...
    Si tu as beaucoup de code à factoriser pour la mise en forme de tes cellules ça peut être intéressant... mais tu peux aussi inclure des feuilles de style dans un feuille de style, ça permet de partager du code et ça compliquera peut être moins tes traitements.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Points : 884
    Points
    884
    Par défaut
    Je pense que la récursivité est indispensable mais je n'arrive vraiment pas à la mettre en place.
    Quelqu'un pour me donner une piste

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Points : 884
    Points
    884
    Par défaut
    Avec le code suivant j'arrive à répondre à l'exemple 1, mais pas à l'exemple 2

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
      <xsl:output method="html" indent="yes"/>
     
      <xsl:template match="/">
        <table>
        <xsl:apply-templates/>
        </table>
      </xsl:template>
     
     
      <xsl:template match="*">
        <xsl:for-each select="*">
          <tr valign="top">
            <xsl:for-each select="*">
              <xsl:if test="count(*) &gt; 0">
                <td>
                <table>
                <xsl:apply-templates select="."/>
                </table>
                </td>
              </xsl:if>
              <xsl:if test="count(*) = 0">
                <td nowrap="true"><xsl:value-of select="."/></td>
              </xsl:if>
            </xsl:for-each>
          </tr>
        </xsl:for-each>
      </xsl:template>
     
    </xsl:stylesheet>

  5. #5
    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
    C'est quoi, ces éléments "ID" ?
    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

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Points : 884
    Points
    884
    Par défaut
    Citation Envoyé par GrandFather
    C'est quoi, ces éléments "ID" ?
    Oui pardon, zont rien avoir avec les exemples fournis, c'est juste pour ne pas afficher ces éléments là.

Discussions similaires

  1. [XSLT] Comparaison/Test de "structure" XML
    Par lalalallal dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/11/2010, 11h37
  2. Réponses: 4
    Dernier message: 16/07/2006, 15h00
  3. [XSLT] template unique pour 2 utilisations différentes
    Par sozie9372 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/04/2006, 16h24
  4. [xsl] xsl juste pour faire copie d'un xml
    Par peppena dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/02/2004, 17h17
  5. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 22h07

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