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

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 4
    Points
    4
    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 éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    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
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 4
    Points
    4
    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 éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

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

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 4
    Points
    4
    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 éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    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?

  7. #7
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par haltabush
    Normal, si tu laisse le createCDataSection ^^
    Je l'ai enlevé... en fait j'ai un CDATA qui se crée automatiquement dans les balises script quand j'ajoute un textNode, et c'est bien là qu'est le mystère.
    Je pensais que ca pouvait venir de la configuration de php, mais elle est quasi identique pour toutes les librairies/paquets XML à celle de l'ancien serveur ou de mon serveur en local (mis à part que mon serveur local est sous windows).
    La seule chose qui change c'est la version de libxml.
    en local : 2.6.26
    sur le serveur : 2.6.16
    mais sur l'ancien serveur j'avais la 2.6.11 il me semble (le serveur n'est plus accessible)

    Citation Envoyé par haltabush
    Les joies et mystères de l'informatique?
    oui, c'est bien là qu'est le soucis ...

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut

    Je vois pas trop... C'est bizarre qu'il n'y ai pas quelqu'un d'autres qui ai eu le même problème je trouve.

  9. #9
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    En effet.
    J'ai vraiment rien trouvé, d'un autre côté je ne suis pas sur que beaucoup de monde utilise DOM pour créer ses pages, déjà la plus-part des hébergeurs sont restés sur php4 (merci debian Etch d'arriver vite ) et les moteurs de templates sont plutôt basés sur preg_replace.
    merci pour tes réponses

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    up!
    (oui je sais, moi j'ai pas de problèmes là dessus mais je veux quand même une réponse )

  11. #11
    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
    Visiblement, c'est un problème qui ne date pas d'hier : http://bugzilla.gnome.org/show_bug.cgi?id=114557

    Quant à savoir comment le résoudre... As-tu placé un DOCTYPE dans ton document ?

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut

    Merci de l'info

  13. #13
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Salut,
    intéressant cet échange, dommage qu'il n'ai pas donné suite (jusqu'à présent en tout cas).
    Oui, je spécifie un doctype xHTML strict. Pour le moment j'ai contourné le problème en passant par des commentaires, ca me semble moins contraignant que ce qui est décrit dans le thread de message (regexp sur la sortie).

    merci bien, je passe en résolu !

+ 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