Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1509 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Variable et XPath

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variable et XPath

n°2015858
esox_ch
Posté le 10-08-2010 à 18:26:51  profilanswer
 

Bonjour,

 

J'ai un problème à 2 balles que j'arrive pas à résoudre :

 

J'ai un XML dont des attributs sont en plusieurs langues, genre :

 
Code :
  1. <text>
  2. <en> Word </en>
  3. <fr> Mot </fr>
  4. </text>
 

Et qui sont dissiminés un peu partout dans l'arborescence de l'XML.

 

Pour éviter de me taper 2 fichiers XSL complètement différents, je veux juste définir une variable en haut du fichier genre :

 
Code :
  1. <xsl:variable name="language">en</xsl:variable>
 

Comme ça je crée 1 fichier par langue, contenant juste la déclaration de la variable + l'import du code "générique". Comme ça j'évite aussi de duppliquer trop de code.

 

Et ensuite faire appel à cette variable dans mes XPath, ce qui donne des trucs genre  :

 
Code :
  1. <xsl:value-of select="image/alt/$language"/>
 

Et là, bam je me prend l'interpreteur dans la gueule. Pourquoi?

 

P.S: Non je ne peux pas passer les valeur "en" et "fr" directement à l'interpreteur depuis un langage genre PHP/autre parce que les fichiers XML/XSLT sont rentrés dans une appli proprio qui ne le permet pas.

 

Merci


Message édité par esox_ch le 10-08-2010 à 18:28:21

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 10-08-2010 à 18:26:51  profilanswer
 

n°2016122
esox_ch
Posté le 11-08-2010 à 16:21:27  profilanswer
 

Bon j'ai résolu le problème ... belle prise de tête quand même :D
 
Donc l'erreur venait du fait que j'essayais de mixer un node set (image/alt/) avec un string ($language).
 
Il ne faut PAS essayer de tout caster en String (ce que j'ai essayé de faire) :
 

Code :
  1. <xsl:value-of select="concat('image/alt/',$language)"/>


 
Cat dans ce cas, on obtient tout simplement le texte "image/alt/en", et non pas son contenu.
 
Ce qu'il faut faire, c'est justement réflechir en "node set" en non pas en essayant de bricoler des concaténations (qui ne servent pas à ça en XSL).
 
Donc ce qu'il faut faire c'est ça :
 
 

Code :
  1. <xsl:value-of select="image/alt/*[name()=$language]"/>


 
Pourquoi? image/alt/* signifie : Tous les enfants de image/alt. Ensuite, parmis ces enfants on selectionne ceux dont le nom est égal à notre variable.
 
Voilà :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  Variable et XPath

 

Sujets relatifs
remplacer l'url dans <a href="adresse.html" par une variable[VBA/Excel] - Envoyer une selection variable dans une sous fonction ?
Probleme pour convertir une chaine en variable doubleJee comment récupérer une variable dans un décorator struts1
VBA Incrémentation automatique selon une variableEvaluation de variable globale avant celle du main
Variable $_SERVER['SCRIPT_URI'] pas disponiblepowershell - variable après un pipe ?
Stocker un XPATH dans une variable ???Appel variable XSL dans une expression XPath
Plus de sujets relatifs à : Variable et XPath


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR