upper-case()
и lower-case()
- это функции XPath 2.0. Скорее всего, ваша платформа поддерживает только XPath 1.0.
Пытаться:
translate('some text','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')
это способ сделать это с помощью XPath 1.0. К сожалению, для этого требуется знание алфавита, который используется в тексте. Для простого английского это, вероятно, сработает, но если вы ожидаете использовать символы с диакритическими знаками, не забудьте добавить их в список.
В большинстве сред вы используете XPath вне какого-либо основного языка и можете использовать возможности основного языка, чтобы обойти это ограничение XPath 1.0, предоставляя извне варианты строки поиска в верхнем и нижнем регистре для translate()
.
Показано на примере Python:
search = 'Some Text'
lc = search.lower()
uc = search.upper()
xpath = f"//p[contains(translate(., '{lc}', '{uc}'), '{uc}')]"
Это приведет к следующему выражению XPath:
//p[contains(translate(., 'some text', 'SOME TEXT'), 'SOME TEXT')]
который выполняет поиск без учета регистра и работает с произвольным поисковым текстом.
person
Tomalak
schedule
26.10.2009