PHP XPath вложенная заглавная функция не работает должным образом

0

Хотя первый XPath будет соответствовать элементу значений, содержащему мой образец текста "Macedonië", второй не будет:

value[contains(text(), 'Macedoni')]
value[contains(upper-case(text()), 'MACEDONI')]

<value>Macedonië</value>

Есть ли основное правило, которое я здесь отсутствует? Не работает ли функция nesting в XPath?

Gr.Viller

  • 2
    XPath 1.0 не имеет функции upper-case() .
  • 0
    О, я понятия не имел, что PHP все еще использует 1.0 (я пробую XPath впервые). Есть ли способ, которым я могу достичь того же эффекта, к которому я стремлюсь в 1.0? Поскольку я все еще могу использовать функцию перевода, я мог бы использовать ее для преобразования в верхний регистр.
Показать ещё 1 комментарий
Теги:
xpath
function
nested

1 ответ

1
Лучший ответ

Как указано в комментариях, XPath 1.0 не имеет функции upper-case().

Общим трюком в XPath 1.0 является использование функции translate() для преобразования между случаями:

translate(text(), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')

Это не идеальный вариант, поскольку он не обрабатывает символы с акцентом или разные типы строк (и это особенно неудачно, учитывая, что значение, которое вы ищете, содержит акцентированные символы), но в то же время это единственный вариант.

  • 0
    Я использовал этот принцип и проверил «МАКЕДОНИ» (исключая «С», поэтому не должно быть путаницы). Спасибо за ответы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню