В узле строка может содержать одну или несколько подстрок, заключенных в одинарные или двойные кавычки. Например
<node>Some text "and Some" More</node>
Что мне нужно сделать, это строчными буквами текст, который не заключен в кавычки, поэтому результат должен выглядеть так:
some text "and Some" more
Я пробовал две вещи:
- с
replace
:replace('Some text "and Some" More', '"([^"]*)"', '*')
это заменит текст в двойных кавычках на *. Но как я могу сделать это в нижнем регистре? Это не дает желаемого результата:replace('Some text "and Some" More', '"([^"]*)"', lower-case('$1'))
- с
tokenize
:for $t in tokenize('Some text "and Some" More', '"') return $t
. Поскольку мой узел не будет начинаться с ", я знаю, что нечетные записи будут подстроками, заключенными в кавычки. Но я не знаю, как выбирать и переводить в нижний регистр только нечетные записи. Я пробовал сposition()
, но возвращает 1 на каждой итерации.
Спасибо, что изучили это. Очень признателен.