使用java从1 xsl输出多个html

时间:2014-12-07 08:34:12

标签: java xml xslt

我想知道如何使用java和xsl从一个xml生成多个输出(html)。

例如,拥有这个xml:

<ARTICLE>
  <SECT> 
     <PARA>The First 1st Major Section</PARA>
  </SECT>
  <SECT>
     <PARA>The Second 2nd Major Section</PARA>
  </SECT>
</ARTICLE>

对于“ARTICLE”中的每个子元素“SECT”,我希望有一个“.html”作为输出,输出示例:

sect1.html

<html>
   <body>
      <div>
         <h1>The First 1st Major Section</h1>
      </div>
   </body>
</html>

sect2.html

<html>
   <body>
      <div>
         <h1>The First 2nd Major Section</h1>
      </div>
   </body>
</html>

我一直在java中使用下一个代码转换.xml文档:

            File stylesheet = new File(argv[0]);
            File datafile = new File(argv[1]);

            DocumentBuilder builder = factory.newDocumentBuilder();
            document = builder.parse(datafile);

            // Use a Transformer for output
            TransformerFactory tFactory = TransformerFactory.newInstance();
            StreamSource stylesource = new StreamSource(stylesheet);
            Transformer transformer = tFactory.newTransformer(stylesource);

            DOMSource source = new DOMSource(document);

            OutputStream result=new FileOutputStream("sections.html");

            transformer.transform(source, new StreamResult(result));

问题是我只有一个输出,你能帮我写一下.xslt文件吗?并告诉我如何获得超过1个输出?

1 个答案:

答案 0 :(得分:1)

要创建多个结果文档,您需要一个支持多个结果文档的XSLT处理器。 XSLT 2.0中引入了多个结果文档的功能。一些尚未实现XSLT 2.0或更新版本的XSLT处理器将多个结果文档作为专有扩展。

与主要结果文档不同,创建多个结果文档不是直接从Java源代码控制的。相反,XSLT代码需要包含创建多个结果文档的XSLT元素。

在XSLT 2.0及更高版本中,<xsl:result-document/>元素用于创建多个结果文档。有关更多信息和示例,请参阅XSLT 2.0, <xsl:result-document/>

据我所知,Java附带的XSLT处理器是Xalan-J,而Xalan-J还不支持XSLT 2.0或更新版本(根据他们的网站http://xml.apache.org/xalan-j/)。您可能希望使用Saxon,它支持XSLT 3.0。或者如上一个问题Xalan XSLT multiple output files?中所述,您可以使用Redirect extension

相关问题