Je suis en train de coder mon moteur de template (pas très original tout ca...) basé sur du XML. Jusque là ca marche. Seulement, dans les pages que j'utilise pour tester toutes les fonctionnalités, il y a des (x)HTML entities (genre & nbsp; ) et le parseur DOM de PHP5 est facilement vexé.
Pas de problème me direz vous : plutôt que loadXML, utilise loadHTMLFile, et tout se passera bien !
En fait le problème est que j'ai aussi définit un espace de nom pour certaines de mes balises (avec le schéma valide correspondant et tout et tout, oui monsieur ) donc je ne peux plus charger en HTML !
J'ai trouvé deux solutions, mais aucune ne me convient :
* Ne pas mettre d'entités (je vous explique pourquoi ca ne me va pas ?
* mettre le membre resolveExternals à true (et donc charger le DTD à partir du site du W3C)
Le second cas fait bien que tout marche, mais le temps de chargement d'une simple page HTML prend entre 5 et 20 secondes...
un hack est proposé ici mais il suppose que l'on ait la main sur le serveur !
je me suis déjà passé d'un parseur SAX car il n'était pas dans l'installe de base, alors mettre des fichiers dans /etc/xml/, j'aimerai éviter, et puis ca ralentit toujours...
la solution d'ajouter les entités à tous mes fichiers XML, pourquoi pas, mais je vais devoir créer un générateur plus rapidement que prévu, parce que j'ai déjà 2 schémas XML dans la balise racine, alors ca va vite faire 20 lignes sur chaque page... et puis si mon template est composé de 10 fichiers, ca risque de ralentir le moteur... L'idéal serait de définir ces entités à la création de mon objet DomDocument mais je n'ai pas trouvé comment faire...
Quelqu'un a une solution ?
...
une bonne idée ?
...
une idée ?
...
10 balles ?