Bonjour,
Je suis en train de me mettre à l'api DOMDocument pour générer un document au format Html.
J'ai rencontre des difficultés lorsque je veux ajouter du code javascript :
- soit mon document n'est plus conforme au W3C
- soit le javascript n'est pas interprété
Je m'explique :
- Si j'utilise DOMDocument::getHtml(), mon code javascript est bien interprété par le navigateur mais mes balises meta (par exemple) ne sont pas "autofermées" ce qui pose le problème des certifications W3C.
Exemple de résultat avec DOMDocument::getHtml() :
>> Est-ce que c'est possible d'indiquer qu'un element doit être auto-fermé ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Language" content="en-en"> <title>Mon appli</title> <script type="text/javascript"> var toto = "pouet1"; var tata = "pouet2"; </script> </head> <body></body></html>
- Lorsque j'utilise DOMDocument::getXml(), là dans ce cas c'est bon pour les balises auto-fermantes : il détecte bien qu'il n'y pas de contenu dans la balise "meta" (par exemple) est la ferme comme un grand. Par contre il me converti tout les retours à la ligne et caractères spéciaux faisant que mon code javascript n'est plus interprété.
Exemple de résultat avec DOMDocument::getXml() (j'espère que vous voyez les code ascii des retours chariots) :
>> Est-ce qu'il est possible d'indiquer que le contenu d'un élément ne doit pas être converti ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Language" content="en-en"/> <title>Mon appli</title> <script type="text/javascript">; var toto = "pouet1"; var tata = "pouet2"; </script> </head> <body/> </html>
Pour info, j'ai essayer d'ajouter dans mon noeud script : // <![CDATA[ ....script.....//]]> voir même <!-- //-->, problème : les caractères spéciaux sont convertis.
Certains d'entre vous vont certainement me proposer de mettre mon code javascript dans un fichier externe et de l'inclure au quel cas mon doc sera conforme et mon javascript bien interprété. Seulement, ca ne m'intéresse pas puisque le code javascript à ajouter est dynamique et je ne veux pas générer de fichiers Js dynamiques à la volée.
D'autres vont peut-être me proposer de mettre mon code javascript sur une seule ligne. Problème : le code javascript que j'insère dynamiquement déclare des objets de type Dojo, Dijit et ca plante si ce n'est pas en multi-lignes.
Voilà je pense avoir donné les éléments exprimant mon besoin.
Merci d'avance
Partager