我最初编写了一个简单的 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)
有人可以帮我一点吗?我不确定我是否犯了语法错误或逻辑错误。提前致谢。
使用:
concat('$vmediaNodes//media
[contains(lower-case(@product),','lower-case("',$vProduct,'"))]')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4649 次 |
| 最近记录: |