<?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$ -->
<s1 title="&xslt4j; Samples">

<p>&xslt4ji; samples:</p>
<ul>
<li><link anchor="simpletransform">SimpleTransform</link></li>
<li><link anchor="usestylesheetpi">UseStylesheetPI</link></li>
<li><link anchor="usestylesheetparam">UseStylesheetParam</link></li>
<li><link anchor="sax2sax">SAX2SAX</link></li>
<li><link anchor="dom2dom">DOM2DOM</link></li>
<li><link anchor="pipe">Pipe</link></li>
<li><link anchor="usexmlfilters">UseXMLFilters</link></li>
<li><link anchor="appletxmltohtml">AppletXMLtoHTML</link></li>
<li><link anchor="extensions">Extensions</link></li>
<li><link anchor="trace">Trace</link></li>
<li><link anchor="validate">Validate</link></li>
<li><link anchor="trax">trax (JAXP transform samples)</link></li>
<li><link anchor="transformthread">TransformThread</link></li>
<li><link anchor="applyxpath">ApplyXPath</link></li>
<li><link anchor="applyxpathdom">ApplyXPathDOM</link></li>
<li><link anchor="applyxpathjaxp">ApplyXPathJAXP</link></li>
<li><link anchor="xpathresolver">XPathResolver</link></li>
<li><link anchor="extensionresolver">ExtensionFunctionResolver</link></li>
</ul>
<p>&xslt4ji; servlet samples:</p>
<ul>
<li><link anchor="servlet">servlet</link></li>
</ul>
<p>&xslt4jc-long; samples:</p>
<ul>
&xsltcsampleshead;
</ul>  
<s2 title="Samples to help you get started">
<p>Each of the subdirectories in the &xslt4j; java/samples directory
   contains the source files for one or more sample applications.  The class
   files for the samples are in the following jar files:</p>
<table>
<tr>
  <th>JAR file</th>
  <th>Content</th>
</tr>
<tr>
  <td>xalansamples.jar</td>
  <td>Everything except the &xslt4ji; servlet sample and some
      &xslt4jc-short; samples</td>
</tr>
<tr>
  <td>xalanservlet.jar</td>
  <td>&xslt4ji; servlet sample</td>
</tr>
<tr>
  <td>xsltcapplet.jar</td>
  <td>&xslt4jc-short; applet sample</td>
</tr>
<tr>
  <td>xsltcbrazil.jar</td>
  <td>&xslt4jc-short; Brazil server sample</td>
</tr>
<tr>
  <td>xsltcejb.jar</td>
  <td>&xslt4jc-short; EJB sample</td>
</tr>
<tr>
  <td>xsltcservlet.jar</td>
  <td>&xslt4jc-short; servlet sample</td>
</tr>
</table>
<p>With most of the samples, you can use the following procedure:</p>
 <ol>
   <li>Be sure <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, the appropriate samples JAR file, 
       and <code>&xml4j-jar;</code> are on the system class path. For the extension examples, <code>bsf.jar</code> 
       and (for the JavaScript extensions) <code>js.jar</code> must also be on the class path.</li>
   <li>Be sure the java executable is on your path.</li>
   <li>Go to the samples subdirectory containing the sample (use the DOS shell if you are running Windows).</li>
   <li>Run the sample from the command line (as indicated below).</li>
   <li>Examine the application source files. You may also want to modify the source files. Remember that if you
       modify a java file, you must recompile the class and place it on the classpath before you can run the
       modified application.</li>
 </ol>      
