J'ai besoin de sélectionner le texte dans un nœud, mais pas de nœuds enfants.
Le XML ressemble à ceci si je sélectionne a / texte () code>, tout ce que je reçois est " pommes strong>". Comment devrais-je récupérer " pelles pommes forte>" tout en omettant
3 Réponses :
Eh bien le chemin a / text () code> sélectionne tous les nœuds enfants de texte de l'élément
A code> de sorte que le chemin est correct à ma vue. Seulement si vous utilisez ce chemin avec E.G. Xslt 1.0 et
String-Join (A / Text (Text (Text () / Normalize-Space (), '') Code> Donne la chaîne
Apple Poires CODE> peut-être que cela aide donc cela aide pour ton problème. Sinon, envisagez d'expliquer dans quel contexte vous utilisez XPath ou XQuery de sorte que
a / texte () code> ne renvoie que la valeur (chaîne?) Du premier noeud sélectionné. p>
Je l'utilise dans un script PHP et ma version de XSLT est définitivement 1.0.
+1 Explication correcte. XPath String () CODE> La fonction déploierait également le nœud défini sur un singleton.
Dave, même avec XPath 1.0, l'expression de chemin a / text () code> donne un nœud défini avec deux nœuds de texte. Si vous obtenez seulement un résultat, vous voudrez peut-être vous montrer le code PHP que vous avez exécuté la requête XPath afin que nous puissions essayer d'identifier pourquoi vous n'obtenez qu'un seul résultat. Si vous utilisez PHP.net/manual/fr/DomXPath.Query.php A> Ensuite, vous devriez obtenir deux nœuds dans la liste des nœuds retournés.
Pour récupérer tous les descendants, je vous conseille d'utiliser la notation //. Cela retournera tous les descendants de texte sous un élément. Vous trouverez ci-dessous un extrait xquery qui obtient tous les nœuds de texte descendants et les formats comme Martin indiqués. ou si vous avez vos propres exigences de formatage, vous pouvez commencer par boucle via chaque élément de texte de la XQUERY suivante. p>
Vous avez écrit "pour récupérer tous les descendants [...]" i>. Cela n'a pas été demandé.
Si je sélectionne un / texte (), tout ce que je reçois est "pommes". Comment devrais-je récupérer "des pommes poires " p>
utilise simplement fort>: p> xxx pré> explication strong>: p>
la valeur de la chaîne de la racine Le nœud (
/ code>) du document est la concaténation de tous ses descendants de nœud texte. Parce qu'il existe des nœuds de texte blanche-Space-Space-Seuls, nous devons éliminer ces nœuds de texte indésirables. P>
Voici une petite démonstration forte> Comment cette solution fonctionne et ce qu'elle produit: p>
xxx pré>
Lorsque cette transformation est appliquée sur le document XML fourni: strong> p> xxx pré>
le Recherché, le résultat correct est produit: strong> p> xxx pré> blockquote>
Bonne question, +1. Consultez ma réponse pour une solution de XPath complète, très courte et simple et pour une explication. :)