Calabash 1.0.23 выбрасывает на шаг xsl-formatter: ОШИБКА: не удалось создать провайдера FO

Я пытаюсь использовать XML Calabash 1.0.23 для запуска XSLT-преобразования и FO-форматирования в одном конвейере. Хотя шаг XSLT работает нормально, я не могу заставить шаг xsl-formatter работать с FOP.

Каждый раз, когда я запускаю трубопровод, Калабаш бросает:

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. Проблема возникает только при попытке выполнить преобразование в конвейере.

Я мог бы действительно использовать некоторую помощь, чтобы решить это. Я невежественен в этом пункте.

1 ответ

Решение

Это может показаться очень педантичным ответом, но есть ли на вашем classpath файл fop.jar (и fop-hyph.jar, который, как мне кажется, требует FOP)? Они не включены в дистрибутив XML Calabash, вы должны получить их от Apache.

Другие вопросы по тегам