======================================================================
The Apache XSLT Compiler (XSLTC) is a Java-based tool for compiling
XSL stylesheets into extremely lightweight and portable Java byte
code.  The XSLTC Java Runtime environment can then process XML files
against these compiled stylesheets (Translets) to generate any manner
of output per the stylesheet instructions.

This Applet Demo shows you how translets can be run in a client 
browser as Java applets to perform XSLT transformations on XML 
source documents residing on a Web server. Because of XSLTC's small 
footprint, it is possible to download the compiled stylesheets 
(translets) and the runtime classes in the applet. Whereas, this
would not be easy with a fullsize Java-based XSLT processor. 

There are two important advantages of this approach: 

  1) It offloads XSLT processing from the server
  2) It enables browsers, such as Netscape 4.x, that do not have native 
     XSLT support to perform XSLT transformations today!

-----------------------------------------------------------------------
DEMO CONTENTS
-----------------------------------------------------------------------
The applet demo is very generic. It will let you run any pre-compiled
translet through an applet, and it lets you use that on any XML file
you can refer to using an URL. The contents of this demo are:

  TransformApplet.java -  The applet that wraps the XSLTC runtime 
      classes and your translet(s).

  index.html - Your main HTML document (displays two frames)

  menu.html  - The HTML document for your dialog frame. This is the
      document that invokes the TransformApplet


  singleTransform.html
             - Another main HTML document that invokes the applet using
      two <param> tags to specify the input document and stylesheet URI

-----------------------------------------------------------------------
HOW TO SET UP THE DEMO ON YOUR SITE
-----------------------------------------------------------------------
1. Install and configure Xalan with XSLTC

2. Compile the stylesheets you want to export. This will result in one
   or more small Java classes (translets).

3. Create a JAR file containing your translet classes.  Include a file
   named META-INF/services/javax.xml.transform.TransformerFactory in
   your JAR file that contains the following line:

       org.apache.xalan.xsltc.trax.TransformerFactoryImpl

   Be sure to make the JAR file world readable!

4. Copy the JAR file containing your translet classes and the following
   JAR files to the same directory containing index.html:  xalan.jar,
   xml-apis.jar, xercesImpl.jar and xsltcapplet.jar.

5. Make your XML source documents readable through a URL (either place
   them behind a web server or make them readable for your browser as
   a file).

6. Open the supplied index.html and try out the demo!  Alternatively,
   open the singleTransform.html, with the value attribute of the
   "input-document" <param> tag set to the URI of your input document,
   and the value attribute of the "stylesheet-name" <param> tag set to
   the URI of the stylesheet.
   
7. This sample has been tested successfully with JDK 1.4.0 using IE5.5 
   and NetScape7.0. With an earlier version of the JDK, you may have 
   problems with the JavaScript code.

----------------------------------------------------------------------
KNOWN PROBLEMS
----------------------------------------------------------------------
. The following problems are specific to the Netscape 4.x browser.

Class Already Loaded - If you start up the Netscape client browser on 
a Unix system where you have been running XSLTC, and consequently 
have a CLASSPATH that includes xml.jar, and xlstcrt.jar, the applet 
demo fails. You'll see a message saying a class has already been 
loaded in the Javascript console. To bring up the Javascript console,
you type

    javascript:

in the location/URL field of the browser. To work around this problem, 
unset your CLASSPATH before starting Netscape from a terminal window.
This still may not resolve the problem if Netscape is started from 
a wrapper that sets your environment from your startup file (e.g., 
your .cshrc file for the C-shell).

Parser Exception - This problem only applies to Netscape on the 
Windows platform with XML documents that have an external DTD.
If you see the following message:

    org.xml.sax.SAXParseException: 
    External parameter entity "%(DOCTYPE);"
    has characters after markup.

try removing the reference to an external DTD in your XML source.

. The following problems are specific to the Sun JRE 1.4.* plugin for browsers.

java.lang.IllegalAccessError - Sun JRE 1.4.* has bundled with it an old version
of Xalan-J Interpretive (2.2.D11).
Copy a new verison of xalan.jar to the %Java_JRE%/lib/endorsed/ directory.
----------------------------------------------------------------------
END OF README
