проблема, добирающаяся xpath, функционирует концы - с () для работы, в то время как содержит (), хорошо работает

я пытаюсь получить теги, которые имеют атрибут, которые заканчиваются определенным идентификатором.
как <span id="ctl00_ContentPlaceHolder1_Country">
я хочу получить промежутки, которые имеют идентификационные концы со 'Страной'
я пробую следующий xpath //span[ends-with(@id,'Country')] но я получаю следующее исключение
"Менеджер по пространству имен или XsltContext необходимы. Этот запрос имеет префикс, переменную или пользовательскую функцию".

странная вещь, это содержит, хорошо работает так следующие работы xpath //span[contains(@id,'Country')]
какие-либо идеи, почему это происходит?спасибо

18
задан Karim 12 August 2010 в 15:22
поделиться

2 ответа

Функция заканчивается на () не определена для XPath 1.0 , а только для XPath 2.0 и XQuery .

Вы используете .NET. . NET на данный момент не реализует XPath 2.0 , XSLT 2.0 или XQuery .

Можно легко построить выражение XPath 1.0, вычисление которого дает тот же результат, что и функция end-with () :

$ str2 = substring ($ str1, string-length ( $ str1) - длина строки ($ str2) +1)

дает тот же логический результат ( true () или false () ) как:

заканчивается- with ($ str1, $ str2)

В вашем конкретном случае вам просто нужно подставить правильные выражения для $ str1 и $ str2 . Это, соответственно, / myXml / data и 'World' .

Итак, используемое выражение XPath 1.0, эквивалентное выражению XPath 2.0 , заканчивается на (/ myXml / data, 'World') как :

'World' = 
   substring(/myXml/data,
             string-length(/myXml/data) - string-length('World') +1
             )
31
ответ дан 30 November 2019 в 07:08
поделиться

содержит () и начинается с () в XSLT1; end-with () есть только в XSLT2.

8
ответ дан 30 November 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: