2010-04-23 1 views
4

У меня возникла проблема с запросом XPath, который я выполняю для системы Sitecore CMS.XPath и специальные символы

Этот запрос работает отлично:

/корень/содержание/Meta-Data/Советы/*

Но когда я пытаюсь это:

/корень/содержание/мета-данных/Советы/* [@ SomeAttribute = 'somekey']

Я получаю сообщение об ошибке «Конец строки, ожидаемый в позиции 22», где находится символ тире. У меня создалось впечатление, что тире не был особым символом в XML ... я делаю что-то неправильно здесь? Нужно ли мне каким-то образом закодировать это? Или это ошибка в парсере XPath? Любые предлагаемые способы обхода?

ответ

12

Изменить это:

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

Для этого:

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

Это работает. Интересно, что это не сработает, если я исключил фильтр [@someattribute]. У вас есть источник для этого? Я не вижу, чтобы это упоминалось в документе W3C Xpath. Он также не работает на тесте XPath, который был указан ниже. – Bryan

+1

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

+0

Я вижу ... это не * действительно * истинная реализация XPath. Спасибо за ссылку. – Bryan

0

Согласно XML spec для символов в именах тегов, дефис должен быть допустимым символом. Я провел несколько тестов XPath с this site и нашел полезным для сравнения результатов с другими синтаксическими анализаторами.

+0

Спасибо. Оба исходных запроса работают здесь с именем узлового указателя. – Bryan

+0

Оригинальный веб-сайт, связанный в этом ответе, больше не работает, обновляется до того, что работает. – cgp