| Auteur | |
|---|---|
| yep | |
| 22 Posts |
Bonjour à tous, Je n'arrive pas à obtenir une variable dépendant d'une autre variable. J'ai tenté le code suivant pour obtenir la variable $maison égale à "bleue", grâce à ma variable $champ... sans succès.
Auriez-vous une suggestion ? Modifié par yep (23 Jan 2012 - 16:51) |
| jo_link_noir | |
| 298 Posts |
Salut, Tu peux utiliser name() qui permet de récupéré le nom du nœud courant et qui entre crochet + condition permet de sélectionner les nœud avec un nom donné.
Je suis curieux de savoir à quoi cela peux servir ^^. |
| rimousky | |
La nuit porte conseil ! 52 Posts |
Bonjour yep que veux tu faire exactement ? qu'entends-tu par une variable qui dépend d'une autre variable ? autrement-dit est que la valeur de "maison" dépend de celle de "champ" ? d'après ce que tu expliques, ton xsl ne fait que créer la variable $champ qui prend la valeur de l'élément champ c.a.d " maison (fichier xml) tu crées ensuite une variable $maison qui prend la valeur de la variable champ c.a.d "maison". autrement dit maison = maison si tu veux créer une extraction qui s'appelle maison bleue, il faut créer la séquence suivante :
mais tu peux aussi passer la couleur en attribut <champ maison="bleue">maison</champ> et dans la feuille de style XSL
Si tu souhaites connaitre la couleur de la maison à ce moment là il ne faut éditer que la valeur de l'attribut. Mais est-ce bien cela ton problème ? Modifié par rimousky (08 Jan 2012 - 15:46) Cordialement Rimousky |
| yep | |
| 22 Posts |
Merci à vous pour vos premiers retours. En fait, le script me permet d'obtenir un formulaire en fonction d'un fichier de configuration XML.
Mon objectif est d'obtenir, dans cet exemple, la valeur "form/legend/create" soit "Ajouter un enregistrement", obtenue grâce à la valeur définit dans la balise <method /> (= "create"). Si la valeur de <method /> devient "update", c'est automatiquement "form/legend/update" que doit prendre la valeur de ma seconde variable. Modifié par yep (10 Jan 2012 - 10:00) |
| yep | |
| 22 Posts |
J'ai également tenté avec le code XSL suivant :
mais sans succès. Idem pour
Je sèche Modifié par yep (10 Jan 2012 - 10:19) |
| rimousky | |
La nuit porte conseil ! 52 Posts |
Autrement dit tu veux passer la valeur de l'élément <method> à une variable qui va imposer le choix du sous élément portant le nom de l'élément méthod. Comme cela tu ne pourras pas y arriver par contre tu peux simplifier l'écriture du doc XML en introduisant des attributs pour l'élément <legende> par exemple <legendeSelect> <legende type="create">Ajouter....</legende> <legende type="update">Modifier...</legende> etc... </legendeSelect> Puis faire un test en fonction de la valeur de l'élément <method>.....passé en variable $method par exemple (première partie de ton xsl soit : dans le fichier xsl <xsl:if test="..../legend[@type=$method]"> <xsl:value-of select="."/> </xsl:if> Ou à l'aide de template en matchant sur les éléments <legende> dont le type a la valeur <method> Cordialement Rimousky |
| jo_link_noir | |
| 298 Posts |
Salut, je passe en coup de vent, manque de temps
la variable legend devrait être quasiment comme le premier exemple que je donnais mais avec un patch en plus
Mais comme dit rimousky tu peux passer par des if et faire des template ou les 2
La methode de l'attribut revient un peut au meme que chercher un nom de neud, mais est surement plus clair |
| yep | |
| 22 Posts |
Ta solution *[name()=$method] est nickel, un grand merci. Modifié par yep (23 Jan 2012 - 16:52) |