You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MarkLogic 10调用cts:element-values报XDMP-ELEMRIDXNOTFOUND错误如何解决

MarkLogic cts:element-values使用报错解决方法

错误本质

你遇到的XDMP-ELEMRIDXNOTFOUND错误由两个问题共同导致:

  1. 未给目标查询元素配置对应的元素范围索引
  2. 当前cts:element-values的调用参数不符合你的XML结构,也不符合函数要求

第一步:配置元素范围索引

cts:element-values依赖提前创建的元素范围索引才能运行,操作步骤如下:

  • 进入MarkLogic管理后台(默认端口8001),打开你存储当前XML文档的数据库配置页
  • 在左侧菜单栏找到【范围索引】分类下的【元素范围索引】,点击「新增」
  • 按你的查询需求填写配置项:
    • 命名空间:填XML根节点自带的默认命名空间 http://www.marklogic.com/ns/gs-books
    • 本地名称:填你要查询的元素名,比如要查所有书籍标题就填title,要查ISBN就填isbn
    • 标量类型:匹配元素值的类型,字符串类内容选string即可
    • 排序规则:保持默认的http://marklogic.com/collation/即可,和错误提示中的 collation 规则一致
  • 保存配置,等待索引同步完成(小数据量下几秒即可完成)

第二步:调整函数调用写法

你当前的写法cts:element-values(xs:QName("test"),"test")完全不符合要求:函数第一个参数需要传入目标查询元素的带命名空间的QName,第二个参数为可选的排序规则,无需随便传值。
以查询title元素为例,正确写法有两种:

写法1:提前声明命名空间前缀

declare namespace bk = "http://www.marklogic.com/ns/gs-books";
cts:element-values(xs:QName("bk:title"))

写法2:直接构造带命名空间的QName

cts:element-values(fn:QName("http://www.marklogic.com/ns/gs-books", "title"))

执行后即可返回所有文档中对应元素的去重值,当前测试XML执行后返回结果为 A Quick Path to an Application。

内容的提问来源于stack exchange,提问作者hdew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:54:03