我最初编写了一个简单的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")]
有人可以帮我一点吗?我不确定我是在做句法错误还是逻辑错误。提前谢谢。
答案 0 :(得分:2)
使用强>:
concat('$vmediaNodes//media
[contains(lower-case(@product),','lower-case("',$vProduct,'"))]')