1

我正在使用 xslt1.0 将 html 转换为 xml。我想为一些内置功能迁移到 xslt2.0。目前我的转换代码是这样的,

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

和转换方法是

public static String convert(String inputHtml, String xsl) throws Exception {
        File xsltFile = new File(xsl);

        InputStream is = new ByteArrayInputStream(inputHtml.getBytes("UTF-8"));
        javax.xml.transform.Source xmlSource = new javax.xml.transform.stream.StreamSource(is);
        javax.xml.transform.Source xsltSource = new javax.xml.transform.stream.StreamSource(xsltFile);
        StringWriter sw = new StringWriter();

        javax.xml.transform.Result result = new javax.xml.transform.stream.StreamResult(sw);

        javax.xml.transform.TransformerFactory transFact = javax.xml.transform.TransformerFactory.newInstance();
        javax.xml.transform.Transformer trans = transFact.newTransformer(xsltSource);

        trans.transform(xmlSource, result);
        return sw.getBuffer().toString();
    }

如何为撒克逊处理器编写?提前致谢

4

1 回答 1

1

Java 代码不需要更改:如果 Saxon9.3 在类路径上,它应该加载它并自动使用它。但是,如果您想 100% 确信 Saxon 已加载(如果代码使用 XSLT 2.0 或 Saxon 扩展,这可能是一个好主意),然后更改该行

TransformerFactory transFact javax.xml.transform.TransformerFactory.newInstance();

TransformerFactory transFact = new net.sf.saxon.TransformerFactoryImpl();
于 2011-04-15T08:32:25.080 回答