Хотя первый XPath будет соответствовать элементу значений, содержащему мой образец текста "Macedonië", второй не будет:
value[contains(text(), 'Macedoni')]
value[contains(upper-case(text()), 'MACEDONI')]
<value>Macedonië</value>
Есть ли основное правило, которое я здесь отсутствует? Не работает ли функция nesting в XPath?
Gr.Viller
Как указано в комментариях, XPath 1.0 не имеет функции upper-case()
.
Общим трюком в XPath 1.0 является использование функции translate()
для преобразования между случаями:
translate(text(), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
Это не идеальный вариант, поскольку он не обрабатывает символы с акцентом или разные типы строк (и это особенно неудачно, учитывая, что значение, которое вы ищете, содержит акцентированные символы), но в то же время это единственный вариант.
upper-case()
.