我尝试从二进制文件中提取元数据并将它们设置为我执行以下代码的属性。
xquery version "1.0-ml";
let $url := "/documents/test.docx"
return xdmp:document-set-properties(
$url,
for $meta in xdmp:document-filter(fn:doc($the-document))//*:meta
return element {$meta/@name} {fn:string($meta/@content)}
)
但是元数据以字符串格式存储,因此我无法比较日期、时间和数字。当我删除最后一行中的 fn:string()
时,元数据被存储为名称标签中名为“content”的属性。我正在使用节点 api 与 marklogic 进行通信,因此变得很困难搜索属性的属性并进行比较。
是否可以对代码进行任何修改,以便元数据可以存储在与原始数据相同的数据类型中?
最佳答案
文档属性始终存储为 XML,因此值始终存储为字符数据(使它们成为有效的字符串值)。您仍然可以在它们上创建类型化索引,前提是可以相应地按原样转换值。要从文档属性中提取键入的值,您必须自己对它们进行类型转换。
xdmp:document-get-properties($url, xs:QName("last-modified")) ! xs:dateTime(.)
呵呵!
关于marklogic - 从 marklogic 中的二进制文档中提取元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46297373/