| Auteur | |
|---|---|
| yep | # 05 Jan 2012 - 14:58:30 |
| 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. Code XML Code XSL Auriez-vous une suggestion ? Modifié par yep (23 Jan 2012 - 16:51) |
| jo_link_noir | # 07 Jan 2012 - 15:06:58 |
| 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 | # 08 Jan 2012 - 15:41:42 |
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 : <xsl:variable name="maisoncouleur"> mais tu peux aussi passer la couleur en attribut <champ maison="bleue">maison</champ> et dans la feuille de style XSL <xsl:value-of select="champ"/><xsl:value-of select="champ/@maison"/> 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 | # 09 Jan 2012 - 19:09:16 |
| 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. Code 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 | # 10 Jan 2012 - 09:29:48 |
| 22 Posts |
J'ai également tenté avec le code XSL suivant :Code XSL mais sans succès. Idem pour Code XSL Je sèche Modifié par yep (10 Jan 2012 - 10:19) |
| rimousky | # 11 Jan 2012 - 22:03:26 |
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 | # 12 Jan 2012 - 14:39:35 |
| 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 | # 23 Jan 2012 - 16:51:27 |
| 22 Posts |
Ta solution *[name()=$method] est nickel, un grand merci. Modifié par yep (23 Jan 2012 - 16:52) |