Hi Mansour, I figured you were going to ask that question. In fact I'd reason the same way. Normally I stick with 1 and only one XSLT processor (Saxon) as it implements XSLT2.0 while Xalan does not. But I have a use case where indentation of the output is important. Saxon can do this of course but it's only supported in the professional edition.
http://robbypelssers.blogspot.nl/2012/10/indenting-your-xslt-output.html I tested using @indent with Xalan and it works like a charm. So if I could construct a pipeline (in my case it would be in Java) and add another transformer using Xalan to do the indentation, my problem would be solved. Robby -----Original Message----- From: Mansour Al Akeel [mailto:mansour.alak...@gmail.com] Sent: Friday, December 07, 2012 1:45 AM To: users@cocoon.apache.org Cc: d...@cocoon.apache.org Subject: Re: using both Xalan and Saxon with C3 Ok, I see what you mean now. Just out of curiosity, why would anyone need to use more than one xslt processor in one application ?? Thank you. On Thu, Dec 6, 2012 at 2:50 AM, Robby Pelssers <robby.pelss...@nxp.com> wrote: > You missed the point Mansour... I meant simultaneously in 1 pipeline. > > But thx for thinking along. > Robby > > -----Original Message----- > From: Mansour Al Akeel [mailto:mansour.alak...@gmail.com] > Sent: Thursday, December 06, 2012 5:00 AM > To: users@cocoon.apache.org > Cc: d...@cocoon.apache.org > Subject: Re: using both Xalan and Saxon with C3 > > 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 > > > > > --------------------------------------------------------------------- > 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 --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@cocoon.apache.org For additional commands, e-mail: users-h...@cocoon.apache.org