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 :

[XSL]Problème affiche noeuds non traités


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Par défaut [XSL]Problème affiche noeuds non traités
    Bonjour à tous,

    mon problème est simple. J'effectue une transformation d'un fichier XML + XSL en HTML et dans mon resultat, il m'affiche des noeuds sont dans la source XML mais non traiter dans le XSL qqu'un sait me dire pourquoi ?

    Voici la Source :
    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
     
    <Server>
    <AddressBook> 
     <People nom="NOM1" prenom="Prenom1" email="email1@email1.com"/> 
     <People nom="NOM2" prenom="Prenom2" email="email2@email2.com"/> 
     <People nom="NOM2" prenom="Prenom2" email="email1@email2.com"/> 
    </AddressBook> 
    <AddressBook> 
     <People nom="TOTO1" prenom="Prenom1" email="toto1@email1.com"/> 
     <People nom="TOTO2" prenom="Prenom2" email="toto2@email2.com"/> 
     <People nom="TOTO2" prenom="Prenom2" email="toto1@email2.com"/> 
    </AddressBook> 
    <AddressBook> 
     <People nom="OMAR1" prenom="Prenom1" email="omar1@email1.com"/> 
     <People nom="OMAR2" prenom="Prenom2" email="omar2@email2.com"/> 
     <People nom="OMAR2" prenom="Prenom2" email="omar1@email2.com"/> 
    </AddressBook> 
    <AddressBook>
     <People nom="IRIS1" prenom="Prenom1" email="IRIS1@email1.com"/>
     <People nom="IRIS2" prenom="Prenom2" email="IRIS2@email2.com"/>
     <People nom="IRIS3" prenom="Prenom3" email="IRIS3@email2.com"/>
     <suivi>Regarde CA ! </suivi>
    </AddressBook>
    </Server>
    Voici le fichier 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?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"/>
    <xsl:template match="Server"> 
    	<html> 
               <body> 
     	     <xsl:apply-templates/>
               </body> 
            </html> 
    </xsl:template> 
        <xsl:template match="AddressBook"> 
            	<table> 
                        <tr> 
                            <td>NOM</td> 
                            <td>Prenom</td> 
                            <td>e-Mail</td> 
                        </tr> 
                    <xsl:apply-templates/> 
                   </table> 
        </xsl:template> 
        <xsl:template match="People"> 
            <tr> 
                <td><xsl:value-of select="@nom" /></td> 
                <td><xsl:value-of select="@prenom" /></td> 
                <td><a href="mailto:{@email}"><xsl:value-of select="@email"/></a></td>
            </tr> 
        </xsl:template> 
    </xsl:stylesheet>
    et voici le resultat HTML : Il affiche le contenu de la balise <suivi></suivi> alors qu'il ne devrai pas non ?

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    <html>
    <body>
     
    <table>
    <tr>
    <td>NOM</td><td>Prenom</td><td>e-Mail</td>
    </tr> 
     
    <tr>
    <td>NOM1</td><td>Prenom1</td><td><a href="mailto:email1@email1.com">email1@email1.com</a></td>
    </tr> 
     
    <tr>
    <td>NOM2</td><td>Prenom2</td><td><a href="mailto:email2@email2.com">email2@email2.com</a></td>
    </tr> 
     
    <tr>
    <td>NOM2</td><td>Prenom2</td><td><a href="mailto:email1@email2.com">email1@email2.com</a></td>
    </tr> 
     
    </table> 
     
    <table>
    <tr>
    <td>NOM</td><td>Prenom</td><td>e-Mail</td>
    </tr> 
     
    <tr>
    <td>TOTO1</td><td>Prenom1</td><td><a href="mailto:toto1@email1.com">toto1@email1.com</a></td>
    </tr> 
     
    <tr>
    <td>TOTO2</td><td>Prenom2</td><td><a href="mailto:toto2@email2.com">toto2@email2.com</a></td>
    </tr> 
     
    <tr>
    <td>TOTO2</td><td>Prenom2</td><td><a href="mailto:toto1@email2.com">toto1@email2.com</a></td>
    </tr> 
     
    </table> 
     
    <table>
    <tr>
    <td>NOM</td><td>Prenom</td><td>e-Mail</td>
    </tr> 
     
    <tr>
    <td>OMAR1</td><td>Prenom1</td><td><a href="mailto:omar1@email1.com">omar1@email1.com</a></td>
    </tr> 
     
    <tr>
    <td>OMAR2</td><td>Prenom2</td><td><a href="mailto:omar2@email2.com">omar2@email2.com</a></td>
    </tr> 
     
    <tr>
    <td>OMAR2</td><td>Prenom2</td><td><a href="mailto:omar1@email2.com">omar1@email2.com</a></td>
    </tr> 
     
    </table> 
     
    <table>
    <tr>
    <td>NOM</td><td>Prenom</td><td>e-Mail</td>
    </tr>
     
    <tr>
    <td>IRIS1</td><td>Prenom1</td><td><a href="mailto:IRIS1@email1.com">IRIS1@email1.com</a></td>
    </tr>
     
    <tr>
    <td>IRIS2</td><td>Prenom2</td><td><a href="mailto:IRIS2@email2.com">IRIS2@email2.com</a></td>
    </tr>
     
    <tr>
    <td>IRIS3</td><td>Prenom3</td><td><a href="mailto:IRIS3@email2.com">IRIS3@email2.com</a></td>
    </tr>
     Regarde CA ! 
    </table>
     
    </body>
    </html>
    Merci de votre aide,

    Tom

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    c a cause des regles implicite...plus concretement c'est a cause de

    qui est dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <xsl:template match="AddressBook"> 
            	<table> 
                        <tr> 
                            <td>NOM</td> 
                            <td>Prenom</td> 
                            <td>e-Mail</td> 
                        </tr> 
                    <xsl:apply-templates/> 
                   </table> 
        </xsl:template>
    que tu voix ton "suivi"

    si tu veux ne pas le voir, tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="suivi"/>

  3. #3
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Par défaut
    c a cause des regles implicite...plus concretement c'est a cause de

    Code :

    <xsl:apply-templates/>

    qui est dans :
    Code :

    <xsl:template match="AddressBook"> <table> <tr> <td>NOM</td> <td>Prenom</td> <td>e-Mail</td> </tr> <xsl:apply-templates/> </table> </xsl:template>


    que tu voix ton "suivi"

    si tu veux ne pas le voir, tu peux faire

    <xsl:template match="suivi"/>
    Et il n'y a pas de ne pas prendre en compte suivi sans avoir à définir : <xsl:template match="suivi"/> ?

    Tom

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    si :

    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
    <?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"/>
    <xsl:template match="Server"> 
    	<html> 
               <body> 
     	     <xsl:apply-templates select="AddressBook"/>
                           </body> 
            </html> 
    </xsl:template> 
        <xsl:template match="AddressBook"> 
            	<table> 
                        <tr> 
                            <td>NOM</td> 
                            <td>Prenom</td> 
                            <td>e-Mail</td> 
                        </tr> 
                      <xsl:apply-templates select="People"/>
                   </table> 
        </xsl:template> 
        <xsl:template match="People"> 
            <tr> 
                <td><xsl:value-of select="@nom" /></td> 
                <td><xsl:value-of select="@prenom" /></td> 
                <td><a href="mailto:{@email}"><xsl:value-of select="@email"/></a></td>
            </tr> 
        </xsl:template> 
    </xsl:stylesheet>

  5. #5
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Par défaut
    ok et si on part de l'hypothèse que je ne sais pas que People est un noeud enfant de Adressbook. Comment puis traiter tous les noeuds People, est-ce-possible ?

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    par ce que ça peut arriver?


    sinon remplace ceci par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="People"/>
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="//People"/>

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

Discussions similaires

  1. [XSL] afficher ou non un element
    Par Katachana dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 19/08/2008, 15h30
  2. [XSLT] <xsl:if match="noeud"> problème
    Par DrDam dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/04/2008, 11h07
  3. [xml/xsl] Problème de noeuds et attributs
    Par Avallach dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 14/01/2006, 14h31
  4. Réponses: 4
    Dernier message: 15/06/2004, 17h36
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00

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