Details
-
New Feature
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
3.0.0-alpha-2
-
None
Description
Every time the XSLTTransformer#setXMLConsumer method is called, the XSLT is parsed reading the URL source and used to create the javax.xml.transform.sax.TransformerHandler: to be more clear
[...]
XSLTTransformer xsltTransformer = new
XSLTTransformer(getClass().getResource("myXSLT.xsl"));
Pipeline pipeline1 = new NonCachingPipeline();
pipeline1.addComponent(new StringGenerator("<x><y/></x>"));
pipeline1.addComponent(xsltTransformer);
pipeline1.addComponent(new XMLSerializer());
pipeline1.setup(System.out);
pipeline1.execute();
Pipeline pipeline2 = new NonCachingPipeline();
pipeline2.addComponent(new StringGenerator("<z><w/></z>"));
pipeline2.addComponent(xsltTransformer); <========================== the URL pointed by getClass().getResource("myXSLT.xsl") will be parsed again!!!
pipeline2.addComponent(new XMLSerializer());
pipeline2.setup(System.out);
pipeline2.execute();
As a quick solution we can store the Template to build the transformer handler objects in a static hashmap, but in the future we should introduce stores.
[...]
XSLTTransformer xsltTransformer = new
XSLTTransformer(getClass().getResource("myXSLT.xsl"));
Pipeline pipeline1 = new NonCachingPipeline();
pipeline1.addComponent(new StringGenerator("<x><y/></x>"));
pipeline1.addComponent(xsltTransformer);
pipeline1.addComponent(new XMLSerializer());
pipeline1.setup(System.out);
pipeline1.execute();
Pipeline pipeline2 = new NonCachingPipeline();
pipeline2.addComponent(new StringGenerator("<z><w/></z>"));
pipeline2.addComponent(xsltTransformer); <========================== the URL pointed by getClass().getResource("myXSLT.xsl") will be parsed again!!!
pipeline2.addComponent(new XMLSerializer());
pipeline2.setup(System.out);
pipeline2.execute();
As a quick solution we can store the Template to build the transformer handler objects in a static hashmap, but in the future we should introduce stores.