======================================================================
The Sun 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 advatages 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

-----------------------------------------------------------------------
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). Store them under the same 
   directory as you put the TransformApplet class.

3. Create a JAR file with your the applet class (compile it first, of
   cource), your translet classes and these classes from the xalan/xsltc
   package:

     org/apache/xalan/xsltc/*.class
     org/apache/xalan/xsltc/dom/*.class
     org/apache/xalan/xsltc/runtime/*.class
     org/apache/xalan/xsltc/util/*.class

   Be sure to make the JAR file world readable!

4. 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).

5. Open the supplied index.html and try out the demo!

6. Using JDK1.4.0, it works on both IE5.5 and NetScape7.0. With lower
   version of JDK, you may have problems with the JavaScript code

----------------------------------------------------------------------
KNOW 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.
----------------------------------------------------------------------
END OF README
