Comment faire pour vérifier si un nom d'élément contient une chaîne de caractères?
Le document source comme ceci:
<a>
<b n=n1n1n1n1>
<c1> drftgy </c1>
</b>
<c2> dddd </c2>
</a>
la façon de vérifier si le nom de l'élément = c alors nous allons faire quelque chose...
Vous devez vous connecter pour publier un commentaire.
Utiliser un certain nombre de fonctions XPath:
nom()
contains()
starts-with()
se termine-avec()
(XPath 2.0 uniquement)À trouver si le noeud courant est le nom commence par la chaîne
"c"
utilisation:À trouver si le noeud courant est le nom contient la chaîne de
"c"
utilisation:Pour sélectionner tous les éléments dans le document XML, dont les noms commencent par
"c"
utilisation:Pour sélectionner tous les éléments dans le document XML, dont les noms contiennent
"c"
utilisation:Modifier: L'OP a demandé une question supplémentaire: Comment sélectionner tous les éléments dont le nom est l'un un ensemble de noms?
XPath 2.0:
Il utilise le général de l'opérateur de comparaison
=
et de sélectionner tous les éléments dans le document dont le nom est l'une des chaînes dans le séquence('c1', 'c2', 'c3')
.Cela ne peut être fait qu'avec XPath 1.0,
XSLT 1.0 + XPath 1.0:
Cette transformation:
lorsqu'il est appliqué sur le document XML fourni par le (corrigé pour être bien formé):
produit le résultat voulu:
Avec XPath 2.0 et XQuery 1.0 vous pouvez utiliser
//*[local-name() = ('c1', 'c2', 'c3')]
ou vous pouvez utiliser correspond à une expression régulière par exemple//*[matches(local-name(), '^c[123]$')]
.