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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Paramètre dans un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Paramètre dans un tableau

n°1576324
mbar34
Posté le 18-06-2007 à 15:15:17  profilanswer
 

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

mood
Publicité
Posté le 18-06-2007 à 15:15:17  profilanswer
 

n°1576330
masklinn
í dag viðrar vel til loftárása
Posté le 18-06-2007 à 15:20:01  profilanswer
 

C'est ptet parce que tu ne sais pas accéder à une variable XSL [:petrus75]
 
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 [:petrus75]
 
Enfin, le XML est déjà bien assez verbeux pour ne pas en rajouter, pourquoi ne pas écrire

Code :
  1. <titre choix="2">
  2.    <nom>Titre 1</nom>
  3.    <nom>Titre 2</nom>
  4.    <nom>Titre 3</nom>
  5. </titre>


qui est plus court, plus clair, moins verbeux et moins redondant [:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1576374
mbar34
Posté le 18-06-2007 à 16:43:33  profilanswer
 

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.

n°1576379
masklinn
í dag viðrar vel til loftárása
Posté le 18-06-2007 à 16:44:41  profilanswer
 

mbar34 a écrit :

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.


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  [:pingouino dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1576395
mbar34
Posté le 18-06-2007 à 16:55:45  profilanswer
 

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...

n°1576417
masklinn
í dag viðrar vel til loftárása
Posté le 18-06-2007 à 17:25:51  profilanswer
 

mbar34 a écrit :

D'après toi, à quoi sert un forum........


À poser de vraies questions quand on a vraiment cherché [:petrus dei]

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


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1576482
rx__
Paint It Black
Posté le 18-06-2007 à 19:11:19  profilanswer
 

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.

n°1576518
masklinn
í dag viðrar vel til loftárása
Posté le 18-06-2007 à 21:08:17  profilanswer
 

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 [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1576600
mbar34
Posté le 19-06-2007 à 08:20:03  profilanswer
 

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.

n°1576604
masklinn
í dag viðrar vel til loftárása
Posté le 19-06-2007 à 08:41:56  profilanswer
 

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.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
mood
Publicité
Posté le 19-06-2007 à 08:41:56  profilanswer
 

n°1576610
mbar34
Posté le 19-06-2007 à 08:59:59  profilanswer
 

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.

n°1576614
mbar34
Posté le 19-06-2007 à 09:03:21  profilanswer
 

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...

n°1576620
tropicano
Posté le 19-06-2007 à 09:30:20  profilanswer
 

peut-être:

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <document>
  3. <titre choixTitre="2">
  4.  <nomTitre>Titre 1</nomTitre>
  5.  <nomTitre>Titre 2</nomTitre>
  6.  <nomTitre>Titre 3</nomTitre>
  7.  <nomTitre>Titre 4</nomTitre>
  8.  <nomTitre>Titre 5</nomTitre>
  9.  <nomTitre>Titre 6</nomTitre>
  10. </titre>
  11. </document


 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output method="xml" indent="yes"
  4.   encoding="UTF-8"/>
  5. <xsl:template match="/">
  6.  <html>
  7.   <body>
  8.    <xsl:apply-templates/>
  9.   </body>
  10.  </html>
  11. </xsl:template>
  12. <xsl:template match="titre">
  13.  <xsl:apply-templates select="nomTitre[position() = ../@choixTitre]"/>
  14.  <xsl:apply-templates select="nomTitre[number(../@choixTitre)]"/>
  15. </xsl:template>
  16. <xsl:template match="nomTitre">
  17.  Le titre choisi est: <xsl:apply-templates/>
  18.  <br/>
  19. </xsl:template>
  20. </xsl:stylesheet>

n°1576632
mbar34
Posté le 19-06-2007 à 09:53:44  profilanswer
 

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.
 


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

  Paramètre dans un tableau

 

Sujets relatifs
passer un tableau en parametre dans un sub?tableau en parametre
VBA - Recevoir un tableau comme parametre d'une méthode[C] question passage d'un tableau a plusieurs dim en parametre
[Activex] - Passage de paramètre (Tableau)[Oracle/PL-SQL] Passer un tableau en paramètre d'une procedure stockée
Passer l'adresse d'un tableau en parametre[c] Passer l'adresse d'un tableau a 2 dim en parametre [OK]
passage d'un tableau php parametre à une fonction javascriptpasser un tableau d'entier en parametre dans une URL [resolu]
Plus de sujets relatifs à : Paramètre dans un tableau


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