Xslt 空xsl使用ApacheFop2.3导致eclipse

Xslt 空xsl使用ApacheFop2.3导致eclipse,xslt,apache-fop,Xslt,Apache Fop,我有XSL样式表和一些XML示例文件要转换成PDF。我已经验证了XSL表是正确的(使用命令行版本的ApacheFop2.3生成的PDF是一致的,没有抛出错误)。当我将Eclipse>Run>Transform与xalan2.7.1一起使用时,结果与命令行版本的FO输出相同 然而,从那时起,我就尝试用java实现嵌入式版本,但它一直不起作用。我检查了FO结果,它似乎没有任何FO标记,结果文件只包含XML的文本值。这将导致出现fop.fo.ValidationException 我怀疑这与某些库的版

我有XSL样式表和一些XML示例文件要转换成PDF。我已经验证了XSL表是正确的(使用命令行版本的
ApacheFop2.3
生成的PDF是一致的,没有抛出错误)。当我将
Eclipse>Run>Transform
xalan2.7.1
一起使用时,结果与命令行版本的
FO
输出相同

然而,从那时起,我就尝试用java实现嵌入式版本,但它一直不起作用。我检查了
FO
结果,它似乎没有任何
FO
标记,结果文件只包含XML的文本值。这将导致出现
fop.fo.ValidationException

我怀疑这与某些库的版本冲突有关,或者可能与属性文件中缺少的参数有关,但到目前为止,我还没有找到错误

编辑 我无法共享XSL和XML文件,但下面是我的java代码片段:

  private void transformToPdf(Document docJDOM, OutputStream destination, File xslFile)
throws SAXException, IOException, JDOMException, TransformerException {
    FopFactory fopFactory = FopFactory.newInstance(FOPCONFIGFILE);
    Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, destination);
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer(new 
    StreamSource(xslFile));
    Source source = new DOMSource(transformJdomToDom(docJDOM));        
    Result result = new SAXResult(fop.getDefaultHandler());
    transformer.transform(source, result);
}
其中FOPCONFIGFILE是我的fop.xconf文件(我使用Apache fop网站中提供的默认文件),docJDom是我希望转换的xml文件的JDomDocument,xslFile是我希望应用的xslStylesheet。我已经检查了docJDom和xslFile的值,它们是正确的

编辑2 我刚刚尝试使用嵌入的代码输出fo结果文件 通过改变这个

    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer(new 
    StreamSource(xslFile));
    Source source = new DOMSource(transformJdomToDom(docJDOM));        
    Result result = new SAXResult(fop.getDefaultHandler());
    transformer.transform(source, result);
对此

TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xslFile));
Source source = new DOMSource(transformJdomToDom(docJDOM));
Result result = new StreamResult(destination);
transformer.transform(source, result);
并检查生成的fo是否存在错误。我能够找到多行,例如
,它们是错误的来源。
但是,我随后使用相同的XSL样式表转换了相同的XML文件,但使用了Apache FOP 2.3二进制发行版,生成的fo是正确的,并且不包含这些错误。

我找到了错误:XSL样式表是正确的,问题是,使用这些文件的模块将它们复制到不同的文件夹,并使用这些副本进行pdf转换。通过单独运行单元测试,我更正的XSL表没有被复制,因此我使用的是旧的不正确版本。

你能分享相关的代码片段吗。Java、XSL、XML?@AniketV不幸的是,我无法为XSL和XML文件提供支持。它们是公司的财产。我将添加我的java代码段。