MarkLogic mlcp导入报错:arg3非node()类型,字符串转换异常
MLCP导入时自定义XQuery修改文档URI触发类型转换错误
使用MLCP导入文档时,通过自定义XQuery转换脚本修改文档URI,过程中出现类型转换错误。错误码为XDMP-ARGTYPE(err:XPTY0004),提示temporal:document-insert的第三个参数不是node()类型。尝试过两种修改方式(获取text()节点、使用fn:string转换),均未解决问题,寻求原因排查。
自定义XQuery代码
xquery version "1.0-ml"; module namespace doc = "http://marklogic.com/example"; declare function doc:transform( $content as map:map, $context as map:map ) as map:map* { let $systemref := map:get($content, "value")/EDILogFile/SystemRef let $_ := map:put($content, "value","EDI"||"_"||$systemref||"xml") return $content };
错误日志
23/01/17 09:17:46 ERROR contentpump.TransformWriter: Batch 1795441416.0: Document failed permanently: /opt/mlcp-10.0.9-bin/mlcp-10.0.9/bin/data/EDI_22000041.xml 23/01/17 09:17:46 WARN contentpump.TransformWriter: <error:format-string xmlns:error="http://marklogic.com/xdmp/error" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">XDMP-ARGTYPE: (err:XPTY0004) temporal:document-insert(xs:untypedAtomic("Unitempcoll"), "/opt/mlcp-10.0.9-bin/mlcp-10.0.9/bin/data/EDI_22000041.xml", "EDI_22000041xml", <options xmlns="xdmp:document-insert"><quality>0</quality><metadata/></options>) -- arg3 is not of type node()</error:format-string> 23/01/17 09:17:46 INFO contentpump.LocalJobRunner: completed 100% 23/01/17 09:17:46 INFO contentpump.LocalJobRunner: com.marklogic.mapreduce.MarkLogicCounter: 23/01/17 09:17:46 INFO contentpump.LocalJobRunner: INPUT_RECORDS: 1 23/01/17 09:17:46 INFO contentpump.LocalJobRunner: OUTPUT_RECORDS: 1 23/01/17 09:17:46 INFO contentpump.LocalJobRunner: OUTPUT_RECORDS_COMMITTED: 0 23/01/17 09:17:46 INFO contentpump.LocalJobRunner: OUTPUT_RECORDS_FAILED: 1
已尝试的修改方式
- 获取text()节点:
map:get($content, "value")/EDILogFile/SystemRef/text() - 使用fn:string转换:
let $systemref := fn:string(map:get($content, "value")/EDILogFile/SystemRef)
内容的提问来源于stack exchange,提问作者Rashmita Purkayastha
相关产品推荐
相关产品推荐

