忽略 XQuery 中的大小写匹配

Kev*_*vin 5 xml xpath xquery

我最初编写了一个简单的 XQuery 脚本:

$mediaNodes := doc('/db/portfolio/media_data_101109.xml'),
$query := concat('$mediaNodes//media[contains(@product,"',$product,'")'
Run Code Online (Sandbox Code Playgroud)

基本上,它的作用是首先检索媒体记录的 xml 文件。然后,我建立了一个查询,搜索所有 mediaNode(xml 文件的元素),并将 @product 属性与用户在浏览器中提供的内容相匹配,并且我使用了 contains,因此无需执行精确的操作匹配。

现在我想稍微扩展一下,那就是忽略大小写。因此,无论用户在浏览器中输入的大小写,我都会将其转换为小写,并且我也会将节点文本也转换为小写。

我在网上搜索发现该函数是小写的,并相应地更改了我的代码:

$query := concat('$mediaNodes//media[contains(lower-case(@product),"',lower-case($product),'")',
Run Code Online (Sandbox Code Playgroud)

但这不起作用,如果我执行查询,就会出现堆溢出。使用 Product=wborc 运行后得到的查询如下所示:

$mediaNodes//media[contains(lower-case(@product),"wborc")]
Run Code Online (Sandbox Code Playgroud)

有人可以帮我一点吗?我不确定我是否犯了语法错误或逻辑错误。提前致谢。

Dim*_*hev 4

使用

concat('$vmediaNodes//media
        [contains(lower-case(@product),','lower-case("',$vProduct,'"))]')
Run Code Online (Sandbox Code Playgroud)