Eléphanteau du PHP |
45 Messages
02 févr. 2007, 10:56
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

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 ?