Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/03/2007, 13h49   #1
Invité de passage
 
Inscription : juin 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 8
Points : 3
Points : 3
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 :
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 :
1
2
3
<script type="text/javascript">//<![CDATA[
// [ ... ]
//]]></script>
Or je me retrouve avec :
Code :
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 :
Citation:
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
chmouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 09h13   #2
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
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...
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 10h11   #3
Invité de passage
 
Inscription : juin 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 8
Points : 3
Points : 3
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 :
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 ?
chmouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 15h40   #4
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
Tu peux peut-être tenter un truc pas propre du style createTextNode('//<[CDATA[...//]]>) ?
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 16h07   #5
Invité de passage
 
Inscription : juin 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 8
Points : 3
Points : 3
je viens de tester, et ca me donne ca :
Code :
 <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
chmouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 16h24   #6
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
Normal, si tu laisse le createCDataSection ^^
Essaye plutôt ça :
Code :
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');
?>
Citation:
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?
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 16h40   #7
Invité de passage
 
Inscription : juin 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 8
Points : 3
Points : 3
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 ...
chmouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 16h51   #8
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790

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.
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 17h03   #9
Invité de passage
 
Inscription : juin 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 8
Points : 3
Points : 3
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
chmouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2007, 16h11   #10
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
up!
(oui je sais, moi j'ai pas de problèmes là dessus mais je veux quand même une réponse )
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2007, 17h01   #11
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
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 ?
__________________
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
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2007, 17h14   #12
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790

Merci de l'info
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2007, 17h20   #13
Invité de passage
 
Inscription : juin 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 8
Points : 3
Points : 3
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 !
chmouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h33.


 
 
 
 
Partenaires

Hébergement Web