【问题标题】:Accessing HTML Tidy with MarkLogic's Java API使用 MarkLogic 的 Java API 访问 HTML Tidy
【发布时间】:2013-02-12 18:32:32
【问题描述】:

我正在重构一个 Java EE 项目以使用 MarkLogic,并希望利用 MarkLogic 的内置 HTML Tidy 功能。是否可以使用 MarkLogic Java API 中的 HTML Tidy?还是我需要使用第三方 API 来让我直接运行 XQuery 命令?

或者这是一个愚蠢的差事,我应该在我的代码中使用 HTML Tidy?

【问题讨论】:

  • ...NoSQL 产品、Tidy 和 XQuery 到底有什么共同点?它们似乎与我完全无关。
  • 您可以通过 xdmp:tidy 命令在 MarkLogic 上从 XQuery 运行 HTML Tidy。鉴于我们在那里存储 HTML 文件,我的主管建议也许我们可以使用这个内置功能,但我不确定我们是否可以。

标签: java marklogic htmltidy


【解决方案1】:

请参阅随 Java API 分发的com.marklogic.client.example.cookbook.DocumentWriteTransform 示例,该示例在文档写入时使用server-side XQuery 转换来调用xdmp:tidy()

【讨论】:

  • 请您再解释一下好吗?我查看了该文件的 Javadoc 和源代码,也没有看到任何对 xdmp:tidy 的引用。
  • 在 MarkLogic-Java-API-1.0-2.zip 中,请查看 example/scripts/html2xhtml.xqy 和 example/com/marklogic/client/example/cookbook/DocumentWriteTransform.java
  • 太好了,谢谢;这正是我正在寻找的那种样本。
【解决方案2】:

Erik 引用的示例安装了 XQuery 转换。它的名字是 html2xthml.xqy——它被打包在发行版的某个地方。该示例具有一种安装转换的方法,然后是如何调用它的示例。调用部分在第 126 行。

writeMgr.write(docId, writeHandle, transform);

您将在上面看到如何创建和配置转换。

这个想法是,您可以使用 REST(通过 Java API)在 /v1/transforms/html2xhtml 安装转换,然后在文档 PUT(使用此 java 写入方法)期间以转换名称作为参数调用它。

所以您要查找的参考是 XQuery 转换,而不是 Java 源文件。

【讨论】:

  • 我下载了 MarkLogic-Java-API-1.0-2.zip,但在其中的任何地方都找不到 html2xthml.xqy。这是您考虑的分布吗?
【解决方案3】:

我倾向于在 Java 层中保持整洁,只要您仍然计划将 Java 保留在图片中。在 JVM 中运行 tidy 会给你更多的控制:你可以安装任何你喜欢的 jtidy 版本,甚至可以自己打补丁。此外,tidy 可能会占用大量 CPU,因此在 JVM 层中运行它可以防止它与数据库查询竞争。

当然,您可能还有其他强烈的动机在 MarkLogic 中运行整洁。例如,您可能计划允许直接与您的 MarkLogic 代码集成 REST。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多