<?xml encoding="US-ASCII"?>

<!ENTITY xslt "Xalan">
<!ENTITY xslt4j "Xalan-Java">
<!ENTITY xslt4j2 "Xalan-Java 2">
<!ENTITY xslt4j-dist "xalan-j_2_4_D1">
<!ENTITY xslt4j-dist-bin "&xslt4j-dist;-bin">
<!ENTITY xslt4j-dist-src "&xslt4j-dist;-src">
<!ENTITY xslt4j-current "&xslt4j; version 2.4.D1">
<!ENTITY xslt4j-distdir "http://xml.apache.org/dist/xalan-j/">
<!ENTITY xml4j "Xerces-Java">
<!ENTITY xml4j1 "Xerces-Java 1">
<!ENTITY xml4j2 "Xerces-Java 2">
<!ENTITY xml4j-used "&xml4j; 2.0.1">
<!ENTITY xml4j-jar "xercesImpl.jar">
<!ENTITY xslt4c "Xalan-C++">
<!ENTITY xml4c "Xerces-C++">
<!ENTITY download "The &xslt4j-current; download from xml.apache.org includes &xml4j-jar; from &xml4j-used; and xml-apis.jar. For version
information about the contents of xml-apis.jar, see the JAR manifest.">

<!ENTITY xsltcwhatsnewhead '<li><link anchor="xsltc">XSLTC</link></li>'>
                         
<!ENTITY xsltcwhatsnew '<anchor name="xsltc"/><s2 title="XSLTC">
                <p>In April 2001, Sun donated XSLTC to the Xalan project. XSLTC compiles stylesheets into translets and
                provides a runtime environment for using translets to transform XML documents. Initially, XSLTC is
                available in a separate JAR. Over time, we plan to integrate the two codebases. For more information,
                see <link idref="xsltc_usage">Using XSLTC</link>, <link idref="readme" anchor="xsltcreleasenotes">XSLTC 
                Release Notes</link>, and <jump href="xsltc/index.html">XSLTC Design</link>.</p>
                </s2>'>
                
<!ENTITY xsltcreleasenotesentry '<li><link idref="xsltc_constraints">XSLTC Release Notes</link></li>'>
<!ENTITY history2xsltc '<note>For XSLTC changes since XSLTC was incorporated into &xslt4j;, see 
                        <link idref="xsltc_history">XSLTC software changes</link>.</note>'>
                        
<!ENTITY xsltcclasspath '<p>If you are using <link idref="xsltc_usage">XSLTC</link>, see 
                        <link idref="xsltc_usage" anchor="classpath">Setting the system classpath for XSLTC</link>.</p>'>

<!ENTITY xsltcsampleshead '<li><link anchor="translets">translets</link></li>'>

<!ENTITY xsltcsamples '<anchor name="translets"/><s2 title="Translets">
                 <ul>
                 <li><link anchor="xsltc1">JAXPTransletOneTransformation</link></li>
                 <li><link anchor="xsltc2">JAXPTransletMultipleTransformations</link></li>
                 <li><link anchor="xsltcother">Other XSLTC samples</link></li>   
                 </ul>
                 <p>You can use the TrAX/JAXP 1.1 interfaces to compile and run translets. For this release, you must still
                 use StreamSource objects for the XSL stylesheet and XML input document, and a StreamResult object for the 
                 transformation output. For an overview of the usage patterns these samples illustrate, see 
                 <link idref="xsltc_usage" anchor="api">Calling XSLTC with the TrAX/JAXP API</link>.</p>
                 <anchor name="xsltcprepare"/>
                 <p><em>Important:</em> To run these samples, you must compile the sample class files and adjust the 
                 system classpath.</p>
                 <ol>
                   <li>To compile the samples, you can run the Ant build from the root directory as follows:<br/><br/>
                   <code>&nbsp;&nbsp;build xsltc.samples</code><br/><br/></li>
                   <li>Add xsltc.jar, runtime.jar, BCEL.jar, java_cup.jar, and the samples/translets subdirectory to 
                   the classpath</li>
                 </ol>
                 <note>The JAR files listed above are in the bin directory. 
                 The samples/translets directory contains the sample class files as well as the translet class file that is
                 generated at tun time (todo.class from the todo.xsl stylesheet).</note> 
                 <anchor name="xsltc1"/>
                 <s3 title="JAXPTransletOneTransformation">
                 <p>What it does: Uses the XSLTC TransformerFactory to compile a translet and use
                 the translet to transform the XSLTC to-do list from XML into HTML.</p>
                 <p>Complete the <link anchor="xsltcprepare">steps detailed above</link>, and run this sample 
                 from the translets subdirectory with</p>
                 <p><code>java JAXPTransletOneTransformation</code></p>
                 <p>View the result in todo-xsltc.html.</p>
                 </s3><anchor name="xsltc2"/>
                 <s3 title="JAXPTransletMultipleTransformations">
                 <p>What it does: Uses the XSLTC TransformerFactory to compile a translet and use
                 the Templates object associated with the translet to transform the XSLTC and Xalan to-do lists from XML 
                 into HTML.</p>
                 <p>Complete the <link anchor="xsltcprepare">steps detailed above</link>, and run this sample 
                 from the translets subdirectory with</p>
                 <p><code>java JAXPTransletOneTransformation</code></p>
                 <p>View the results in todo-xsltc.html and todo-xalan.html.</p>                
                 </s3><anchor name="xsltcother"/>
                 <s3 title="Other XSLTC samples">
                 <p>Other XSLTC samples are located in the following samples subdirectories:</p>
                 <ul>
                 <li>CompiledServlet</li>
                 <li>CompiledBrazil</li>
                 <li>CompiledJAXP</li>                                  
                 <li>CompiledApplet</li>
                 <li>CompiledEJB</li>
                 </ul>
                 <p>For information about each of these samples, consult the README file in the subdirectory.</p>
                 <note>The following paragraphs supply some basic background information for CompiledServlet and CompiledBrazil.</note>
                 <p>XSLTC provides demos for using XSLTC as a servlet and as a handler for 
                 Brazil (a new and powerful Web techology from Sun labs). To run these demos,
                 download Brazil from sunlabs:</p>
                 <p><code>&nbsp;&nbsp;&nbsp;&nbsp;<jump href="http://research.sun.com/research/download/index.html">http://research.sun.com/research/download/index.html</jump></code></p>
                 <p>and the java extensions for servlets from Sun:</p>
                 <p><code>&nbsp;&nbsp;&nbsp;&nbsp;
                 <jump href="http://java.sun.com/products/servlet/download.html">
                 http://java.sun.com/products/servlet/download.html</jump></code></p>
                 <p>The translet must be specified as a pure class name, accessible
                 through the Brazil handler classpath. For example:</p>
                 <p><code>&nbsp;&nbsp;&nbsp;&nbsp;translet=mk054</code></p>
                 <p>The document must be specified as a valid URL. For example:</p>
                 <p><code>&nbsp;&nbsp;&nbsp;&nbsp;document=http://server/path/to/filename.xml</code></p>
                 <p>If the file is local to the Brazil handler, it has to be
                specified using the "file:filename.xml" format.</p>
                <note>You also need to make the Brazil and javax classes available from your classpath</note>
                 </s3>
                 </s2>'>
                
