cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robby Pelssers <>
Subject RE: using both Xalan and Saxon with C3
Date Wed, 05 Dec 2012 10:21:08 GMT
I did some investigation into this matter and the problem is in

It has two constructor methods:

    public XSLTTransformer(final URL source) {
        this(source, null);


    public XSLTTransformer(final URL source, final Map<String, Object> attributes) {
        this.loadXSLT(source, attributes);

So we can set attributes for the transformerfactory but not choose the implementation. First
of all I see something in the code that makes no sense to me:

     * A generic transformer factory to parse XSLTs.
    private static final SAXTransformerFactory TRAX_FACTORY = createNewSAXTransformerFactory();

this always falls back to  

    private static SAXTransformerFactory createNewSAXTransformerFactory() {
        return (SAXTransformerFactory) TransformerFactory.newInstance();

But on lines 148 to 157 I see following code.  If the attributes are not null and not empty
we STILL use createNewSAXTransformerFactory.  So the else block seems like a complete waste

            // XSLT has to be parsed
            SAXTransformerFactory transformerFactory;
            if (attributes != null && !attributes.isEmpty()) {
                transformerFactory = createNewSAXTransformerFactory();
                for (Entry<String, Object> attribute : attributes.entrySet()) {
                    transformerFactory.setAttribute(attribute.getKey(), attribute.getValue());
            } else {
                transformerFactory = TRAX_FACTORY;

Ideally I would like to see a third constructor method which would allow us to set  the factoryClassName
of the 

And default use:

public static TransformerFactory newInstance(String factoryClassName, ClassLoader classLoader)
 throws TransformerFactoryConfigurationError

We could from Cocoon side default set this to be ""
if the factoryClassName is null or empty.

Just thinking out loud here... 


-----Original Message-----
From: Robby Pelssers [] 
Sent: Tuesday, December 04, 2012 2:21 PM
Subject: using both Xalan and Saxon with C3

Hi guys,

Just wondering how I would configure a C3 project so I could use both Xalan and Saxon from
my sitemap and java

I currently took the approach to just create a file META-INF/services/javax.xml.transform.TransformerFactory
With following content:

But I guess that restricts me to always use Saxon by default?

View raw message