<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">

<!--
 * Copyright 1999-2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<!-- $Id: commandline.xml 489425 2006-12-21 18:16:49Z minchau $ -->
 

<s1 title="Command-Line Utility">
<ul>
<li><link idref="commandline_xsltc">Command line options for &xslt4jc-short;</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), 
      an applet, an application, or a servlet (see <link idref="usagepatterns">Usage Patterns</link>).</p>
     <p>The org.apache.xalan.xslt.Process main() method provides a command-line interface
    for performing XSL transformation. To perform a transformation from the command line or a script,
    do the following:</p>
 		<ol>
    <li>Download &xslt4j;.<br/><br/></li> 
    <li><link idref="getstarted" anchor="classpath">Set the Java classpath</link> to include <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, and
    <code>&xml4j-jar;</code> -- or another conformant XML Parser -- (see <link idref="usagepatterns" anchor="plug">Plugging in 
    the Transformer and XML parser</link>).<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
    stylesheet, and the output file:<br/><br/>
    <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>
                      Common Options

-XSLTC (use &xslt4jc-short; for transformation)
-IN inputXMLURL
-XSL XSLTransformationURL
-OUT outputFileName
-V (Version info)
-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)
-SECURE (set the secure processing feature to true)

                      Options for &xslt4ji;

-QC (Quiet Pattern Conflicts Warnings)
-TT (Trace the templates as they are being called)
-TG (Trace each generation event)
-TS (Trace each selection event)
-TTC (Trace the template children as they are being processed)
-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 &xslt4jc-long; (&xslt4jc-short;)

-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 XSL template inlining into one big method)
-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 &xslt4jc-short;. Please refer to 
      <link idref="commandline_xsltc">this document</link> for a detailed description on
      &xslt4jc-short; 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
      attributes).</p>
      <p>Use <code>-HTML</code> to write 4.0 transitional HTML (some elements, such as &lt;br&gt;, are
      not well formed XML).</p>
      <p>To set stylesheet parameters from the command line, use <br/>
      <code>java org.apache.xalan.xslt.Process -PARAM <ref>name value</ref></code></p>
      <p>The value is passed to the transformer as a String.</p>
      <p>For information about incremental and optimized stylesheet processing, see <link idref="dtm" anchor="settings">DTM settings</link>.</p>
      <p>Use <code>-L</code> to obtain access to a SourceLocator that a stylesheet extension can use to get information about the location
      of nodes in the source document. For more information, see <link idref="extensionslib" anchor="nodeinfo">NodeInfo extension functions</link>
      and <link idref="features" anchor="source_location">source_location</link>.</p>
      <p>Use <code>-URIRESOLVER</code> with a fully qualified class name to utilize a custom implementation of the
      <jump href="apidocs/javax/xml/transform/URIResolver.html">URIResolver</jump> JAXP interface to resolve URIs for
       xsl:include, xsl:import, and the document() function.</p>
       <p>Use <code>-ENTITYRESOLVER</code> with a fully qualified class name to utilize a custom implementation of the
       <jump href="apidocs/org/xml/sax/EntityResolver.html">EntityResolver</jump> SAX interface to handle external entity references.</p>
       <p>Use <code>-CONTENTHANDLER</code> with a fully qualified class name to utilize a custom implementation of the 
       <jump href="apidocs/org/xml/sax/ContentHandler.html">ContentHandler</jump> SAX interface to serialize output.
       If this same class implements the <jump href="apidocs/org/xml/sax/ext/LexicalHandler.html">org.xml.sax.ext.LexicalHandler</jump>
       interface and the output method is "xml", it will also receive lexical information about the XML document during serialization.</p>
       <note>If you want to validate an XML document (verify that it adheres to its DOCTYPE declaration), you can use the 
       <link idref="samples" anchor="validateutility">Validate utility</link> shipped with &xslt4j-current;.</note>
   </s2>
</s1>
