mkwan       2002/11/04 11:15:25

  Modified:    java/xdocs/sources xalan-jlocal.xml xalan-jsite.xml
               java/xdocs/sources/xalan commandline.xml extensionslib.xml
  Added:       java/xdocs/sources/xalan commandline_xsltc.xml
                        extensions_xsltc.xml
  Log:
  Added two new documents: Extensions for XSLTC and XSLTC options in the
  Process command line. Added the "XSLTC Exts" item to the main panel.
  
  Revision  Changes    Path
  1.23      +2 -0      xml-xalan/java/xdocs/sources/xalan-jlocal.xml
  
  Index: xalan-jlocal.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/xdocs/sources/xalan-jlocal.xml,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- xalan-jlocal.xml  11 Jun 2002 15:09:33 -0000      1.22
  +++ xalan-jlocal.xml  4 Nov 2002 19:15:25 -0000       1.23
  @@ -80,11 +80,13 @@
     <separator/>
     <document id="extensions" label="Extensions" source="xalan/extensions.xml"/>
     <document id="extensionslib" label="Extensions Library" 
source="xalan/extensionslib.xml"/>
  +  <document id="extensions_xsltc" label="XSLTC Exts" 
source="xalan/extensions_xsltc.xml"/>
     <separator/>
     <document id="readme" label="Release Notes" source="xalan/readme.xml"/>
     <hidden id="history" source="xalan/history.xml"/>
     <hidden id="xsltc_constraints" source="xalan/xsltc_constraints.xml"/>
     <hidden id="xsltc_history" source="xalan/xsltc_history.xml"/>
  +  <hidden id="commandline_xsltc" source="xalan/commandline_xsltc.xml"/>
     <separator/>
     <external href="design/design2_0_0.html" label="Xalan 2 Design"/>
     <external href="xsltc/index.html" label="XSLTC Design"/>
  
  
  
  1.48      +2 -0      xml-xalan/java/xdocs/sources/xalan-jsite.xml
  
  Index: xalan-jsite.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/xdocs/sources/xalan-jsite.xml,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- xalan-jsite.xml   31 Oct 2002 15:05:32 -0000      1.47
  +++ xalan-jsite.xml   4 Nov 2002 19:15:25 -0000       1.48
  @@ -83,12 +83,14 @@
     <separator/>
     <document id="extensions" label="Extensions" source="xalan/extensions.xml"/>
     <document id="extensionslib" label="Extensions Library" 
source="xalan/extensionslib.xml"/>
  +  <document id="extensions_xsltc" label="XSLTC Exts" 
source="xalan/extensions_xsltc.xml"/>
     <separator/>
     <document id="readme" label="Release Notes" source="xalan/readme.xml"/>
     <document id="builds" label="Xalan-Java Builds" source="xalan/builds.xml"/>
     <hidden id="history" source="xalan/history.xml"/>
     <hidden id="xsltc_constraints" source="xalan/xsltc_constraints.xml"/>
     <hidden id="xsltc_history" source="xalan/xsltc_history.xml"/>
  +  <hidden id="commandline_xsltc" source="xalan/commandline_xsltc.xml"/>
     <separator/>
     <external href="design/design2_0_0.html" label="Xalan 2 Design"/>
     <external href="xsltc/index.html" label="XSLTC Design"/>  
  
  
  
  1.21      +46 -23    xml-xalan/java/xdocs/sources/xalan/commandline.xml
  
  Index: commandline.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/xdocs/sources/xalan/commandline.xml,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- commandline.xml   31 Jan 2002 15:55:22 -0000      1.20
  +++ commandline.xml   4 Nov 2002 19:15:25 -0000       1.21
  @@ -60,6 +60,9 @@
    
   
   <s1 title="Command-Line Utility">
  +<ul>
  +<li><link idref="commandline_xsltc">Command line options for XSLTC</link></li>
  +</ul>
      
      <s2 title="Using the Command-Line Utility">
         <p>To perform a transformation, you can call &xslt4j; from the command line 
