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

Reply via email to