【问题标题】:How to load & query word/excel documents in Marklogic Server?如何在 Marklogic Server 中加载和查询 word/excel 文档?
【发布时间】:2012-05-31 13:28:04
【问题描述】:

我想将 MS Office word/excel 文档加载到 Marklogic 中,并希望像使用 xml 文档一样使用 xquery 查询它们。但是,当我将 doc 文件加载到 Marklogic 中时,它会将它们加载为二进制格式,并在使用查询控制台查看时显示垃圾字符。我尝试使用以下命令加载:-

xdmp:document-load("E:\doc\sample.doc", 
    <options xmlns="xdmp:document-load"
             xmlns:http="xdmp:http">
      <format>xml</format>
    </options>)

但它显示一个错误,说明文档不是 UTF 8 编码的。我想知道 doc 和 xls 文件是否可以按原样加载到 Marklogic 中,或者在加载它们之前必须将它们转换为 xml 或 UTF 8 编码格式。如果是,那么转换它们的过程是什么。如果不是,那么我们如何使用 xquery 查询它们。我还想知道转换过程是否需要安装 MS Office 2007/2010,因为 Office 2007 和 2010 都支持 OOXML 格式。

请给我适当的指导。

【问题讨论】:

    标签: xml xquery marklogic


    【解决方案1】:

    如果您正在处理 2007/2010 之前格式的 Office 文档,Grtjn 的回复是正确的。对于 2007/2010 文档,在 CPF 中启用“Office OpenXML ExtractOffice OpenXML Extract”管道并重新加载文档。此管道不需要额外的转换选项。它将按原样加载源 XML。

    Office 2007/2010 文档只是包含相关 XML 部分的 .zip 文件。此管道将解压缩任何 .docx、.xlsx、.pptx 文档并将其组成部分保存在以源文档命名的目录中。该目录将作为源文档的同级保存并链接到源,例如,如果您删除源 .docx,则包含提取部分的目录也将被删除。

    确保数据库的自动目录创建设置为 true。 (这是 MarkLogic 5.0 及之前版本的默认设置)。

    【讨论】:

    • 表示只能转换docx文件,不能转换office 2003 doc文件?
    • @puneet-pant 是的,您必须将 .doc 文件转换为 .docx 才能正确处理它们。当然,除非您决定将我的建议和 wpaven 的建议结合起来。它们可以共存,因此您自然会支持这两种格式..
    【解决方案2】:

    它们是二进制的,所以它们应该作为二进制插入。但是您希望它们被转换。 MarkLogic 可以自动为您做到这一点。为此,请执行以下操作:

    • 打开管理界面
    • 转到相应的数据库
    • 打开内容处理页面
    • 打开“安装”选项卡,将“启用转换”开关设置为“真”,然后点击安装
    • 检查域的范围以确保您在该范围内插入,例如在以范围 uri 开头的数据库 uri 中插入文档。 (这很可能意味着您需要在 xdmp:document-load 中添加一个以 / 开头的 uri 选项)
    • 检查管道以查看正在自动转换的内容类型以及格式(最常见的是 xhtml 或 docbook)
    • 重新运行 xdmp:document-load

    内容处理框架将创建包含转换结果的附加文件。这通常由带有文本的 xhtml、单独的图像文件(如果有)、带有布局属性的 css 等组成。

    这确实需要带有转换选项的许可证。

    HTH!

    【讨论】:

    • 您的意思是需要 Marklogic 的许可版本。并且此功能在 Express Edition 中不可用。我说的对吗?
    • @puneet-pant 它肯定没有包含在社区许可证中。但我认为它在 Express 许可证中,就像一些最常见的语言一样。另一方面,如果您可以将它们转换为 2007/2010 格式,那么您可以遵循 wpaven 的出色建议,即使用这些格式的可用管道。正如他所说,这不需要许可证转换选项功能。
    • 值得一提的是更新的xdmp:document-filter 函数,它也被包含在内置的转换管道中。与 xdmp:pdf-convert 相比,它并没有做太多努力来保留文档的样式和布局,但它能够抓取 200 多种二进制格式。结果是带有元数据的 XHTML 记录在 html:meta 标记中。通常足以在二进制文件上进行 FT 搜索..
    【解决方案3】:

    OOXML

    .doc.xls 是二进制文件,XQuery 处理器无法直接处理。

    像你提到的那样使用OOXML。将文件另存为.docx.xlsx,它们是压缩的 XML 文件(在 zip 文件夹中有更多资源,如图像)。也许Marklogic zip module 可以帮助您提取文件。

    使用 MS Office 2003

    这也可以使用安装了File Format Compatibility Pack 的MS Office 2003 来完成。很抱歉,我无法帮助您进行批量转换,但肯定有某种方法可以使用 VBA 来做到这一点 - 如果需要,请提出另一个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2021-10-13
      • 2010-12-08
      • 1970-01-01
      • 2018-11-11
      相关资源
      最近更新 更多