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

Bibliothèques et frameworks PHP Discussion :

[XML] L'accès à nodeValue convertit les entités après transformation XSL ?


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1
    Par défaut [XML] L'accès à nodeValue convertit les entités après transformation XSL ?
    Bonjour,

    Je consulte la communauté pour procéder à une petite vérification : est-ce que l'accès à nodeValue entraîne une conversion des entités après transformation XSL ? Par exemple, soit ce bête fichier XML :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="iso-8859-1"?>
    <input>&lt;</input>

    Et soit cette bête feuille de styles :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="input">
    	<output>
    		<xsl:value-of select="." />
    	</output>
    </xsl:template>
    </xsl:stylesheet>

    Et maintenant ce bête code PHP qui procède à la conversion et qui affiche le contenu de la balise <output> à l'issue de la transformation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html>
    <body>
    <?php
    $xmlDocument = new DOMDocument ();
    $xmlDocument->load ("test.xml");
    $xmlStylesheet = new DOMDocument ();
    $xmlStylesheet->load ("test.xsl");
    $xslTransfom = new XSLTProcessor ();
    $xslTransfom->importStylesheet ($xmlStylesheet);
    $xmlDocument = $xslTransfom->transformToDoc ($xmlDocument);
    echo ($xmlDocument->documentElement->firstChild->nodeValue);
    ?>
    </body>
    </html>
    Surprise : on trouve "<" en sortie au lieu de "&lt;". L'entité a donc été convertie. Cela n'aurait survenir que si j'avais précisé l'attribut disable-output-escaping.

    D'ailleurs, si jamais je décide d'afficher le contenu du document résultant de la transformation en passant par saveXML (), j'obtiens bien "&lt;" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ($xmlDocument->saveXML ());
    me retourne :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <output>&lt;</output>

    Quelqu'un a-t-il une explication ? Merci d'avance !

  2. #2
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Il faut comprendre &lt; comme étant le moyen de noter un < dans un texte représentant un document XML ! La valeur du noeud est bien < et non pas &lt; !

    Ce comportement est donc, pour moi, tout à fait normal.

Discussions similaires

  1. [XSLT 1.0] Problème après transformation xsl
    Par bugger31 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/05/2012, 10h42
  2. [XSL] Conservation des guillemets après transformation XSL
    Par _-Sky-_ dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/07/2008, 11h05
  3. [RegEx] Changer les entités HTML de balise XML
    Par Erebe dans le forum Langage
    Réponses: 5
    Dernier message: 24/09/2007, 08h29
  4. [XML]/[DocBook] Les entités &quot; &lt; etc.
    Par ykerb2 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 08/05/2007, 20h25
  5. Réponses: 1
    Dernier message: 06/03/2007, 09h33

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