<?xml version="1.0" standalone="no"?>  
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
<!--
 * Copyright 2003-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: downloads.xml 489425 2006-12-21 18:16:49Z minchau $ -->
<s1 title="Download/Build &amp; Dependencies">
<ul>
  <li><link anchor="latest-release">Downloading the latest release</link></li>
  <li><link anchor="download">Downloading what else you might need</link></li>
  <li><link anchor="whereis_xml4j">Where do I get &xml4j;? </link></li>
  <li><link anchor="viewcode">How do I view Xalan code in a browser?</link></li>
  <li><link anchor="buildmyself">How do I download the latest development code to build myself?</link></li>
  <li><link anchor="using-ant">Using ant</link></li>
  <li><link anchor="samples">Rebuilding a sample application</link></li>
  <li><link anchor="previous-releases">Where do I download previous releases?</link></li>
</ul>
<anchor name="latest-release"/>
<s2 title="Downloading the latest release">
  <p> You can download the pre-built binary distributions from one of the
      mirror sites at <resource-ref idref="xslt4j-distdir"/>.
  </p>
  
  <p>Xalan-J has two processors, 
  an interpretive one, Xalan Interpretive, and a compiled one, Xalan Compiled (XSLTC).
  Your choice of which binary distribution to download depends on which
  of the processors you want to use.
  There are 2 binary distributions available; you only need to choose one of them.  
  Both binary distributions contain <code>xml-apis.jar</code> and <code>&xml4j-jar;</code> from <resource-ref idref="xml4j-used"/>.</p>
  <ul>
    <li>The first binary distribution, <code>&xslt4j-dist-bin;.zip</code> or 
      <code>&xslt4j-dist-bin;.tar.gz</code>,
      contains the Xalan Interpretive processor, the Xalan Compiled processor (XSLTC) and the 
      runtime support packages in a single jar, called <code>xalan.jar</code>.
      The reason to use this distribution would be that you don't know
      which processor you are going to use, or might be using both.
    </li><br/><br/>
    <li>The second binary distribution, <code>&xslt4j-dist-bin;-2jars.zip</code> or 
      <code>&xslt4j-dist-bin;-2jars.tar.gz</code>
      contains the Xalan Interpretive processor in <code>xalan.jar</code>, and the Xalan Compiled 
      processor (XSLTC) and the runtime support packages in <code>xsltc.jar</code>.
      The reason to using this distribution is that you want more control.
      If you are using just XSLTC you can put <code>xsltc.jar</code> on the classpath
      and not <code>xalan.jar</code>. If you are using just the interpretive processor
      you can put xalan <code>xalan.jar</code> on the classpath and not <code>xsltc.jar</code>. Of course
      you can put both <code>xalan.jar</code> and <code>xsltc.jar</code> from this distribution
      on your classpath if you want to use both.
    </li>
  </ul>  

  
  <p>
    We provide two distributions: a binary distribution, and a source distribution.
    You can also download a source distribution from one of the same
    mirror sites at <resource-ref idref="xslt4j-distdir"/>. The difference
    is that a binary distribution contains <em>-bin</em> in its name,
    whereas a source distribution contain <em>-src</em> in its name.
  </p>

   <p>To use &xslt4j;, you need the following which are available from
      either a binary or source distribution:</p> 
  <ul>
    <li><code>xml-apis.jar</code> JAXP APIs</li>
    <li><code>&xml4j-jar;</code> (or another <link idref="usagepatterns" anchor="plug">XML Parser</link>)</li>
    <li><code>xalan.jar</code></li>
    <li><code>xsltc.jar</code> the XSLTC processor, if you choose a 2jars distribution</li>
    <li><code>serializer.jar</code> which are the serializer classes of
    &xslt4j;</li>
  </ul>
  <p>  
    If you have downloaded a binary distribution, you already have a build 
    (you have the jars). This is also true for a source distribution, however
    if you downloaded a source distribution, 
    you have the option to use Ant to build &xslt4j;, 
    including <code>xalan.jar</code>, <code>xsltc.jar</code>, <code>serializer.jar</code>
    and other things, see <link anchor="using-ant">Using ant</link> for more
    details.
  </p>  
    
    
