【问题标题】:multiple html as output from 1 xsl with java多个 html 作为 1 xsl 与 java 的输出
【发布时间】:2014-12-07 08:34:12
【问题描述】:

我想知道如何使用 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 个输出?

【问题讨论】:

    标签: java xml xslt


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 2020-11-04
      • 1970-01-01
      相关资源
      最近更新 更多