Page 1 sur 1
DOMDocument et HTML 5
Posté : 11 mai 2011, 10:23
par supernicky
Bonjour,
je travaille avec la classe DOMDocument pour manier les fichiers HTML. J'ai besoin de valider ces documents pour accéder aux différentes balises/identififant (fonction validate()).
Jusqu'ici, j'utilisais les DTD liés à la version du html pour valider les doc.
Je souhaitais passer en HTML 5 et c'est là le problème car il n'y a plus de DTD pour cette norme.
Comment faire ?
Quelqu'un a déjà été confronté à ce problème ?
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 11:06
par stealth35
la libxml2 (donc DOMDocument et SimpleXML) ne gère pas le HTML 5, sinon non il n'y pas de dtd pour le html5
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 11:27
par supernicky
je savais qu'il n'y avait pas de DTD pour le HTML 5 mais comme je veux juste une dtd pour pouvoir naviguer dans le code html, je vais rajouter des attributs dans un dtd que j'ai en local.
Par exemple le type email pour les input.
Mais bon ce n'est qu'une solution temporaire...
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 12:05
par stealth35
pas besoin de dtd pour naviguer dans le DOM
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 13:37
par supernicky
Avec la classe Domdocument, si tu veux récupérer des elts par leur identifiant, il faut que le code HTML soit validé (avec la fonction validate).
Cela peux être fait seulement si ton code html se réfère à un dtd.
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 13:54
par stealth35
Avec la classe Domdocument, si tu veux récupérer des elts par leur identifiant, il faut que le code HTML soit validé (avec la fonction validate).
Cela peux être fait seulement si ton code html se réfère à un dtd.
non pas besoin de validation
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 14:17
par supernicky
effectivement pour le html, cela ne semble pas nécessaire (je viens de faire le test en enlevant les validate) mais pour le xml oui :
http://php.net/manual/en/domdocument.getelementbyid.php
j'utilise des fois le html comme une chaine xml : c'est pour ça que j'ai fait la bourde.
Mais cela ne change pas le probleme car comme c'est dit dans la doc (
http://www.php.net/manual/en/domdocumen ... php#100402) : Please note that if your HTML does not contain a doctype declaration, then getElementById will always return null.
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 14:20
par stealth35
fait un coup de xpath si ca marche pas
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 14:51
par supernicky
ça va pas être trop possible : trop de référence à getElementById dans le framework...

Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 15:12
par stealth35
au delà de ce que dit la doc t'as essaye quand même ?
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 15:33
par supernicky
j'ai trouvé !!!
j'avais une fonction qui permettait d'afficher la page à la fin des traitements, où il était utilisé la fonction de DOMDocument saveXML.
Je l'ai remplacé par saveHTML et, miracle, ma page s'affiche sans faire de reference à un dtd...
Par contre je n'ai aucun souvenir de pourquoi je traitais le html en chaine xml (le projet remonte à 4-5 ans).
j'espère que cela ne va pas avoir de répercussion ailleurs.
Pour résumé :
on peux quand même utiliser la fonction getElementById sans avoir recours ni à validate ni à un dtd.
Par contre je suis sûr (à 95%) que cela n'a pas toujours été le cas dans les versions de php (je suis en 5.3) et me rappelle avoir galéré avec ça...
Re: DOMDocument et HTML 5
Posté : 11 mai 2011, 15:38
par stealth35
c'etait déjà comme ça, le problème c'est que les gens on tendance a faire load ou loadXML a la place loadHTML et loadHTMLFile, pusique ca n'existait pas sous PHP 4