Comment utiliser une variable en XML lorsque vous essayez de sélectionner un nœud ?

StackOverflow https://stackoverflow.com/questions/5374

  •  08-06-2019
  •  | 
  •  

Question

J'aurais pensé que ce serait facile pour Google, mais je n'ai pas réussi.

Je souhaite attribuer à une variable la valeur d'un attribut (facile jusqu'à présent), puis utiliser cette variable pour sélectionner un autre nœud en fonction de la valeur de cet attribut.

Exemple:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

Cela ne fonctionne pas.Si je remplace le {@myId} par la valeur qui se trouve dans la variable, il trouve le bon nœud, mais le faire de cette façon ne produit rien.Je suis sûr qu'il me manque quelque chose, ou peut-être qu'il existe une autre façon de le faire.

Le contexte est qu'il existe des données associées sous différents nœuds de niveau supérieur qui partagent la même valeur d'identification, je dois donc obtenir les nœuds associés dans mon modèle.

Était-ce utile?

La solution

Ok, j'ai enfin compris.Problème vraiment idiot, j'avais simplement besoin de laisser de côté les guillemets et les accolades.Une de ces fois où je pensée que j'avais déjà essayé ça.:D Oh, et j'ai mal saisi @myId dans le premier exemple, le code était en fait $myId.

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />

Autres conseils

Vous semblez avoir été confus avec l'utilisation d'une variable (qui est juste une variable $) et les modèles de valeur d'attribut, qui vous permettent de mettre n'importe quelle expression XPath dans certains attributs, par exemple.

<newElement Id="{@Id}"/>

Ils peuvent évidemment être combinés, vous pouvez donc inclure une variable dans un modèle de valeur d'attribut, telle que :

<newElement Id="{$myId}"/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top