</s2>
<anchor name="download"/>
<s2 title="Downloading what else you might need">
  <p>To use &xslt4j;, you need the following:</p> 
  <ul>
    <li>The JDK or JRE 1.3.x, 1.4.x, or 5.x</li>
  </ul>
  <p>
    You can get the JDK or JRE from <jump href="http://www-128.ibm.com/developerworks/java/jdk/index.html">
    IBM developerWorks</jump> or <jump href="http://www.java.sun.com">java.sun.com</jump>.
  </p> 
  <p>If you plan to run <link idref="extensions">XSLT extensions</link> 
     through extension functions or elements, and you want to implement
     that support in languages
     other than Java, then you will need an implementation of the Bean Scripting Framework (BSF).
     An open source implementation is available for download from Apache.  See the 
     <jump href="http://jakarta.apache.org/bsf/index.html">Apache Jakarta
     BSF project</jump>. If you plan to run XSLT extensions implemented in scripting 
     languages, you will need <code>bsf.jar</code> and one or more additional files as indicated in 
     <link idref="extensions" anchor="supported-lang">extensions language requirements</link>.
  </p>
</s2>

<anchor name="whereis_xml4j"/>
<s2 title="Where do I get &xml4j;?">
  <p>
    The &xslt4j-current; has been tested with &xml4j-used;.
  </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
    <link idref="readme">release notes</link>
    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="jaxp13-longname-withacronym"/>. 
    See <link idref="usagepatterns" anchor="plug">Plugging in the Transformer and XML parser</link>.
  </note>
  <p>
    The &xslt4j; download includes <code>&xml4j-jar;</code> from &xml4j-used;. In conjunction with <code>xml-apis.jar</code>, 
    this is all you need to run &xslt4j; with the &xml4j; XML parser. You can, however, download the 
    complete &xml4j; binary or source distribution from the <resource-ref idref="xml4j-distdir"/>.
    If you cannot find &xml4j-used; at that location, have a look at the 
    <jump href="http://archive.apache.org/dist/xml/xerces-j/">Apache archive location for
    Xerces Java</jump>.
  </p>
  <note>
    If you plan to use a different XML parser, see <link idref="usagepatterns" anchor="plug">Plugging 
    in a Transformer and XML parser</link>.
  </note> 
</s2>

<anchor name="viewcode"/>
<s2 title="How do I view Xalan code in a browser?">
  <p>
    If you wish to view some of Xalan's files in a browser without downloading the
    whole project you can view it at
    <jump href="http://svn.apache.org/viewvc/xalan/">http://svn.apache.org/viewvc/xalan/</jump>
    or at
    <jump href="http://svn.apache.org/repos/asf/xalan/">http://svn.apache.org/repos/asf/xalan/</jump>.  
    The link with "viewvc" in it is slightly prettier.
  </p>
  <p>
    The java/trunk and test/trunk subdirectories are the ones with the latest development code.  
  </p>
</s2>


