如何为cts:document-query()分配变量。我有从文件系统读取的示例代码,然后将变量分配给document-query()。但是它可以消除错误。
情况1)在没有为文档查询分配变量的情况下工作。
let $list-pdf := cts:search(/,cts:and-query((
cts:directory-query("/pdf/"),
cts:document-query(("/pdf/US1610547.pdf", "/pdf/US1696102.pdf",
"/pdf/US1953345.pdf")))
for $pdf in $list-pdf
return base-uri($pdf)
返回结果:
/pdf/US1610547.pdf
/pdf/US1696102.pdf
情况2-从文件系统读取后,我将变量分配给document-query()。MarkLogic给我错误。
let $pdf := xdmp:filesystem-file("/output/listpdf.txt")
let $pdfs := tokenize($pdf,"\n")
let $list-pdf := cts:search(/,cts:and-query((
cts:directory-query("/pdf/"),
cts:document-query(($pdfs))
)))
for $pdf in $list-pdf
return base-uri($pdf)
返回错误代码:
[1.0-ml] XDMP-URI: cts:document-query(("/pdf/US1610547.pdf", "/pdf/US1696102.pdf",...)) -- Invalid URI format: ""
该错误消息表明令牌化的结果在URI序列中包括一个空字符串项:
-- Invalid URI format: ""
您可以在标记化之后应用谓词以排除空字符串(或使用更复杂的逻辑,具体取决于可以信任您的输入多少),即:
let $pdfs := tokenize($pdf,"\n")[. ne ""]