需要使用saxon将html转换为使用xslt的xml
我使用xslt1.0将html转换为xml。我想为一些内置函数迁移到xslt2.0。目前我改造的代码是这样,需要使用saxon将html转换为使用xslt的xml
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();
}
如何为撒克逊处理器写?在此先感谢
Java代码不需要更改:如果Saxon9.3在类路径上,它应该加载它并自动使用它。但是,如果你想成为100%的信心,撒克逊被加载(这可能是如果代码使用XSLT 2.0或撒克逊扩展是一个好主意),然后换行
TransformerFactory transFact javax.xml.transform.TransformerFactory.newInstance();
到
TransformerFactory transFact = new net.sf.saxon.TransformerFactoryImpl();
顺便提一下,我倾向于将HTML字符串包装在StringReader中,并将其传递给InputSource,而不是通过ByteArrayInputStream。 – 2011-04-15 08:34:22
它的工作时,我的输入是xml和xslt转换为html,但是当我的输入是html和xslt转换为xml,其显示错误,如 java.lang.NullPointerException在org.apache.xerces.parsers.AbstractSAXParser.setContentHandler在 net.sf.saxon.TransformerFactoryImpl(未知来源) 在net.sf.saxon.PreparedStylesheet.loadStylesheetModule(PreparedStylesheet.java:261) 在net.sf.saxon.PreparedStylesheet.prepare(PreparedStylesheet.java:185) .newTemplates(TransformerFactoryImpl.java:132) at net.sf.saxon.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:87) – vignesh 2011-04-30 04:37:11
好,从xslt1.0到xslt2.0的差异将在xsl文件中,而不是在java代码中。 – MeBigFatGuy 2011-04-15 06:14:33
您是否意味着我们可以将xsl文件的版本从1.0更改为2.0? – vignesh 2011-04-15 06:35:09