Первоначально я написал простой скрипт XQuery:
$mediaNodes := doc('/db/portfolio/media_data_101109.xml'),
$query := concat('$mediaNodes//media[contains(@product,"',$product,'")'
По сути, сначала нужно получить xml-файл для записей мультимедиа. Затем я построил запрос, который выполняет поиск по всем mediaNodes (элементам файла xml) и сопоставляет атрибут @product с тем, что пользователь предоставил в браузере, и я использовал аргумент «содержать», поэтому нет необходимости делать точные согласование.
Теперь я хочу немного расширить это, то есть проигнорировать случай. Поэтому независимо от того, какой случай пользователь набрал в браузере, я преобразую его в нижний регистр, а также я также преобразую текст узла в нижний регистр.
Я выполнил поиск в Интернете и обнаружил функцию в нижнем регистре и соответственно изменил свой код:
$query := concat('$mediaNodes//media[contains(lower-case(@product),"',lower-case($product),'")',
но это не работает, если я выполню запрос, произойдет переполнение кучи. Запрос, полученный после запуска product = wborc, выглядит следующим образом:
$mediaNodes//media[contains(lower-case(@product),"wborc")]
Может ли кто-нибудь мне немного помочь? Я не уверен, делаю ли я синтаксическую ошибку или логическую ошибку. Заранее спасибо.