MarkLogic带命名空间XML文档的cts:uris查询URI问题求助
解决MarkLogic中带命名空间XML文档的URI查询问题
你的问题确实是命名空间不匹配导致的:XML里的itemId元素属于命名空间http://namespaces.test.org/namespaces/ab,但原查询里的xs:QName("itemId")没有指定命名空间,相当于查找无命名空间的itemId元素,自然找不到目标文档。
要解决这个问题,只需要在cts:element-query中使用带命名空间的QName即可,有两种常用写法:
写法1:直接使用带命名空间的QName字符串
把元素名写成{命名空间URI}本地名的格式,传给xs:QName:
cts:uris((), (), cts:element-query( xs:QName("{http://namespaces.test.org/namespaces/ab}itemId"), cts:true-query() ) )
写法2:先声明命名空间前缀简化代码
先通过declare namespace绑定前缀,后续直接用前缀+元素名:
declare namespace ab = "http://namespaces.test.org/namespaces/ab"; cts:uris((), (), cts:element-query( xs:QName("ab:itemId"), cts:true-query() ) )
两种写法都能正确匹配到带命名空间的itemId元素,从而返回对应的文档URI。
内容的提问来源于stack exchange,提问作者marklogic_coder
相关产品推荐
相关产品推荐