(or script), 
  @@ -70,8 +73,9 @@
                <ol>
       <li>Download &xslt4j;.<br/><br/></li> 
       <li><link idref="getstarted" anchor="classpath">Set the Java classpath</link> 
to include xalan.jar, xml-apis.jar, and
  -    &xml4j-jar; -- or another conformant XML Parser -- see <link 
idref="usagepatterns" anchor="plug">Plugging in 
  -    the Transformer and XML parser</link>).<br/><br/></li>
  +    &xml4j-jar; -- or another conformant XML Parser -- (see <link 
idref="usagepatterns" anchor="plug">Plugging in 
  +    the Transformer and XML parser</link>). Also include xsltc.jar in the classpath 
if you want to use
  +    the XSLTC related options.<br/><br/></li>
       <li>Call java and the Process class with the appropriate flags and
       arguments (described below). The following command line, for example, includes 
the -IN, -XSL,
       and -OUT flags with their accompanying arguments -- the XML source document, 
the XSL
  @@ -79,35 +83,54 @@
       <code>java org.apache.xalan.xslt.Process -IN foo.xml -XSL foo.xsl -OUT 
foo.out</code>
       </li></ol>
       <p>The command line utility can take the following flags and arguments (the 
flags are case insensitive):</p> 
  -      <source>-IN inputXMLURL
  +      <source>
  +                      Common Options
  +
  +-XSLTC (use XSLTC for transformation)
  +-IN inputXMLURL
   -XSL XSLTransformationURL
   -OUT outputFileName
   -V (Version info)
  --QC (Quiet Pattern Conflicts Warnings)
  +-EDUMP [optional filename] (Do stackdump on error.)
  +-XML (Use XML formatter and add XML header.)
  +-TEXT (Use simple Text formatter.)
  +-HTML (Use HTML formatter.)
  +-PARAM name expression (Set a stylesheet parameter)
  +-MEDIA mediaType (use media attribute to find stylesheet associated with a document)
  +-FLAVOR flavorName (Explicitly use s2s=SAX or d2d=DOM to do transform)
  +-DIAG (Print overall milliseconds transform took)
  +-URIRESOLVER full class name (URIResolver to be used to resolve URIs)
  +-ENTITYRESOLVER full class name (EntityResolver to be used to resolve entities)
  +-CONTENTHANDLER full class name (ContentHandler to be used to serialize output)
  +
  +                      Options for the Xalan interpreter
   
  +-QC (Quiet Pattern Conflicts Warnings)
   -TT (Trace the templates as they are being called)
  --TG (Trace each result tree generation event)
  +-TG (Trace each generation event)
   -TS (Trace each selection event)
   -TTC (Trace the template children as they are being processed)
  --EDUMP [optional]FileName (Do stackdump on error)
  --XML (Use XML formatter and add XML header)
  --TEXT (Use simple Text formatter)
  --HTML (Use HTML formatter)
  --PARAM name value (Set a stylesheet parameter)
  --DIAG (Print number of milliseconds transform operation took)
  --FLAVOR flavorName (Transform with SAX for s2s or DOM for d2d)
  --URIRESOLVER fullClassName (Use a custom URIResolver)
  --ENTITYRESOLVER fullClassName (Use a custom EntityResolver)
  --CONTENTHANDLER fullClassName (Use a custom ContentHandler)
  --INCREMENTAL (Request incremental transform by setting
  -  http://xml.apache.org/xalan/features/incremental to true)
  --NOOPTIMIZE (Request no optizimation of stylesheet processing
  -  by setting http://xml.apache.org/xalan/features/optimize to
  -  false)
  --RL recursionLimit (Set numeric limit on depht of stylesheet 
  -  recursion)
  --L (Turn on source_location attribute)
  +-TCLASS (TraceListener class for trace extensions)
  +-L (use line numbers for source document)
  +-INCREMENTAL (request incremental DTM construction by setting 
  +    http://xml.apache.org/xalan/features/incremental to true)
  +-NOOPTIMIMIZE (request no stylesheet optimization proccessing by setting 
  +    http://xml.apache.org/xalan/features/optimize to false)
  +-RL recursionlimit (assert numeric limit on stylesheet recursion depth)
  +
  +                      Options for the Xalan compiler (XSLTC)
  +
  +-XO [optional transletName] (assign the name to the generated translet)
  +-XD destinationDirectory (specify a destination directory for translet)
  +-XJ jarfile (package translet classes into a jar file of name &lt;jarfile&gt;)
  +-XP package (specify a package name prefix for all generated translet classes)
  +-XN (enable template inlining)
  +-XX (turn on additional debugging message output)
  +-XT (use translet to transform if possible)
   </source>
  +      <p>Use <code>-XSLTC</code> if you want to transform with XSLTC. Please refer 
to 
  +      <link idref="commandline_xsltc">this document</link> for a detailed 
description on
  +      the XSLTC related options.</p>
         <p>Use <code>-IN</code> to specify the XML source document.</p> 
         <p>Use <code>-XSL</code> to specify the XSL stylesheet file.</p>
         <p>Use <code>-TEXT</code> if you want the output to include only element 
values (not element tags with element names and
  
  
  
  1.27      +1 -0      xml-xalan/java/xdocs/sources/xalan/extensionslib.xml
  
  Index: extensionslib.xml
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/xdocs/sources/xalan/extensionslib.xml,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- extensionslib.xml 28 Oct 2002 20:46:31 -0000      1.26
  +++ extensionslib.xml 4 Nov 2002 19:15:25 -0000       1.27
  @@ -68,6 +68,7 @@
   <li><link anchor="pipedocument">PipeDocument</link></li>
   <li><link anchor="evaluate">evaluate</link></li>
   <li><link anchor="tokenize">tokenize</link></li>
  +<li><link idref="extensions_xsltc">Extensions for XSLTC</link></li>
   <li>Examples: <link anchor="ex-redirect">Redirect</link>, <link 
anchor="ex-nodeset">nodeset</link>, <link anchor="ex-sql">SQL library</link></li>
   </ul><anchor name="intro"/>
   <s2 title= "Introduction">
  
  
  
  1.1                  xml-xalan/java/xdocs/sources/xalan/commandline_xsltc.xml
  
  Index: commandline_xsltc.xml
  ===================================================================
  <?xml version="1.0" standalone="no"?>
  <!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
  
  <!--
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, Lotus
   * Development Corporation., http://www.lotus.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   -->
   
  
  <s1 title="Command line options for XSLTC">
  <ul>
  <li><link anchor="options">Options</link></li>
  <li><link anchor="examples">Examples</link></li>
  <li><link anchor="faq">Simple FAQs</link></li>
  <li><link anchor="trax">Using the new options from TrAX</link></li>
  </ul>
     
  <anchor name="options"/>
  <s2 title="Options">
  <p>The <code>org.apache.xalan.xslt.Process</code> command line now supports XSLTC 
for transformation. You can use 
  the new <code>-XSLTC</code> option to enable the XSLTC support. The xsltc.jar file 
must be on your CLASSPATH 
  in order to use the <code>-XSLTC</code> option.</p>
  <p>The following existing options can be used with -XSLTC:</p>
  <p><code>-IN, -XSL, -OUT, -V, -EDUMP, -XML, -TEXT, -HTML, -PARAM, <br/>
  -MEDIA, -FLAVOR, -DIAG, -URIRESOLVER, -ENTITYRESOLVER,<br/>
  -CONTENTHANDLER</code></p>
  
  <p>The following existing options do not work with <code>-XSLTC</code>. If any of 
them is used with <code>-XSLTC</code>, 
  a message is printed and the option is ignored.</p>
  <p><code>-QC, -TT, -TG, -TS, -TTC, -TCLASS, -L, -INCREMENTAL, <br/>
  -NOOPTIMIMIZE, -RL</code></p>
  
  <p>We also have a new set of options for <code>-XSLTC</code>. They are all two 
letter options. The first 
  letter is X and the second letter is the same as the corresponding option in the 
XSLTC command line 
  <code>org.apache.xalan.xsltc.cmdline.Compile</code>.</p>
  
  <p>These new options can only be used with <code>-XSLTC</code>. If any of them is 
used with the Xalan 
  interpreter, a message is printed and the option is ignored.</p>
  
  <p>Here is the list of the new options:</p>
  <ul>
    <li><code>-XO [optional translet_name]</code><br/>
    Assign the name to the generated translet. If the translet_name is omitted, the 
translet is 
    generated using the default name (same as the xsl).</li>
    <li><code>-XD destination_directory</code><br/>
    Specify a destination directory for translet. The generated translet classes will 
be put 
    under the specified destination directory.</li>
    <li><code>-XJ jar_name</code><br/>
    Package translet classes into a jar file of name &lt;jar_name&gt;</li>
    <li><code>-XP package_name</code><br/>
    Specify a package name prefix for all generated translet classes</li>
    <li><code>-XN</code><br/>
    Enables template inlining</li>
    <li><code>-XX</code><br/>
    Turns on additional debugging message output</li>
    <li><code>-XT</code><br/>
    Use translet to transform if possible</li>
  </ul>
  </s2>
  
  <anchor name="examples"/>
  <s2 title="Examples">
  
  <p>You can just add the <code>-XSLTC</code> option to your existing option list so 
that it will do the same 
  thing as before, but using XSLTC.</p>
  
  <p>Here is a simple example on how to use XSLTC:</p>
  <p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl 
-xsltc</code></p>
  <p>XSLTC compiles the stylesheet on the fly and uses the bytecode in memory to 
transform the input xml. 
  No translet class is generated in this simple usage pattern.</p>
  <p>If you want to generate translet classes from the stylesheet, you can use the 
<code>-XO</code> option:</p>
  <p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -xsltc 
-xo</code></p>
  
  <p>This example still uses the stylesheet for transformation, but it also generates 
the 
  translet class "test.class".</p>
  
  <p>You can use the <code>-XJ, -XP</code> or <code>-XD</code> options to further 
customize the translet generation behavior. Translets 
  will be generated if any of the options <code>-XO, -XJ</code> or <code>-XT</code> is 
used.</p>
  <p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -xsltc 
-xo newTranslet -xd temp -xp org.apache.test -xj translets.jar</code></p>
  
  <p>The above command line uses the xsl for transformation. It also generates 
translet classes in
  the name of <code>newTranslet</code>, using a package prefix of 
<code>org.apache.test</code>, and packages the translets
  into the jar file <code>translets.jar</code> under the <code>temp</code> 
directory.</p>
  
  <p>All of the examples above use the stylesheet to do the transformation. If the 
translets are 
  already generated, you can use the <code>-XT</code> option to specify that you want 
to use the existing translets for transformation. 
  The <code>-XT</code> option has a makefile like feature in that it will compare the 
timestamps of the translet 
  and the stylesheet. If the translet is newer, it is used for the transformation, 
otherwise the stylesheet is 
  used and the translet is regenerated.</p>
  
  <p>The translet is loaded from the specified destination directory or the current 
directory, using
  the specified translet name or the xsl base name, depending on whether the 
<code>-XD</code> or 
  <code>-XO</code> option is used. The options <code>-XO, -XD, -XP</code> and 
<code>-XJ</code>
  can be used with the <code>-XT</code> option to tell XSLTC how to find the translet 
classes. The translets
  are directly read in as bytecode. You do not need to add the translet directory or 
the jar file to your
  classpath.</p>
  <p>Example:</p>
  <p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -xsltc 
-xt -xj translets.jar -xd temp</code></p>
  
  <p>This command line will search for the translet <code>test.class</code> inside the 
jar file <code>temp/translets.jar</code>. If it is 
  found and newer than test.xsl, it is used for the transformation; otherwise the xsl 
is used and the
  translet is generated and packaged in the same jar.</p>
  
  <p>Here is how the makefile feature for the <code>-XT</code> option works:</p>
  <ol>
    <li>If the xsl does not exist, use the translet</li>
    <li>If the translet does not exist, use the xsl and generate a new translet</li>
    <li>If both exist and the translet is newer, use the translet for 
transformation</li>
    <li>If both exist and the xsl is newer, use the xsl for transformation and 
regenerate the translet</li>
  </ol>
  </s2>
  
  <anchor name="faq"/>
  <s2 title="Simple FAQs">
  
  <p><em>Q:</em> If I use the <code>-XT</code> option, how can I tell if it is using 
the translet or the stylesheet for transformation?</p>
  <p><em>A:</em> Use the <code>-XX</code> option. When XSLTC uses the translet for 
transformation, you will see a debug 
  message like "Tranform using translet ..." or "Tranform using translet ... from jar 
file ...".</p>
  
  <p><em>Q:</em> I want to use a translet for transformation, and I don't have the 
stylesheet.</p>
  <p><em>A:</em> Suppose the translet class is 
<code>c:\translets\myTranslet.class</code>, you can use the following command line:</p>
  <p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsltc -xt -xo 
myTranslet -xd c:\translets</code></p>
  <p>If you use <code>-XT</code> option, the <code>-XSL</code> option can be omitted. 
You have to specify the translet name 
  using the <code>-XO</code> option because there is no default translet name in this 
situation.</p>
  
  <p><em>Q:</em> I only want to compile the stylesheet. I don't want to do a 
transformation.</p>
  <p><em>A:</em> TrAX has no notion of compiling a stylesheet. However, you can 
achieve the same effect by 
  running a dummy transformation and tell XSLTC to save the translet class. 
Example:</p>
  <p>&gt; <code>java org.apache.xalan.xslt.Process -xsl test.xsl -xo</code></p>
  <p>This command runs a transformation on an empty input and generates the translet 
<code>test.class</code>.</p>
  </s2>
  
  <anchor name="trax"/>
  <s2 title="Using the new options from TrAX">
  
  <p>If you use the TrAX interface for XSLTC, you could not tell it to use translets 
before. It always compiled 
  the xsl on the fly and used the bytecode im memory for transformation.  Now you can 
use some of 
  the new attributes in XSLTC's <code>TransformerFactoryImpl</code> class to customize 
the translet behaviors from TrAX.</p>
  
  <p>Here is the list of attributes in 
<code>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</code> and their 
  corresponding Process command line options:</p>
  
  <table>
    <tr>
      <td><em>Attributes</em></td>
      <td><em>Process command line options</em></td>
      <td><em>Default values</em></td>
    </tr>
    <tr>
      <td>translet-name</td>
      <td>-XO</td>
      <td>GregorSamsa</td>
    </tr>
    <tr>
      <td>destination-directory</td>
      <td>-XD</td>
      <td>null</td>
    </tr>
    <tr>
      <td>package-name</td>
      <td>-XP</td>
      <td>null</td>
    </tr>
    <tr>
      <td>jar-name</td>
      <td>-XJ</td>
      <td>null</td>
    </tr>
    <tr>
      <td>generate-translet</td>
      <td></td>
      <td>false</td>
    </tr>
    <tr>
      <td>auto-translet</td>
      <td>-XT</td>
      <td>false</td>
    </tr>
    <tr>
      <td>enable-inlining</td>
      <td>-XN</td>
      <td>false</td>
    </tr>
    <tr>
      <td>debug</td>
      <td>-XX</td>
      <td>false</td>
    </tr>
  </table>
  
  <p>You can set the attributes using the TrAX interface 
<code>TransformerFactory.setAttribute(String name, Object value)</code>. 
  The four attributes <code>translet-name, destination-directory, package-name and 
jar-name</code> are transient. 
  They only apply to the next <code>newTemplates()</code> or 
<code>newTransformer()</code> call. Their values are reset to 
  the default after the call.</p>
  
  <p>The following example shows you how to do the same thing from TrAX for the 
question 2 in the FAQ.</p>
  
  <source>
  // set the system property javax.xml.transform.TransformerFactory in order to use 
XSLTC
  String key = "javax.xml.transform.TransformerFactory";
  String value = "org.apache.xalan.xsltc.trax.TransformerFactoryImpl";
  Properties props = System.getProperties();
  props.put(key, value);
  System.setProperties(props);
  
  TransformerFactory tfactory = null;
  try {
    tfactory = TransformerFactory.newInstance();
  }
  catch (TransformerFactoryConfigurationError pfe) { pfe.printStackTrace(); }
  
  // set the translet name
  tfactory.setAttribute("translet-name", "myTranslet");
  
  // set the destination directory
  tfactory.setAttribute("destination-directory", "c:\\translets");
  
  // use the translet for transformation if possible
  tfactory.setAttribute("auto-translet", "true");
  
  // You can create a Templates object from an empty Source if the translet is 
specified.
  Templates templates = tfactory.newTemplates(new StreamSource());
  </source>
  </s2>
  </s1>
  
  
  
  1.1                  xml-xalan/java/xdocs/sources/xalan/extensions_xsltc.xml
  
  Index: extensions_xsltc.xml
  ===================================================================
  <?xml version="1.0" standalone="no"?>
  <!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
  
  <!--
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 1999, Lotus
   * Development Corporation., http://www.lotus.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   -->
  
  <s1 title="Extensions for XSLTC">
  <ul>
  <li><link anchor="intro">Introduction</link></li>
  <li><link anchor="constraints">Constraints</link></li>
  <li><link anchor="java_ext">Java extension</link></li>
  <li><link anchor="exslt_ext">EXSLT extensions</link></li>
  <li><link anchor="nodeset_ext">nodeset</link></li>
  <li><link anchor="redirect_ext">output/redirect</link></li>
  </ul>
  <anchor name="intro"/>
    <s2 title="Introduction">
    <p>XSLTC supports the use of extension functions implemented in external Java 
classes. It also
    supports the <link anchor="nodeset_ext">nodeset</link>, <link 
anchor="redirect_ext">output/redirect</link> 
    and <link anchor="exslt_ext">EXSLT</link> extension functions. Extension support 
in XSLTC is
    still under development. It is currently not as complete as the extension support 
in the
    interpretive Xalan. There are constraints in some areas.</p>
    </s2>
  
  <anchor name="constraints"/>
    <s2 title="Constraints">
    <p>In addition to the constraints listed below for each particular extension, 
extension support
    in XSLTC also has the following limitations:</p>
    <ol>
    <li><link idref="extensions" anchor="ext-elements">Extension element</link> is not 
supported.
    The extension element mechanism is closely related to the internal implementation 
of the XSLT processor.
    The current extension element mechansim is designed for the interpretive Xalan. It 
does not work with XSLTC.</li>
    <li>The <link idref="extensions" anchor="supported-lang">xalan:component and 
xalan:script</link> extension elements are not supported at the moment. This has
    the implication that you cannot use scripting languages (e.g. javascript) with 
XSLTC.</li>
    <li><link idref="extensionslib" anchor="sql">The SQL extension</link> is not 
supported in XSLTC at the moment.</li>
    </ol>
    </s2>
    
  <anchor name="java_ext"/>
    <s2 title="Java extension">
    <p>Java extension is supported in XSLTC. Constructors, static and instance methods 
are all supported.
    You can use any of the <link idref="extensions" anchor="ext-func-calls">three 
namespace formats</link>
     (Java, package and class) in your stylesheet.
    </p>
    <p>The official namespace for the Java extension is 
<code>http://xml.apache.org/xalan/java</code>. The old XSLTC Java namespace
    <code>http://xml.apache.org/xalan/xsltc/java</code> and the old Xalan namespace 
<code>http://xml.apache.org/xslt/java</code>
    are also supported for backward compatibility.</p>
    <p>All usage syntax for Xalan also applies to XSLTC with only one exception: XSLTC 
does not support the notion of default object 
    in <link idref="extensions" anchor="ext-func-calls">class format namespace</link>. 
    When using instance methods, you should always specify the class instance as the 
first argument
    to the extension function.</p>
    <p>The following example shows you how to call constructors, static, and nonstatic 
functions,
    using different namespace formats:</p>
  
    <source>&lt;xsl:stylesheet version=&quot;1.0&quot;
      xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;
      xmlns:date=&quot;http://xml.apache.org/xalan/java/java.util.Date&quot;
      xmlns:java_lang=&quot;http://xml.apache.org/xalan/java/java.lang&quot;
      exclude-result-prefixes=&quot;date java_lang&quot;&gt;
  
    &lt;!--
    * test: construction of Date object using a parameter calculated
    *       by a static call to the java.lang.Math object. Then call
    *       a non-static method (getTime()) on the newly created Date
    *       object. Demonstrates calling constructors, static functions
    *       (Math.max) and non-static functions (getTime()).
    *
    * Output:
    *   &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
    *     Date of object: Sat Nov 30 17:32:41 EST 2002
    *     Time of object: 1038695561000
    *
    --&gt;
  
    &lt;xsl:template match=&quot;/&quot;&gt;
     &lt;!-- create Date object with calculated parameter --&gt;
     &lt;xsl:variable name=&quot;dateObject&quot;
       select=&quot;date:new(
           java_lang:Math.max(1027695561000,1038695561000)
       )&quot;/&gt;
     Date of object: &lt;xsl:value-of select=&quot;$dateObject&quot;/&gt;
     Time of object: &lt;xsl:value-of select=&quot;date:getTime($dateObject)&quot;/&gt;
    &lt;/xsl:template&gt;
  
    &lt;/xsl:stylesheet&gt;
    </source>
    <note>Always use the abbreviated syntax for Java extension, because the 
xalan:component/xalan:script
    constructs are not supported in XSLTC.</note>
    </s2>
    
  <anchor name="exslt_ext"/>
    <s2 title="EXSLT extensions">
    <p>The following EXSLT extension modules are supported in XSLTC:</p>
    <ul>
    <li><jump href="apidocs/org/apache/xalan/lib/ExsltCommon.html">EXSLT common 
functions</jump></li>
    <li><jump href="apidocs/org/apache/xalan/lib/ExsltMath.html">EXSLT math 
functions</jump></li>
    <li><jump href="apidocs/org/apache/xalan/lib/ExsltSets.html">EXSLT set 
functions</jump></li>
    <li><jump href="apidocs/org/apache/xalan/lib/ExsltDatetime.html">EXSLT 
date-and-time functions</jump></li>
    <li><jump href="apidocs/org/apache/xalan/lib/ExsltStrings.html">EXSLT string 
functions</jump></li>
    </ul> 
    <p>The functions in the <jump 
href="apidocs/org/apache/xalan/lib/ExsltDynamic.html">dynamic</jump> module 
    (e.g. evaluate) are not supported because of the XSLTC design limitation.
    Work is currently underway on <jump 
href="http://www.exslt.org/func/elements/function/index.html";>user 
    defined EXSLT functions (with the function and result elements)</jump>.</p>
    <p>The <code>nodeset</code> and <code>objectType</code> extension functions in the 
<jump href="apidocs/org/apache/xalan/lib/ExsltCommon.html">common</jump> 
    module are implemented natively in XSLTC. For all other EXSLT extension functions,
    XSLTC uses the same implementation as Xalan. The implementation classes are under 
<code>org.apache.xalan.lib</code>.
    Depending on the packaging, these classes can be in a separate jar file (e.g. 
xalan.jar) from
    the XSLTC classes. In this case you need to add the jar file containing the EXSLT 
classes to your
    classpath in order to use EXSLT extensions in XSLTC.</p>
    </s2>
    
  <anchor name="nodeset_ext"/>
    <s2 title="nodeset">
    <p>XSLTC also supports the nodeset() extension function for transforming an RTF 
(result 
      tree fragment) into a node set.</p>
      <p>The nodeset extension can be used as an XSLTC extension function in the 
namespace
      <code>http://xml.apache.org/xalan/xsltc</code>, a Xalan extension function in 
the namespace
      <code>http://xml.apache.org/xalan</code>, an EXSLT extension function in the 
namespace 
      <code>http://exslt.org/common</code> or as a standard XPATH function. When it is 
used as
      an EXSLT extension function, you need to refer to the nodeset extension function 
as 
      <code>node-set</code>.</p>
      <p>The following exmaple shows you how to use the nodeset extension
      function in different namespaces:</p>
      <source>&lt;xsl:stylesheet 
xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;        
    xmlns:xsltc-extension=&quot;http://xml.apache.org/xalan/xsltc&quot;
    xmlns:xalan=&quot;http://xml.apache.org/xalan&quot;
    xmlns:exslt=&quot;http://exslt.org/common&quot;
    version=&quot;1.0&quot;&gt;
    &lt;xsl:template match=&quot;/&quot;&gt;
      &lt;xsl:variable name=&quot;rtf&quot;&gt;
        &lt;docelem&gt;
          &lt;elem1&gt;elem1&lt;/elem1&gt;
          &lt;elem2&gt;elem2&lt;/elem2&gt;
        &lt;/docelem&gt;
      &lt;/xsl:variable&gt;
      &lt;!-- Use nodeset as an XSLTC extension function --&gt;
      &lt;xsl:value-of 
select=&quot;xsltc-extension:nodeset($rtf)/docelem/elem1&quot;/&gt;
      &lt;!-- Use nodeset as a Xalan extension function --&gt;
      &lt;xsl:value-of select=&quot;xalan:nodeset($rtf)/docelem/elem1&quot;/&gt;
      &lt;!-- Use nodeset as an EXSLT extension function --&gt;
      &lt;xsl:value-of select=&quot;exslt:node-set($rtf)/docelem/elem1&quot;/&gt;
      &lt;!-- Use nodeset as standard function --&gt;
      &lt;xsl:value-of select=&quot;nodeset($rtf)/docelem/elem1&quot;/&gt;
    &lt;/xsl:template&gt; 
  &lt;/xsl:stylesheet&gt;
  </source><br/>
  <note>The preferred solution is to use the EXSLT node-set function so that it can 
work
  with multiple XSLT processors.</note>
    </s2>
    
  <anchor name="redirect_ext"/>
    <s2 title="output/redirect">
    <p>XSLTC supports the output extension element for redirecting the output to one 
    or more files. The output extension element is also aliased to the write extension 
element 
    in the namespace <code>http://xml.apache.org/xalan/redirect</code>. Therefore you 
can use
    it in the same way as the <link idref="extensionslib" 
anchor="redirect">redirect</link> extension in Xalan.</p>
    <p>You can use the file and append attributes with the output/redirect extension. 
The value of the file
    attribute is an attribute value template. If the value of the append attribute is 
true or yes, the
    output is appended to the file rather than overwriting the file.</p>
    <p>The following example shows you how to use the output/redirect extension:</p>
      <source> &lt;xsl:stylesheet 
     xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;
     xmlns:xsltc=&quot;http://xml.apache.org/xalan/xsltc&quot;
     xmlns:redirect=&quot;http://xml.apache.org/xalan/redirect&quot;
     xsl:version=&quot;1.0&quot;&gt;
     &lt;xsl:template match=&quot;/&quot;&gt;
       &lt;xsl:text&gt;This goes to standard output&lt;/xsl:text&gt;
       &lt;xsltc:output file=&quot;blob.xml&quot;&gt;
         &lt;xsl:text&gt;This ends up in the file 'blob.xml'&lt;/xsl:text&gt;
       &lt;/xsltc:output&gt;
       &lt;redirect:write file=&quot;blob.xml&quot; append=&quot;true&quot;&gt;
         &lt;xsl:text&gt;This is appended to the file 'blob.xml'&lt;/xsl:text&gt;
       &lt;/redirect:write&gt;
     &lt;/xsl:template&gt;
  &lt;/xsl:stylesheet&gt;</source>  
    </s2>
  
  </s1>
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to