À l'aide de xslt obtenir la valeur du nœud à la position X
Comment puis-je obtenir de l'aide de xslt, la valeur du nœud à la position X, sans utiliser foreach
<items>
<item1>x</item1>
<item2>x</item2>
<item3>x</item3>
</items>
C'est expliqué dans la programmation de sens:
<xsl:value-of select="Items/Item[2]"/>
==================================================
Juste à peu élargir la question, dans le code xml suivant:
<items>
<about>xyz</about>
<item1>
<title>t1</title>
<body>b1</body>
</item1>
<item2>
<title>t2</title>
<body>b2</body>
</item2>
<item3>
<title>3</title>
<body>3</body>
</item3>
</items>
Comment puis-je sélectionner la deuxième du titre de l'élément.
Bonne question, +1. Notez que la plupart des réponses contiennent des expressions qui, selon le document XML, la possibilité de sélectionner l'un
title
qui n'est r un enfant d'un item
XYZ parent.OriginalL'auteur jasin_89 | 2011-09-17
Vous devez vous connecter pour publier un commentaire.
Réponse à l'élargissement de la question. Vous pouvez utiliser la position de la valeur si vous sélectionnez un nœud-ensemble des éléments demandés:
ou:
Remarque l'utilisation de la parenthèse nécessaire pour retourner voulais node-set avant de sélectionner par position.
Vous pouvez utiliser ce que vous avez appelé "dans la programmation de sens". Cependant, vous devez
*
en raison de l'inconnu nom des enfants des éléments:Noter que les nœuds-ensembles dans XSLT ne sont pas de base zéro. En plus de la sélection de la deuxième élément, pas la troisième.
Vous avez vraiment besoin de
position()
lorsque vous voulez comparer la position actuelle avec un numéro comme dans:pour sélectionner tous les élément avec la position de supérieur à 2. Les autres cas où
position()
est indespensable est quand la position de la valeur d'une variable de type chaîne:Cela m'a beaucoup aidé avec un problème similaire. Grand, la solution la plus simple, merci.
OriginalL'auteur Emiliano Poggi
Utilisation:
Cette sélectionne: tous les
title
éléments qui sont les enfants de la deuxième de tous les enfants-éléments de l'élément supérieur, dont les noms commencent par la chaîne"item"
.Ne remarque que des expressions telles que:
ou
ne sont pas corrects en général, parce que si dans le document XML, il y a d'autres éléments tels que (dire)
"chapter"
qui onttitle
les enfants, les expressions ci-dessus pourrait sélectionner unchapter/title
élément -- mais la tâche ici est de choisir le deuxièmetitle
dans le document dont le parent ne pouvait être qu'uneitem
XYZ élément.Merci, et oui, même si ma solution est plus général et plus robuste que le vôtre, il y a toujours une chance que même des changements plus radicaux pourraient faire aucun solution inadaptée. Donc, j'ai l'habitude de soins pour les variations sont tout à fait possible, mais ce n'est pas l'extrême.
Je suis d'accord, mais de là à dire que les termes que j'ai utilisés dans ma réponse ne sont pas correct il n'est pas correct :). Vous pouvez dire que ces expressions sont moins robustes et peuvent échouer si le document d'entrée change.
C'est essentiellement ce que je dis, si vous avez bien lu. Je suis d'accord avec votre argument, alors j'ai juste modifié et remplacé "ne sont pas corrects" avec "ne sont pas corrects en général" 🙂
OriginalL'auteur Dimitre Novatchev
Vous pouvez utiliser la position()
OriginalL'auteur TheCodeKing
Vous pourriez le faire avec
OriginalL'auteur kfuglsang