«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как обеспечить функциональность contains() без учета регистра в XPath 1.0?

Как обеспечить функциональность contains() без учета регистра в XPath 1.0?

Опубликовано 20 ноября 2024 г.
Просматривать:143

How to Achieve Case-Insensitive contains() Functionality in XPath 1.0?

Содержит() без учета регистра в XPath

В XSLT или других приложениях, использующих DOM, выполнение запросов XPath с сравнением строк с учетом регистра может быть ограничивающим. Однако реализация функции contains() без учета регистра в XPath 1.0 возможна.

1. Метод на основе перевода (XPath 1.0)

Чтобы сопоставить варианты строки как с учетом, так и без учета регистра, используйте функцию перевода():

/html/body//text()[
  contains(
    translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
    'test'
  )
]

Этот метод эффективно переводит все прописные буквы в строчные, позволяя выполнять сравнения без учета регистра. Однако для этого требуется знание ожидаемого набора символов.

2. Динамическая генерация XPath с помощью JavaScript

Если возможно манипулирование выражением XPath, вы можете использовать JavaScript для динамической замены строки поиска ее вариантами в верхнем и нижнем регистре:

function xpathPrepare(xpath, searchString) {
  return xpath.replace("$u", searchString.toUpperCase())
              .replace("$l", searchString.toLowerCase())
              .replace("$s", searchString.toLowerCase());
}

xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test");

Этот метод обрабатывает искать строки с произвольными символами, включая одинарные кавычки.

Внимание: Эти методы могут работать неоптимально, если задействованы сложные/большие строковые операции. Если возможно, рассмотрите другие решения, такие как хранение строк с известными наборами символов или использование XPath 2.0, который изначально поддерживает сравнения строк без учета регистра.

Заявление о выпуске Эта статья перепечатана по адресу: 1729588936. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3