MarkLogic TDE模板如何对数值类型使用string-join函数
MarkLogic TDE 数值数组拼接报错解决
问题根源
fn:string-join() 要求第一个入参必须是纯字符串序列,当types数组元素为数值类型时,直接传入序列会触发类型不匹配报错,无法正常执行拼接。
修复方案
在拼接前遍历数组所有元素,逐个转换为字符串类型后再执行拼接即可。
仅需修改模板中type列的val配置项,将原有表达式:
"val": "fn:string-join(./types, ', ')"
替换为:
"val": "fn:string-join(./types ! fn:string(.), ', ')"
表达式里的!是XQuery映射运算符,会遍历./types匹配到的所有节点,对每个节点执行fn:string(.)完成字符串转换,生成符合要求的字符串序列后再传入拼接函数。
兼容性说明
该写法同时适配字符串数组、数值数组、混合类型数组的拼接场景,修改后模板可正常通过tde.validate校验,执行tde.nodeDataExtract时,数值数组会返回1, 2, 3格式的拼接结果,和原字符串数组的表现完全一致。
内容的提问来源于stack exchange,提问作者Michal Sobanski
相关产品推荐
相关产品推荐

