2

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

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 进行通信,因此搜索属性的属性和比较变得越来越困难。

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

4

1 回答 1

2

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

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

于 2017-09-19T10:13:50.420 回答