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, CDATA, HTML et Firefox, la vraie solution ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 20
    Points
    20
    Par défaut XSLT, CDATA, HTML et Firefox, la vraie solution ?
    Bonjour,

    après deux jours de recherche, je me résous à poster.

    Il y a une quantité impressiante de posts faisant référence à mon problème, mais aucune solution intéressante n'a été proposée.

    J'utilise la transformation Xsl et Xml pour former du Html. Dans certaines balises Xml, j'ai placé du contenu Html dans un Cdata et j'aimerai que suite à la transformation, il soit considéré comme du html et non comme du texte brut.

    J'ai donc mon XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <data>
        <![CDATA[<strong>ici mon texte</strong>,ensuite <a href="http//www.test.com">un lien</a>]]>
    </data>
    Ensuite mon XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:template match="data" >
        <p>
              <xsl:value-of select="." disable-output-escaping="yes"  />
        </p>
    </xsl:template>
    Avec l'attribut disable-output-escaping="yes", la sortie fonctionne bien sous IE, mais pas sous Firefox, qui me sort le Cdata comme du texte brut avec des &lt; et &gt;. C'est normal, ai-je lu, c'est le W3C qui désaprouve l'utilisation de disable-output-escaping.

    Ok, mais alors, quelle est la solution ? J'ai trouvé par-ci par-là des fonctions javascript qui décodent les entités &lt; et &gt; pour retransformer le tout en balises HTML... pas très propre.

    Dans mon cas, j'utilise le plugin Transform de jQuery.

    Merci d'avance pour votre aide, je suppose que je ne serai pas le seul dépanné...

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    pour faire évoluer le débat ... hum ... je mets une solution, qui peut paraître correcte:

    sur cette page, leur méthode est de ne pas utiliser le CDATA, et de transformer le HTML voulu en XML pour ensuite le traiter avec des templates XSL.

    Cette méthode fonctionne à condition d'être sûr que le HTML sera correctement transformé en XML - sinon plus rien ne fonctionne.

    Comment passer du Javascript ? Comment transformer, de manière sûre le HTML en XML ?

    Est-ce une bonne méthode ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Personne n'a été confronté à ce problème ?

  4. #4
    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
    Bonjour,

    je ne savais pas que Mozilla ne supportait pas disable-ouput-escaping, et je trouve leur crédo « it's not a bug it's a feature » un peu fumeux... Ce que j'en comprends, c'est qu'ils ont fait un choix malheureux de conception qu'ils essaient de justifier a posteriori.

    Quoi qu'il en soit, la solution (!) consistant à se passer de blocs CDATA est parfaitement viable avec XSLT ; tout ce qui se trouve dans un bloc CDATA peut être réécrit en XML bien formé et peut être traité par XSLT comme tel. Ce sera en tout cas plus propre qu'un post-traitement fait par du code Javascript, et sera compatible avec IE.
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    C'est pour moi aussi la solution la plus exploitable et que je suis en train de mettre en place.

    Attention, donc, au HTML généré (ce qui n'est pas mon cas, je le reçois tel quel d'une base de données...)

    Il faudrait donc valider le fichier XML avant de le compiler...

Discussions similaires

  1. [STRUTS][HTML] sécurité firefox
    Par rikunter dans le forum Struts 1
    Réponses: 3
    Dernier message: 27/04/2006, 10h45
  2. [HTML/CSS] Firefox ou pas ??
    Par Maxoo dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 15/12/2005, 18h19
  3. [Résolut] [XSLT] compatibité IE et FireFox!
    Par dieuzorro dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 22/11/2005, 13h32
  4. [XSLT] CDATA de M....
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/04/2005, 13h51
  5. [XSLT] [XML->HTML] transformation XML -> HTML via XSL
    Par Great Sayaman dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/12/2004, 22h12

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