я пытаюсь получить теги, которые имеют атрибут, которые заканчиваются определенным идентификатором.
как <span id="ctl00_ContentPlaceHolder1_Country">
я хочу получить промежутки, которые имеют идентификационные концы со 'Страной'
я пробую следующий xpath //span[ends-with(@id,'Country')]
но я получаю следующее исключение
"Менеджер по пространству имен или XsltContext необходимы. Этот запрос имеет префикс, переменную или пользовательскую функцию".
странная вещь, это содержит, хорошо работает так следующие работы xpath //span[contains(@id,'Country')]
какие-либо идеи, почему это происходит?спасибо
Функция заканчивается на ()
не определена для 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
)
содержит () и начинается с () в XSLT1; end-with () есть только в XSLT2.