Sélectionnez les nœuds enfants en fonction de leur contenu
Extrait de code XML suivant:
<AA>
<BB>foo</BB>
<CC>bar</CC>
<DD>baz</DD>
<EE>bar</EE>
</AA>
Comment puis-je sélectionner tous les nœuds enfants de <AA>
qui ont bar
de son contenu? Dans l'exemple ci-dessus, je veux sélectionner <CC>
et <EE>
. Je pense que la solution est quelque chose comme:
<xsl:template match="AA">
<xsl:for-each select="???" />
</xsl:template>
source d'informationauteur krasnaya
Vous devez vous connecter pour publier un commentaire.
L'une des solutions les plus simples pour l'OP, la question de l'expression XPath suivante:
Note qu'aucune instruction XSLT est impliqué -- c'est juste une expression XPathdonc la question ne pouvait être étiqueté XPath.
À partir d'ici, on pourrait utiliser cette expression XPath XSLT, de diverses façons, par exemple pour appliquer des modèles sur tous les nœuds sélectionnés.
Par exemple, ci-dessous est une transformation XSLT qui prend le document XML et produit un autre, dans lequel tous les éléments - les enfants de
<AA>
dont le contenu n'est pas égal à"bar"
sont supprimés:Lorsque cette transformation est appliquée sur l'original du document XML:
le résultat voulu est produit:
Ne remarque:
Dans un match de patron de nous ne sont généralement pas besoin de spécifier un absolu de l'expression XPath, mais seulement un rapport, l'expression XPath est naturellement simplifiée de ce match de modèle: