Hi Henry,
thank you for your reply!
Well, the tense
// Will look for a class named "MyXslt" without recompiling
clarified me a lot of troubles, thank you very very much.
So, I would like to ask you about some details: I pre-compiled a
stylesheet named "my-xslt.xsl" from command line, using the options
-p my.xslt.package -o MyXslt
so now I would like to know if the TransformerFactory
Transformer t = tf.newTransformer(new StreamSource("my-xslt.xsl"));
will look for my.xslt.package. MyXslt class.
Can you explain me what will happen, please?
Thank you very much in advance, best regards
Simone
2008/10/17 Henry Zongaro <[EMAIL PROTECTED]>:
>
> Hi, Simone.
>
> "Simone Tripodi" <[EMAIL PROTECTED]> wrote on 2008-10-16 04:33:53 AM:
>> I'm quite new with XSLTC and, even if I've also read the
>> documentation, I didn't understand how to reuse a pre-compiled XSLT:
>> to be clear, starting from an XSLT myxslt.xsl, I used the command line
>> to compile it in java class MyXslt.class.
>> Now, how can I use the MyXslt class in TrAX APIs?
>> Any suggestion will be very appreciated, thanks in advance.
>
> There are three steps involved:
>
> 1. Include the generated classes on your class path
> 2. Specify that you want to use XSLTC's TransformerFactoryImpl class as the
> provider of the javax.xml.transform.TransformerFactory service. See [1] for
> details.
> 3. Set the "use-classpath" TransformerFactory attribute to true. See [2].
>
> There are a number of ways to do step 2 - you could set the
> "javax.xml.transform.TransformerFactory" system property with the value
> "org.apache.xalan.xsltc.trax.TransformerFactoryImpl" either from the
> command-line or within your application. For instance,
>
> java
> -Djavax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl
> MyApplication
>
> Then when you create a TransformerFactory instance, you will get XSLTC's
> TransformerFactory implementation. Then step 3 direct the processor to
> derive the name of the classes required for the stylesheet from the system
> ID of the stylesheet, without recompiling the stylesheet. So, something
> like this should do it:
>
> TransformerFactory tf = null;
> try {
> tf = TransformerFactory.newInstance();
> try {
> tf.setAttribute("use-classpath", Boolean.TRUE);
> } catch (IllegalArgumentException iae) {
> System.err.println("Processor didn't recognize \"use-classpath\"
> attribute");
> }
>
> // Will look for a class named "MyXslt" without recompiling
> Transformer t = tf.newTransformer(new StreamSource("MyXslt.xsl"));
> t.transform(new StreamSource("input.xml"), new
> StreamResult(System.out));
> } catch (TransformerConfigurationException tce) {
> System.err.println("Could not create Transformer");
> } catch (TransformerException te) {
> System.err.println("Transform failed");
> }
>
> I hope that helps.
>
> Thanks,
>
> Henry
> [1] http://xml.apache.org/xalan-j/usagepatterns.html#plug
> [2] http://xml.apache.org/xalan-j/xsltc_usage.html#api-attributes
> ------------------------------------------------------------------
> Henry Zongaro
> XML Transformation & Query Development
> IBM Toronto Lab T/L 313-6044; Phone +1 905 413-6044
> mailto:[EMAIL PROTECTED]
>
--
My LinkedIn profile: http://www.linkedin.com/in/simonetripodi
My GoogleCode profile: http://code.google.com/u/simone.tripodi/
My Picasa: http://picasaweb.google.com/simone.tripodi/
My Tube: http://www.youtube.com/user/stripodi
My Del.icio.us: http://del.icio.us/simone.tripodi