Page 1 sur 1

Entités externes et php

Posté : 01 févr. 2007, 19:22
par 131
Bonjour
Je me demandais s'il etait possible à php de resoudre les entitées externes en parsant un fichier XML.

J'aimerais par exemple pouvoir avoir un fichier XSL avec le texte marqué en entité

Code : Tout sélectionner

<b>&titre;</b>
Mettre dans mon entete doctype SYSTEM lang.dtd
et que le resultat de ma transformation soit bien
<b>Titre de ma page</b>

Posté : 01 févr. 2007, 19:42
par zeus
Si tout tes fichiers lang.dtd respectent et implémentent l'intégralité des entités de ton fichiers XML, c'est effectivement possible ;)

Lors de l'affichage de ton XML, les entités devraient être remplacées par la correspondance dans la DTD.

Je me demande juste s'il ne vaudrait pas mieux créer 2 DTD : une pour le formalisme du document, une autre pour les entités. Comme ça, tu ne doublonnes pas trop les données :-k

Posté : 02 févr. 2007, 10:56
par 131
Si tout tes fichiers lang.dtd respectent et implémentent l'intégralité des entités de ton fichiers XML, c'est effectivement possible ;)

Lors de l'affichage de ton XML, les entités devraient être remplacées par la correspondance dans la DTD.

Je me demande juste s'il ne vaudrait pas mieux créer 2 DTD : une pour le formalisme du document, une autre pour les entités. Comme ça, tu ne doublonnes pas trop les données :-k
Merci pour ta réponse.
J'ai bien conscience qu'il soit nécessaire d'utiliser deux DTD - idéalement X fichiers ( liés via des inclusions internes ( head.dtd, container.dtd ... ) + 1 dtd lang.

Mon probleme se trouve en fait vis à vis de php.
Je n'arrive pas à charger de dtd externes au sein de ma feuille XSLT ( Entity not defined ... ), la transformation FFox produit le même résultat, quand IE 7 semble ne recontrer aucun probleme.

L'interet d'une DTD multilangue est biensur de pouvoir moduler et séparer mes données, s'il m'est imposé de declarer mes ENTITY au sein même de mon document, je n'y gagne rien.

Ce qui est étrange, c'est que le chargement de document( externes marche tres bien lors des transformations.

j'ai donc trouvé une solution paliative qui dans son idée rend ainsi

Code : Tout sélectionner

langs/about_en.xml <?xml version="1.0"?> <lang> <descr>this is about</descr> <bo>this id the bo</bo> </lang>

Code : Tout sélectionner

<?xml version="1.0"?> <stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:htm="http://www.w3.org/1999/xhtml"> <output method="html" encoding="ISO-8859-1" indent="yes" /> <variable name="lang" select="document('lang/about_fr.xml')/lang"/> <template match='/root'> <htm:body> <htm:b><value-of select="$lang/bo"/></htm:b> Liste des news : </htm:body> </template> </stylesheet>
Mais même ecrit de la plus simple facon, <value-of select="$lang/bo"/> reste toujours plus long que &bo;

Pourriez vous m'indiquer une portion de code qui fonctionnerait ?

Posté : 02 févr. 2007, 12:20
par zeus
Normalement, il n'y a pas de code spécifique à l'intégration d'une DTD dans un XML. :-k

La seule règle à suivre est l'inclusion de la DTD dans le fichier XML.

Est-ce que tu intègres plusieurs DTD dans le fichier XML ou est-ce que les différentes inclusions de DTD se font dans les différentes DTD ?