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

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

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

最佳答案

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

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

呵呵!

关于marklogic - 从 marklogic 中的二进制文档中提取元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46297373/

相关文章:

full-text-search - 忽略 cts :search 中的元素

marklogic - MarkLogic Optic 查询中 doc-uri 的左连接

MarkLogic 8 JavaScript 数组

marklogic - 如何使用 MarkLogic API 在 MarkLogic 集群中添加多个引导主机?

marklogic - 删除多个集合失败。

marklogic - 在 marklogic 中搜索二进制文件

owl - 在marklogic中加载.owl文件

xquery - 什么是 MarkLogic 查询控制台中的属性选项卡

java - Marklogic 路径范围查询中不区分大小写的搜索

xml - 在 marklogic 中的多个集合之间查询时优化记录的检索