2010-04-23 6 views
4

Je rencontre un problème avec une requête XPath que j'effectue pour un système CMS Sitecore.XPath et caractères spéciaux

Cette requête fonctionne très bien:

/root/contenu/méta-données/Conseils/*

Mais quand j'essaie ceci:

/root/contenu/méta-données/Conseils/* [@ SomeAttribute = 'somekey']

Je reçois une erreur qui indique "Fin de chaîne attendue à la position 22" où se trouve le caractère tiret. J'avais l'impression que le tiret n'était pas un personnage spécial dans XML ... est-ce que je fais quelque chose de mal ici? Ai-je besoin de coder cela d'une manière ou d'une autre? Ou est-ce un bug dans l'analyseur XPath? Des solutions de contournement suggérées?

Répondre

12

Modifier ceci:

/root/content/Meta-Data/Tips/*[@SomeAttribute='somekey'] 

à ceci:

/root/content/#Meta-Data#/Tips/*[@SomeAttribute='somekey'] 
+0

Cela fonctionne. Fait intéressant, cela échoue si j'exclue le filtre [@someattribute]. Vous avez une source pour cela? Je ne le vois pas mentionné dans le document W3C Xpath. Il échoue également sur les liens awshepard XPath testeur ci-dessous. – Bryan

+1

http://sitecoredev.blogspot.com/2006/04/sitecore-xpath.html –

+0

Je vois ... ce n'est pas * vraiment * une véritable implémentation XPath. Merci pour le lien. – Bryan

0

Selon le XML spec des caractères dans les noms de balises, le trait d'union doit être un caractère valide. J'ai fait un peu de test XPath avec this site et je l'ai trouvé utile pour comparer les résultats avec d'autres parseurs.

+0

Merci. Les deux requêtes d'origine fonctionnent OK ici avec le nom du nœud de tiret. – Bryan

+0

Site original lié dans cette réponse ne fonctionne plus, mise à jour vers quelque chose qui fonctionne. – cgp