我尝试使用ServiceMix的camel-fop。 我在Eclipse中做了一个路径,在Eclipse中测试它 - 一切都很好。
但是在ServiceMix中部署之后我得到了错误: “javax.xml.transform.TransformerException:org.apache.fop.fo.ValidationException:Element”fo:simple-page-master“缺少必需属性”master-name“
这是xsl-fo(来自ServiceMix日志)的一部分 - 不正确的一个:
char
.....
如你所见 - 很多人都迷失了。
当我尝试通过Eclipse获取它时,这是正确的:
varchar
...
非常感谢任何帮助!
这是我的xsl:
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xml.apache.org/fop/extensions">
<fo:layout-master-set>
<fo:simple-page-master>
<fo:region-body/>
</fo:simple-page-master>
<fo:simple-page-master>
<fo:region-body/>
</fo:simple-page-master>
<fo:page-sequence-master>
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference/>
<fo:conditional-page-master-reference/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
<fo:page-sequence>
<fo:flow>
<fo:block>
<fo:block>
<fo:inline/>
</fo:block>
</fo:block>
<fo:block>
和xml:
<?xml version="1.0" encoding="UTF-8"?><fo:root xmlns:fox="http://xml.apache.org/fop/extensions" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="first" margin-right="0.8cm" margin-left="0.8cm" margin-bottom="1.0cm" margin-top="1.5cm" page-width="29.7cm" page-height="21cm">
<fo:region-body margin-bottom="0.5cm" margin-top="0cm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="rest" margin-right="0.8cm" margin-left="0.8cm" margin-bottom="1.0cm" margin-top="1.5cm" page-width="29.7cm" page-height="21cm">
<fo:region-body margin-bottom="0.5cm" margin-top="0cm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="document">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference page-position="first" master-reference="first"/>
<fo:conditional-page-master-reference page-position="rest" master-reference="rest"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
答案 0 :(得分:1)
找到了解决方案!
在http://camel.apache.org/xslt(部分关于使用XSLT和Java版本的注释)中说:
正如我上面所说,我使用它 - 没有成功:&#34; org.apache.camel.ResolveEndpointFailedException:无法解析端点:xslt:// classpath:xslt / m11.xsl?transformerFactory = tFactory由于: Translet类已加载,但无法创建translet实例。&#34;
但经过一些研究,我发现xalan有两种不同的TransformerFactoryImpl:
一个。 org.apache.xalan.xsltc.trax.TransformerFactoryImpl - 这是Translet的JAXP1.1 TransformerFactory的实现。&#34;这个类构建了编译的模板对象。
B中。 org.apache.xalan.processor.TransformerFactoryImpl - 这是&#34; TransformerFactoryImpl,它实现了TRaX TransformerFactory接口,将XSLT样式表处理成一个Templates对象(StylesheetRoot)。&#34;并且此工厂构建模板对象,这些对象被解释为处理传入的XML文档。 (见https://developer.jboss.org/thread/173303)
所以相反:
<bean id="tFactory" class="org.apache.xalan.xsltc.trax.TransformerFactoryImpl" />
我用过:
<bean id="tFactory" class="org.apache.xalan.processor.TransformerFactoryImpl" />
现在我已经在ServiceMix 5.4.0上启动了我的骆驼路线,并且我已经获得了正确的pdf文档。