在XQuery中忽略大小写匹配

时间:2010-12-29 19:13:02

标签: xml xpath xquery

我最初编写了一个简单的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")]

有人可以帮我一点吗?我不确定我是在做句法错误还是逻辑错误。提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用

concat('$vmediaNodes//media
        [contains(lower-case(@product),','lower-case("',$vProduct,'"))]')