[xsl] sélection de noeuds selon leurs attrituts [Résolu]

sélection de noeuds selon leurs attrituts [Résolu] [xsl] - XML/XSL - Programmation

Marsh Posté le 22-01-2007 à 15:21:01    

Bonjour,
 
J'ai un fichier xml sous la forme suivante :

Code :
  1. <racine>
  2.          <texte lang="fr" titre="titre en fr"> texte en français </texte>
  3.          <texte lang="en" titre="titre en en"> texte en anglais </texte>
  4.          <texte lang="es" titre="titre en es"> texte en espagnol </texte>
  5. </racine>


 
ce que je cherche a faire : c'est sélectionner un <texte> en fonction de sa langue grâce a une variable passée en paramêtres.
 
voila a quoi j'ai pensé :

Code :
  1. <xsl:for-each select="texte">  <!-- ce qui manquait -->
  2.          <xsl:choose>
  3.                <xsl:when test="@lang=$lang">
  4.                             <xsl:value-of select="@titre" />
  5.                                ...
  6.                </xsl:when>
  7.          </xsl:choose>
  8.        </xsl:for-each>


 
ou la même chose avec un <xsl:if> mais cela ne marche pas : il me renvoie toujours le texte en français car c'est le premier...
 
je pense que je m'y prends mal mais je ne vois pas comment faire.
 
merci de votre aide


Message édité par cyplp le 22-01-2007 à 15:40:39

---------------
logiciels libres à Pau http://www.paulla.asso.fr
Reply

Marsh Posté le 22-01-2007 à 15:21:01   

Reply

Marsh Posté le 22-01-2007 à 15:39:14    

j'ai trouvé...
il manquait simplement un for-each...


Message édité par cyplp le 22-01-2007 à 15:41:02
Reply

Marsh Posté le 22-01-2007 à 17:07:33    

sinon :
 
<xsl:for-each select="texte[@lang=$lang]">
 
Ca t'évite de faire le if imbriqué qui est inutile.

Reply

Marsh Posté le 22-01-2007 à 17:19:03    

c'est vrai que c'est mieux

Reply

Marsh Posté le 22-01-2007 à 23:21:48    

Euh, ouais, enfin, si c'est juste pour ne récupérer qu'un seul element a chaque fois, un simple match sur l'attribut fait tout aussi bien l'affaire et est nettement moins lourd.

Reply

Marsh Posté le 23-01-2007 à 01:27:21    

en effet, dans ce cas, suffit de bêtement :
 
<xsl:value-of select="texte[@lang=$lang]/@titre"/>

Reply

Marsh Posté le 23-01-2007 à 10:04:42    

merci j'ai encore simplifié mon code

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed