L'élément XML a un espace de nommage, mon XPATH ne fonctionne pas
M'a donné le code XML suivant:
<root>
<items>
<item>
<title>Item</title>
<details>
<data xmlns="http://some_url">
<length>10</length>
<weight>1.2</weight>
</data>
</details>
</item>
</items>
</root>
XPath suivante ne fonctionne pas de sens, rien n'est imprimé, comme les "données" de l'élément n'existe pas:
/root/items/item/details/data
Mais quand j'enlève les "xmlns" espace de noms d'attribut de "données" d'un élément de contenu est imprimé.
Quel doit être l'expression xpath ressembler à travailler sans la suppression de "xmlns" espace de noms d'attribut de "données" d'un élément?
Je suis en utilisant SAXON et XSL 1.0.
source d'informationauteur Vojtech
Vous devez vous connecter pour publier un commentaire.
C'est l'un des la plupart des FAQ dans XPath /XSLT:
XPath interprète une unprefixed nom de l'élément comme appartenant à une "aucun espace de noms" et c'est la raison pour éléments avec unprefixed noms appartenant à une valeur par défaut (non vide) de l'espace de noms ne sont pas choisis uniquement lorsque unprefixed nom est défini comme un nœud-test dans une expression XPath.
La solution est soit:
Créer un espace de liaison où un préfixe (dire
"x"
) est associée à l'espace de noms par défaut, puis spécifiezx:elementName
au lieu deelementName
.Utilisation de long, moche et peu fiable des expressions comme:
*[name() = 'elementName']
Ici est une transformation XSLT à l'aide de la method1. :
Lorsque cette transformation est appliquée (à l'aide de Saxon 6.5.4 ou tout autre compatible processeur XSLT 1.0) sur le document XML fourni par le:
La bonne/voulu nœud est sélectionné et de sa chaîne de valeur est copiée vers la sortie:
Dans XPath, vous devez attribuer un préfixe de l'espace de noms. La façon de le faire dépend de la XPath/logiciel de bibliothèque que vous utilisez, mais en supposant que vous avez associé à l'URI d'espace de noms
http://some_url
avec le préfixe d'espace de nomssomeUrl
vous pouvez modifier votre expression XPath comme suit: