If I am not wrong, you can always change the implementation for the xslt processor in the final WAR file by setting:
META-INF/services/javax.xml.transform.TransformerFactory This is simple and clean. On Wed, Dec 5, 2012 at 5:21 AM, Robby Pelssers <robby.pelss...@nxp.com> wrote: > I did some investigation into this matter and the problem is in > org.apache.cocoon.sax.component.XSLTTransformer > > It has two constructor methods: > > public XSLTTransformer(final URL source) { > this(source, null); > } > > And > > public XSLTTransformer(final URL source, final Map<String, Object> > attributes) { > super(); > 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 here?! > > > // 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 > Javax.xml.transform.TransformerFactory > > And default use: > > public static TransformerFactory newInstance(String factoryClassName, > ClassLoader classLoader) throws TransformerFactoryConfigurationError > > We could from Cocoon side default set this to be > "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl" if the > factoryClassName is null or empty. > > Just thinking out loud here... > > Robby > > > -----Original Message----- > From: Robby Pelssers [mailto:robby.pelss...@nxp.com] > Sent: Tuesday, December 04, 2012 2:21 PM > To: d...@cocoon.apache.org; users@cocoon.apache.org > 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: > net.sf.saxon.TransformerFactoryImpl > > But I guess that restricts me to always use Saxon by default? > > Robby > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@cocoon.apache.org > For additional commands, e-mail: users-h...@cocoon.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@cocoon.apache.org For additional commands, e-mail: users-h...@cocoon.apache.org