从marklogic中的二进制文档中提取元数据

时间:2017-09-19 09:55:54

标签: marklogic marklogic-9

我尝试从二进制文件中提取元数据并将它们设置为属性我执行了以下代码。

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()元数据时,数据将被存储为名称标签中的内容'我使用节点api与marklogic进行通信,因此搜索变得困难属性和比较的属性。

是否可以对代码进行任何修改,以便元数据可以存储在与原始数据类型相同的数据类型中?

1 个答案:

答案 0 :(得分:2)

文档属性始终存储为XML,因为这些值始终存储为字符数据(有效地使它们成为字符串值)。您仍然可以在它们上创建类型化索引,前提是可以相应地按原样转换值。要从文档属性中提取类型值,您必须自己输入它们。

xdmp:document-get-properties($url, xs:QName("last-modified")) ! xs:dateTime(.)

HTH!