【问题标题】:How do I use XProc as a copy filter in gradle?如何在 gradle 中使用 XProc 作为复制过滤器?
【发布时间】:2020-07-01 22:10:08
【问题描述】:

我有一个 XQuery 脚本,我想针对 gradle 复制任务中的所有文件作为过滤器运行该脚本。我正在查看 XQJ 和 XProc。由于在 ml-gradle 中支持 Calabash 的实现,我决定走这条路。

有没有使用 XProc 作为 gradle 复制任务中的过滤器的示例?

这是我用于使用 xqDoc java 库生成 xqDoc 的 gradle 任务。我需要一些帮助来做类似的事情,但使用 XProc 作为过滤器。

class XQDocFilter extends BaseFilterReader {
  XQDocFilter(Reader input) {
    super(new StringReader(new org.xqdoc.MarkLogicProcessor().process(input.text)))
  }
}

task generateXQDocs(type: Copy) {
  into 'xqDoc'
  from 'src/main/ml-modules'
  include '**/*.xq*'
  rename { it - '.xq*' + '.xml' }
  includeEmptyDirs = false
  eachFile { println it }
  filter XQDocFilter
}

【问题讨论】:

  • 您的意思是 gradle 中支持实现,而不是 ml-gradle,对吗?我在 ml-gradle 中没有看到任何对 Calabash 的引用。假设您指的是github.com/ndw/xmlcalabash1-gradle
  • 我指的是Norm对XML Calabash的Gradle实现。

标签: gradle marklogic calabash xproc ml-gradle


【解决方案1】:

我从 1.5.0 版本开始向 xmlcalabash1-gradle 添加了一个 XMLCalabashFilter 类。

【讨论】:

  • 您好,Norm,谢谢。我期待着您的反馈。我的替代方案是使用 XQJ 并实现一个过滤器。我没有看到很多对 XQL 的支持。
  • 我发现 gradle 文档很难使用。据我所知,过滤器适用于文件中的每一行。如果是这样,我不确定 XProc 1.0 是否适合。我也打算制作 XProc 3.0 版本,在 3.0 中处理文本要容易得多。
  • 过滤器适用于每个文件。如果您查看我上面包含的 gradle 任务,它会针对识别的每个 XQuery 源文件运行过滤器并返回一个 xqDoc XML 文档。
  • 所以 Gradle 文档再次让我失望了。叹。我再看看。如果您知道 BaseFileReader API 的记录位置,请随时为我指明正确的方向。
  • 查看import org.apache.tools.ant.filters.BaseFilterReader。查看 github.com/easymetahub/emh-marklogic-glossary 的 build.gradle
猜你喜欢
  • 2021-12-03
  • 2012-04-02
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多