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

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 6
    Points
    6
    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 éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    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
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 6
    Points
    6
    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 éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    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
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 6
    Points
    6
    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 éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    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"/>

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Dans la pratique correcte non, je pense pas que ca arrive souvent. En fait mon but et de tricher un peu. J'ai un HTML en source en fait et je veux en fait matcher toutes la balise <P></P> en partant du noeud html/body mais quelle que soit la position des balises dans l'arbes XML ?
    Tu comprends ce que je veux faire, donc je ne sais jamais quels sont les liens de parentée des balise <P> </P>.

  8. #8
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par valal
    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"/>
    Merci beaucoup, avec <xsl:apply-templates select="//People"/> ca marche déjà mieux ! ;-)

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dans la pratique correcte non, je pense pas que ca arrive souvent
    what??? pas compris!!

    le reste non plus j'ai pas compris.....tu m'a donné un xml avec xsl, je t'ai donné ce qu'il fo faire en fonction de ta demande.

    si maintenant tu as un autre pb, explique le clairement et je verrai ce que je peux faire....

    pour le "n'importe quel niveau", c'est le "//" que j'ai ajouté au quel cas tu ne l'aurait pas vu!!!!

  10. #10
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Sorry pour la mauvaise explication !
    Le problème est résolu en fait.

    Merci de ton aide,

    Tom

+ 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, 16h30
  2. [XSLT] <xsl:if match="noeud"> problème
    Par DrDam dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/04/2008, 12h07
  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, 15h31
  4. Réponses: 4
    Dernier message: 15/06/2004, 18h36
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 12h00

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