<?xml version="1.0" standalone="no"?> 
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd"[
<!ENTITY done-j SYSTEM "DONE">]>

<!--
 * The Apache Software License, Version 1.1
 *
 *
 * Copyright (c) 1999-2003 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 apache@apache.org.
 *
 * 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="Release Notes">
<p>&xslt4j-current;</p>

 <ul>
  <li><link anchor="status0">Status</link></li>
  <li><link anchor="build">Build distributions and notes</link></li>
  <li><link anchor="contact">Getting in touch</link></li>
  <li><link idref="xsltc_usage" anchor="constraints">XSLTC usage constraints</link></li>
  <li><link idref="history">History of software changes</link></li>
 </ul><anchor name="status0"/>
  <s2 title="Status">
   <ul>
    <li><link anchor="done">Changes since version 2.4.0</link></li>
    <li><link anchor="other">Other points of interest</link></li>
    <li><link anchor="bugs">Bugs</link></li>
    <li><link anchor="status">Version of &xml4j; to use</link></li>
    <li><link anchor="developer-list">&xslt4j; developers</link></li>
   </ul>
     <anchor name="done"/>
     <s3 title="Changes since &xslt4j; 2.4.0">
     <ul>
      <li>Performance fixes and enhancements to address the degradation of performance between Xalan-Java
      version 2.3.1 and Xalan-Java 2.4.0.</li>
      <li>A prototype implementation of the <jump href="http://www.w3.org/TR/2002/WD-DOM-Level-3-XPath-20020328/">DOM Level 3 XPath Specification</jump>. 
          The implementation is considered 'experimental' at this time due to the status of the specification.
          See the new sample, <link idref="samples" anchor="applyxpathdom">ApplyXPathDOM</link> for an
          example of how to use this API.</li>
     <li>Extension changes and enhancements:</li>
      <ul>
        <li>Implement canonical namespaces for all Xalan extensions. All extensions
        now use namespaces starting with <code>http://xml.apache.org/xalan</code>. The old namespaces are
        still supported for backward compatibility. See the updated 
        <link idref="extensionslib" anchor="intro">extensions</link> documentation for details.</li>
        <li>Added new EXSLT extension functions, including the EXSLT dynamic extension functions 
        max, min, sum, map, evaluate and closure, the EXSLT strings extension functions align, 
        concat, padding, split and tokenize, and some new extension functions in the math module.</li>
        <li>Reorganized the extension functions for new EXSLT extensions.
     The implementation of some extension functions (intersection, difference, distinct, 
     evaluate and tokenize) are moved from the main Extensions class to the corresponding EXSLT modules.</li>
        <li>Enable the EXSLT extensions for XSLTC. The EXSLT common, math, sets, dates-and-times and strings
        modules can be used in XSLTC.</li>
        <li>Integration of the nodeset and redirect extension for XSLTC. You can now use Xalan namespaces for
        these extensions in XSLTC.</li>
        <li>Enhancement in Java extenion for XSLTC. Three namespace formats (Java, package and class) can all
        be used in XSLTC. More type conversion rules are added as well.</li>
      </ul>
      <li>Enable support for invoking transformations using the Xalan compiler (XSLTC) via the 
     Xalan interpretive Process command line.  Specifically, the -XSLTC option was added.  The 
     -TT, -TG, -TS, -TTC, -QC, -L, -INCREMENTAL, -NOOPTIMIZE and -RL option do not work in XSLTC mode.  All
     other existing options can be used with -XSLTC.  Additional options were added to enable XSLTC compile
     and transform modes: -XO, -XD, -XJ, -XP, -XN, -XX, -XT.  See the Process usage statement for more
     information on these options.</li>
     <li>Fixed SQL Extension problem where a query that returned zero rows would incorrectly
      return a JDBC exception.</li>
     <li>Fixed a limitation for XPath expressions. The token queue and operations map can now grow
      to accomodate really large XPath expressions.</li>
     <li>Fixes for the following bugzilla defects: 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4344">4344</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5046">5046</jump>,     
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6181">6181</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6927">6927</jump>,     
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7161">7161</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7357">7357</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8175">8175</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8473">8473</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8939">8939</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9731">9731</jump>,                              
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9959">9959</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10176">10176</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10384">10384</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10414">10414</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10643">10643</jump>,     
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11073">11073</jump>,                         
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11341">11341</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11661">11661</jump>,     
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11743">11743</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11809">11809</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12077">12077</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12127">12127</jump>,                         
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12298">12298</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12687">12687</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13059">13059</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13303">13303</jump>,               
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13305">13305</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13106">13106</jump>,   
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13501">13501</jump>,            
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13711">13711</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13754">13754</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13863">13863</jump>,          
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13944">13944</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14022">14022</jump></li>. 
     <li>Support for and bundling of Xerces Java 2.2.</li>
     <li>Support for and bundling of xml-apis.jar from the factoryfinder-build of the RIVERCOURT1 branch of xml-commons.  This version of the Java
     APIs for XML Processing successfully passes the JAXP 1.1 and JAXP 1.2 TCKs.</li>
     <li>For a list of &xslt4j; commits, see xalan-cvs@xml.apache.org in the
     <jump href="http://nagoya.apache.org/eyebrowse/index.html">Apache mailing list archive index</jump>.</li>
     <li>Support building Xalan with JDK 1.4.</li>
     </ul>
     </s3>
     <s3 title="Changes since &xslt4j; 2.3.1">
     <ul>
     <li>Fixes for the following bugzilla defects: 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3238">3238</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4603">4603</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5013">5013</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5016">5016</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5941">5941</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6071">6071</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6268">6268</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6284">6284</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6356">6356</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6547">6547</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6798">6798</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6833">6833</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6925">6925</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6972">6972</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7023">7023</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7118">7118</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7123">7123</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7157">7157</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7410">7410</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7776">7776</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8324">8324</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8358">8358</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8551">8551</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8894">8894</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9068">9068</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9137">9137</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9146">9146</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9171">9171</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9174">9174</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9179">9179</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9572">9572</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9575">9575</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9683">9683</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9753">9753</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10137">10137</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10306">10306</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10323">10323</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10625">10625</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10715">10715</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10832">10832</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10837">10837</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10839">10839</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10914">10914</jump>, 
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10945">10945</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11123">11123</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11166">11166</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11221">11221</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11345">11345</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11704">11704</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11987">11987</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11828">11828</jump>,
     <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12075">12075</jump></li>. 
     <li>&xslt4j; now uses a list of supported encodings in a properties file 
     (org.apache.xalan.serialize.Encodings.properties). Fixes Bugzilla 6356. Patch from Sergey Ushakov. </li>     
     <li>Support for the <jump href="http://www.exslt.org/">EXSLT</jump> function and result elements, and EXSLT 
     date-and-time functions.</li>
     <li>Improvements to the extensions mechanism to more efficiently handle the detection and analysis of extensions 
     during the stylesheet "composition" process, and the generation of the required extension handlers during 
     initialization of the transformation process.</li>
     <li>Performance improvement.  Instead of looping through the ExtendedType objects, use a hashtable and go
     directly to the correct object.</li>
     <li>Separation of source and messages.  Messages have been moved into property files for easier localization.</li>
     <li>XSLTC version upgraded from 1.0 to 1.2.</li>
     <li>Support for and bundling of Xerces Java 2.1.</li>
     <li>Support for and bundling of xml-apis.jar from the RIVERCOURT1 branch of xml-commons.  This version of the Java
     APIs for XML Processing successfully passes the JAXP 1.1 and JAXP 1.2 TCKs.</li>
     <li>For a list of &xslt4j; commits, see xalan-cvs@xml.apache.org in the
     <jump href="http://nagoya.apache.org/eyebrowse/index.html">Apache mailing list archive index</jump>.</li>
     </ul>
     </s3>
     <anchor name="other"/>
     <s3 title="Other points of interest">
     <ul>
     <li>Xalan Java 2 is integrated with release 2 of &xml4j;. &xslt4j-current; does not include support for the deprecated &xslt4j; 1 compatability API. 
     The &xslt4j; 1 compatability code does NOT compile with &xml4j2;.<br/><br/></li>
     <li>The <link idref="samples" anchor="sql">SQL extension samples</link> continue to use InstantDB, but based on our realization of changes 
     that have occurred in the licensing of InstantDB, we no longer include InstantDB and the associated sample database with our distibution.
     We do, however, provide information on how to <link idref="samples" anchor="instantdbsetup">set up InstantDB</link> to support our SQL 
     extension samples.<br/><br/></li>
     <li>Documentation updates: We have subdivided the release notes into multiple files to accelerate HTML document loading, and we have added a
     document on <link idref="features">Transform features</link>.<br/><br/></li>
     <li>If an attempt is made to coerce a different namespace onto a prefix already in use in xsl:attribute, the attribute will come out 
     in the wrong namespace. Workaround: either provide an NCName instead of a QName for the attribute, or provide a QName with a prefix not
     used elsewhere.<br/><br/></li>
     <li>Handling xsl:namespace-alias declarations: In release 2.0.D01, we reported the need to do some research concerning exactly how &xslt;
     should handle xsl:namespace-alias declarations. As a result of discussions among members of the W3C Working Group on XSL, we have reached a
     more precise consensus on how namespaces should be represented when an xsl:namespace-alias declaration is in effect.<br/><br/>
     If a literal result element has a namespace prefix, the prefix will be preserved and the namespace URI of the element will be as
     specified in the xsl:namespace-alias element, but the result-prefix is not required to appear in the result. This also applies to the
     two other cases of "Literal namespace URI" mentioned in the XSLT Recommendation on 
     <jump href="http://www.w3.org/TR/xslt#literal-result-element">Literal Result Elements</jump>. More simply, if the stylesheet calls for
     &lt;axsl:foo&gt; to be output as a literal result element, then it will be output as &lt;axsl:foo&gt; in the result, but the namespace
     associated with this "axsl" prefix will be as designated in the xsl:namespace-alias declaration.<br/><br/></li>
     <li>For HTML output, &xslt4j2; outputs character entity references (&amp;copy; etc.) for the special characters designated in  
     <jump href="http://www.w3.org/TR/xhtml1/#dtds">Appendix A. DTDs of the XHTML 1.0: The Extensible HyperText Markup
     Language</jump>. &xslt4j; 1.x, on the other hand, outputs literal characters for some of these special characters.<br/><br/></li>
     <li>In conformance with the <jump href="http://www.w3.org/TR/xslt#section-HTML-Output-Method">XSLT Recommendation on the HTML 
     Output Method</jump> and <jump href="http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.2.1">Section B.2.1 of the HTML 4.0
     Recommendation</jump>, &xslt4j2; uses %hh encoding for each byte of the UTF-8 representation of non-ASCII characters in HTML URI
     attributes.<br/><br/></li>
     <li>When your stylesheet asks for an explicit carriage-return character (&amp;#13;) to be inserted into the output, it is output during
     the serialization process in escaped form unless escaping has been disabled.  When your stylesheet asks for an explicit line-feed character
     (&amp;#10;) to be output, the system-default line-break character(s) is/are output during the serialization process.  Also keep in mind that
     the XML parser normalizes line-breaks to line-feeds when it sends character events to the processor.<br/><br/></li>
     <li>If your XML input is a DOM, use the javax.xml.parsers.DocumentBuilderFactory setCoalescing() method to set coalescing to true (it is
     false by default), if you want to append CDATA sections to adjacent text sections to form a single text node (as the XPath standard calls
      for), and if the XML parser supports this feature (&xml4j-used; does not).<br/><br/></li>
     <li>When you traverse the namespace axis for a collection of element nodes, &xslt4j; includes <em>one</em> namespace node for each namespace in scope 
     for one or more of the nodes in that collection. The XPath expression does not return additional (redundant) namespace nodes for each element
     for which the namespace nodes are in scope.<br/><br/></li>
     <li>See <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2291">Bugzilla bug 2291</jump> for a discussion of issues surrounding
     use of the default character encoding to read META-INF/Services.<br/><br/></li>
     <li>As <jump href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1800">Bugzilla bug 1800</jump> reports, the Transformer does not get the 
     setTransformState event until after the startDocument event. This could present a problem for tools developers, and we do intend to fix this 
     bug.</li> 
     </ul>
     </s3><anchor name="bugs"/>
     <s3 title="Bugs">
     <p>All known &xslt4j; bugs are listed in <resource-ref idref="bugzilla"/>. For a list of open bugs with links to each bug
      report, see <resource-ref idref="buglist"/>. If you find a new bug, please enter a XalanJ2 bug report in this
      database.</p>
     <note>Before you can enter your first bug report, you must submit your email address to Bugzilla and receive a password.</note> 
     <p>We strongly encourage you write patches for problems you find and submit them to
      xalan-dev@xml.apache.org. We review the patches we receive to make sure they do not break something else, and (assuming they 
     do not) include them in our next release. In the interest of fixing bugs, adding enhancements, and addressing outstanding design
     issues, we sincerely want (and need!) your active participation in the ongoing development of &xslt;.</p>
     </s3>     
     <anchor name="status"/>
     <s3 title="Version of Xerces to use"> 
       <p>The &xslt4j-current; has been tested with &xml4j-used;. &download; For information about including &xml4j-jar; and xml-apis.jar on the system class path, see <link idref="getstarted" anchor="classpath">Setting up the system class path</link>.</p>
       <p><em>Important</em> You may experience unpredictable anomalies if your &xslt4j; and &xml4j; builds are not in synch. If you download an update to &xslt4j;, check the release notes to determine which version of &xml4j; you should use.</p>
       <note>You can use &xslt4j; with other XML parsers that implement the <resource-ref idref="jaxp"/>. See 
       <link idref="usagepatterns" anchor="plug">Plugging in the Transformer and XML parser</link>.</note>
     </s3>
  </s2>
  <anchor name="build"/>  
  <s2 title="Build Notes">
  <p>We provide two distributions: a binary distribution, and a source distribution. See <link idref="getstarted" anchor="download">Downloading
  what you need</link>. If you have downloaded the binary distribution, you already have a build. If you downloaded the source
  distribution, you can use Ant to build &xslt4j;, including xalan.jar, xalansamples.jar, xalanservlet.jar, the
  user documentation, and the Javadoc API documentation. You need the source distribution to do builds. Keep in mind that if you have also
  downloaded the binary distribution, any builds you run will overwrite that binary distribution.</p>
<ul>
<li><link anchor="ant">Using Ant</link></li>
<li><link anchor="jar">Building xalan.jar</link></li>
<li><link anchor="samples">Building sample applications</link></li>
<li><link anchor="doc">Building the &xslt4j; documentation</link></li>
</ul>
<anchor name="ant"/>
   <s3 title="Using Ant">
     <p>Apache <resource-ref idref="ant"/> is a flexible, powerful, and easy-to-use Java build tool that we include with the
     &xslt4j; distribution. The Ant JAR file is in the bin directory, and the cross-platform XML build file (build.xml) is in 
     the root directory along with a Windows32 batch file (build.bat) and a UNIX shell file (build.sh). The build file defines 
     the "targets" that you can use Ant to build. The batch and shell files set up the classpath and launch Ant with the target 
     (and any other arguments) you provide.</p>
     <p><em>Instructions for using Ant</em></p>
     <ol>
       <li>Set the JAVA_HOME environment variable to the JDK root directory.<br/><br/>
       If you are using JDK 1.1.8, you must also put classes.zip in the JDK bin directory on the classpath. You can use Ant 
       with JDK 1.1.8 to compile and jar the &xslt4j; source files, but you must have JDK 1.2.2 or higher to build the
       documentation.<br/><br/></li>
       <li>Depending on your environment, run the batch file (build.bat) or shell file (build.sh) from the &xslt4j; root
       directory, optionally with arguments (see the table of targets below).<br/><br/>
       The batch/shell file adds several JAR files to the classpath and launches Ant with any arguments you provide. If you
       provide no target, Ant compiles the source files and rebuilds xalan.jar (the "jar" target).</li>
     </ol>
     <p>You can also set up your classpath manually (see build.bat or build.sh for the details), and then run Ant as
     follows:<br/><br/>
     <code>java org.apache.tools.ant.Main <ref>target</ref></code><br/><br/>
     where <ref>target</ref> is nothing (for the default target) or one of the following.</p>
     <table>
       <tr><td><em>Target</em></td><td><em>What Ant does</em></td></tr>
       <tr><td>compile</td><td>compiles &xslt4j; in build/classes.</td></tr>
       <tr><td>jar (the default)</td><td>creates xalan.jar in the build directory</td></tr>
       <tr><td>samples</td><td>compiles and jars the sample apps in build/xalansamples.jar</td></tr>
       <tr><td>servlet</td><td>compiles and jars the sample servlet in build/xalanservlet.jar</td></tr>       
       <tr><td>docs</td><td>creates the HTML User's Guide in build/docs</td></tr>
       <tr><td>javadocs</td><td>generates the API documentation in ./build/docs/apidocs</td></tr>
       <tr><td>dist</td><td>generates a complete distribution tree with zip and tar.gz distribution files in build</td></tr>
       <tr><td>clean</td><td>purges the build and distribution</td></tr> 
  </table>
  <p>If you build a target that depends on other targets, Ant creates those other targets in the correct order.</p>
   </s3><anchor name="jar"/> 
   <s3 title="Building &xslt4j;">
     <p>The &xslt4j; build is in xalan.jar. The &xslt4j; source code tree is in the src directory.</p>
     <p>If you are using Ant, the target is jar (the default). For more information, see <link anchor="ant">Using
     Ant</link>.</p>
     <p>If you want to do the build without Ant, keep the following in mind:</p>
     <ul>
     <li>Set the classpath to include the src directory, &xml4j-jar;, bsf.jar, and bsfengines.jar.</li>
     <li>Use a Java compiler (such as the IBM Just-In-Time compiler or the Sun javac) to compile all the .java files in the src
     tree. </li>
     <li>Use the Sun jar utility to store the resulting .class files in xalan.jar</li>
     </ul>
   </s3><anchor name="samples"/>
   <s3 title="Rebuilding a sample application">
   <p>If you modify a sample and want to recompile it, you can run the Java compiler in the directory containing the
   example. Be sure xalan.jar, xml-apis.jar, and &xml4j-jar; are on the classpath. To recompile (and run!) the class files in the
   Servlet subdirectory, the javax.servlet and javax.servlet.http packages must also be on the classpath. Sun
   distributes these packages in the JSWDK 1.0.1 servlet.jar file.</p> 
   <p>After recompiling a sample, you can use the Sun jar utility to place your new .class files in
    xalansamples.jar.</p>
    <p>You can use Ant with the samples target to recompile the samples and place the unpackaged class files in xalansamples.jar.
     For more information, see <link anchor="ant">Using Ant</link>.</p>
    <note>To rebuild (and to run) the sample servlet, the javax.servlet and javax.servlet.http packages must be on your
    classpath.</note>
   </s3><anchor name="doc"/>
   <s3 title="Rebuilding the &xslt4j; documentation">
     <p>&xslt4j; includes a number of XML source files, XSL stylesheets, document type definition (DTD)
      files, entity relationship (ENT) files, graphics, and a JavaScript file that provide the input for the Xalan
      HTML User's Guide, and the overview and package-level documents used during the generation of Javadoc.</p>
      <p>To rebuild the documentation, you must use the StyleBook tool and the JDK 1.2.2 java and javadoc
      tools. StyleBook (which uses Xalan and Xerces) is in stylebook-1.0-b2.jar. Some of the document definition files,
      stylesheets, and resources are stored in xml-site-style.tar.gz, and are unzipped when you run Ant as described
       below.</p>
      <p>You can use Ant with the docs target to regenerate the User's Guide and with the javadocs target to regenerate the
      Javadoc API documentation. For more information, see <link anchor="ant">Using Ant</link>.</p>
      <p>If you want to rebuild the documentation without using Ant, keep the following in mind:</p>
       <ul>
       <li>Unzip xml-site-style.tar.gz into the xdocs directory (the operation places files in a number of subdirectories).
       <br/><br/></li>
       <li>Be sure stylebook-1.0-b2.jar, xalan2jdoc.jar, xalan.jar, bsf.jar, bsfengines.jar, and &xml4j-jar; are on the class
       path.<br/><br/></li>
       <li>To build doc in a build/docs subdirectory, run StyleBook from the xdocs directory as follows:<br/><br/>
       <code>java org.apache.stylebook.StyleBook "targetDirectory=../build/docs/" sources/xalanLocal.xml style</code>
       <br/><br/></li>
       <li>To build the HTML source files that javadoc needs for the TrAX top-level and package-level documentation, add
       a build/docs/apdidocs/javax/xml/transform directory and run the Xalan command-line utility from the xdocs directory 
       as follows (all one line):<br/><br/>
<code>
java org.apache.xalan.xslt.Process 
  -in sources/trax/trax.xml
  -param package-root '../../../src/'
  -xsl style/stylesheets/spec.xsl 
  -out build/docs/apidocs/javax/xml/transform/trax.html</code><br/><br/></li>
        <li>Before you run javadoc, make sure the following directory structure exists under the Xalan root
         directory: build/docs/apidocs.<br/><br/></li>
       <li>To build the API documentation, run the JDK 1.2.2 javadoc tool from the xdocs directory (all one line):<br/><br/>
<code>
javadoc -doclet xalanjdoc.Standard 
 -docletpath ../bin/xalanjdoc.jar 
 -private
 -overview ../src/javadocOverview.html -sourcepath ../src 
 -group TrAX "javax.xml.transform*" 
 -group Xalan_Core "org.apache.xalan.processor:
        org.apache.xalan.templates:
 org.apache.xalan.transformer"
 -group XPath "org.apache.xpath*"
 -group Utilities "org.apache.xml.utils*"
 -group Xalan_Other "org.apache.xalan.client:
        org.apache.xalan.dtm:
 org.apache.xalan.extensions:org.apache.xalan.res:
 org.apache.xalan.stree:org.apache.xalan.trace:
 org.apache.xalan.xslt" 
 -group Xalan_Extensions "org.apache.xalan.lib*" 
 -group Serializers "org.apache.xalan.serialize" 
 org.apache.xalan.client org.apache.xalan.dtm 
 org.apache.xalan.extensions org.apache.xalan.lib 
 org.apache.xalan.lib.sql org.apache.xalan.processor 
 org.apache.xalan.res org.apache.xalan.stree 
 org.apache.xalan.templates org.apache.xalan.trace 
 org.apache.xalan.transformer org.apache.xalan.xslt 
 org.apache.xpath org.apache.xpath.axes 
 org.apache.xpath.compiler org.apache.xpath.functions 
 org.apache.xpath.objects org.apache.xpath.operations 
 org.apache.xpath.patterns org.apache.xpath.res
 org.apache.xalan.serialize javax.xml.transform  
 javax.xml.transform.dom javax.xml.transform.sax 
 javax.xml.transform.stream javax.xml.parsers
 -d ../build/docs/apidocs -windowtitle "&xslt4j; 2" 
 -doctitle "xslt4j; 2" -bottom "Copyright &#169; 
  2000 Apache XML Project. All Rights Reserved."
</code></li>
</ul>
  </s3>    
 </s2><anchor name="contact"/>
 <s2 title="Getting in Touch">
  <p>Your feedback is more than welcome. Offers of help are even more so! Perhaps you would like to take on an active role in the ongoing development, testing, and documentation of &xslt4j;?</p> 
<p>Please email your comments, questions, suggestions, and offers to join the Xalan team to <human-resource-ref idref="xalandev"/>.</p>
 </s2><anchor name="developer-list"/>
 <s2 title="Developers">
<p>A list of some of people currently working on working on &xslt4j;:</p>
  <!-- in alphabetical order, by last name -->
  <ul>
  <li><human-resource-ref idref="sboag"/>
    <br/>Xalan architect, lead developer on Xalan-J.
  </li>
  <li><human-resource-ref idref="scurcuru"/>
    <br/>Lead tester for API issues, automation framework.
  </li>
  <li><human-resource-ref idref="pdick"/>
    <br/>XSLT Conformance stylesheet issues and Xalan-C testing.
  </li>
  <li><human-resource-ref idref="jkesselman"/>
    <br/>Xalan-J developer, compiling/compiled stylesheets experiments.
  </li>
  <li><human-resource-ref idref="dleslie"/>
    <br/>Xalan-J and -C documentation, servlets, applets, and samples.
  </li>
  <li><human-resource-ref idref="cmanolache"/>
    <br/>Xalan-J developer and JAXP expert.
  </li>
  <li><human-resource-ref idref="dmarston"/>
    <br/>Lead tester for XSLT Conformance stylesheet issues.
  </li>
  <li><human-resource-ref idref="mmidy"/>
    <br/>Xalan-J developer.
  </li>
  <li><human-resource-ref idref="gpeskin"/>
    <br/>Xalan-J developer, especially extension mechanisim.
  </li>
  <li><human-resource-ref idref="jgentilin"/>
    <br/>Major work on the SQL extensions library.
  </li>
  <li><human-resource-ref idref="mkwan"/>
    <br/>Xalan-J developer.
  </li>
  <li><human-resource-ref idref="ilene"/>
    <br/>Xalan-J developer.
  </li>
  <li><human-resource-ref idref="zongaro"/>
    <br/>Xalan-J developer.
  </li>
 </ul>
 </s2>
</s1>