【问题标题】:using XML and XSL files from Saxon使用来自 Saxon 的 XML 和 XSL 文件
【发布时间】:2019-01-12 11:02:51
【问题描述】:

Xalan 的简洁性非常吸引人,但是 我将如何使用xmlxsl 文件从saxon 执行this 简单转换?

package xalan;

import java.io.File;
import java.io.FileOutputStream;
import java.net.URI;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class XalanTransform {

    public XalanTransform() {
    }

    public void transform(URI xml, URI xsl, URI out) throws Exception {
        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer(new StreamSource(new File(xsl)));
        transformer.transform(new StreamSource(new File(xml)), new StreamResult(new FileOutputStream(new File(out))));
    }

}

这简直再简单不过了,我很欣赏能够处理文件。我已经对CLI 中的saxon 进行了一些类似的操作,但我可能忽略了类似的文档,对于saxonJava,如上所述,文件在运行时加载。

【问题讨论】:

标签: java xml xslt xsd saxon


【解决方案1】:

您使用的 API 是 JAXP,Saxon 和 Xalan 都支持它:您只需要确保 Saxon 的 TransformerFactory 实现在类路径上。

这个 API 确实很简单,但出于某些目的它太简单了。例如:

  • 它不支持 XSLT 2.0 和 3.0 功能,例如模式感知、流、多输出文档

  • 不允许为所有数据类型提供参数

  • 它没有提供任何方式来提供同一个文档作为多个转换的输入(您可以尝试将其作为 DOM 提供,但这与 XSLT 非常不匹配,甚至不是线程安全的)

出于这些原因,Saxon 还提供了自己的 API,称为 s9api。做非常简单的事情会稍微复杂一点,但它更全面、更强大。

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 2021-11-24
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多