[XSLT] fonction document() avec parametre

Résolu/Fermé
djedy Messages postés 16 Date d'inscription jeudi 25 mai 2006 Statut Membre Dernière intervention 5 avril 2009 - 5 avril 2009 à 19:32
 willy's gang - 19 juin 2011 à 09:36
Bonjour,
j'ai crée plusieurs fichiers xml ayant tous le meme format et contenants les jours de la semaine chacun en une langue.
Ex: french.xml
<days>
<day>lundi</day>
<day>mardi</day>
<day>mercredi</day>
.
.
</days>
J'ai également un autre fichier XML auquel je souhaite appliquer une transformation XSLT et produire en sortie du HTML.
Dans mon fichier XSLT j'aimerais pouvoir faire référence aux fichiers externes XML contenant les jours de la semaine de la maniere suivante:

1.<xsl:variable name="lang_file"/>
2.<xsl:if test="$lang='fr'"><!--lang est un parmetre de mon template xsl-->
3.$lang_file="french.xml"
4.</xsl:if>
5.<td><xsl:value-of select="document($lang_file)/days/day[1]"/></td>

J'ai un problème à la 3eme ligne car je ne sais pas comment l'inclure dans une balise xsl et si meme cette opération est possible en XSLT bien evidement je voudrais eviter de créer une nouvelle variable pour chaque fichier de langue,c'est a dire eviter d'ecrire:
<xsl:variable name="lang_file_fr" select="'french.xml'"/>
<xsl:variable name="lang_file_en" select="'english.xml'"/>
.
.etc...

Et si meme je fais cela,je rencontre un autre problème a la ligne 5, il me semble que la fonction document() ne puisse pas prendre en parametre un variable.La documentation signale que le parametre doit etre une URI(ref: http://www.w3schools.com/Xsl/func_document.asp).

Comment puis je résoudre ces deux problèmes?Existe t-il une autre méthode(plus simple peut etre) pour effectuer la tache désirée?
Merci pour votre assistance.
A voir également:

3 réponses

bonsoir
je suis débutante en xslt et j'ai rencontré un problème, quand j'ai lu votre message j'ai trouvé qu'il peut m'aider dans mon travail.
je voudrais savoir comment je peux entrer une variable en paramètre dans un fichier xslt.
dans votre exemple j'ai pas compri ou se trouve la variable $lang, elle se trouve dans le fichier xml ?
j'attends une réponse..merci
1
djedy Messages postés 16 Date d'inscription jeudi 25 mai 2006 Statut Membre Dernière intervention 5 avril 2009 4
5 avril 2009 à 23:51
--Problème résolu--
L'astuce a été de renommer les fichier de langue de la facon suivante:
- lang_fr.xml
- lang_it.xml
- lang_en.xml
etc...
et faire tout simplement : <xsl:value-of select="document(concat('lang_', $lang, '.xml'))/days/day[1]"/>.

NB: pour utiliser la variable $lang_file comme parametre, voici une possible solution:

<xsl:variable name="lang_file">
<xsl:choose>
<xsl:when test="$lang = 'fr'">
<xsl:text>french.xml</xsl:text>
</xsl:when>
<xsl:when test="$lang = 'it'">
<xsl:text>italiano.xml</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>english.xml</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>

ensuite il suffit d'ecrire: <xsl:value-of select="document($lang_file)/days/day[1]"/>
0
willy's gang
19 juin 2011 à 09:36
<xsl:param name="lang">fr</xsl:param>
0