XSLT - Boucle par tous les nœuds enfants
Ne tirez pas, je suis juste le messager ici, mais j'ai un peu de xml qui ressemble à ce
<XMLSnippet>
<data>
<stuff value="stuff" />
<stuff value="more stuff" />
<stuff value="even more stuff" />
<widget value="you expected stuff didn't you" />
<stuff value="great, we've got stuff again" />
</data>
</XMLSnippet>
Et je voudrais faire une boucle par tous les data
nœuds enfants et de sortie suivants
stuff
more stuff
even more stuff
you expected stuff didn't you
great, we've got stuff again
Devrait-il importe, je suis limité à l'aide de XSLT 1.0
Merci!
Les Questions concernant des problèmes avec le code que vous avez écrit doit décrire le problème — et inclure le code est valide pour la reproduire dans la question elle-même. Voir SSCCE.org pour des conseils.
Je serais heureux de fournir le code XSLT j'ai écrit à l'exception je n'en ai pas car je ne sais pas comment aborder le problème.
Bien que le cadre, justement, vous avez des problèmes avec ? Savez-vous comment sélectionner tous les
Ma question est si je boucle à travers les "choses " nœuds", comme illustré par Phil dans sa réponse le "widget" nœud ne sera pas de sortie dans la position correcte. J'ai besoin de trouver un moyen de faire une boucle par les enfants du nœud non pas par leur type(?), mais par tous les enfants du nœud de données.
Il suffit de remplacer son
Je serais heureux de fournir le code XSLT j'ai écrit à l'exception je n'en ai pas car je ne sais pas comment aborder le problème.
Bien que le cadre, justement, vous avez des problèmes avec ? Savez-vous comment sélectionner tous les
data
éléments compte tenu de la structure ? Savez-vous comment sélectionner uniquement les attributs des éléments de donnée une requête XPath qui est revenu de tous les éléments pertinents ?Ma question est si je boucle à travers les "choses " nœuds", comme illustré par Phil dans sa réponse le "widget" nœud ne sera pas de sortie dans la position correcte. J'ai besoin de trouver un moyen de faire une boucle par les enfants du nœud non pas par leur type(?), mais par tous les enfants du nœud de données.
Il suffit de remplacer son
data/stuff
par data
et son @value
par */@value
. De ce que j'en retiens ceci devrait faire l'affaire.OriginalL'auteur dscl | 2013-09-09
Vous devez vous connecter pour publier un commentaire.
C'est une base XSLT question, donc je suis en supposant que vous avez peu d'expérience avec xsl par votre post. Vous avez besoin de comprendre comment xslt transforme un document XML qui est au-delà de la portée de ce post. Néanmoins, cela devrait vous obtenir a commencé. Veuillez noter, il y a plusieurs façons d'obtenir le résultat que vous voulez, ce n'est que l'un d'entre eux:
Pour commencer, le template match="/" est votre point d'entrée. L'apply-templates est une instruction xslt qui indique au processeur xslt appliquer le modèle du nœud contexte. Dans ce cas, votre nœud racine "XMLSnippet".
La for-each select="données/stuff" doivent être explicites ainsi que de la value-of select="@valeur", sauf que le @ est utilisé pour sélectionner un attribut.
Bonne Chance. Puis-je vous suggérer de lire ce livre,XSLT 2.0. Un grand livre sur XSLT.
Pourquoi est-ce une réponse correcte? Il semble que, en laissant de côté les 'widget' élément dans la construction de boucle signifierait que l'exigence de la question n'est pas abordée.
En xslt vous n'avez tout simplement pas de "boucle" à travers les nœuds, vous visitez les nœuds. Comme pour la réponse, j'ai montré l'OP sélectionner chaque nœud. Dans ce cas,
data/stuff
, sont les noeuds. Il est supposé que ce serait suffisant et, depuis, ils ont marqué comme réponse, alors que c'était.votre commentaire est correct. Je devrait avoir répondu à ma question à dscl. Son premier commentaire sur ce fil indique que votre solution ne visite pas le 'widget' la valeur souhaitée. Puis il va sur et ajoute un distinct réponse à cette question qui n'a réussi à les visiter tous ses "trucs" éléments et 'widget' élément. Il semble tout à fait logique pour moi que sa réponse à cette question doit être marqué correct au lieu de la vôtre. Il y a une chose qui me manque dans mon processus de pensée ici?
pas de soucis. J'ai répondu à sa question lui a appris quelque chose dans le processus. Il a ensuite répondu à sa propre question et m'a donné du crédit. Je pense qu'il est juste.
OriginalL'auteur PhillyNJ
Merci à Phil et les suggestions d'Alexandre voici le code que j'ai obtenu de travail
OriginalL'auteur dscl