Paramètre dans un tableau - XML/XSL - Programmation
Marsh Posté le 18-06-2007 à 15:20:01
C'est ptet parce que tu ne sais pas accéder à une variable XSL
Parce que je peux te jurer que @n ça ne va pas te donner la valeur de la variable créée par <xsl:variable name="n" select="@ChoixTitre"/>
Accessoirement, les noms de nodes et d'attributs XML sont habituellement écrits en minuscules et séparés par des "-", ou bien au pire écrits en camelCase pas en PascalCase
Enfin, le XML est déjà bien assez verbeux pour ne pas en rajouter, pourquoi ne pas écrire
Code :
|
qui est plus court, plus clair, moins verbeux et moins redondant
Marsh Posté le 18-06-2007 à 16:43:33
Merci pour ta réponse qui m'apporte aucune solution.....
---- Parce que je peux te jurer que @n ça ne va pas te donner la valeur de la variable créée par <xsl:variable name="n" select="@ChoixTitre"/> ----
Cela, je le sais déjà, sinon je poserais pas la question.
Marsh Posté le 18-06-2007 à 16:44:41
mbar34 a écrit : Merci pour ta réponse qui m'apporte aucune solution..... |
Si tu sais déjà quel est le problème, pourquoi tu postes ici au lieu de regarder la doc XSL la plus proche pour savoir comment on référence une variable en XSL
Marsh Posté le 18-06-2007 à 16:55:45
D'après toi, à quoi sert un forum........
Alors s'il te plait, occupe toi d'un autre post ou va jouer sur un autre forum
J'attends une réponse sérieuse pas une polémique.
A bon entendeur...
Marsh Posté le 18-06-2007 à 17:25:51
mbar34 a écrit : D'après toi, à quoi sert un forum........ |
À poser de vraies questions quand on a vraiment cherché
mbar34 a écrit : J'attends une réponse sérieuse pas une polémique. |
Bon, d'accord, j'ai pitié de toi. voilà le problème
Marsh Posté le 18-06-2007 à 19:11:19
mbar34 a écrit : J'attends une réponse sérieuse pas une polémique. |
C'est $n, pas @n. Mais je recommande quand même un petite lecture de w3schools (http://www.w3schools.com/xsl/el_variable.asp).
Pour en revenir au nommage des éléments, je serais tenté de dire que l'argument "verbeux" de notre camarade n'est pas pleinement recevable. Ca ne fait pas de mal d'utiliser quelque chose de court pour améliorer la lisibilité et (si peu) la vitesse de parsing, mais se concentrer sur la sémantique de l'élément est plus intéressant. En toute logique, un nom est un nom, qu'il serve pour un titre ou pour autre chose.
Marsh Posté le 18-06-2007 à 21:08:17
rx__ a écrit : se concentrer sur la sémantique de l'élément est plus intéressant. |
Ce qui reste en faveur de mon argumentaire, aucune raison de générer des redondances sémantiques
Marsh Posté le 19-06-2007 à 08:20:03
Ha oui pardon.. Ce n'est pas dans la variable du tableau Titre/NomTitre[@n] ou j'ai bien mis Titre/NomTitre[$n] mais dans la récupération dans cette variable n du noeud ChoixTitre. J'ai tout essayé :
<xsl:variable name="n" select="@ChoixTitre"/><xsl:value-of select="Titre/NomTitre[$n]"/> marche pas.
<xsl:variable name="n" select="{ChoixTitre}"/><xsl:value-of select="Titre/NomTitre[$n]"/> marche pas.
<xsl:variable name="n" select="{Titre/ChoixTitre}"/><xsl:value-of select="Titre/NomTitre[$n]"/> marche pas.
<xsl:variable name="n" select="2"/><xsl:value-of select="Titre/NomTitre[$n]"/> et la ça marche.....
Ma question est comment récupérer dans une variable la valeur d'un noeud ou d'un attribut d'un fichier XML ?
J'ai déjà regardé dans plusieurs bouquins et sites internet et je n'ai pas trouvé la réponse.
Marsh Posté le 19-06-2007 à 08:41:56
si tu fais un <xsl:value-of select="@ChoixTitre"/> et (après ton xsl:variable) un <xsl:value-of select="$n"/> ça te ressort quoi dans ton doc?
Il est possible (probable?) que ton $n contienne un string au lieu d'un int, et je doute qu'on puisse indexer un tableau avec des strings en XSL, donc il faudrait peut-être caster/typer ton xsl:variable.
Marsh Posté le 19-06-2007 à 08:59:59
en utilisant @ChoixTitre (donc avec un attribut : <Titre ChoixTitre="2"> )ça marche pas. si je mets dans le xml :
<Titre>
<ChoixTitre>2</ChoixTitre>
<NomTitre>Titre 1</NomTitre>
<NomTitre>Titre 2</NomTitre>
<NomTitre>Titre 3</NomTitre>
</Titre>
et dans le xsl :
<xsl:value-of select="Titre/ChoixTitre"/><xsl:value-of select="$n"/> ça me renvoi la valeur 3.
Que ce soit un attribut ou un noeud, je n'ai jamais la valeur 2...
J'ai bien pensé que cela pouvait venir d'un problème de cast mais j'ai essayé number(Titre/ChoixTitre) mais ça ne marche pas non plus.
Marsh Posté le 19-06-2007 à 09:03:21
Pour l'instant, j'ai contourné le problème en faisant :
<Titre>
<ChoixTitre>2</ChoixTitre>
<NomTitre1>Titre 1</NomTitre1>
<NomTitre2>Titre 2</NomTitre2>
<NomTitre3>Titre 3</NomTitre3>
</Titre>
et
<xsl:if test="Titre/ChoixTitre = '1'"><xsl:value-of select="Titre/NomTitre1"/></xsl:if>
<xsl:if test="Titre/ChoixTitre = '2'"><xsl:value-of select="Titre/NomTitre2"/></xsl:if>
<xsl:if test="Titre/ChoixTitre = '3'"><xsl:value-of select="Titre/NomTitre3"/></xsl:if>
mais c'est pas trop professionnel et ça me limite à 3 titres...
Marsh Posté le 19-06-2007 à 09:30:20
peut-être:
Code :
|
Code :
|
Marsh Posté le 19-06-2007 à 09:53:44
Ca marche en faisant :
<titre valTitre="2">
<nomTitre>Titre 1</nomTitre>
<nomTitre>Titre 2</nomTitre>
<nomTitre>Titre 3</nomTitre>
</titre>
<xsl:variable name="n" select="number(titre/@valTitre)"/><xsl:value-of select="titre/nomTitre[$n]"/>
Merci de ton aide.
Il faut avouer quand même que ce n'est pas facile à trouver dans les livres.
Marsh Posté le 18-06-2007 à 15:15:17
Bonjour
Je n'arrive pas à répurer la bonne valeur de mon tableau d'après un attribut de ma balise XML
J'ai un fichier XML :
<Titre ChoixTitre="2">
<NomTitre>Titre 1</NomTitre>
<NomTitre>Titre 2</NomTitre>
<NomTitre>Titre 3</NomTitre>
</Titre>
et un XSL :
<xsl:variable name="n" select="@ChoixTitre"/><xsl:value-of select="Titre/NomTitre[@n]"/>
Et ça ne marche pas......
D'avance merci pour la solution