Нужно использовать saxon для преобразования html в xml с помощью xslt - PullRequest
0 голосов
/ 15 апреля 2011

Я конвертирую HTML в XML, используя xslt1.0. Я хочу перейти на 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();
    }

Как написать для саксонского процессора ?. Заранее спасибо

1 Ответ

1 голос
/ 15 апреля 2011

Код Java не нужно менять: если Saxon9.3 находится в пути к классам, он должен загрузить его и использовать его автоматически. Но если вы хотите быть на 100% уверены, что Saxon загружается (что, вероятно, является хорошей идеей, если код использует расширения XSLT 2.0 или Saxon), измените строку

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

до

TransformerFactory transFact = new net.sf.saxon.TransformerFactoryImpl();
...