我正在使用Transformer执行从XML到XHTML的XSL转换:
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文件。在我的情况下,我不知道应该使用哪个文件。相反,我希望变换器从原始XML中的<?xsl-stylesheet?>
处理指令中获取此信息。是否可以使用JDK6和Saxon?
答案 0 :(得分:3)
Xalan可以做到这一点,检查this。
可能撒克逊也是javax.xml.transform.TransformerFactory
:getAssociatedStylesheet
答案 1 :(得分:1)
感谢@JustYo
建议,我发现它在Saxon下运作良好。
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));