[DOM xml PHP5] entités html

the_mouette Messages postés 13 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 27 mars 2007 - 12 déc. 2006 à 13:39
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009 - 12 déc. 2006 à 16:09
Bonjour tout le monde,


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
xHTML 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 des deux ne me convient :

<li>Ne pas mettre d'entités (je ne vous explique pas pourquoi ca ne me va pas)
</li><li>mettre le membre resolveExternals à true (et donc charger le DTD à partir du site du W3C
</li>

Le second cas fait bien que tout marche, mais le temps de chargement d'une simple page HTML prend entre 5 et 20secondes...


un hackest 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 du 20 lignes sur chaque page... et puis si mon template est
composé de 10 fichiers, ca risque de vite 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 ?


A votre bon coeur M'sieur dame !

3 réponses

cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
12 déc. 2006 à 15:49
Hello

Arf j'ai eu le meme probleme... jamais comrpis pourquoi d'ailleurs... y avait une astuce sur php4 qui consistait a mettre un str_replace()... pas chouette je sais, mais sa me permettait d'afficher mes entitees correctement. le contenu etait vierge de toutes balises il n'y aavit que le texte que je preformatte.
Clair que si quelqu'un a une soluce, sa serait mega-cool :-)

@+
0
the_mouette Messages postés 13 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 27 mars 2007
12 déc. 2006 à 15:58
salut,
j'ai trouvé un truc temporaire : je remplace mes entités pas leur code ISO dans les templates ou les chaines XML.
l'idée c'est de ne pas perdre de temps de calcul sur l'affichage, alors je ne cherche que dans les chaines construites par l'utilisateur, je me dit que mon générateur de templates devra faire ca de facon automatique...

maintenant si vous avez mieux comme solution, je prends !

au passage, je cherche une fonction qui fait ca toute seule (html entity ou caractère simple -> code iso), si vous avez ca ce serait sympa, sinon, je continue d'éplucher la doc php...
+
0
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
12 déc. 2006 à 16:09
Ah pas bete sa ... je me disais aussi. Je comprenais pas les caracteres de la DTD genere par dreamweaver (quand on cree un nouveau document xml).
Pour la fonction, si la doc est explicite, bah faudra la faire a la main (comme quoi mon str_replace() va reprendre du service ^^).
Bah allez je m'y colle....

@+
0
Rejoignez-nous