I have an application where I would like to have a dynamic list of
XMLFilters (because they're easy to write) some of which are XSLT
stylesheets where the stylesheets have parameters. I have read that it it
not possible to specify parameters on XSLT stylesheets that are entered as:

StreamSource xsltSource = new StreamSource(xsltFilename)
XMLFilter filter = SAXTransformerFactory.newXMLFilter(xsltSource);

I attempted to get around this by doing:

Templates templates = transFactory.newTemplates(xsltSource);
Transformer transform = templates.newTransformer();
for(Map.Entry<String,String> param : templateParams.entrySet()) {
     transform.setParameter(param.getKey(), param.getValue());
}
XMLFilter filter = transFactory.newXMLFilter(templates);

The documentation says newTransform() returns "a transformation context,"
but apparently that context doesn't actually modify the original
Templatesobject since the parameter values don't seem to be set in the
output.

If I knew that all of the custom XMLFilters would come before the Transforms
then I think I could build two separate chains. One of XMLFilters that I use
with a SAXSource and another of TransformHandlers that I terminate with a
Result. I don't want to make that ordering assumption though.

I've tried to find a way to operate entirely using TransformHandlers, but I
can't figure out how to convert an XMLFilter into one.

Are there any suggestions for a method of accomplishing the goal of having a
chain of XMLFilters which include XSLT stylesheets with parameters
specified?

Will

Reply via email to