Можно ли выполнить XSL-преобразование без явно предоставленного XSL-файла? - PullRequest
1 голос
/ 01 июля 2011

Я использую Transformer для выполнения XSL-преобразования из XML в XHTML:

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
// ...
Transformer transformer = TransformerFactory.newInstance()
  .newTransformer(/* xsl */);
transformer.transform(new StreamSource(xml), new StreamResult(xhtml));

В этом коде я должен явно предоставить XSL-файл.В моей ситуации я не знаю, какой файл следует использовать.Вместо этого я хочу, чтобы преобразователь получил эту информацию из <?xsl-stylesheet?> инструкции по обработке в исходном XML.Можно ли это сделать с JDK6 и Saxon?

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

Ксалан может сделать это, отметьте это . Вероятно, саксонский так же как и это метод javax.xml.transform.TransformerFactory: getAssociatedStylesheet

1 голос
/ 01 июля 2011

Благодаря предложению @JustYo я обнаружил, что он хорошо работает при Саксонии.

System.setProperty("javax.xml.transform.TransformerFactory", 
    "net.sf.saxon.TransformerFactoryImpl");

StreamSource xmlSource = new StreamSource(xml);
TransformerFactory factory = TransformerFactory.newInstance();
Source xslSource = factory.getAssociatedStylesheet(xmlSource, null, null, null);
Transformer transformer = factory.newTransformer(xslSource);
transformer.transform(xmlSource, new StreamResult(xhtml));
...