<p>The basic command line for running most of the samples is </p> 
    <p><code>java <ref>classname args</ref></code></p>
    <p>where <ref>classname</ref> is the sample class and <ref>args</ref> are the arguments, if any. As described in
     the following sections, some samples take no arguments. The UseStylesheetParam sample takes an
     additional argument. Several samples in extensions use the &xslt4j; 
     <link idref="commandline">command-line utility</link>, so they take arguments for the XML source
     file and the XSL stylesheet.</p>
  </s2>
   
   <anchor name="simpletransform"/>
   <s2 title="SimpleTransform">
   <p>What it does: The SimpleTransform class uses the birds.xsl stylesheet to transform birds.xml, and prints the
   output to birds.out.</p>
   <p>You can run it from the SimpleTransform subdirectory with</p>
   <p><code>java SimpleTransform</code></p>
   </s2>
   
   <anchor name="usestylesheetpi"/>
   <s2 title="UseStylesheetPI">
   <p>What it does: The UseStylesheetPI class uses the stylesheet processing instruction in the XML source document to determine
   which stylesheet to use to perform the transformation.</p>
   <p>You can run it from the UseStylesheetPI subdirectory with</p>
   <p><code>java UseStylesheetPI</code></p>
   <p>For more information, see <link idref="usagepatterns" anchor="embed">Working with embedded stylesheets</link>.</p>
   </s2>
   
   <anchor name="usestylesheetparam"/>
   <s2 title="UseStylesheetParam">
   <p>What it does: The UseStyleSheetParam class uses foo.xsl and a stylesheet parameter to transform foo.xml,
   and prints the output to System.out. The stylesheet parameter appears as a text node in the output.</p>
   <p>Run this sample from the UseStylesheetParam subdirectory with</p> 
   <p><code>java UseStylesheetParam <ref>param</ref></code></p>
   <p>where <ref>param</ref> is the stylesheet parameter value (a string of your choice).</p>  
   </s2>
   
   <anchor name="sax2sax"/>
   <s2 title="SAX2SAX">
   <p>What it does: Explicitly sets the SAX XMLReader and SAX ContentHandler for processing the stylesheet (birds.xsl), processing the XML input (birds.xml), and producing the output (birds.out).</p>
   <p>Run this sample from the SAX2SAX subdirectory with</p>
   <p><code>java SAX2SAX</code></p>
   </s2>
   
   <anchor name="dom2dom"/>
   <s2 title="DOM2DOM">
   <p>What it does: the DOM2DOM class uses the birds.xsl stylesheet to transform a DOM Document generated from birds.xml,
   produces an output DOM, and traverses the DOM, printing the traversal to System.out. In contrast to SimpleTransform,
   DOM2DOM illustrates the procedure for processing an input DOM and creating an output DOM that is available for
   further processing.</p>
   <p>You can run it from the DOM2DOM subdirectory with</p>
   <p><code>java DOM2DOM</code></p>
   </s2>
   
   <anchor name="pipe"/>
   <s2 title="Pipe">
   <p>What it does: Pipes the output from one transformation to a second transformation, then from the second
    transformation to the third transformation. Transformer1 is the ContentHandler for the XMLReader (which parses the
    input document). Transformer2 provides the ContentHandler for Transformer1, and Transformer3 for Transformer2.</p>
    <note>Pipe and UseXMLFilters illustrate two strategies for using the output of one transformation as the input for
    another transformation. The Pipe sample incorporates a "push" model -- Transformer1 "pushes" its output to
    Transformer2, and so on -- whereas in the UseXMLFilters sample, Transformer3 "pulls" its input from Transformer2,
    and so on.</note>
    <p>Run this sample from the Pipe subdirectory with</p> 
    <p><code>java Pipe</code></p>
    </s2>
    
    <anchor name="usexmlfilters"/>
    <s2 title="UseXMLFilters">
    <p>What it does: Chains together the same transformations as the preceding Pipe sample. Using each Transformer
    object as an extension of the SAX XMLFilter interface, sets the XMLReader as the parent of filter1,
    filter1 as the parent of filter2, and filter2 as the parent of of filter3.</p>
    <p><img src="xmlfilters.gif" alt="xmlfilters.gif"/></p>
    <p>Run this sample from the UseXMLFilters subdirectory with</p>
    <p><code>java UseXMLFilters</code></p>
    </s2>
    
    <anchor name="appletxmltohtml"/>
    <s2 title="AppletXMLtoHTML">
    <p>This applet uses a stylesheet to transform an XML document into HTML. It displays the XML document, the
     stylesheet, and the HTML output.</p>
    <p>How to run it: Open appletXMLtoHTML.html in the Internet Explorer 5 browser.</p>
    <note>For information about running &xslt4j; applets in Netscape Communicator, see <link idref="usagepatterns" anchor="netscape">Problems
    with Netscape</link>.<br/><br/>
    This applet looks for <code>xalan.jar</code> and <code>serializer.jar</code> in the build directory, or the top level directory, and <code>xml-apis.jar</code> and 
    <code>xercesImpl.jar</code> in the lib subdirectory. If you have placed these JAR files elsewhere, adjust the applet archive setting in 
    client.html accordingly.</note>
    </s2>

    <anchor name="servlet"/>
    <s2 title="servlet">
    <p>For a general introduction, see <link idref="usagepatterns" anchor="servlet">Using &xslt4j; in a servlet</link>.</p>
    <p>The servlet subdirectory contains four sample servlets and one JSP that use &xslt4j; to perform transformations. The sample 
    code is compiled and packed in xalanservlet.war. To run these samples, you must place 
    xalanservlet.war on a web server with a servlet engine. For example, using <jump href="http://tomcat.apache.org/index.html">jakarta-tomcat 4.1.*</jump>. 
    Copy the xalanservlet.war to %Tomcat_Home%/webapps. For more details about deploying
    servlets on Tomcat, please refer to <jump href="http://tomcat.apache.org/tomcat-4.1-doc/appdev/deployment.html">Deployment Organization</jump>.</p>
    <note>Dependency on Tomcat version. If encountering "java.lang.VerifyError: Cannot inherit from final class" error, 
    replace <code>xercesImpl.jar</code> under %Tomcat_Home%/common/endorsed with the one included with &xslt4j; .</note>
    <p><link anchor="simplexsltservlet">servlet.SimpleXSLTServlet</link> applies a particular stylesheet to a particular 
    XML document.</p> 
    <p><link anchor="usestylesheetparamservlet">servlet.UseStylesheetParamServlet</link> sets a stylesheet parameter 
    (the parameter name is hardwired into the servlet), and requires the user to supply parameters for the 
    XML document and XSL stylesheet.</p>
    <p><link anchor="jspsample">jspSample.jsp</link> is a Java ServerPage that sets a stylesheet parameter and applies the
     stylesheet to the XML document.</p>
    <p><link anchor="xsltservletwithparams">servlet.XSLTServletWithParams</link> accepts parameters for the XML document, 
    the XSL stylesheet, and any number of stylesheet parameters.</p>
    <p><link anchor="applyxslt">servlet.ApplyXSLT</link> (and associated classes) is closer to a production level servlet. It accepts parameters, provides a 
    listener for capturing and reporting debugger messages, and supports  use of a property file to determine which 
    stylesheet to apply based on the identity of the client browser/device.</p>
    <anchor name="simplexsltservlet"/>
    <s3 title="servlet.SimpleXSLTServlet">
    <p>What it does: servlet.SimpleXSLTServlet applies the birds.xsl stylesheet to birds.xml 
    and returns the transformation result to the HTTP client.</p>
    <p>To run this servlet: set up an HTML page to call the servlet as
    follows:</p>
    <gloss><label>http://localhost:port/xalanservlet/SimpleXSLTServlet</label></gloss>
    </s3><anchor name="usestylesheetparamservlet"/>
    <s3 title="servlet.UseStylesheetParamServlet">
    <note>Paul Campbell &lt;seapwc@halcyon.com&gt; wrote this servlet and the following explanatory text.
    Thank you, Paul!</note>
    <p>What it does: The client (perhaps an HTML form) specifies an XML document, a stylesheet, and a value to be passed
    to the stylesheet for a stylesheet parameter named "param1". The servlet performs the transformation and returns
    the output to the client. The client must specify which stylesheet (containing a "param1" stylesheet parameter") 
    and XML file are to be used or use sample files fooparam.xml and fooparam.xsl.</p>
    <p>How to run it: set up an HTML client to call the servlet with arguments along the lines of</p>
    <gloss><label>http://localhost:port/xalanservlet/UseStylesheetParamServlet?
    XML=fooparam.xml&amp;XSL=fooparam.xsl&amp;PVAL=GoodBye</label></gloss>
    <p>In the doGet() method, the servlet obtains the PVAL value "GoodBye" from the servlet request and passes it to the 
    stylesheet as the paramValue argument in a Transformer setParameter() call:</p>
    <p><code>String paramValue = httpServletRequest.getParameter("PVAL");</code><br/>
    <code>...</code><br/>
    <code>transformer.setParameter("param1", paramValue);</code></p>
    <p>The result is returned to the client:</p>
    <p><code>&lt;html&gt;&lt;body&gt;&lt;p&gt;GoodBye&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</code></p>
    </s3><anchor name="jspsample"/>
    <s3 title="jspSample.jsp">
    <note>Paul Campbell &lt;seapwc@halcyon.com&gt; wrote this Java Server Page.</note>
    <p>This Java Server Page performs essentially the same operation as 
    <link anchor="usestylesheetparamservlet">servlet.UseStylesheetParamServlet</link>. It applies a stylesheet parameter 
    to a stylesheet (fooparam.xsl), applies the stylesheet to an XML source document (fooparam.xml), and returns the
    result.</p>
    <p>Call JSP as follows:</p>
    <gloss><label>http://localhost:port/xalanservlet/jspSample.jsp?
    XML=fooparam.xml&amp;XSL=fooparam.xsl&amp;PMA=GoodBye</label></gloss>
    <p>The JSP obtains the PMA value "GoodBye" from the http request and passes it to the stylesheet as the 
    paramValue argument in a Transformer setParameter() call.</p>    
    </s3><anchor name="xsltservletwithparams"/>
    <s3 title="servlet.XSLTServletWithParams">
    <p>What it does: servlet.XSLTServletWithParams takes parameters in the request -- a URL parameter for
    the XML input document URL and an xslURL parameter for the stylesheet URL.</p>
    <p>To use XSLTServletWithParams to perform the same transformation as SimplestServlet: 
    use birds.xsl and birds.xml as examples. Set up an HTML page to call the servlet as follows:</p>
    <gloss><label>http://localhost:port/xalanservlet/XSLTServletWithParams?URL=birds.xml&amp;
    xslURL=birds.xsl</label></gloss>
    <p>If the XML document contains an associated stylesheet (a stylesheet Processing Instruction) that you want to use, simply omit the
    xslURL parameter.</p>
    <p>If the stylesheet takes stylesheet parameters, you can include them in the URL. For example to set the param1
    stylesheet parameter to foo, include param1=foo in the URL.</p>
    </s3><anchor name="applyxslt"/>
    <s3 title="servlet.ApplyXSLT">
    <p>What it does: The client (which you must set up) specifies an XML document and a stylesheet. The servlet
    performs the transformation and returns the output to the client. You can use media.properties to specify 
    which stylesheet is to be used depending on the client browser/device.</p>
    <note>The source files for this servlet, including ApplyXSLT.java, ApplyXSLTProperties.java, DefaultApplyXSLTProperties.java,
    ApplyXSLTListener.java, ApplyXSLTException.java. booklist1.xsl, booklist2.xsl and catalog.xml,
    are provided for testing.</note>
    <p>To run the servlet:  set system property server.root=server root. Set up an HTML page to call
    servlet.ApplyXSLT with arguments as illustrated below.</p>
    <p>The files catalog.xml,  booklist1.xsl and booklist2.xsl are used in the following example.
    In the deployment descriptor, booklist1.xsl is set as the default xsl file. If you create these 
    files yourself, make sure that you set the output method to "xml" in the stylesheet.</p>
    <p>Examples:</p>
    <gloss>
    <label>http://localhost:port/xalanservlet/ApplyXSLT?URL=/xalanservlet/catalog.xml&amp;xslURL=
    /xalanservlet/booklist2.xsl</label>
    <item>...applies the booklist2.xsl stylesheet to the catalog.xml data. Both files are<br/>
    served from the Web server's HTTP document root.<br/><br/></item>
    <label>http://localhost:port/xalanservlet/ApplyXSLT?URL=/xalanservlet/catalog.xml&amp;xslURL=
    /xalanservlet/booklist2.xsl&amp;debug=true</label>
    <item>...ensures that XML and XSL processor messages are returned in the event of problems
    applying booklist2.xsl to catalog.xml<br/><br/></item>
    <label>http://localhost:port/xalanservlet/ApplyXSLT/xalanservlet/catalog.xml?xslURL=/xalanservlet/booklist2.xsl</label>
    <item>...applies the booklist2.xsl stylesheet to the catalog.xml data, just like the first example.
    This is an alternative way of specifying the XML XSLTInputSource by utilizing the HTTP request's path
    information.<br/><br/></item>
    <label>http://localhost:port/xalanservlet/ApplyXSLT/xalanservlet/catalog.xml</label>
    <item>...examines catalog.xml for an associated XSL stylesheet booklist1.xsl (a stylesheet Processing Instruction). If multiple XSLs are associated with the data, the stylesheet whose media attribute maps to your browser type will be chosen.  If no mapping is successful, the primary associated stylesheet is used.<br/><br/></item>
    </gloss>     
    </s3>
    </s2>
   
    <anchor name="extensions"/>
    <s2 title="Extensions">
    <p>For an introduction to the creation and use of extension elements and extension functions, and
    for information about the extensions library distributed with the &xslt4j; Interpretive processor, 
    see <link idref="extensions">Extensions</link>. Extensions are also supported for the &xslt4j; 
    Compiling processor (XSLTC), however no samples exist at this time.  See 
    <link idref="extensions_xsltc">Extensions for XSLTC</link>.</p>
    <ul>
      <li><link anchor="ext1">1-redir</link></li>
      <li><link anchor="ext2">2-basicJscript</link></li>
      <li><link anchor="ext3">3-java-namespace</link></li>
      <li><link anchor="ext4">4-numlistJava</link></li>
      <li><link anchor="ext5">5-numlistJScript</link></li>
      <li><link anchor="sql">SQL library extensions</link></li>
    </ul>
    <p>The extensions subdirectory contains six samples with &xslt4j; Interpretive extensions. Two of the samples use
     extensions implemented in JavaScript, and four of the samples use extensions implemented in Java.</p>
    <p>To run these examples, you must place <code>bsf.jar</code> and <code>js.jar</code> (version 1.5, available from 
     <jump href="http://www.mozilla.org/rhino">http://www.mozilla.org/rhino</jump>) on the classpath. 
     You do not need <code>js.jar</code> on the classpath for the samples that use Java extensions. <link idref="faq">
     Problems related to JDK 1.4 or higher</link>.</p>
    <p>Use java.org.apache.xalan.xslt.Process, the &xslt4j; command-line utility, to run most of these samples from
     the <link idref="commandline">command line</link>. The command line must include an -in flag with the 
     XML source and an -xsl flag with the XSL stylesheet. If you want the output to be written to a file, rather
     than to the screen, add an -out flag with the output file name.</p>
    <p>Run these samples from the extensions directory as follows (each of the following is a single command
     line):</p> 

    <anchor name="ext1"/>
    <s3 title="1-redir">
    <p>What it does: Uses the Redirect extension elements shipped with &xslt4j; to direct output to two output
     files.</p>
    <p>Run this sample from the extensions subdirectory with</p> 
    <p><code>java org.apache.xalan.xslt.Process -in 1-redir.xml</code><br/>
     &nbsp;&nbsp;<code>-xsl 1-redir.xsl</code></p>
    <p>The standard (non-redirected) output is written to the screen. The redirected output is written to 1-redir-out, or
     whatever filename you assign to the doc/foo @file attribute in 1-redir.xml. The stylesheet gets the file name for
     redirected output from the XML input file.</p>
    </s3>
    
    <anchor name="ext2"/>
    <s3 title="2-basicJscript">
    <p>What it does: Uses an extension element and extension function implemented in JavaScript to compute a
      deadline for responding to a customer inquiry.</p>
     <note><code>js.jar</code> must be on the classpath.</note>
    <p>Run this sample from the extensions subdirectory with</p>
    <p><code>java org.apache.xalan.xslt.Process -in 2-basicJscript.xml</code>
     <br/>&nbsp;&nbsp;<code>-xsl 2-basicJscript.xsl</code></p>     
    </s3>
    
    <anchor name="ext3"/>
    <s3 title="3-java-namespace">
    <p>What it does: Uses extension functions to format dates. This sample illustrates use of the predefined java
     extension namespace to provide ready access to extensions implemented in Java.</p>
    <p>Run this sample from the extensions subdirectory with</p> 
    <p><code>java org.apache.xalan.xslt.Process -in 3-java-namespace.xml</code>
     <br/>&nbsp;&nbsp;<code>-xsl 3-java-namespace.xsl</code></p>    
    </s3>
    
    <anchor name="ext4"/>
    <s3 title="4-numlistJava">
    <p>What it does: Uses a Java extension to transform a set of name elements into a numbered and alphabetized
     list.</p>
    <p>Run this sample from the extensions subdirectory with</p> 
    <p><code>java org.apache.xalan.xslt.Process -in numlist.xml</code> 
     <br/>&nbsp;&nbsp;<code>-xsl 4-numlistJava.xsl</code></p>    
    </s3>
    
    <anchor name="ext5"/>
    <s3 title="5-numlistJscript">
    <p>What it does: Uses a JavaScript  extension to transform a set of name elements into a numbered and
     alphabetized list. This sample performs the same operations as the preceding Java extension.</p>
     <note><code>js.jar</code> must be on the classpath.</note>
    <p>Run this sample from the extensions subdirectory with</p>
    <p><code> java org.apache.xalan.xslt.Process -in numlist.xml</code>
     <br/>&nbsp;&nbsp;<code>-xsl 5-numlistJscript.xsl</code></p>
    </s3>
    </s2>
   
    <anchor name="sql"/>
    <s2 title="SQL library extensions">
    <p>The <link idref="extensionslib" anchor="sql">SQL library </link> 
     extension enables you to execute SQL queries from within a stylesheet, 
     and to incorporate query result sets in the XML output. 
     To use the SQL library, you need a JDBC driver, the underlying DBMS, 
     and a database.</p>
    <p>Our samples use Apache Derby DBMS, but the SQL Extensions and sample code
     can be configured to query data from any DBMS that can be accessed through
     JDBC.</p>

    <anchor name="dbsetup"/>
    <s3 title="Setting up the SQL extension samples">   
    <p>To run the SQL library extension samples, do the following:</p>
    <p>The SQL Extension examples require the Apache Derby jars.
     The Derby jars are available from <jump href="http://db.apache.org/derby/">
     http://db.apache.org/derby/</jump>.</p>
    <p>The sample batch/script files are configured to look for the 
     derby jars in the xml-xalan/java/samples/extensions/sql directory by default.</p>
    <p>If you already have derby installed and want to use that implementation.
      You can do one of the following.</p>
    <ol>
      <li>set the environment variable DERBY_JAR_DIR to point to the location of <code>derby.jar</code> and <code>derbytools.jar</code></li>
      <li>have the <code>derby.jar</code> and <code>derbytools.jar</code> in your classpath.</li>
    </ol>
    <p>First create the sample database using Derby.  To do this, </p>
    <ul><li>on Windows, execute the command<br/> <code>runDerby.bat createdb.sql</code></li>
        <li>on Unix, execute the command<br/> <code>sh runDerby.sh createdb.sql</code></li>
    </ul>
    <p>You can use the Derby tools to examine the raw database. To do this, </p>
      <ul>
      <li>on Windows execute the command<br/>
      <code>runDerby.bat</code><br/>
      At the lj> prompt type the following commands:<br/>
      <code>lj> connect 'sampleDB';</code><br/>
      <code>lj> select * from import1;</code><br/><br/>
      <code>To quit the lj session type</code><br/>
      <code>lj> quit;</code><br/>
      <br/></li>
      <li>To Start lj on Unix type<br/>
      <code>sh runDerby.sh</code><br/><br/></li>
      </ul>
    <p>Once the sample database has been created, you can run the sample
      stylesheets using the runXalan script.</p>
    </s3>


    <s3 title="SQL Library samples">   
    <ul>
    <li><link anchor="Dump-SQL">The Details - Dump SQL</link></li>
    <li><link anchor="basic-conn">Basic Connections</link></li>
    <li><link anchor="ext-conn">ExternalConnection</link></li>
    <li><link anchor="pquery">Parameterized query</link></li>
    <li><link anchor="streamable">Streamable</link></li>
    <li><link anchor="showerror">Show-error</link></li>
    </ul>
    </s3>

    <anchor name="Dump-SQL"/>
    <s3 title="Dump-SQL">
    <p>The Dump SQL example is used to show what data is available to the XSLT process.</p>
    <p>To run the DumpSQL Example, execute the following command<br/>
         <code>runXalan.bat -XSL basic-connection/DumpSQL.xsl</code></p>
    <p>Dump SQL should produce the following output:</p>
    <source>
    &lt;sql&gt;
      &lt;metadata&gt;
        &lt;column-header searchable="true" writable="false" signed="true" 
    nullable="true" definitely-writable="false" case-sensitive="false" 
    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
    column-typename="INTEGER" column-type="4" column-display-size="11" 
    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;&lt;/column-header&gt;
        &lt;column-header searchable="true" writable="false" signed="false" 
    nullable="true" definitely-writable="false" case-sensitive="true" 
    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
    column-typename="VARCHAR" column-type="12" column-display-size="40" 
    catalogue-name="" column-label="NAME" column-name="NAME"&gt;&lt;/column-header&gt;
      &lt;/metadata&gt;
      &lt;row-set&gt;
       &lt;row&gt;
        &lt;col searchable="true" writable="false" signed="true" 
    nullable="true" definitely-writable="false" case-sensitive="false" 
    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
    column-typename="INTEGER" column-type="4" column-display-size="11" 
    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;1&lt;/col&gt;
        &lt;col searchable="true" writable="false" signed="false" 
    nullable="true" definitely-writable="false" case-sensitive="true" 
    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
    column-typename="VARCHAR" column-type="12" column-display-size="40" 
    catalogue-name="" column-label="NAME" column-name="NAME">toothpaste&lt;/col&gt;
       &lt;/row&gt;
       &lt;row&gt;
        &lt;col searchable="true" writable="false" signed="true" 
    nullable="true" definitely-writable="false" case-sensitive="false" 
    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
    column-typename="INTEGER" column-type="4" column-display-size="11" 
    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;2&lt;/col&gt;
        &lt;col searchable="true" writable="false" signed="false" 
    nullable="true" definitely-writable="false" case-sensitive="true" 
    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
    column-typename="VARCHAR" column-type="12" column-display-size="40" 
    catalogue-name="" column-label="NAME" column-name="NAME"&gt;milk&lt;/col&gt;
       &lt;/row&gt;
       &lt;row&gt;
        &lt;col searchable="true" writable="false" signed="true" 
    nullable="true" definitely-writable="false" case-sensitive="false" 
    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
    column-typename="INTEGER" column-type="4" column-display-size="11" 
    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;3&lt;/col&gt;
        &lt;col searchable="true" writable="false" signed="false" 
    nullable="true" definitely-writable="false" case-sensitive="true" 
    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
    column-typename="VARCHAR" column-type="12" column-display-size="40" 
    catalogue-name="" column-label="NAME" column-name="NAME"&gt;bread&lt;/col&gt;
       &lt;/row&gt;
       &lt;row&gt;
        &lt;col searchable="true" writable="false" signed="true" 
    nullable="true" definitely-writable="false" case-sensitive="false" 
    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
    column-typename="INTEGER" column-type="4" column-display-size="11" 
    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;4&lt;/col&gt;
        &lt;col searchable="true" writable="false" signed="false" 
    nullable="true" definitely-writable="false" case-sensitive="true" 
    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
    column-typename="VARCHAR" column-type="12" column-display-size="40" 
    catalogue-name="" column-label="NAME" column-name="NAME"&gt;cereal&lt;/col&gt;
       &lt;/row&gt;
      &lt;/row-set&gt;
    &lt;/sql&gt;
    </source>
    
    </s3>
    
    <anchor name="basic-conn"/>
    <s3 title="Basic-Connection">
    <p><em>Contributed by John Gentilin (johnglinux@eyecatching.com).</em></p>
    <p>What it does: illustrates two strategies for connecting to a database, executing a 
      static query, and returning the query result.</p>
    <p>The first strategy is to get connection information along with the static query from 
      the stylesheet (dbtest.xsl)\ in the form of stylesheet parameters.</p>
    <p>The second strategy is to get connection information from a nodeset in an XML source 
      document (dbInfo.xml).</p>
    <p><link anchor="dbsetup">Set up the database</link>, and run this sample from the 
      extensions/sql/ directory.</p>
    <p>1. To get connection information from the stylesheet:</p>
     <code>runXalan -xsl basic-connection/dbtest.xsl -out import1.html</code>
    <p>2. To get connection information in the form of a nodeset from the XML source document:</p>
     <code>runXalan -in dbinfo.xml -xsl dbtest-cinfo.xsl -out import1.html</code>
    </s3>
    
    <anchor name="ext-conn"/>
    <s3 title="ExternalConnection">
    <p><em>Contributed by John Gentilin (johnglinux@eyecatching.com).</em></p>
    <p>What it does: The ExternalConnection classes uses the default implementation of the 
     ConnectionPool interface to create a pool of connections. A stylesheet in turn uses a 
     connection from this pool to instantiate an XConnection object and connect to a datasource.</p>
    <p>The stylesheet uses this named connection pool to instantiate an XConnection object and 
     connect to the datasource. The ExternalConnection class is in <code>xalansamples.jar</code>.</p>
    <p><link anchor="dbsetup">Set up the database</link>, be sure <code>xalanxamples.jar</code> is on the 
     class path, and run this sample from the extensions/sql directory:</p>
    <code>runExtConnection ext-connection/dbtest.xsl</code>
    <p>ExternalConnection creates the ConnectionPool, and performs a transformation with dbtest.xsl, 
     which draws from the pool to instantiate an XConnection object, connect to the datasource, 
     execute a static query, and return the query result.</p>
    </s3>
  
    <anchor name="pquery"/>
    <s3 title="Parameterized query">
    <p><em>Contributed by John Gentilin (johnglinux@eyecatching.com).</em></p>
    <p>What it does: connects to a datasource, executes a parameterized query, and returns 
     the result. The XML source document provides the parameter value as well as the connection 
     information. The parameter value is in a node in the XML source.</p>
    <p>The stylesheet gets the required connection and parameter information from the XML source, 
     sets up and executes the parameterized query, and retuns the query result set.</p>
    <p><link anchor="dbsetup">Set up the database</link>, and run this sample from the sql subdirectory:</p>
     <code>runXalan -in pquery/dbinfo.xml -xsl pquery/dbtest.xsl -out import1.html</code>
    </s3>
  
    <anchor name="streamable"/>
    <s3 title="Streamable">
    <p><em>Contributed by John Gentilin (johnglinux@eyecatching.com).</em></p>
    <p>What it does: Illustrates enabling and disabling of a streamable result set returned by a query.</p>
    <p>With a streamable result set, you can create a query that will return many rows but the
     result will only consume the amount of memory to represent a single row. As a benefit,
     you can perform transformations on large amounts of data while maintaining a low memory profile. 
     On the down side, when you use streaming, you can NOT, visit previous nodes because the SQL
     extension only supports unidirectional cursors. If you requires that the whole query be available
     so that you can apply templates to previous rows, just disable caching.</p>
    <p><link anchor="dbsetup">Set up the database</link>, and run these samples from the sql subdirectory.</p>
    <p>1. An example where streaming is disabled:</p>
     <code>runXalan -in streamable/dbinfo.xml -xsl streamable/cachedNodes.xsl -out import1.html</code>
    <p>2. An example where streaming is enabled</p>
     <code>runXalan -in streamable/dbinfo.xml -xsl streamable/streamNodes.xsl -out import1.html</code>
    <p>3. This example performs a pivor function swaping rows and columns, streaming is 
     required to be disabled here.</p>
     <code>runXalan -in streamable/dbinfo.xml -xsl streamable/pivot.xsl -out import1.html</code>
    </s3>
 
    <anchor name="showerror"/>
    <s3 title="Show-error">
    <p><em>Contributed by John Gentilin (johnglinux@eyecatching.com).</em></p>
    <p>What it does: use the SQL library ExtensionError class to return an error message 
     in the output stream. The stylesheet calls a template with a select statement that 
     returns a nodeset when an error occurs.</p>
    <p><link anchor="dbsetup">Set up the database</link>, and run this sample from the extensions/sql subdirectory:</p>
    <p>1. An example where we specify invalid connection information:</p>
     <code>runXalan -in show-error/dbinfo.xml -xsl show-error/invalidConn.xsl -out import1.html</code>
    <p>2. An example where we specify invalid parameters to a parameterized query:</p>
     <code>runXalan -in show-error/dbinfo.xml -xsl show-error/invalidPQuery.xsl -out import1.html</code>
    <p>3. An example where we specify an invlaid query:</p>
     <code>runXalan -in show-error/dbinfo.xml -xsl show-error/invalidQuery.xsl -out import1.html</code>
    </s3>
    </s2>    
    
    <anchor name="trace"/>
    <s2 title="Trace">
      <p>What it does: Trace uses the TraceListener and TraceManager classes to log transformation events.</p>
      <p>Run this sample from the Trace subdirectory with</p>
      <p><code>java Trace</code></p>
      <p>and examine the result in events.log. Additionally, run this sample from the extensions subdirectory with</p>
      <p><code>java Trace 3-java-namespace</code></p>
      <p>for the trace of a stylesheet with extensions.  For more information, see <link idref="usagepatterns" 
      anchor="debugging">Debugger Interface</link></p>
     </s2><anchor name="validate"/>
     <s2 title="Validate">
     <ul>
     <li><link anchor="validatexmlinput">ValidateXMLInput</link></li>
     <li><link anchor="validateutility">Validate utility</link></li>
     </ul><anchor name="validatexmlinput"/>
     <s3 title="ValidateXMLInput">
     <p>What it does: Uses <jump href="apidocs/javax/xml/parsers/SAXParserFactory.html">SAXParserFactory</jump> to turn on validation, and 
     <jump href="apidocs/org/xml/sax/XMLReader.html">XMLReader</jump> to parse the XML input and report errors and warnings to a SAX event
     handler. The XML input (birds.xml) contains an internal DOCTYPE declaration, and a few minor document type violations, which you are 
     invited to fix, add to, and vary in any way you find useful.</p>
     <p>Run this sample from the Validate subdirectory with</p>
     <p><code>java ValidateXMLInput</code></p>
     </s3><anchor name="validateutility"/>
     <s3 title="Validate utility">
     <p>What it does: Uses the <jump href="apidocs/javax/xml/parsers/SAXParser.html">JAXP SAXParser</jump> with a SAX event handler 
     (extends <jump href="apidocs/org/xml/sax/helpers/DefaultHandler.html">DefaultHandler</jump> and implements 
     <jump href="apidocs/org/xml/sax/ext/LexicalHandler.html">LexicalHandler</jump>) to verify that XML files conform to their declared 
     document type. You can use this utility to verify that an individual file or all the .xml files in a directory are
     well-formed and valid. Each .xml file should contain a DOCTYPE declaration.</p>
     <p>Run this sample from any directory with</p>
     <p><code>java Validate <ref>file-or-dir-name</ref> [<ref>logfile</ref></code>]</p>
     <p>where <ref>file-or-dir-name</ref> is an XML file or directory pathname, and <ref>logfile</ref> designates a log.
     If you omit the second argument, Validate reports its findings to the screen.</p>
     <note>A limitation: Files containing document parts appear to fail if you check them with Validate. Check readme.xml, 
     which "includes" by entity reference a number of files, and it passes. The parse operation scans the entire document
     with the includes. Check an "included" file (such as history.xml) as if it were an independent document and it fails.</note>
     </s3>
     </s2>

     <anchor name="trax"/>
     <s2 title="trax (JAXP transform samples)">
     <p>What it does: runs a number of samples illustrating uses of the <link idref="trax">JAXP transform interfaces</link>.</p>
     <p>Run this sample from the trax subdirectory with</p>
     <p><code>java Examples</code></p>
     <p>and examine the source in Examples.java and ExampleContentHandler.java.</p>
     </s2>
     
     <anchor name="transformthread"/>
     <s2 title="TransformThread">
     <p>What it does: spawns multiple threads, with each thread running two transformations on two different XML files.</p>
     <p>Run this sample from the TransformThread subdirectory with</p>
     <p><code>java TransformThread</code></p>
     <p>and examine the source in TransformThread.java. A more detailed description along with configuration options are listed in the header.</p>
     </s2>
     
     <anchor name="applyxpath"/>
     <s2 title="ApplyXPath">
     <p>What it does: ApplyXPath uses the convenience methods in the &xslt4j2; specific <jump href="apidocs/org/apache/xpath/XPathAPI.html">XPathAPI</jump> to
     execute an XPath expression against an XML document and return the nodes (if any) it finds.</p>
     <note>You can use this sample as an aid when you want to find out what a given XPath expression returns from a
     given XML file. Keep in mind that the context node (base point of evaluation) for the XPath expression is the document
     root.</note>
     <p>Run this sample from the ApplyXPath subdirectory with</p> 
     <p><code>java ApplyXPath <ref>XMLFile XPathExpression</ref></code></p>
     <p>where <ref>XMLFile</ref> is an XML source file and <ref>XPathExpression</ref> is an XPath expression to
     apply to that file. The ApplyXPath subdirectory contains an XML file named foo.xml --<br/>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>&lt;doc&gt;&lt;name first="David" last="Marston"/&gt;...&lt;/doc></code><br/> -- so you can try command
     lines like</p>
     <p><code>java ApplyXPath foo.xml /</code></p>
     <p>and</p>
     <p><code>java ApplyXPath foo.xml /doc/name/@first</code></p>
     <p>For more information, see <link idref="usagepatterns" anchor="xpath">Working with XPath expressions</link>.</p>
     </s2>
    
     <anchor name="applyxpathdom"/>
     <s2 title="ApplyXPathDOM">
     <p>What it does: ApplyXPathDOM is very similar to the <link anchor="applyxpath">ApplyXPath</link> sample, but it uses the API 
     in the <jump href="http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/">DOM Level 3 XPath 
     Specification</jump> to execute an XPath expression against an XML document and return 
     the nodes (if any) it finds.</p>
     <note>You can use this sample as an aid when you want to find out what a given XPath expression returns from a
     given XML file. Keep in mind that the context node (base point of evaluation) for the XPath expression is the document
     root.</note>
     <p>Run this sample from the ApplyXPathDOM subdirectory with</p> 
     <p><code>java ApplyXPathDOM <ref>XMLFile XPathExpression</ref></code></p>
     <p>where <ref>XMLFile</ref> is an XML source file and <ref>XPathExpression</ref> is an XPath expression to
     apply to that file. The ApplyXPathDOM subdirectory contains an XML file named foo.xml --<br/>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>&lt;doc&gt;&lt;name first="David" last="Marston"/&gt;...&lt;/doc></code><br/> -- so you can try command
     lines like</p>
     <p><code>java ApplyXPathDOM foo.xml /</code></p>
     <p>and</p>
     <p><code>java ApplyXPathDOM foo.xml /doc/name/@first</code></p>
     <p>For more information, see <link idref="usagepatterns" anchor="xpath">Working with XPath expressions</link>.</p>
     </s2>
     
     <anchor name="applyxpathjaxp"/>
     <s2 title="ApplyXPathJAXP">
     <p>What it does: ApplyXPathJAXP is similar to the <link anchor="applyxpath">ApplyXPath</link> sample, but it uses the XPath API in &jaxp13-short;
     to evaluate an XPath expression against an XML document and return the evaluation result in the specified type.</p>
     <p>Run this sample from the XPathAPI subdirectory with</p>
     <p><code>java ApplyXPathJAXP <ref>XMLFile XPathExpression ReturnType</ref></code></p>
     <p>where <ref>XMLFile</ref> is an XML source file, <ref>XPathExpression</ref> is an XPath expression to 
     apply to that file, and <ref>ReturnType</ref> is one of the strings from the list {"num", "bool", "str", "node", "nodeset"}
     designating the return type of the evaluation. The XPathAPI subdirectory contains an XML file named 
     foo.xml. So you can try command lines like</p>
     <p><code>java ApplyXPathJAXP foo.xml /doc/name[1]/@last str</code></p>
     <p>and</p>
     <p><code>java ApplyXPathJAXP foo.xml /doc/name nodeset</code></p>
     </s2>

     <anchor name="xpathresolver"/>
     <s2 title="XPathResolver">
     <p>What it does: XPathResolver provides sample implementations of the NamespaceContext, XPathFunctionResolver 
     and XPathVariableResolver interfaces described in the <jump href="apidocs/javax/xml/xpath/XPath.html">
     JAXP 1.3 XPath API</jump>. 
     The sample demonstrates how these implementations can be used to to evaluate XPath expressions that contain 
     extension functions and references to variables.</p>
     <p>Run this sample from the XPathAPI subdirectory with</p>
     <p><code>java XPathResolver</code></p>
     </s2>

     <anchor name="extensionresolver"/>
     <s2 title="ExtensionFunctionResolver">
     <p>What it does: ExtensionFunctionResolver demonstrates how to use the sample implementation of XPathFunctionResolver to 
     evaluate XPath expressions containing Java or EXSLT extension functions.</p>
     <p>To run this sample from the XPathAPI subdirectory, you need to compile ExtensionTest.java first and put
     the XPathAPI directory on your classpath. Run the sample using</p>
     <p><code>java ExtensionFunctionResolver</code></p>
     </s2>
     
     &xsltcsamples;
</s1>
