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 :

[DOM] Création automatique de sections CDATA


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Par défaut [DOM] Création automatique de sections CDATA
    Bonjour,
    Je viens de changer de serveur (serveur dédié sous debian, paquets PHP 5.2.0 dotdeb), et depuis le générateur XML pose problème.
    Je crée ma page via l'interface DOM de PHP, et je sauve en XML pour générer ma page xHTML.
    Jusqu'à présent aucun problème, mais depuis la migration, dans ma balise script lorsque je veux commenter le <![CDATA[, le parseur place mes commentaires (//) dans une nouvelle section CDATA.

    Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php 
    /* [...] */
    $script= $doc -> createElement('script');
    $script -> setAttribute('type','text/javascript');
    $script -> appendChild($doc -> createTextNode('//'));
    $script -> appendChild($doc -> createCDATASection ( "\n".$this -> script."\n//" ));
    $head -> appendChild($script);
    /* [...] */
    return $this->outputDocument -> save ('php://output');
    ?>
    le code qui doit être généré (et qui était généré sur l'ancien serveur avec les mêmes paquets) est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">//<![CDATA[
    // [ ... ]
    //]]></script>
    Or je me retrouve avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript"><![CDATA[//]]><![CDATA[
    // [ ... ]
    //]]></script>
    et donc une erreur de script (car javascript ne connait pas l'instruction <![CDATA[).

    la config du serveur :
    dom
    DOM/XML enabled
    DOM/XML API Version 20031129
    libxml Version 2.6.16
    HTML Support enabled
    XPath Support enabled
    XPointer Support enabled
    Schema Support enabled
    RelaxNG Support enabled

    libxml
    libXML support active
    libXML Version 2.6.16
    libXML streams enabled

    xml
    XML Support active
    XML Namespace Support active
    libxml2 Version 2.6.16

    xmlreader
    XMLReader enabled

    xmlwriter
    XMLWriter enabled
    Quelqu'un aurait une idée sur ce que je fais mal ? comment résoudre ce problème ?

    merci

  2. #2
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Juste pour info, qu'est-ce que ça donne si tu enlève createTextNode('//')?
    Bien sûr, le JS risque de ne pas trop apprécier, mais je voudrais savoir...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Par défaut
    Salut,
    Citation Envoyé par haltabush
    Juste pour info, qu'est-ce que ça donne si tu enlève createTextNode('//')?
    Dans ce cas là tout est "normal", c'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript"><![CDATA[
    // [ ... ]
    //]]></script>
    Celà dit, si je ne crée pas une section CDATA mais un textNode, j'ai la même sortie.

    Citation Envoyé par haltabush
    Bien sûr, le JS risque de ne pas trop apprécier, mais je voudrais savoir...
    Exactement, comme les navigateurs n'interprètent pas xHTML comme ils devraient, j'ai des erreurs.
    En attendant j'ai utilisé les commentaires HTML (qui marchent sans //), mais ca ne fait pas très propre.
    Une idée ?

  4. #4
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Tu peux peut-être tenter un truc pas propre du style createTextNode('//<[CDATA[...//]]>) ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Par défaut
    je viens de tester, et ca me donne ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <script type="text/javascript"><![CDATA[//<![CDATA[
    En fait ce que j'aurai voulu savoir c'est pourquoi ca marchait avant, et qu'est-ce qui peut provoquer ce genre de problème. Les paquets PHP sont les mêmes ...
    en tout cas merci pour tes réponses

  6. #6
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Normal, si tu laisse le createCDataSection ^^
    Essaye plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php 
    /* [...] */
    $script= $doc -> createElement('script');
    $script -> setAttribute('type','text/javascript');
    $script -> appendChild($doc -> createTextNode( "\n//<[CDATA[".$this -> script."\n//]]>" ));
    $head -> appendChild($script);
    /* [...] */
    return $this->outputDocument -> save ('php://output');
    ?>
    En fait ce que j'aurai voulu savoir c'est pourquoi ca marchait avant, et qu'est-ce qui peut provoquer ce genre de problème.
    Les joies et mystères de l'informatique?

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

Discussions similaires

  1. Numerotation automatique de sections
    Par gege2061 dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 13/03/2006, 17h50
  2. création automatique de fichier html
    Par oclone dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 03/02/2006, 14h53
  3. []Création automatique d'utilisateurs
    Par SaeZ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 27/10/2005, 13h38
  4. Création automatique d'exécutable
    Par bourdon dans le forum Langage
    Réponses: 12
    Dernier message: 13/06/2005, 21h17
  5. création automatique de table avec createdb??
    Par champion dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/09/2004, 09h01

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