<anchor name="buildmyself"/>
<s2 title="How do I download the latest development code to build myself?">
  <p>
    If you have downloaded a source distribution, or obtained source code
    using subversion, this section may be of interest to you.
  </p>
  <p>
    If you wish to download Xalan and build it yourself, perhaps because you want to 
    apply a patch and test it, you will need a subversion client and anonymous access
    to the repository.
    Don't worry, everyone has anonymous access.
    You can find pre-built binaries of subversion clients for different
    operating systems here:
    <jump href="http://subversion.tigris.org/project_packages.html#binary-packages">
    http://subversion.tigris.org/project_packages.html#binary-packages</jump>.
    See 
    <jump href="http://www.apache.org/dev/version-control.html">
    http://www.apache.org/dev/version-control.html
    </jump> for more information on Apache and subversion.    
  </p>
  <p>
    Once the subverion client is installed on your local machine you
    can use the command line client program <em>svn</em>
    to get the latest Xalan-J using a command line something like this:
    <source>
    svn checkout http://svn.apache.org/repos/asf/xalan/java/trunk java    
    </source>
    where the argument after <em>checkout</em> is the Subversion repository location,
    in this case the location of the latest development code, and the last argument,
    in this case <em>java</em> is the location of the local directory that the repository is
    copied to.   
  </p>
  <p>
    Similarly for the test harness, you can download the latest test harness with a Subversion command
    something like this:
    <source>
    svn checkout http://svn.apache.org/repos/asf/xalan/test/trunk test    
    </source>  
  </p>
  <p>
    Those two commands will put a copy of the latest parts in the local
    directories <em>java</em> and <em>test</em>,
    which are sibling directories.  If you
    want to test your build with
    the test harness provided with Xalan then it is easiest if you keep the
    local directory names
    as suggested. With your paths set up to compile Java code, go into the local <em>java</em>
    directory and issue these two commands:
    <source>
  build clean
  build  
  </source>
  </p>
  <p>
  The <em>build.bat</em> batch file, or <em>build.sh</em> shell script (depending on
  your operating system use <em>ant</em> and the buildfile <em>build.xml</em>. See
  the section <link anchor="jar">Using ant</link> for more information.
  </p>
  <p>
  Other useful targets may be <code>xsltc.jar</code> or <code>serializer.jar</code>.
  If you want to test the jars you just built in the directory <em>java/build</em>, change to
  directory <em>test</em> and issue this command:
  <source>
  build jar
  build smoketest
    </source>
    The first target, <em>jar</em> builds the test harness and only needs to be done
    once after the <em>test</em> repository is checked out. The second target, <em>smoketest</em>,
    runs the Xalan-J intepretive smoketest. 
    Running the <em>build smoketest</em> or other targets in the <em>test</em> directory
    automatically looks for the jars in the directory <em>../java/build</em>
    and that is why it is easiest to download the projects into suggested sibling
    directories with the given names.
  </p>
  <p>
    Towards the end of the console output you will see <em>two CONGRATULATIONS!</em> messages if all
    goes well. The end of the console output should look like this:
    <source>
    .
    .
    .
minitest-pass:
     [echo]  [minitest] CONGRATULATIONS! The Minitest passed!
     [echo]  [minitest] See details in smoketest/Minitest.xml

smoketest-notpass:

smoketest-pass:
     [echo]  [minitest] CONGRATULATIONS! The Smoketest passed!
     [echo]  [minitest] Details are in smoketest/results-conf.xml, smoketest/results-api.xml, smoketest/extensions/results-extensions.xml

smoketest:

BUILD SUCCESSFUL
Total time: 2 minutes 4 seconds
build completed! 
    </source>
  </p>
  <p>
    Don't be fooled by the <em>BUILD SUCCESSFUL</em> messages, look for the two CONGRATULATIONS!
    messages. If you run the smoketest for XSLTC with <em>build smoketest.xsltc</em> you wil
    only get one CONGRATULATIONS! message if all goes well.
  </p>  
</s2>

<anchor name="using-ant"/>
<s2 title="Using Ant To Build">
    <p>
      If you have downloaded a source distribution, or obtained source code
      using subversion, this section may be of interest to you.
    </p>
       
     <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 tools 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/>
       JDK 1.3.1 or higher is required to build &xslt4j;. You must put <code>tools.jar</code> from the JDK
       bin directory on the classpath.<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 <code>xalan.jar</code> 
       (the "jar" target).</li>
     </ol>
     
     <p>The &xslt4j; source code tree is in the src directory.
     </p>
     <p>
       If you are using Ant, the target is jar (the default). 
     </p>
     
     <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>Ant 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 and serializer.jar in the build directory</td></tr>
       <tr><td>serializer.jar</td><td>creates serializer.jar in the build directory</td></tr>
       <tr><td>xsltc.jar</td><td>creates xsltc.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>fulldist</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>
  <p><em>Building without Ant</em></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, <code>&xml4j-jar;</code>, and <code>xml-apis.jar</code>.</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 <code>jar</code> utility to store the resulting .class files in <code>xalan.jar</code></li>
     </ul>

</s2>

<anchor name="samples"/>
<s2 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 <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, and <code>&xml4j-jar;</code> are on the classpath. </p>
   <p>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. These packages are available via
   the <code>servlet.jar</code> file found in Apache Tomcat ( see <resource-ref idref="tomcat"/> ).</p>
   <p>After recompiling a sample, you can use the jar utility to place your new .class files in
    <code>xalansamples.jar</code>.</p>
    <p>You can use Ant with the samples target to recompile the samples and place the unpackaged class files in <code>xalansamples.jar</code>.
     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>
</s2>

<anchor name="previous-releases"/>
<s2 title="Where do I download previous releases?">
  <p>
    To access previous releases, see the <resource-ref idref="xslt4j-distdir-previous"/>.
  </p>
</s2>

</s1>
