Calabash 1.0.23 throws on xsl-formatter step: ERROR: Failed to instantiate FO provider

Calabash 1.0.23 throws on xsl-formatter step: ERROR: Failed to instantiate FO provider

我正在尝试在单个管道中使用 XML Calabash 1.0.23 到 运行 XSLT 转换和 FO 格式化。虽然 XSLT 步骤工作正常,但我无法让 xsl-formatter 步骤与 FOP 一起工作。

每次我 运行 管道时,Calabash 抛出:

ERROR: pipeline.xpl:13:68:Failed to instantiate FO provider
ERROR: Underlying exception: org/apache/fop/apps/FopFactory

我从命令行调用 Calabash 是:

java com.xmlcalabash.drivers.Main -c cfg.xml myPipeline.xpl

而上一行中引用的 cfg.xml 配置文件是:

<cc:xproc-config xmlns:cc="http://xmlcalabash.com/ns/configuration">
  <cc:fo-processor class-name="com.xmlcalabash.util.FoFOP"/>
</cc:xproc-config>

出于某种原因,Calabash 似乎忽略了配置文件设置,因为无论 class-name 属性的值如何 <cc:fo-processor>,它总是抛出相同的错误信息。例如,如果我使用 com.xmlcalabash.util.FoAH,也会发生同样的情况;如果输入一个无意义的值,也会发生同样的情况。 org/apache/fop/apps/FopFactory.

总是例外

为了完整起见,这是我的 XPL:

<declare-step name="main" version="1.0" xmlns="http://www.w3.org/ns/xproc">
  <input port="parameters" kind="parameter" />
  <xslt name="transformation">
    <input port="source">
      <document href="myMarkup.xml" />
    </input>
    <input port="stylesheet">
      <document href="myStylesheet.xsl" />
    </input>
  </xslt>
  <xsl-formatter href="newDoc.pdf" >
    <input port="source">
      <pipe step="transformation" port="result" />
    </input>
  </xsl-formatter>
</declare-step>

当然,如果我手动将生成的 FO 从 XSLT 步骤传递到 FOP 1.1,它将毫无问题地转换为 PDF。只有在尝试在管道内进行转换时才会出现此问题。

我真的需要一些帮助来解决这个问题。我现在一头雾水。

这似乎是一个非常迂腐的回复,但是您的类路径中是否有 fop.jar(以及我认为 FOP 需要的 fop-hyph.jar)?它们未捆绑在 XML Calabash 发行版中,您必须从 Apache 获取它们。