This program will run starting with Java version 1.4 as it contains
the XSL support in its distribution.

The program demonstrates how one can use XSLT as a scripting language
to fill in a Java data structure using some XML data and a stylesheet.

To run it, type:

	java TableFiller style1.xsl table-data.xml
or
	java TableFiller style2.xsl table-data.xml

        Note on using Java 1.5, Java 1.6 or higher:

        - if the sample does not work in these environments then, copy the Xalan-jars from
          "http://xml.apache.org/xalan-j/downloads.html" distribution into the "endorsed"
          directory of these Java versions (e.g. "JAVA_JRE_HOME /jre/lib/endorsed/"); make
          sure that the archive "xalan.jar" (from the xalan-tool jar) is available as well;
          tested with Xalan 2.7 and 2.8 on Java 1.5 and beta-version of Java 1.6

Be impressed and have fun!
;-)

---rgf, 2006-09-07




=============== Original "readme" text as of 2003-06-25: =================

This demo shows how one can use LotusXSL as a scripting language to
fill in a Java data structure using some XML data and a stylesheet.

To run it, type:

	java TableFiller style1.xsl table-data.xml
or
	java TableFiller style2.xsl table-data.xml

You need to have LotusXSL v0.18.* on your classpath in addition to
bsf.jar and bsfengines.jar.

