我有一种情况,我认为我需要菊花链我的xslt转换(即一个xslt转换的输出被输入到另一个).第一个转换相当复杂,有很多xsl:choice和ancestor xpaths.我的想法是将xml转换为xml,然后可以很容易地转换为html.
我的问题是'这是标准做法还是我错过了什么?'
提前致谢.
斯蒂芬
这个问题的最佳答案描述了一种在Java中实现高效XSLT管道的技术:
不幸的是,虽然Transformer似乎公开了一个用于设置XSLT参数的API,但这似乎没有任何效果.例如,我有以下代码:
Transformer.java
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.Templates;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.Transformer;
import java.io.File;
public class MyTransformer {
public static void main(String[] args) throws javax.xml.transform.TransformerConfigurationException, javax.xml.transform.TransformerException{
SAXTransformerFactory stf = (SAXTransformerFactory)TransformerFactory.newInstance();
// These templates objects could be reused and obtained from elsewhere.
Templates templates1 = stf.newTemplates(new StreamSource( new File("MyStylesheet1.xslt")));
Templates templates2 = stf.newTemplates(new StreamSource(new File("MyStylesheet2.xslt")));
TransformerHandler th1 = stf.newTransformerHandler(templates1);
TransformerHandler th2 = stf.newTransformerHandler(templates2);
th1.setResult(new SAXResult(th2));
th2.setResult(new StreamResult(System.out));
Transformer t = stf.newTransformer();
//SETTING PARAMETERS …Run Code Online (Sandbox Code Playgroud)