Partage
  • Partager sur Facebook
  • Partager sur Twitter

[XML/XSL]Une seule balise ne fonctionne

Sujet résolu
    9 janvier 2006 à 16:16:41

    Bonjour,
    Donc tout est dit dans le titre: j'ai créé une balise <msg></msg> qui affiche du texte grace au XSL, dans mon code XML j'ai mis deux balises de ce type mais le texte d'une seule balises ne marche :( .
    Voici mes codes:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="XSL.xsl"?>

    <racine>
    <msg>Voici du XML</msg>

    <msg>Voilà encore du XML</msg>

    </racine>


    Voici le XSL:

    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/">

    <html>
    <body>

    <xsl:for-each select="racine">

    <xsl:value-of select="racine/msg"/>

    </xsl:for-each>

    </body>
    </html>

    </xsl:template>
    </xsl:stylesheet>


    Pourrais t'on m'aider? merci d'avance :)

    PS: Je ne suis qu'un débutant soyez sympas :p
    • Partager sur Facebook
    • Partager sur Twitter
    ~( ・   ω   ・)~
      9 janvier 2006 à 21:06:18

      Slt,

      je crois savoir d'où ça vient mais puisque tu débutes, autant te le dire tout de suite, tu t'engages sur la mauvaise voie ;)

      En Xslt, on utilise rarement l'instruction for-each (seulement dans des cas spécifiques). En fait, l'esprit de Xslt, c'est de laisser faire la récursion :-°
      Bon c'est compliqué à comprendre, donc voici ton exemple réécrit :
      <?xml version="1.0"?>
      <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

      <xsl:template match="/">
      <html>
      <body>

      <xsl:apply-templates select="msg"/>

      </body>
      </html>
      </xsl:template>

      <xsl:template match="msg">
      <p>
      <xsl:value-of select="."/>
      </p>
      <!-- j'ai rajouté un paragraphe entourant chaque valeur de msg -->
      </xsl:template>

      </xsl:stylesheet>


      Le premier template "match" la racine. Jusqu'ici pas de problème, le processeur Xslt copie chaque balise non-Xslt (qui n'est pas préfixée par xsl et qui n'appartient donc pas au namespace de xslt). Jusqu'ici, pas de problème.
      Ensuite, le processeur Xslt recontre le apply-template. Il sélectionne alors les noeuds "msg" et applique les template donc le "pattern" correspond. Et donc le second patern, qui "match" tous les éléments msg.

      Au passage, sache que l'URI de ton namespace n'est pas bon (le bon est http://www.w3.org/1999/XSL/Transform) et que le type-MIME non plus n'est pas bon : c'est application/xml ou application/xslt+xml mais certainement pas text/xsl, qui a été totalement inventé par Internet Explorer.

      Donc voilà j'ai pas testé mon code mais ça devrait fonctionner.

      a+
      • Partager sur Facebook
      • Partager sur Twitter
        10 janvier 2006 à 18:47:35

        Merci beaucoup, j'ai modifier deux ou trois trucs et ça marche :D
        Mais application/xml ne marche pas, j'ai laisser text/xsl... :o
        Donc voici le code que j'ai mis:
        <?xml version="1.0"?>
        <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

        <xsl:template match="/">
        <html>
        <body>

        <xsl:apply-templates select="racine/msg"/>

        </body>
        </html>
        </xsl:template>


        <xsl:template match="racine/msg">
        <p>
        <xsl:value-of select="."/>
        </p>
        </xsl:template>


        </xsl:stylesheet>

        Et j'ai essayé avec d'autre balises et ça marche :) encore merci.

        ++
        • Partager sur Facebook
        • Partager sur Twitter
        ~( ・   ω   ・)~
          10 janvier 2006 à 20:46:15

          Slt,

          tu dois certainement utiliser Internet Explorer. Sache tout de même qu'il vaut mieux que tu migres vers Firefox parceque le support de Xslt par IE est (comme tout le reste d'ailleurs) incomplet, en plus de ne pas connaître le bon type mime du langage.

          a+
          • Partager sur Facebook
          • Partager sur Twitter
            11 janvier 2006 à 15:33:19

            J'ai firefox mais j'ai tester sous IE et sache que sous firefox mon code ne marche pas! :(
            Les balises s'affichent mais pas comme si elles était entre <p></p> ou <h1></h1>(j'ai fais un test)
            • Partager sur Facebook
            • Partager sur Twitter
            ~( ・   ω   ・)~
              11 janvier 2006 à 17:42:43

              C'est normal, il faudrait que tu utilise la balise <output/> pour dire au processeur Xslt que ton document de sortie est du html.

              a+
              • Partager sur Facebook
              • Partager sur Twitter
                11 janvier 2006 à 18:43:57

                Citation : Oli

                J'ai firefox mais j'ai tester sous IE et sache que sous firefox mon code ne marche pas! :(
                Les balises s'affichent mais pas comme si elles était entre <p></p> ou <h1></h1>(j'ai fais un test)


                IE possède un parser XSLT sinon faut utiliser un parser comme celui de PHP.
                • Partager sur Facebook
                • Partager sur Twitter
                  13 janvier 2006 à 22:21:02

                  Ha ok, je ne savais pas...
                  Vous connaitrais un endroit ou je pourrais avoir un parser s'il vous plais.

                  Et un site super pour le XML et XSL? j'ai bien dit super

                  Merci d'avance
                  ++
                  • Partager sur Facebook
                  • Partager sur Twitter
                  ~( ・   ω   ・)~
                    13 janvier 2006 à 23:40:21

                    Slt,

                    pour le site super, je crains qu'il n'en existe pas en français... Sinon tu as le livre XSLT fondamental de Philippe Drix, vraiment excellent si tu as les notions de base de XML.

                    Sinon, le parser de Firefox est bon, donc utilise le sans problème. Sinon va voir du côté de Saxon ou de Xalan qui sont tous deux d'excellents processeurs Xslt libres et gratuit.

                    a+

                    EDIT : ça fait bcp de sinon, non ? :p
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 janvier 2006 à 10:21:44

                      Ok merci ^^
                      Oui ça fais beaucoup de "sinon" ^^ !
                      Je vais voir ça tout de suite ;) ...
                      @+
                      • Partager sur Facebook
                      • Partager sur Twitter
                      ~( ・   ω   ・)~
                        26 janvier 2006 à 11:34:46

                        Sur http://www.w3schools.com/, ils ont un peu de xsl ...

                        a+
                        • Partager sur Facebook
                        • Partager sur Twitter

                        [XML/XSL]Une seule balise ne fonctionne

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown