【问题标题】:Problem with XSLT transformation from Mavan to create multiple documents with result-document从 Mavan 进行 XSLT 转换以使用结果文档创建多个文档的问题
【发布时间】:2020-07-29 07:59:21
【问题描述】:

我想转换和拆分一个 XML 文档。所以我使用“结果文档”并且它有效。但是当我尝试使用 mavan 启动 XSLT 时,我得到了一个带有 xml 声明的输出 xml 文档。

XSL:

<xsl:result-document method="xml" href="{$filename}_{$Number}.html">
    <html>
        <head>
            <style>
body {
font-family: "Times New Roman", Times, serif;
font-size: 17pt;
line-height: 19pt;
}
            </style>
        </head>
        <body>
            <xsl:apply-templates/>
        </body>
    </html>
</xsl:result-document> 

JAVA:

TransformerFactory factory = TransformerFactory.newInstance(); 
InputStream inputStream= accessFile(xslpath);
TransformerFactoryImpl f = new net.sf.saxon.TransformerFactoryImpl();
f.setAttribute("http://saxon.sf.net/feature/version-warning", Boolean.FALSE);
f.setAttribute("http://saxon.sf.net/feature/linenumbering",  Boolean.TRUE);
StreamSource schemaSource = new StreamSource(inputStream);
Transformer t = f.newTransformer(schemaSource);
StreamSource src = new StreamSource(new FileInputStream(inputpath));
StreamResult res = new StreamResult(new ByteArrayOutputStream());
t.transform(src, res);
String a= res.getOutputStream().toString(); 

怎么了?

提前致谢

【问题讨论】:

  • 目前尚不清楚在哪种情况下您会得到想要的结果,以及由于您没有提供最少但完整的 XML 输入示例、XSLT 代码、您想要的结果以及与您想要的结果相比,它看起来如何得到。您是否希望任何xsl:result-documents 出现在StreamResult res 或Java 代码中的其他变量中?还是在磁盘上作为文件?

标签: java xml xslt xslt-2.0


【解决方案1】:

作为一个疯狂的猜测,我假设您在 xsl:result-document method="xml" href="{$filename}_{$Number}.html" 中拥有的相对 URI 出现错误;当您通过ByteArrayOutputStream 转换为StreamResult 时,我认为处理器没有绝对基本输出URI 来解析href 属性中构造的相对URI。

假设 XSLT 2 处理器是 Saxon 9 或 10 的某个版本,它可能取决于使用 JAXP Transformer API 时如何设置基本输出 URI 的确切版本;我认为使用 Saxon 10 你可以使用 e.h. ((TransformerImpl)t).getUnderlyingXsltTransformer().setBaseOutputURI("file:///dir/subfolder/subsubfolder/"); 写入某个文件夹。

如果您更改为 Saxon 自己的 API,即处理 ProcessorXsltCompilerXsltExecutableXsltTransformer 或 @987654333 的 s9api (http://saxonica.com/html/documentation/using-xsl/embedding/s9api-transformation.html),所有这些事情都会变得更加简单直接@。

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多