You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by jk...@apache.org on 2023/10/17 20:47:50 UTC

[xalan-java] 01/06: Cutover from Ant-based build to Maven-based build:

This is an automated email from the ASF dual-hosted git repository.

jkesselm pushed a commit to branch maven-build
in repository https://gitbox.apache.org/repos/asf/xalan-java.git

commit ec4e605cb15b1d2ccf8d32e19da18227de837153
Author: kubycsolutions <ke...@kubyc.solutions>
AuthorDate: Sat Sep 2 13:11:56 2023 -0400

    Cutover from Ant-based build to Maven-based build:
    
    Restructures serializer, xalan, and samples as sub-modules with dependencies on each other.
    
    Avoids carrying binaries in the project; fetch from Maven Central, or (in the case of the Javadoc taglet) carry the source in our own project. As part of that, eliminates dependencies on outdated versions of some of these, specifically java_cup and jlex. JFlex has replaced JLex, which permitted/required handling the look-ahead cases in the grammer rather than by reading ahead via code.
    
    Reworks "site" (documentation) generation. Some files may be landing in diffrent locations in the resulting directory tree; if that's an issue, it can be fine-tuned. Some javadoc errors were (sloppily) fixed before discovering that I can turn off "doclint" and let them continue to be warnings rather than build errors; these should be fixed properly at some point (in many cases by switching to using javadoc inheritance). Some files were converted from HTML to XHTML, since Maven's doc p [...]
    
    JavaCupRedirect is no longer needed.
    
    On Windows, javadoc needed javax.rmi as an explicit dependency.
    
    CAVEAT: Some things wind up in different places than they did in the Ant build. If that bothers folks we can do more work to resove it, but I think it's mostly harmless.
    
    TODO: We still have some StyleBook files as well, mostly for the design documentation. I'm handling those with a "stylebook_docgen" script for now, invoked from the mvnbuild script/batch file; that should be moved into the pom's logic.
    
    NOT YET DONE: More of the non-Java files may want to be moved into resource subdirectories.
---
 .classpath                                         |   31 +-
 .gitignore                                         |    3 +-
 .project                                           |   22 +-
 .settings/org.eclipse.jdt.core.prefs               |    1 +
 META-INF/MANIFEST.MF                               |    6 +
 META-INF/maven/org.apache.bcel/bcel/pom.properties |    3 +
 commits.xml => ancient_history.commits.xml         |    0
 build.bat                                          |   70 -
 build.sh                                           |   90 -
 deprecated_build.sh                                |   73 -
 lib/bcel-6.7.0.jar                                 |  Bin 716107 -> 0 bytes
 lib/bsf.jar                                        |  Bin 113369 -> 0 bytes
 lib/commons-logging-1.2.jar                        |  Bin 61829 -> 0 bytes
 lib/endorsed/xercesImpl.jar                        |  Bin 1446149 -> 0 bytes
 lib/endorsed/xml-apis.jar                          |  Bin 228394 -> 0 bytes
 lib/javaee-api-5.0-2.jar                           |  Bin 753070 -> 0 bytes
 lib/regexp.jar                                     |  Bin 29871 -> 0 bytes
 lib/rhino-1.7.14.jar                               |  Bin 1383644 -> 0 bytes
 lib/runtime.jar                                    |  Bin 7820 -> 0 bytes
 lib/servlet-api-2.5.jar                            |  Bin 134133 -> 0 bytes
 mvnbuild.bat                                       |    4 +
 mvnbuild.sh                                        |    4 +
 pom.xml                                            |  194 ++
 samples/ApplyXPath/ApplyXPath.java                 |  141 -
 samples/ApplyXPathDOM/ApplyXPathDOM.java           |  154 -
 samples/CompiledApplet/TransformApplet.java        |  260 --
 samples/CompiledBrazil/TransformHandler.java       |  154 -
 samples/CompiledEJB/TransformBean.java             |  117 -
 samples/CompiledEJB/TransformHome.java             |   33 -
 samples/CompiledEJB/TransformRemote.java           |   33 -
 samples/CompiledEJB/TransformServlet.java          |   90 -
 samples/CompiledJAXP/Compile.java                  |   64 -
 samples/CompiledJAXP/Transform.java                |   73 -
 samples/CompiledServlet/CompileServlet.java        |   76 -
 samples/CompiledServlet/TransformServlet.java      |   99 -
 samples/DOM2DOM/DOM2DOM.java                       |  107 -
 samples/Pipe/Pipe.java                             |   85 -
 samples/SAX2SAX/SAX2SAX.java                       |  108 -
 samples/SimpleTransform/SimpleTransform.java       |   60 -
 samples/Trace/Trace.java                           |   91 -
 samples/TransformThread/TransformThread.java       |  323 --
 samples/UseStylesheetPI/UseStylesheetPI.java       |   55 -
 samples/UseStylesheetParam/UseStylesheetParam.java |   61 -
 samples/UseXMLFilters/UseXMLFilters.java           |  101 -
 samples/Validate/Validate.java                     |  270 --
 samples/Validate/ValidateXMLInput.java             |  115 -
 samples/XPathAPI/ApplyXPathJAXP.java               |  178 -
 samples/XPathAPI/ExtensionFunctionResolver.java    |   89 -
 samples/XPathAPI/ExtensionTest.java                |   25 -
 samples/XPathAPI/XPathResolver.java                |  157 -
 samples/extensions/IntDate.java                    |   36 -
 samples/extensions/MyCounter.java                  |   58 -
 .../sql/ext-connection/ExternalConnection.java     |  105 -
 {lib => samples/lib}/brazil-2.1.jar                |  Bin
 samples/pom.xml                                    |  127 +
 samples/servlet/ApplyXSLT.java                     |  854 -----
 samples/servlet/ApplyXSLTException.java            |  175 -
 samples/servlet/ApplyXSLTListener.java             |  101 -
 samples/servlet/ApplyXSLTProperties.java           |  165 -
 samples/servlet/DefaultApplyXSLTProperties.java    |  272 --
 samples/servlet/SimpleXSLTServlet.java             |   85 -
 samples/servlet/UseStylesheetParamServlet.java     |  103 -
 samples/servlet/XSLTServletWithParams.java         |  146 -
 samples/src/main/java/org/apache/xalan/App.java    |   13 +
 .../xalan/samples}/AppletXMLtoHTML/README.html     |    0
 .../samples}/AppletXMLtoHTML/appletXMLtoHTML.html  |    0
 .../xalan/samples}/AppletXMLtoHTML/client.html     |    0
 .../xalan/samples}/AppletXMLtoHTML/foo-s1.xml      |    0
 .../xalan/samples}/AppletXMLtoHTML/lts3611beac.jpg |    0
 .../xalan/samples}/AppletXMLtoHTML/rabbitwhorn.jpg |  Bin
 .../xalan/samples}/AppletXMLtoHTML/s1ToHTML.xsl    |    0
 .../xalan/samples}/AppletXMLtoHTML/target.html     |    0
 .../apache/xalan/samples}/AppletXMLtoHTML/trax.xml |    0
 .../samples}/AppletXMLtoHTML/xalanApplets.xml      |    0
 .../xalan/samples/ApplyXPath/ApplyXPath.java       |  142 +
 .../org/apache/xalan/samples}/ApplyXPath/foo.xml   |    0
 .../apache/xalan/samples}/ApplyXPath/readme.html   |    0
 .../xalan/samples/ApplyXPathDOM/ApplyXPathDOM.java |  157 +
 .../apache/xalan/samples}/ApplyXPathDOM/foo.xml    |    0
 .../xalan/samples}/ApplyXPathDOM/readme.html       |    0
 .../xalan/samples}/CompiledApplet/README.applet    |    0
 .../samples/CompiledApplet/TransformApplet.java    |  261 ++
 .../xalan/samples}/CompiledApplet/index.html       |    0
 .../apache/xalan/samples}/CompiledApplet/menu.html |    0
 .../samples}/CompiledApplet/singleTransform.html   |    0
 .../xalan/samples}/CompiledBrazil/README.brazil    |    0
 .../samples/CompiledBrazil/TransformHandler.java   |  155 +
 .../apache/xalan/samples}/CompiledEJB/README.ejb   |    0
 .../xalan/samples/CompiledEJB/TransformBean.java   |  118 +
 .../xalan/samples/CompiledEJB/TransformHome.java   |   35 +
 .../xalan/samples/CompiledEJB/TransformRemote.java |   35 +
 .../samples/CompiledEJB/TransformServlet.java      |   92 +
 .../xalan/samples}/CompiledEJB/bottom_frame.html   |    0
 .../apache/xalan/samples}/CompiledEJB/index.html   |    0
 .../xalan/samples}/CompiledEJB/top_frame.html      |    0
 .../apache/xalan/samples/CompiledJAXP/Compile.java |   65 +
 .../xalan/samples}/CompiledJAXP/README.cjaxp       |    0
 .../xalan/samples/CompiledJAXP/Transform.java      |   74 +
 .../samples/CompiledServlet/CompileServlet.java    |   78 +
 .../xalan/samples}/CompiledServlet/README.servlet  |    0
 .../CompiledServlet/TransformationServlet.java     |  100 +
 .../org/apache/xalan/samples/DOM2DOM/DOM2DOM.java  |  108 +
 .../org/apache/xalan/samples}/DOM2DOM/birds.xml    |    0
 .../org/apache/xalan/samples}/DOM2DOM/birds.xsl    |    0
 .../org/apache/xalan/samples}/DOM2DOM/readme.html  |    0
 .../java/org/apache/xalan/samples/Pipe/Pipe.java   |   86 +
 .../java/org/apache/xalan/samples}/Pipe/foo.xml    |    0
 .../java/org/apache/xalan/samples}/Pipe/foo1.xsl   |    0
 .../java/org/apache/xalan/samples}/Pipe/foo2.xsl   |    0
 .../java/org/apache/xalan/samples}/Pipe/foo3.xsl   |    0
 .../org/apache/xalan/samples}/Pipe/readme.html     |    0
 .../org/apache/xalan/samples/SAX2SAX/SAX2SAX.java  |  109 +
 .../org/apache/xalan/samples}/SAX2SAX/birds.xml    |    0
 .../org/apache/xalan/samples}/SAX2SAX/birds.xsl    |    0
 .../java/org/apache/xalan/samples}/SAX2SAX/foo.xml |    0
 .../java/org/apache/xalan/samples}/SAX2SAX/foo.xsl |    0
 .../samples/SimpleTransform/SimpleTransform.java   |   61 +
 .../xalan/samples}/SimpleTransform/birds.xml       |    0
 .../xalan/samples}/SimpleTransform/birds.xsl       |    0
 .../apache/xalan/samples}/SimpleTransform/foo.xml  |    0
 .../apache/xalan/samples}/SimpleTransform/foo.xsl  |    0
 .../xalan/samples}/SimpleTransform/readme.html     |    0
 .../java/org/apache/xalan/samples/Trace/Trace.java |   93 +
 .../java/org/apache/xalan/samples}/Trace/foo.xml   |    0
 .../java/org/apache/xalan/samples}/Trace/foo.xsl   |    0
 .../samples/TransformThread/TransformThread.java   |  324 ++
 .../apache/xalan/samples}/TransformThread/foo0.xml |    0
 .../apache/xalan/samples}/TransformThread/foo0.xsl |    0
 .../apache/xalan/samples}/TransformThread/foo1.xml |    0
 .../apache/xalan/samples}/TransformThread/foo1.xsl |    0
 .../samples/UseStylesheetPI/UseStylesheetPI.java   |   56 +
 .../apache/xalan/samples}/UseStylesheetPI/foo.xsl  |    0
 .../apache/xalan/samples}/UseStylesheetPI/fooX.xml |    0
 .../UseStylesheetParam/UseStylesheetParam.java     |   61 +
 .../xalan/samples}/UseStylesheetParam/foo.xml      |    0
 .../xalan/samples}/UseStylesheetParam/foo.xsl      |    0
 .../xalan/samples}/UseStylesheetParam/readme.html  |    0
 .../xalan/samples/UseXMLFilters/UseXMLFilters.java |  102 +
 .../apache/xalan/samples}/UseXMLFilters/foo.xml    |    0
 .../apache/xalan/samples}/UseXMLFilters/foo1.xsl   |    0
 .../apache/xalan/samples}/UseXMLFilters/foo2.xsl   |    0
 .../apache/xalan/samples}/UseXMLFilters/foo3.xsl   |    0
 .../xalan/samples}/UseXMLFilters/readme.html       |    0
 .../apache/xalan/samples/Validate/Validate.java    |  271 ++
 .../xalan/samples/Validate/ValidateXMLInput.java   |  117 +
 .../org/apache/xalan/samples}/Validate/birds.xml   |    0
 .../org/apache/xalan/samples}/Validate/birds.xsl   |    0
 .../org/apache/xalan/samples}/Validate/readme.html |    0
 .../xalan/samples/XPathAPI/ApplyXPathJAXP.java     |  179 +
 .../XPathAPI/ExtensionFunctionResolver.java        |   90 +
 .../xalan/samples/XPathAPI/ExtensionTest.java      |   26 +
 .../xalan/samples/XPathAPI/XPathResolver.java      |  158 +
 .../org/apache/xalan/samples}/XPathAPI/foo.xml     |    0
 .../org/apache/xalan/samples}/XPathAPI/numlist.xml |    0
 .../apache/xalan/samples}/extensions/1-redir.xml   |    0
 .../apache/xalan/samples}/extensions/1-redir.xsl   |    0
 .../xalan/samples}/extensions/2-basicJscript.xml   |    0
 .../xalan/samples}/extensions/2-basicJscript.xsl   |    0
 .../xalan/samples}/extensions/3-java-namespace.xml |    0
 .../xalan/samples}/extensions/3-java-namespace.xsl |    0
 .../xalan/samples}/extensions/4-numlistJava.xsl    |    0
 .../xalan/samples}/extensions/5-numlistJscript.xsl |    0
 .../apache/xalan/samples/extensions/IntDate.java   |   37 +
 .../apache/xalan/samples/extensions/MyCounter.java |   59 +
 .../apache/xalan/samples}/extensions/numlist.xml   |    0
 .../apache/xalan/samples}/extensions/readme.html   |    0
 .../samples}/extensions/sql/GETTING_STARTED.txt    |    0
 .../extensions/sql/basic-connection/DumpSQL.xsl    |    0
 .../extensions/sql/basic-connection/dbinfo.xml     |    0
 .../sql/basic-connection/dbtest-cinfo.xsl          |    0
 .../extensions/sql/basic-connection/dbtest.xsl     |    0
 .../extensions/sql/basic-connection/readme.html    |    0
 .../xalan/samples}/extensions/sql/createdb.sql     |    0
 .../sql/extConnection/ExternalConnection.java      |  107 +
 .../extensions/sql/extConnection}/dbtest.xsl       |    0
 .../extensions/sql/extConnection}/readme.html      |    0
 .../samples}/extensions/sql/pquery/dbinfo.xml      |    0
 .../samples}/extensions/sql/pquery/dbtest.xsl      |    0
 .../samples}/extensions/sql/pquery/readme.html     |    0
 .../xalan/samples}/extensions/sql/readme.html      |    0
 .../xalan/samples}/extensions/sql/runDerby.bat     |    0
 .../xalan/samples}/extensions/sql/runDerby.sh      |    0
 .../samples}/extensions/sql/runExtConnection.bat   |    0
 .../samples}/extensions/sql/runExtConnection.sh    |    0
 .../xalan/samples}/extensions/sql/runXalan.bat     |    0
 .../xalan/samples}/extensions/sql/runXalan.sh      |    0
 .../samples}/extensions/sql/show-error/dbinfo.xml  |    0
 .../extensions/sql/show-error/invalidConn.xsl      |    0
 .../extensions/sql/show-error/invalidPQuery.xsl    |    0
 .../extensions/sql/show-error/invalidQuery.xsl     |    0
 .../samples}/extensions/sql/show-error/readme.html |    0
 .../extensions/sql/streamable/cachedNodes.xsl      |    0
 .../samples}/extensions/sql/streamable/dbinfo.xml  |    0
 .../samples}/extensions/sql/streamable/pivot.xsl   |    0
 .../samples}/extensions/sql/streamable/readme.html |    0
 .../extensions/sql/streamable/streamNodes.xsl      |    0
 .../apache/xalan/samples/servlet/ApplyXSLT.java    |  854 +++++
 .../xalan/samples/servlet/ApplyXSLTException.java  |  175 +
 .../xalan/samples/servlet/ApplyXSLTListener.java   |  102 +
 .../xalan/samples/servlet/ApplyXSLTProperties.java |  165 +
 .../servlet/DefaultApplyXSLTProperties.java        |  272 ++
 .../xalan/samples/servlet/SimpleXSLTServlet.java   |   85 +
 .../samples/servlet/UseStylesheetParamServlet.java |  103 +
 .../samples/servlet/XSLTServletWithParams.java     |  147 +
 .../org/apache/xalan/samples}/servlet/birds.xml    |    0
 .../org/apache/xalan/samples}/servlet/birds.xsl    |    0
 .../apache/xalan/samples}/servlet/booklist1.xsl    |    0
 .../apache/xalan/samples}/servlet/booklist2.xsl    |    0
 .../org/apache/xalan/samples}/servlet/catalog.xml  |    0
 .../org/apache/xalan/samples}/servlet/default.xsl  |    0
 .../org/apache/xalan/samples}/servlet/default2.xsl |    0
 .../org/apache/xalan/samples}/servlet/fooparam.xml |    0
 .../org/apache/xalan/samples}/servlet/fooparam.xsl |    0
 .../apache/xalan/samples}/servlet/jspSample.jsp    |    0
 .../apache/xalan/samples}/servlet/media.properties |    0
 .../org/apache/xalan/samples}/servlet/readme.html  |    0
 .../java/org/apache/xalan/samples}/servlet/web.xml |    0
 .../JAXPTransletMultipleTransformations.java       |   91 +
 .../translets/JAXPTransletOneTransformation.java   |   83 +
 .../apache/xalan/samples}/translets/readme.html    |    0
 .../org/apache/xalan/samples}/translets/todo.xml   |    0
 .../org/apache/xalan/samples}/translets/todo.xsl   |    0
 .../apache/xalan/samples}/translets/todotoo.xml    |    0
 .../xalan/samples/trax/ExampleContentHandler.java  |  119 +
 .../org/apache/xalan/samples/trax/Examples.java    |  846 +++++
 .../org/apache/xalan/samples}/trax/xml/baz.xml     |    0
 .../org/apache/xalan/samples}/trax/xml/foo.xml     |    0
 .../xalan/samples}/trax/xml/subdir1/foo2.xml       |    0
 .../samples}/trax/xml/subdir1/subdir2/foo3.xml     |    0
 .../org/apache/xalan/samples}/trax/xsl/baz.xsl     |    0
 .../org/apache/xalan/samples}/trax/xsl/foo.xsl     |    0
 .../org/apache/xalan/samples}/trax/xsl/foo2.xsl    |    0
 .../org/apache/xalan/samples}/trax/xsl/foo3.xsl    |    0
 .../apache/xalan/samples}/trax/xsl/inc1/inc1.xsl   |    0
 .../xalan/samples}/trax/xsl/inc1/inc2/inc2.xsl     |    0
 .../src/site/xhtml/AppletXMLtoHTML/README.xhtml    |   40 +
 .../xhtml/AppletXMLtoHTML/appletXMLtoHTML.xhtml    |   34 +
 .../src/site/xhtml/AppletXMLtoHTML/client.xhtml    |  137 +
 .../site/xhtml/AppletXMLtoHTML/target.xhtml}       |    0
 .../site/xhtml/ApplyXPath/readme.xhtml}            |    0
 .../site/xhtml/ApplyXPathDOM/readme.xhtml}         |    0
 samples/src/site/xhtml/CompiledApplet/index.xhtml  |   28 +
 samples/src/site/xhtml/CompiledApplet/menu.xhtml   |   68 +
 .../xhtml/CompiledApplet/singleTransform.xhtml     |   26 +
 .../src/site/xhtml/CompiledEJB/bottom_frame.xhtml  |   24 +
 samples/src/site/xhtml/CompiledEJB/index.xhtml     |   29 +
 samples/src/site/xhtml/CompiledEJB/top_frame.xhtml |  122 +
 .../site/xhtml/DOM2DOM/readme.xhtml}               |    0
 .../site/xhtml/Pipe/readme.xhtml}                  |    0
 .../site/xhtml/SimpleTransform/readme.xhtml}       |    0
 .../site/xhtml/UseStylesheetParam/readme.xhtml}    |    0
 .../site/xhtml/UseXMLFilters/readme.xhtml}         |    0
 .../site/xhtml/Validate/readme.xhtml}              |    0
 .../site/xhtml/extensions/readme.xhtml}            |    0
 .../extensions/sql/basic-connection/readme.xhtml}  |    0
 .../extensions/sql/extConnection/readme.xhtml}     |    0
 .../site/xhtml/extensions/sql/pquery/readme.xhtml} |    0
 .../site/xhtml/extensions/sql/readme.xhtml}        |    0
 .../xhtml/extensions/sql/show-error/readme.xhtml}  |    0
 .../xhtml/extensions/sql/streamable/readme.xhtml}  |    0
 .../site/xhtml/servlet/readme.xhtml}               |    0
 .../site/xhtml/translets/readme.xhtml}             |    0
 .../src/test/java/org/apache/xalan/AppTest.java    |   20 +
 samples/tools/xalan2jdoc.jar                       |  Bin 0 -> 124095 bytes
 {tools => samples/tools}/xalan2jtaglet.jar         |  Bin
 .../JAXPTransletMultipleTransformations.java       |   88 -
 .../translets/JAXPTransletOneTransformation.java   |   81 -
 samples/trax/ExampleContentHandler.java            |  117 -
 samples/trax/Examples.java                         |  844 -----
 serializer/.classpath                              |   22 +
 serializer/.gitignore                              |    1 +
 serializer/.project                                |   23 +
 .../.settings/org.eclipse.core.resources.prefs     |    5 +
 serializer/.settings/org.eclipse.jdt.core.prefs    |    8 +
 serializer/.settings/org.eclipse.m2e.core.prefs    |    4 +
 serializer/pom.xml                                 |  109 +
 .../org/apache/xml/serializer/Encodings.properties |    0
 .../apache/xml/serializer/HTMLEntities.properties  |    0
 .../org/apache/xml/serializer/Version.src          |    0
 .../apache/xml/serializer/XMLEntities.properties   |    0
 .../apache/xml/serializer/output_html.properties   |    0
 .../apache/xml/serializer/output_text.properties   |    0
 .../xml/serializer/output_unknown.properties       |    0
 .../apache/xml/serializer/output_xml.properties    |    0
 .../org/apache/xml/serializer/package.html         |    0
 .../src/main/java}/MANIFEST.SERIALIZER             |    0
 .../xml/serializer/AttributesImplSerializer.java   |    0
 .../java}/org/apache/xml/serializer/CharInfo.java  |    0
 .../org/apache/xml/serializer/DOM3Serializer.java  |  171 +
 .../org/apache/xml/serializer/DOMSerializer.java   |    0
 .../org/apache/xml/serializer/ElemContext.java     |    0
 .../java}/org/apache/xml/serializer/ElemDesc.java  |    0
 .../org/apache/xml/serializer/EmptySerializer.java |  822 +++++
 .../org/apache/xml/serializer/EncodingInfo.java    |  570 ++++
 .../java}/org/apache/xml/serializer/Encodings.java |    0
 .../xml/serializer/ExtendedContentHandler.java     |  272 ++
 .../xml/serializer/ExtendedLexicalHandler.java     |   39 +
 .../java}/org/apache/xml/serializer/Method.java    |    0
 .../apache/xml/serializer/NamespaceMappings.java   |  501 +++
 .../org/apache/xml/serializer/ObjectFactory.java   |    0
 .../xml/serializer/OutputPropertiesFactory.java    |    0
 .../apache/xml/serializer/OutputPropertyUtils.java |    0
 .../org/apache/xml/serializer/SecuritySupport.java |    0
 .../xml/serializer/SerializationHandler.java       |  152 +
 .../java/org/apache/xml/serializer/Serializer.java |  238 ++
 .../org/apache/xml/serializer/SerializerBase.java  | 1698 +++++++++
 .../apache/xml/serializer/SerializerConstants.java |   57 +
 .../apache/xml/serializer/SerializerFactory.java   |  187 +
 .../org/apache/xml/serializer/SerializerTrace.java |    0
 .../xml/serializer/SerializerTraceWriter.java      |    0
 .../apache/xml/serializer/ToHTMLSAXHandler.java    |  740 ++++
 .../org/apache/xml/serializer/ToHTMLStream.java    | 2336 +++++++++++++
 .../org/apache/xml/serializer/ToSAXHandler.java    |  436 +++
 .../java/org/apache/xml/serializer/ToStream.java   | 3593 +++++++++++++++++++
 .../apache/xml/serializer/ToTextSAXHandler.java    |  411 +++
 .../org/apache/xml/serializer/ToTextStream.java    |  622 ++++
 .../org/apache/xml/serializer/ToUnknownStream.java | 1316 +++++++
 .../org/apache/xml/serializer/ToXMLSAXHandler.java |  780 +++++
 .../org/apache/xml/serializer/ToXMLStream.java     |  643 ++++
 .../xml/serializer/TransformStateSetter.java       |   56 +
 .../java/org/apache/xml/serializer/TreeWalker.java |  530 +++
 .../java/org/apache/xml/serializer/Version.java    |  150 +
 .../org/apache/xml/serializer/WriterChain.java     |    0
 .../org/apache/xml/serializer/WriterToASCI.java    |    0
 .../xml/serializer/WriterToUTF8Buffered.java       |    0
 .../apache/xml/serializer/XSLOutputAttributes.java |  236 ++
 .../xml/serializer/dom3/DOM3SerializerImpl.java    |  158 +
 .../apache/xml/serializer/dom3/DOM3TreeWalker.java |    0
 .../apache/xml/serializer/dom3/DOMConstants.java   |    0
 .../xml/serializer/dom3/DOMErrorHandlerImpl.java   |    0
 .../apache/xml/serializer/dom3/DOMErrorImpl.java   |    0
 .../apache/xml/serializer/dom3/DOMLocatorImpl.java |    0
 .../apache/xml/serializer/dom3/DOMOutputImpl.java  |    0
 .../xml/serializer/dom3/DOMStringListImpl.java     |    0
 .../xml/serializer/dom3/LSSerializerImpl.java      | 1535 +++++++++
 .../xml/serializer/dom3/NamespaceSupport.java      |  336 ++
 .../java}/org/apache/xml/serializer/package.html   |    0
 .../org/apache/xml/serializer/utils/AttList.java   |    0
 .../org/apache/xml/serializer/utils/BoolStack.java |  204 ++
 .../apache/xml/serializer/utils/DOM2Helper.java    |    0
 .../org/apache/xml/serializer/utils/Messages.java  |    0
 .../org/apache/xml/serializer/utils/MsgKey.java    |    0
 .../xml/serializer/utils/SerializerMessages.java   |    0
 .../serializer/utils/SerializerMessages_ca.java    |    0
 .../serializer/utils/SerializerMessages_cs.java    |    0
 .../serializer/utils/SerializerMessages_de.java    |    0
 .../serializer/utils/SerializerMessages_en.java    |    0
 .../serializer/utils/SerializerMessages_es.java    |    0
 .../serializer/utils/SerializerMessages_fr.java    |    0
 .../serializer/utils/SerializerMessages_hu.java    |    0
 .../serializer/utils/SerializerMessages_it.java    |    0
 .../serializer/utils/SerializerMessages_ja.java    |    0
 .../serializer/utils/SerializerMessages_ko.java    |    0
 .../serializer/utils/SerializerMessages_pl.java    |    0
 .../serializer/utils/SerializerMessages_pt_BR.java |    0
 .../serializer/utils/SerializerMessages_ru.java    |    0
 .../serializer/utils/SerializerMessages_sk.java    |    0
 .../serializer/utils/SerializerMessages_sl.java    |    0
 .../serializer/utils/SerializerMessages_sv.java    |    0
 .../serializer/utils/SerializerMessages_tr.java    |    0
 .../serializer/utils/SerializerMessages_zh.java    |    0
 .../serializer/utils/SerializerMessages_zh_CN.java |    0
 .../serializer/utils/SerializerMessages_zh_TW.java |    0
 .../xml/serializer/utils/StringToIntTable.java     |    0
 .../xml/serializer/utils/SystemIDResolver.java     |    0
 .../java}/org/apache/xml/serializer/utils/URI.java |    0
 .../org/apache/xml/serializer/utils/Utils.java     |    0
 .../serializer/utils/WrappedRuntimeException.java  |    0
 .../org/apache/xml/serializer/utils/XML11Char.java |  414 +++
 .../org/apache/xml/serializer/utils/XMLChar.java   | 1026 ++++++
 serializer/tools/xalan2jdoc.jar                    |  Bin 0 -> 124095 bytes
 {tools => serializer/tools}/xalan2jtaglet.jar      |  Bin
 src/org/apache/xalan/Version.java                  |  153 +
 src/org/apache/xalan/lib/ExsltStrings.java         |  353 --
 src/org/apache/xalan/lib/Extensions.java           |  418 ---
 src/org/apache/xalan/lib/PipeDocument.java         |  230 --
 src/org/apache/xalan/lib/Redirect.java             |  490 ---
 .../xalan/processor/ProcessorExsltFunction.java    |  189 -
 src/org/apache/xalan/processor/ProcessorKey.java   |  156 -
 src/org/apache/xalan/processor/ProcessorLRE.java   |  369 --
 .../xalan/processor/ProcessorNamespaceAlias.java   |   97 -
 .../xalan/processor/ProcessorPreserveSpace.java    |   78 -
 .../xalan/processor/ProcessorStripSpace.java       |   78 -
 .../processor/ProcessorStylesheetElement.java      |  147 -
 .../apache/xalan/processor/StylesheetHandler.java  | 1724 ----------
 .../xalan/processor/TransformerFactoryImpl.java    | 1038 ------
 .../xalan/processor/XSLTElementProcessor.java      |  396 ---
 src/org/apache/xalan/res/XSLTErrorResources.java   | 1511 --------
 .../apache/xalan/res/XSLTErrorResources_ca.java    | 1529 ---------
 .../apache/xalan/res/XSLTErrorResources_cs.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_de.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_es.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_fr.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_hu.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_it.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_ja.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_ko.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_pl.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_pt_BR.java | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_ru.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_sk.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_sl.java    | 1517 ---------
 .../apache/xalan/res/XSLTErrorResources_tr.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_zh.java    | 1530 ---------
 .../apache/xalan/res/XSLTErrorResources_zh_TW.java | 1530 ---------
 .../apache/xalan/serialize/SerializerFactory.java  |  159 -
 .../apache/xalan/serialize/SerializerUtils.java    |  273 --
 .../xalan/templates/DecimalFormatProperties.java   |  404 ---
 .../apache/xalan/templates/ElemApplyImport.java    |  117 -
 src/org/apache/xalan/templates/ElemAttribute.java  |  276 --
 .../apache/xalan/templates/ElemAttributeSet.java   |  181 -
 .../apache/xalan/templates/ElemCallTemplate.java   |  374 --
 src/org/apache/xalan/templates/ElemChoose.java     |  198 --
 src/org/apache/xalan/templates/ElemComment.java    |  150 -
 src/org/apache/xalan/templates/ElemCopy.java       |  147 -
 src/org/apache/xalan/templates/ElemCopyOf.java     |  251 --
 src/org/apache/xalan/templates/ElemElement.java    |  378 --
 src/org/apache/xalan/templates/ElemFallback.java   |  115 -
 src/org/apache/xalan/templates/ElemForEach.java    |  549 ---
 src/org/apache/xalan/templates/ElemIf.java         |  178 -
 src/org/apache/xalan/templates/ElemMessage.java    |  130 -
 src/org/apache/xalan/templates/ElemNumber.java     | 2168 ------------
 src/org/apache/xalan/templates/ElemOtherwise.java  |   57 -
 src/org/apache/xalan/templates/ElemPI.java         |  230 --
 src/org/apache/xalan/templates/ElemParam.java      |  130 -
 src/org/apache/xalan/templates/ElemSort.java       |  349 --
 src/org/apache/xalan/templates/ElemTemplate.java   |  421 ---
 .../xalan/templates/ElemTemplateElement.java       | 1660 ---------
 src/org/apache/xalan/templates/ElemText.java       |  148 -
 .../apache/xalan/templates/ElemTextLiteral.java    |  245 --
 src/org/apache/xalan/templates/ElemValueOf.java    |  335 --
 src/org/apache/xalan/templates/ElemVariable.java   |  538 ---
 src/org/apache/xalan/templates/ElemWhen.java       |  126 -
 src/org/apache/xalan/templates/ElemWithParam.java  |  265 --
 src/org/apache/xalan/templates/Stylesheet.java     | 1516 ---------
 .../xalan/transformer/TreeWalker2Result.java       |  155 -
 src/org/apache/xalan/xsltc/compiler/xpath.lex      |  257 --
 .../apache/xalan/xsltc/util/JavaCupRedirect.java   |   97 -
 src/org/apache/xml/res/XMLMessages.java            |  214 --
 src/org/apache/xml/serializer/DOM3Serializer.java  |  170 -
 src/org/apache/xml/serializer/EmptySerializer.java |  787 -----
 src/org/apache/xml/serializer/EncodingInfo.java    |  562 ---
 .../xml/serializer/ExtendedContentHandler.java     |  271 --
 .../xml/serializer/ExtendedLexicalHandler.java     |   39 -
 .../apache/xml/serializer/NamespaceMappings.java   |  500 ---
 .../xml/serializer/SerializationHandler.java       |  145 -
 src/org/apache/xml/serializer/Serializer.java      |  238 --
 src/org/apache/xml/serializer/SerializerBase.java  | 1699 ---------
 .../apache/xml/serializer/SerializerConstants.java |   59 -
 .../apache/xml/serializer/SerializerFactory.java   |  185 -
 .../apache/xml/serializer/ToHTMLSAXHandler.java    |  748 ----
 src/org/apache/xml/serializer/ToHTMLStream.java    | 2350 -------------
 src/org/apache/xml/serializer/ToSAXHandler.java    |  438 ---
 src/org/apache/xml/serializer/ToStream.java        | 3600 --------------------
 .../apache/xml/serializer/ToTextSAXHandler.java    |  413 ---
 src/org/apache/xml/serializer/ToTextStream.java    |  634 ----
 src/org/apache/xml/serializer/ToUnknownStream.java | 1316 -------
 src/org/apache/xml/serializer/ToXMLSAXHandler.java |  774 -----
 src/org/apache/xml/serializer/ToXMLStream.java     |  646 ----
 .../xml/serializer/TransformStateSetter.java       |   56 -
 src/org/apache/xml/serializer/TreeWalker.java      |  527 ---
 .../apache/xml/serializer/XSLOutputAttributes.java |  236 --
 .../xml/serializer/dom3/DOM3SerializerImpl.java    |  158 -
 .../xml/serializer/dom3/LSSerializerImpl.java      | 1537 ---------
 .../xml/serializer/dom3/NamespaceSupport.java      |  315 --
 src/org/apache/xml/serializer/utils/BoolStack.java |  204 --
 src/org/apache/xml/serializer/utils/XML11Char.java |  414 ---
 src/org/apache/xml/serializer/utils/XMLChar.java   | 1026 ------
 src/org/apache/xml/utils/BoolStack.java            |  202 --
 src/org/apache/xml/utils/IntStack.java             |  211 --
 src/org/apache/xml/utils/ObjectStack.java          |  215 --
 src/org/apache/xml/utils/UnImplNode.java           | 1977 -----------
 src/org/apache/xpath/ExpressionNode.java           |   52 -
 .../xpath/WhitespaceStrippingElementMatcher.java   |   54 -
 src/org/apache/xpath/axes/LocPathIterator.java     | 1033 ------
 .../apache/xpath/axes/OneStepIteratorForward.java  |  172 -
 src/xml-commons-external-1.3.02-src.tar.gz         |  Bin 311599 -> 0 bytes
 .../sources/design/compilation.gif                 |  Bin
 {xdocs => stylebook}/sources/design/conceptual.gif |  Bin
 {xdocs => stylebook}/sources/design/data.gif       |  Bin
 .../sources/design/design2_0_0.xml                 |    0
 {xdocs => stylebook}/sources/design/org_apache.gif |  Bin
 {xdocs => stylebook}/sources/design/process.gif    |  Bin
 {xdocs => stylebook}/sources/design/trax.gif       |  Bin
 {xdocs => stylebook}/sources/design/xalan.gif      |  Bin
 {xdocs => stylebook}/sources/design/xalan1_1x1.gif |  Bin
 {xdocs => stylebook}/sources/design/xmllogo.gif    |  Bin
 {xdocs => stylebook}/sources/design/xpath.gif      |  Bin
 .../sources/design/xslt_abstract.gif               |  Bin
 .../entities.src => stylebook/sources/entities.ent |    0
 {xdocs => stylebook}/sources/entities.src          |    0
 .../sources/xalan-apache-org-site.xml              |    0
 .../sources/xalan-apache-org/index.xml             |    0
 {xdocs => stylebook}/sources/xalan-collate.xsl     |    0
 {xdocs => stylebook}/sources/xalan-jlocal.xml      |    0
 {xdocs => stylebook}/sources/xalan-jsite.xml       |    0
 stylebook/sources/xalan/DONE                       |    0
 .../sources/xalan/bugreporting.xml                 |    0
 {xdocs => stylebook}/sources/xalan/builds.xml      |    0
 {xdocs => stylebook}/sources/xalan/charter.xml     |    0
 {xdocs => stylebook}/sources/xalan/commandline.xml |    0
 .../sources/xalan/commandline_xsltc.xml            |    0
 {xdocs => stylebook}/sources/xalan/contact_us.xml  |    0
 {xdocs => stylebook}/sources/xalan/downloads.xml   |    0
 {xdocs => stylebook}/sources/xalan/dtm.xml         |    0
 {xdocs => stylebook}/sources/xalan/extensions.xml  |    0
 .../sources/xalan/extensions_xsltc.xml             |    0
 .../sources/xalan/extensionslib.xml                |    0
 {xdocs => stylebook}/sources/xalan/faq.xml         |    0
 {xdocs => stylebook}/sources/xalan/features.xml    |    0
 {xdocs => stylebook}/sources/xalan/getstarted.xml  |    0
 {xdocs => stylebook}/sources/xalan/history.xml     |    0
 {xdocs => stylebook}/sources/xalan/index.xml       |    0
 {xdocs => stylebook}/sources/xalan/overview.xml    |    0
 {xdocs => stylebook}/sources/xalan/public_apis.xml |    0
 {xdocs => stylebook}/sources/xalan/readme.xml      |    0
 {xdocs => stylebook}/sources/xalan/resources.xml   |    0
 {xdocs => stylebook}/sources/xalan/samples.xml     |    0
 {xdocs => stylebook}/sources/xalan/trax.xml        |    0
 .../sources/xalan/usagepatterns.xml                |    0
 {xdocs => stylebook}/sources/xalan/whatsnew.xml    |    0
 stylebook/sources/xalan/xalan-collate.xml          |  107 +
 {xdocs => stylebook}/sources/xalan/xmlfilters.gif  |  Bin
 {xdocs => stylebook}/sources/xalan/xpath_apis.xml  |    0
 .../sources/xalan/xsltc_history.xml                |    0
 {xdocs => stylebook}/sources/xalan/xsltc_usage.xml |    0
 {xdocs => stylebook}/sources/xalandesign.xml       |    0
 {xdocs => stylebook}/sources/xsltc.xml             |    0
 .../sources/xsltc/DOMInterface.gif                 |  Bin
 {xdocs => stylebook}/sources/xsltc/DOMLocking.gif  |  Bin
 {xdocs => stylebook}/sources/xsltc/README          |    0
 {xdocs => stylebook}/sources/xsltc/README.APACHE   |    0
 {xdocs => stylebook}/sources/xsltc/README.api      |    0
 {xdocs => stylebook}/sources/xsltc/README.xslt     |    0
 {xdocs => stylebook}/sources/xsltc/README.xsltc    |    0
 {xdocs => stylebook}/sources/xsltc/README2         |    0
 .../sources/xsltc/all_namespaces.gif               |  Bin
 {xdocs => stylebook}/sources/xsltc/ast_stage1.gif  |  Bin
 {xdocs => stylebook}/sources/xsltc/ast_stage2.gif  |  Bin
 {xdocs => stylebook}/sources/xsltc/ast_stage3.gif  |  Bin
 .../sources/xsltc/cast_expression.gif              |  Bin
 .../sources/xsltc/class_loader.gif                 |  Bin
 .../sources/xsltc/compiler_AST.gif                 |  Bin
 .../sources/xsltc/compiler_DOM.gif                 |  Bin
 .../sources/xsltc/compiler_architecture.gif        |  Bin
 .../sources/xsltc/compiler_design.gif              |  Bin
 .../sources/xsltc/dom_namespace1.gif               |  Bin
 .../sources/xsltc/dom_namespace2.gif               |  Bin
 .../sources/xsltc/dom_namespace3.gif               |  Bin
 {xdocs => stylebook}/sources/xsltc/index.xml       |    0
 .../sources/xsltc/iterator_stack.gif               |  Bin
 .../sources/xsltc/key_relations.gif                |  Bin
 .../sources/xsltc/match_namespace1.gif             |  Bin
 .../sources/xsltc/match_namespace2.gif             |  Bin
 .../sources/xsltc/namespace_stack.gif              |  Bin
 .../sources/xsltc/output_namespaces1.gif           |  Bin
 .../sources/xsltc/output_namespaces2.gif           |  Bin
 .../sources/xsltc/output_settings.gif              |  Bin
 .../sources/xsltc/overall_design.gif               |  Bin
 .../sources/xsltc/pattern_objects.gif              |  Bin
 .../sources/xsltc/runtime_architecture.gif         |  Bin
 .../sources/xsltc/runtime_design.gif               |  Bin
 .../sources/xsltc/runtime_type_mapping.gif         |  Bin
 .../sources/xsltc/sort_objects.gif                 |  Bin
 .../sources/xsltc/translet_wrapping.gif            |  Bin
 .../sources/xsltc/trax_output_settings.gif         |  Bin
 .../sources/xsltc/trax_translet_wrapping.gif       |  Bin
 .../sources/xsltc/type_mapping.gif                 |  Bin
 .../sources/xsltc/type_mappings.gif                |  Bin
 {xdocs => stylebook}/sources/xsltc/typecast.gif    |  Bin
 .../sources/xsltc/uri_resolver.gif                 |  Bin
 .../sources/xsltc/xsl_choose_design.xml            |    0
 .../sources/xsltc/xsl_comment_design.xml           |    0
 .../sources/xsltc/xsl_if_design.xml                |    0
 .../sources/xsltc/xsl_include_design.xml           |    0
 .../sources/xsltc/xsl_key_design.xml               |    0
 .../sources/xsltc/xsl_lang_design.xml              |    0
 .../sources/xsltc/xsl_sort_design.xml              |    0
 .../sources/xsltc/xsl_unparsed_design.xml          |    0
 .../sources/xsltc/xsl_variable_design.xml          |    0
 .../sources/xsltc/xsl_whitespace_design.xml        |    0
 .../sources/xsltc/xsltc_compiler.xml               |    0
 {xdocs => stylebook}/sources/xsltc/xsltc_dom.xml   |    0
 .../sources/xsltc/xsltc_iterators.xml              |    0
 .../sources/xsltc/xsltc_namespace.xml              |    0
 .../sources/xsltc/xsltc_native_api.xml             |    0
 .../sources/xsltc/xsltc_overview.xml               |    0
 .../sources/xsltc/xsltc_performance.xml            |    0
 .../sources/xsltc/xsltc_predicates.xml             |    0
 .../sources/xsltc/xsltc_runtime.xml                |    0
 {xdocs => stylebook}/sources/xsltc/xsltc_trax.xml  |    0
 .../sources/xsltc/xsltc_trax_api.xml               |    0
 stylebook/style/dtd/blocks.ent                     |   40 +
 stylebook/style/dtd/book.dtd                       |   49 +
 stylebook/style/dtd/changes.dtd                    |   24 +
 stylebook/style/dtd/characters.ent                 |  297 ++
 stylebook/style/dtd/document.dtd                   |   19 +
 stylebook/style/dtd/faqs.dtd                       |   19 +
 stylebook/style/dtd/links.ent                      |   24 +
 stylebook/style/dtd/markup.ent                     |   21 +
 {xdocs => stylebook}/style/dtd/spec.dtd            |    0
 {xdocs => stylebook}/style/dtd/xsl-html40s.dtd     |    0
 stylebook/style/graphics/button-a.gif              |  Bin 0 -> 179 bytes
 stylebook/style/graphics/button-b.gif              |  Bin 0 -> 154 bytes
 stylebook/style/loader.xml                         |    9 +
 {xdocs => stylebook}/style/loaderdesign.xml        |    0
 stylebook/style/resources/bottom.gif               |  Bin 0 -> 1075 bytes
 stylebook/style/resources/button-asf-hi.gif        |  Bin 0 -> 1535 bytes
 stylebook/style/resources/button-asf-lo.gif        |  Bin 0 -> 1519 bytes
 stylebook/style/resources/button-w3c-hi.gif        |  Bin 0 -> 1503 bytes
 stylebook/style/resources/button-w3c-lo.gif        |  Bin 0 -> 1495 bytes
 stylebook/style/resources/button-xml-hi.gif        |  Bin 0 -> 1464 bytes
 stylebook/style/resources/button-xml-lo.gif        |  Bin 0 -> 1458 bytes
 stylebook/style/resources/close.gif                |  Bin 0 -> 498 bytes
 stylebook/style/resources/dot.gif                  |  Bin 0 -> 49 bytes
 stylebook/style/resources/join.gif                 |  Bin 0 -> 1268 bytes
 stylebook/style/resources/line.gif                 |  Bin 0 -> 924 bytes
 stylebook/style/resources/logo.gif                 |  Bin 0 -> 3223 bytes
 stylebook/style/resources/note.gif                 |  Bin 0 -> 295 bytes
 stylebook/style/resources/right.gif                |  Bin 0 -> 1202 bytes
 stylebook/style/resources/script.js                |   21 +
 stylebook/style/resources/separator.gif            |  Bin 0 -> 110 bytes
 stylebook/style/resources/void.gif                 |  Bin 0 -> 49 bytes
 stylebook/style/stylesheets/any2header.xsl         |   29 +
 stylebook/style/stylesheets/any2project.xsl        |   21 +
 stylebook/style/stylesheets/book2group.xsl         |   34 +
 stylebook/style/stylesheets/book2project.xsl       |  257 ++
 stylebook/style/stylesheets/changes2document.xsl   |   43 +
 stylebook/style/stylesheets/context2footer.xsl     |   29 +
 stylebook/style/stylesheets/context2label.xsl      |   25 +
 .../style/stylesheets/design2project.xsl           |    0
 .../style/stylesheets/designdoc2html.xsl           |    0
 stylebook/style/stylesheets/directory2project.xsl  |   34 +
 stylebook/style/stylesheets/document2html.xsl      |  445 +++
 stylebook/style/stylesheets/done.xsl               |   67 +
 stylebook/style/stylesheets/faqs2document.xsl      |   65 +
 stylebook/style/stylesheets/group2document.xsl     |   31 +
 {xdocs => stylebook}/style/stylesheets/spec.xsl    |    0
 {xdocs => stylebook}/style/stylesheets/xml2fo.xsl  |    0
 {tools => stylebook}/stylebook-1.0-b3_xalan-2.jar  |  Bin
 {xdocs => stylebook}/xml-site-style.tar.gz         |  Bin
 stylebook_docgen.bat                               |   56 +
 stylebook_docgen.sh                                |   55 +
 tools/JLex.jar                                     |  Bin 54603 -> 0 bytes
 tools/ant.jar                                      |  Bin 717666 -> 0 bytes
 tools/antRun                                       |    9 -
 tools/antRun.bat                                   |   36 -
 tools/java_cup.jar                                 |  Bin 62365 -> 0 bytes
 xalan/.classpath                                   |   33 +
 xalan/.gitignore                                   |    1 +
 xalan/.project                                     |   23 +
 xalan/.settings/org.eclipse.core.resources.prefs   |    7 +
 xalan/.settings/org.eclipse.jdt.core.prefs         |    8 +
 xalan/.settings/org.eclipse.m2e.core.prefs         |    4 +
 xalan/pom.xml                                      |  225 ++
 {src => xalan/src/main/java}/MANIFEST.MF           |    0
 {src => xalan/src/main/java}/MANIFEST.SERIALIZER   |    0
 .../javax.xml.transform.TransformerFactory         |    0
 .../META-INF/services/javax.xml.xpath.XPathFactory |    0
 .../org.apache.xalan.extensions.bsf.BSFManager     |    0
 .../services/org.apache.xml.dtm.DTMManager         |    0
 .../src/main/java}/manifest.xalan-interpretive     |    0
 {src => xalan/src/main/java}/manifest.xsltc        |    0
 xalan/src/main/java/org/apache/xalan/Version.java  |  153 +
 .../src/main/java}/org/apache/xalan/Version.src    |    0
 .../apache/xalan/client/XSLTProcessorApplet.java   |    0
 .../java}/org/apache/xalan/client/package.html     |    0
 .../apache/xalan/extensions/ExpressionContext.java |    0
 .../apache/xalan/extensions/ExpressionVisitor.java |    0
 .../apache/xalan/extensions/ExtensionHandler.java  |    0
 .../extensions/ExtensionHandlerExsltFunction.java  |    0
 .../xalan/extensions/ExtensionHandlerGeneral.java  |    0
 .../xalan/extensions/ExtensionHandlerJava.java     |    0
 .../extensions/ExtensionHandlerJavaClass.java      |    0
 .../extensions/ExtensionHandlerJavaPackage.java    |    0
 .../extensions/ExtensionNamespaceContext.java      |    0
 .../extensions/ExtensionNamespaceSupport.java      |    0
 .../extensions/ExtensionNamespacesManager.java     |    0
 .../apache/xalan/extensions/ExtensionsTable.java   |    0
 .../apache/xalan/extensions/MethodResolver.java    |    0
 .../org/apache/xalan/extensions/ObjectFactory.java |    0
 .../apache/xalan/extensions/SecuritySupport.java   |    0
 .../apache/xalan/extensions/XPathFunctionImpl.java |    0
 .../extensions/XPathFunctionResolverImpl.java      |    0
 .../xalan/extensions/XSLProcessorContext.java      |    0
 .../java}/org/apache/xalan/extensions/package.html |    0
 .../main/java}/org/apache/xalan/lib/ExsltBase.java |    0
 .../java}/org/apache/xalan/lib/ExsltCommon.java    |    0
 .../java}/org/apache/xalan/lib/ExsltDatetime.java  |    0
 .../java}/org/apache/xalan/lib/ExsltDynamic.java   |    0
 .../main/java}/org/apache/xalan/lib/ExsltMath.java |    0
 .../main/java}/org/apache/xalan/lib/ExsltSets.java |    0
 .../java/org/apache/xalan/lib/ExsltStrings.java    |  353 ++
 .../main/java/org/apache/xalan/lib/Extensions.java |  418 +++
 .../main/java}/org/apache/xalan/lib/NodeInfo.java  |    0
 .../java}/org/apache/xalan/lib/ObjectFactory.java  |    0
 .../java/org/apache/xalan/lib/PipeDocument.java    |  230 ++
 .../main/java/org/apache/xalan/lib/Redirect.java   |  490 +++
 .../org/apache/xalan/lib/SecuritySupport.java      |    0
 .../main/java}/org/apache/xalan/lib/package.html   |    0
 .../org/apache/xalan/lib/sql/ConnectionPool.java   |    0
 .../xalan/lib/sql/ConnectionPoolManager.java       |    0
 .../org/apache/xalan/lib/sql/DTMDocument.java      |    0
 .../xalan/lib/sql/DefaultConnectionPool.java       |    0
 .../apache/xalan/lib/sql/JNDIConnectionPool.java   |    0
 .../org/apache/xalan/lib/sql/ObjectArray.java      |    0
 .../org/apache/xalan/lib/sql/ObjectFactory.java    |    0
 .../org/apache/xalan/lib/sql/PooledConnection.java |    0
 .../org/apache/xalan/lib/sql/QueryParameter.java   |    0
 .../org/apache/xalan/lib/sql/SQLDocument.java      |    0
 .../org/apache/xalan/lib/sql/SQLErrorDocument.java |    0
 .../org/apache/xalan/lib/sql/SQLQueryParser.java   |    0
 .../org/apache/xalan/lib/sql/SecuritySupport.java  |    0
 .../org/apache/xalan/lib/sql/XConnection.java      |    0
 .../java}/org/apache/xalan/lib/sql/package.html    |    0
 .../xalan/processor/ProcessorAttributeSet.java     |    0
 .../xalan/processor/ProcessorCharacters.java       |    0
 .../xalan/processor/ProcessorDecimalFormat.java    |    0
 .../xalan/processor/ProcessorExsltFuncResult.java  |    0
 .../xalan/processor/ProcessorExsltFunction.java    |  194 ++
 .../xalan/processor/ProcessorGlobalParamDecl.java  |    0
 .../processor/ProcessorGlobalVariableDecl.java     |    0
 .../apache/xalan/processor/ProcessorImport.java    |    0
 .../apache/xalan/processor/ProcessorInclude.java   |    0
 .../org/apache/xalan/processor/ProcessorKey.java   |  156 +
 .../org/apache/xalan/processor/ProcessorLRE.java   |  370 ++
 .../xalan/processor/ProcessorNamespaceAlias.java   |   97 +
 .../xalan/processor/ProcessorOutputElem.java       |    0
 .../xalan/processor/ProcessorPreserveSpace.java    |   78 +
 .../xalan/processor/ProcessorStripSpace.java       |   78 +
 .../xalan/processor/ProcessorStylesheetDoc.java    |    0
 .../processor/ProcessorStylesheetElement.java      |  148 +
 .../apache/xalan/processor/ProcessorTemplate.java  |    0
 .../xalan/processor/ProcessorTemplateElem.java     |    0
 .../org/apache/xalan/processor/ProcessorText.java  |    0
 .../apache/xalan/processor/ProcessorUnknown.java   |    0
 .../apache/xalan/processor/StylesheetHandler.java  | 1725 ++++++++++
 .../xalan/processor/TransformerFactoryImpl.java    | 1038 ++++++
 .../xalan/processor/WhitespaceInfoPaths.java       |    0
 .../apache/xalan/processor/XSLProcessorVersion.src |    0
 .../apache/xalan/processor/XSLTAttributeDef.java   |    0
 .../org/apache/xalan/processor/XSLTElementDef.java |    0
 .../xalan/processor/XSLTElementProcessor.java      |  403 +++
 .../org/apache/xalan/processor/XSLTSchema.java     |    0
 .../java}/org/apache/xalan/processor/package.html  |    0
 .../java}/org/apache/xalan/res/XSLMessages.java    |    0
 .../org/apache/xalan/res/XSLTErrorResources.java   | 1511 ++++++++
 .../apache/xalan/res/XSLTErrorResources_ca.java    | 1529 +++++++++
 .../apache/xalan/res/XSLTErrorResources_cs.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_de.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_en.java    |    0
 .../apache/xalan/res/XSLTErrorResources_es.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_fr.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_hu.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_it.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_ja.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_ko.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_pl.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_pt_BR.java | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_ru.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_sk.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_sl.java    | 1517 +++++++++
 .../apache/xalan/res/XSLTErrorResources_sv.java    |    0
 .../apache/xalan/res/XSLTErrorResources_tr.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_zh.java    | 1530 +++++++++
 .../apache/xalan/res/XSLTErrorResources_zh_CN.java |    0
 .../apache/xalan/res/XSLTErrorResources_zh_TW.java | 1530 +++++++++
 .../main/java}/org/apache/xalan/res/package.html   |    0
 .../org/apache/xalan/serialize/DOMSerializer.java  |    0
 .../org/apache/xalan/serialize/Serializer.java     |    0
 .../apache/xalan/serialize/SerializerFactory.java  |  159 +
 .../apache/xalan/serialize/SerializerUtils.java    |  277 ++
 .../main/java}/org/apache/xalan/templates/AVT.java |    0
 .../java}/org/apache/xalan/templates/AVTPart.java  |    0
 .../org/apache/xalan/templates/AVTPartSimple.java  |    0
 .../org/apache/xalan/templates/AVTPartXPath.java   |    0
 .../org/apache/xalan/templates/AbsPathChecker.java |    0
 .../org/apache/xalan/templates/Constants.java      |    0
 .../xalan/templates/DecimalFormatProperties.java   |  404 +++
 .../apache/xalan/templates/ElemApplyImport.java    |  117 +
 .../apache/xalan/templates/ElemApplyTemplates.java |    0
 .../org/apache/xalan/templates/ElemAttribute.java  |  276 ++
 .../apache/xalan/templates/ElemAttributeSet.java   |  181 +
 .../apache/xalan/templates/ElemCallTemplate.java   |  374 ++
 .../org/apache/xalan/templates/ElemChoose.java     |  198 ++
 .../org/apache/xalan/templates/ElemComment.java    |  150 +
 .../java/org/apache/xalan/templates/ElemCopy.java  |  147 +
 .../org/apache/xalan/templates/ElemCopyOf.java     |  251 ++
 .../org/apache/xalan/templates/ElemElement.java    |  378 ++
 .../org/apache/xalan/templates/ElemEmpty.java      |    0
 .../xalan/templates/ElemExsltFuncResult.java       |    0
 .../apache/xalan/templates/ElemExsltFunction.java  |    0
 .../apache/xalan/templates/ElemExtensionCall.java  |    0
 .../apache/xalan/templates/ElemExtensionDecl.java  |    0
 .../xalan/templates/ElemExtensionScript.java       |    0
 .../org/apache/xalan/templates/ElemFallback.java   |  115 +
 .../org/apache/xalan/templates/ElemForEach.java    |  549 +++
 .../java/org/apache/xalan/templates/ElemIf.java    |  178 +
 .../apache/xalan/templates/ElemLiteralResult.java  |    0
 .../org/apache/xalan/templates/ElemMessage.java    |  130 +
 .../org/apache/xalan/templates/ElemNumber.java     | 2168 ++++++++++++
 .../org/apache/xalan/templates/ElemOtherwise.java  |   57 +
 .../java/org/apache/xalan/templates/ElemPI.java    |  230 ++
 .../java/org/apache/xalan/templates/ElemParam.java |  130 +
 .../java/org/apache/xalan/templates/ElemSort.java  |  349 ++
 .../org/apache/xalan/templates/ElemTemplate.java   |  421 +++
 .../xalan/templates/ElemTemplateElement.java       | 1666 +++++++++
 .../java/org/apache/xalan/templates/ElemText.java  |  148 +
 .../apache/xalan/templates/ElemTextLiteral.java    |  245 ++
 .../org/apache/xalan/templates/ElemUnknown.java    |    0
 .../java}/org/apache/xalan/templates/ElemUse.java  |    0
 .../org/apache/xalan/templates/ElemValueOf.java    |  335 ++
 .../org/apache/xalan/templates/ElemVariable.java   |  538 +++
 .../apache/xalan/templates/ElemVariablePsuedo.java |    0
 .../java/org/apache/xalan/templates/ElemWhen.java  |  126 +
 .../org/apache/xalan/templates/ElemWithParam.java  |  265 ++
 .../org/apache/xalan/templates/FuncDocument.java   |    0
 .../org/apache/xalan/templates/FuncFormatNumb.java |    0
 .../java}/org/apache/xalan/templates/FuncKey.java  |    0
 .../org/apache/xalan/templates/KeyDeclaration.java |    0
 .../org/apache/xalan/templates/NamespaceAlias.java |    0
 .../apache/xalan/templates/OutputProperties.java   |    0
 .../xalan/templates/RedundentExprEliminator.java   |    0
 .../org/apache/xalan/templates/Stylesheet.java     | 1516 +++++++++
 .../apache/xalan/templates/StylesheetComposed.java |    0
 .../org/apache/xalan/templates/StylesheetRoot.java |    0
 .../org/apache/xalan/templates/TemplateList.java   |    0
 .../templates/TemplateSubPatternAssociation.java   |    0
 .../apache/xalan/templates/VarNameCollector.java   |    0
 .../org/apache/xalan/templates/WhiteSpaceInfo.java |    0
 .../org/apache/xalan/templates/XMLNSDecl.java      |    0
 .../org/apache/xalan/templates/XSLTVisitable.java  |    0
 .../org/apache/xalan/templates/XSLTVisitor.java    |    0
 .../xalan/templates/XUnresolvedVariable.java       |    0
 .../xalan/templates/XUnresolvedVariableSimple.java |    0
 .../java}/org/apache/xalan/templates/package.html  |    0
 .../org/apache/xalan/trace/EndSelectionEvent.java  |    0
 .../org/apache/xalan/trace/ExtensionEvent.java     |    0
 .../org/apache/xalan/trace/GenerateEvent.java      |    0
 .../org/apache/xalan/trace/PrintTraceListener.java |    0
 .../org/apache/xalan/trace/SelectionEvent.java     |    0
 .../org/apache/xalan/trace/TraceListener.java      |    0
 .../org/apache/xalan/trace/TraceListenerEx.java    |    0
 .../org/apache/xalan/trace/TraceListenerEx2.java   |    0
 .../org/apache/xalan/trace/TraceListenerEx3.java   |    0
 .../java}/org/apache/xalan/trace/TraceManager.java |    0
 .../java}/org/apache/xalan/trace/TracerEvent.java  |    0
 .../main/java}/org/apache/xalan/trace/package.html |    0
 .../xalan/transformer/ClonerToResultTree.java      |    0
 .../org/apache/xalan/transformer/Counter.java      |    0
 .../apache/xalan/transformer/CountersTable.java    |    0
 .../apache/xalan/transformer/DecimalToRoman.java   |    0
 .../org/apache/xalan/transformer/KeyIterator.java  |    0
 .../org/apache/xalan/transformer/KeyManager.java   |    0
 .../apache/xalan/transformer/KeyRefIterator.java   |    0
 .../org/apache/xalan/transformer/KeyTable.java     |    0
 .../java}/org/apache/xalan/transformer/MsgMgr.java |    0
 .../org/apache/xalan/transformer/NodeSortKey.java  |    0
 .../org/apache/xalan/transformer/NodeSorter.java   |    0
 .../xalan/transformer/NumeratorFormatter.java      |    0
 .../org/apache/xalan/transformer/QueuedEvents.java |    0
 .../apache/xalan/transformer/ResultNameSpace.java  |    0
 .../xalan/transformer/SerializerSwitcher.java      |    0
 .../org/apache/xalan/transformer/StackGuard.java   |    0
 .../org/apache/xalan/transformer/TrAXFilter.java   |    0
 .../xalan/transformer/TransformSnapshot.java       |    0
 .../xalan/transformer/TransformSnapshotImpl.java   |    0
 .../apache/xalan/transformer/TransformState.java   |    0
 .../xalan/transformer/TransformerClient.java       |    0
 .../xalan/transformer/TransformerHandlerImpl.java  |    0
 .../xalan/transformer/TransformerIdentityImpl.java |    0
 .../apache/xalan/transformer/TransformerImpl.java  |    0
 .../xalan/transformer/TreeWalker2Result.java       |  156 +
 .../transformer/XSLInfiniteLoopException.java      |    0
 .../apache/xalan/transformer/XalanProperties.java  |    0
 .../xalan/transformer/XalanTransformState.java     |    0
 .../org/apache/xalan/transformer/package.html      |    0
 .../org/apache/xalan/xslt/EnvironmentCheck.java    |    0
 .../java}/org/apache/xalan/xslt/ObjectFactory.java |    0
 .../main/java}/org/apache/xalan/xslt/Process.java  |    0
 .../org/apache/xalan/xslt/SecuritySupport.java     |    0
 .../main/java}/org/apache/xalan/xslt/package.html  |    0
 .../xslt/util/XslTransformErrorLocatorHelper.java  |    0
 .../org/apache/xalan/xsltc/CollatorFactory.java    |    0
 .../src/main/java}/org/apache/xalan/xsltc/DOM.java |    0
 .../java}/org/apache/xalan/xsltc/DOMCache.java     |    0
 .../org/apache/xalan/xsltc/DOMEnhancedForDTM.java  |    0
 .../java}/org/apache/xalan/xsltc/NodeIterator.java |    0
 .../org/apache/xalan/xsltc/ProcessorVersion.java   |    0
 .../java}/org/apache/xalan/xsltc/StripFilter.java  |    0
 .../java}/org/apache/xalan/xsltc/Translet.java     |    0
 .../org/apache/xalan/xsltc/TransletException.java  |    0
 .../org/apache/xalan/xsltc/cmdline/Compile.java    |    0
 .../apache/xalan/xsltc/cmdline/ObjectFactory.java  |    0
 .../xalan/xsltc/cmdline/SecuritySupport.java       |    0
 .../org/apache/xalan/xsltc/cmdline/Transform.java  |    0
 .../apache/xalan/xsltc/cmdline/getopt/GetOpt.java  |    0
 .../xsltc/cmdline/getopt/GetOptsException.java     |    0
 .../cmdline/getopt/IllegalArgumentException.java   |    0
 .../cmdline/getopt/MissingOptArgException.java     |    0
 .../xalan/xsltc/compiler/AbsoluteLocationPath.java |    0
 .../xalan/xsltc/compiler/AbsolutePathPattern.java  |    0
 .../xalan/xsltc/compiler/AlternativePattern.java   |    0
 .../xalan/xsltc/compiler/AncestorPattern.java      |    0
 .../apache/xalan/xsltc/compiler/ApplyImports.java  |    0
 .../xalan/xsltc/compiler/ApplyTemplates.java       |    0
 .../apache/xalan/xsltc/compiler/ArgumentList.java  |    0
 .../org/apache/xalan/xsltc/compiler/Attribute.java |    0
 .../apache/xalan/xsltc/compiler/AttributeSet.java  |    0
 .../xalan/xsltc/compiler/AttributeValue.java       |    0
 .../xsltc/compiler/AttributeValueTemplate.java     |    0
 .../org/apache/xalan/xsltc/compiler/BinOpExpr.java |    0
 .../apache/xalan/xsltc/compiler/BooleanCall.java   |    0
 .../apache/xalan/xsltc/compiler/BooleanExpr.java   |    0
 .../apache/xalan/xsltc/compiler/CallTemplate.java  |    0
 .../org/apache/xalan/xsltc/compiler/CastCall.java  |    0
 .../org/apache/xalan/xsltc/compiler/CastExpr.java  |    0
 .../apache/xalan/xsltc/compiler/CeilingCall.java   |    0
 .../org/apache/xalan/xsltc/compiler/Choose.java    |    0
 .../org/apache/xalan/xsltc/compiler/Closure.java   |    0
 .../org/apache/xalan/xsltc/compiler/Comment.java   |    0
 .../xalan/xsltc/compiler/CompilerException.java    |    0
 .../apache/xalan/xsltc/compiler/ConcatCall.java    |    0
 .../org/apache/xalan/xsltc/compiler/Constants.java |    0
 .../apache/xalan/xsltc/compiler/ContainsCall.java  |    0
 .../org/apache/xalan/xsltc/compiler/Copy.java      |    0
 .../org/apache/xalan/xsltc/compiler/CopyOf.java    |    0
 .../apache/xalan/xsltc/compiler/CurrentCall.java   |    0
 .../xalan/xsltc/compiler/DecimalFormatting.java    |    0
 .../apache/xalan/xsltc/compiler/DocumentCall.java  |    0
 .../xalan/xsltc/compiler/ElementAvailableCall.java |    0
 .../apache/xalan/xsltc/compiler/EqualityExpr.java  |    0
 .../apache/xalan/xsltc/compiler/Expression.java    |    0
 .../org/apache/xalan/xsltc/compiler/Fallback.java  |    0
 .../apache/xalan/xsltc/compiler/FilterExpr.java    |    0
 .../xalan/xsltc/compiler/FilterParentPath.java     |    0
 .../compiler/FilteredAbsoluteLocationPath.java     |    0
 .../org/apache/xalan/xsltc/compiler/FloorCall.java |    0
 .../org/apache/xalan/xsltc/compiler/FlowList.java  |    0
 .../org/apache/xalan/xsltc/compiler/ForEach.java   |    0
 .../xalan/xsltc/compiler/FormatNumberCall.java     |    0
 .../xsltc/compiler/FunctionAvailableCall.java      |    0
 .../apache/xalan/xsltc/compiler/FunctionCall.java  |    0
 .../xalan/xsltc/compiler/GenerateIdCall.java       |    0
 .../apache/xalan/xsltc/compiler/IdKeyPattern.java  |    0
 .../org/apache/xalan/xsltc/compiler/IdPattern.java |    0
 .../java}/org/apache/xalan/xsltc/compiler/If.java  |    0
 .../xalan/xsltc/compiler/IllegalCharException.java |    0
 .../org/apache/xalan/xsltc/compiler/Import.java    |    0
 .../org/apache/xalan/xsltc/compiler/Include.java   |    0
 .../apache/xalan/xsltc/compiler/Instruction.java   |    0
 .../org/apache/xalan/xsltc/compiler/IntExpr.java   |    0
 .../java}/org/apache/xalan/xsltc/compiler/Key.java |    0
 .../org/apache/xalan/xsltc/compiler/KeyCall.java   |    0
 .../apache/xalan/xsltc/compiler/KeyPattern.java    |    0
 .../org/apache/xalan/xsltc/compiler/LangCall.java  |    0
 .../org/apache/xalan/xsltc/compiler/LastCall.java  |    0
 .../xalan/xsltc/compiler/LiteralAttribute.java     |    0
 .../xalan/xsltc/compiler/LiteralElement.java       |    0
 .../apache/xalan/xsltc/compiler/LiteralExpr.java   |    0
 .../apache/xalan/xsltc/compiler/LocalNameCall.java |    0
 .../xalan/xsltc/compiler/LocationPathPattern.java  |    0
 .../apache/xalan/xsltc/compiler/LogicalExpr.java   |    0
 .../org/apache/xalan/xsltc/compiler/Makefile.inc   |    0
 .../org/apache/xalan/xsltc/compiler/Message.java   |    0
 .../org/apache/xalan/xsltc/compiler/Mode.java      |    0
 .../org/apache/xalan/xsltc/compiler/NameBase.java  |    0
 .../org/apache/xalan/xsltc/compiler/NameCall.java  |    0
 .../xalan/xsltc/compiler/NamespaceAlias.java       |    0
 .../xalan/xsltc/compiler/NamespaceUriCall.java     |    0
 .../org/apache/xalan/xsltc/compiler/NodeTest.java  |    0
 .../org/apache/xalan/xsltc/compiler/NotCall.java   |    0
 .../org/apache/xalan/xsltc/compiler/Number.java    |    0
 .../apache/xalan/xsltc/compiler/NumberCall.java    |    0
 .../apache/xalan/xsltc/compiler/ObjectFactory.java |    0
 .../org/apache/xalan/xsltc/compiler/Otherwise.java |    0
 .../org/apache/xalan/xsltc/compiler/Output.java    |    0
 .../org/apache/xalan/xsltc/compiler/Param.java     |    0
 .../apache/xalan/xsltc/compiler/ParameterRef.java  |    0
 .../xalan/xsltc/compiler/ParentLocationPath.java   |    0
 .../apache/xalan/xsltc/compiler/ParentPattern.java |    0
 .../org/apache/xalan/xsltc/compiler/Parser.java    |    0
 .../org/apache/xalan/xsltc/compiler/Pattern.java   |    0
 .../apache/xalan/xsltc/compiler/PositionCall.java  |    0
 .../org/apache/xalan/xsltc/compiler/Predicate.java |    0
 .../xsltc/compiler/ProcessingInstruction.java      |    0
 .../compiler/ProcessingInstructionPattern.java     |    0
 .../org/apache/xalan/xsltc/compiler/QName.java     |    0
 .../org/apache/xalan/xsltc/compiler/RealExpr.java  |    0
 .../xalan/xsltc/compiler/RelationalExpr.java       |    0
 .../xalan/xsltc/compiler/RelativeLocationPath.java |    0
 .../xalan/xsltc/compiler/RelativePathPattern.java  |    0
 .../org/apache/xalan/xsltc/compiler/RoundCall.java |    0
 .../xalan/xsltc/compiler/SecuritySupport.java      |    0
 .../xalan/xsltc/compiler/SimpleAttributeValue.java |    0
 .../org/apache/xalan/xsltc/compiler/Sort.java      |    0
 .../apache/xalan/xsltc/compiler/SourceLoader.java  |    0
 .../xalan/xsltc/compiler/StartsWithCall.java       |    0
 .../org/apache/xalan/xsltc/compiler/Step.java      |    0
 .../apache/xalan/xsltc/compiler/StepPattern.java   |    0
 .../apache/xalan/xsltc/compiler/StringCall.java    |    0
 .../xalan/xsltc/compiler/StringLengthCall.java     |    0
 .../apache/xalan/xsltc/compiler/Stylesheet.java    |    0
 .../apache/xalan/xsltc/compiler/SymbolTable.java   |    0
 .../xalan/xsltc/compiler/SyntaxTreeNode.java       |    0
 .../org/apache/xalan/xsltc/compiler/Template.java  |    0
 .../org/apache/xalan/xsltc/compiler/TestSeq.java   |    0
 .../org/apache/xalan/xsltc/compiler/Text.java      |    0
 .../xalan/xsltc/compiler/TopLevelElement.java      |    0
 .../xalan/xsltc/compiler/TransletOutput.java       |    0
 .../apache/xalan/xsltc/compiler/UnaryOpExpr.java   |    0
 .../apache/xalan/xsltc/compiler/UnionPathExpr.java |    0
 .../xsltc/compiler/UnparsedEntityUriCall.java      |    0
 .../apache/xalan/xsltc/compiler/UnresolvedRef.java |    0
 .../xalan/xsltc/compiler/UnsupportedElement.java   |    0
 .../xalan/xsltc/compiler/UseAttributeSets.java     |    0
 .../org/apache/xalan/xsltc/compiler/ValueOf.java   |    0
 .../org/apache/xalan/xsltc/compiler/Variable.java  |    0
 .../apache/xalan/xsltc/compiler/VariableBase.java  |    0
 .../apache/xalan/xsltc/compiler/VariableRef.java   |    0
 .../xalan/xsltc/compiler/VariableRefBase.java      |    0
 .../org/apache/xalan/xsltc/compiler/When.java      |    0
 .../apache/xalan/xsltc/compiler/Whitespace.java    |    0
 .../org/apache/xalan/xsltc/compiler/WithParam.java |    0
 .../apache/xalan/xsltc/compiler/XPathParser.java   | 3174 +++++++++++++++++
 .../org/apache/xalan/xsltc/compiler/XSLTC.java     |    0
 .../apache/xalan/xsltc/compiler/XslAttribute.java  |    0
 .../apache/xalan/xsltc/compiler/XslElement.java    |    0
 .../java/org/apache/xalan/xsltc/compiler/sym.java  |  124 +
 .../compiler/util/AttributeSetMethodGenerator.java |    0
 .../xalan/xsltc/compiler/util/BooleanType.java     |    0
 .../xalan/xsltc/compiler/util/ClassGenerator.java  |    0
 .../xsltc/compiler/util/CompareGenerator.java      |    0
 .../xalan/xsltc/compiler/util/ErrorMessages.java   |    0
 .../xsltc/compiler/util/ErrorMessages_ca.java      |    0
 .../xsltc/compiler/util/ErrorMessages_cs.java      |    0
 .../xsltc/compiler/util/ErrorMessages_de.java      |    0
 .../xsltc/compiler/util/ErrorMessages_es.java      |    0
 .../xsltc/compiler/util/ErrorMessages_fr.java      |    0
 .../xsltc/compiler/util/ErrorMessages_hu.java      |    0
 .../xsltc/compiler/util/ErrorMessages_it.java      |    0
 .../xsltc/compiler/util/ErrorMessages_ja.java      |    0
 .../xsltc/compiler/util/ErrorMessages_ko.java      |    0
 .../xsltc/compiler/util/ErrorMessages_no.java      |    0
 .../xsltc/compiler/util/ErrorMessages_pl.java      |    0
 .../xsltc/compiler/util/ErrorMessages_pt_BR.java   |    0
 .../xsltc/compiler/util/ErrorMessages_ru.java      |    0
 .../xsltc/compiler/util/ErrorMessages_sk.java      |    0
 .../xsltc/compiler/util/ErrorMessages_sl.java      |    0
 .../xsltc/compiler/util/ErrorMessages_tr.java      |    0
 .../xsltc/compiler/util/ErrorMessages_zh.java      |    0
 .../xsltc/compiler/util/ErrorMessages_zh_TW.java   |    0
 .../apache/xalan/xsltc/compiler/util/ErrorMsg.java |    0
 .../xalan/xsltc/compiler/util/FilterGenerator.java |    0
 .../apache/xalan/xsltc/compiler/util/IntType.java  |    0
 .../xalan/xsltc/compiler/util/InternalError.java   |    0
 .../xsltc/compiler/util/MarkerInstruction.java     |    0
 .../xalan/xsltc/compiler/util/MatchGenerator.java  |    0
 .../xalan/xsltc/compiler/util/MethodGenerator.java |    0
 .../xalan/xsltc/compiler/util/MethodType.java      |    0
 .../xalan/xsltc/compiler/util/MultiHashtable.java  |    0
 .../xsltc/compiler/util/NamedMethodGenerator.java  |    0
 .../xsltc/compiler/util/NodeCounterGenerator.java  |    0
 .../xalan/xsltc/compiler/util/NodeSetType.java     |    0
 .../compiler/util/NodeSortRecordFactGenerator.java |    0
 .../compiler/util/NodeSortRecordGenerator.java     |    0
 .../apache/xalan/xsltc/compiler/util/NodeType.java |    0
 .../xalan/xsltc/compiler/util/NumberType.java      |    0
 .../xalan/xsltc/compiler/util/ObjectFactory.java   |    0
 .../xalan/xsltc/compiler/util/ObjectType.java      |    0
 .../xsltc/compiler/util/OutlineableChunkEnd.java   |    0
 .../xsltc/compiler/util/OutlineableChunkStart.java |    0
 .../apache/xalan/xsltc/compiler/util/RealType.java |    0
 .../xalan/xsltc/compiler/util/ReferenceType.java   |    0
 .../xalan/xsltc/compiler/util/ResultTreeType.java  |    0
 .../xsltc/compiler/util/RtMethodGenerator.java     |    0
 .../xalan/xsltc/compiler/util/SecuritySupport.java |    0
 .../xalan/xsltc/compiler/util/SlotAllocator.java   |    0
 .../xalan/xsltc/compiler/util/StringStack.java     |    0
 .../xalan/xsltc/compiler/util/StringType.java      |    0
 .../xalan/xsltc/compiler/util/TestGenerator.java   |    0
 .../org/apache/xalan/xsltc/compiler/util/Type.java |    0
 .../xalan/xsltc/compiler/util/TypeCheckError.java  |    0
 .../org/apache/xalan/xsltc/compiler/util/Util.java |    0
 .../apache/xalan/xsltc/compiler/util/VoidType.java |    0
 .../org/apache/xalan/xsltc/compiler/xpath.cup      |    0
 .../java/org/apache/xalan/xsltc/compiler/xpath.lex |  275 ++
 .../apache/xalan/xsltc/dom/AbsoluteIterator.java   |    0
 .../xalan/xsltc/dom/AdaptiveResultTreeImpl.java    |    0
 .../org/apache/xalan/xsltc/dom/AnyNodeCounter.java |    0
 .../xalan/xsltc/dom/ArrayNodeListIterator.java     |    0
 .../java}/org/apache/xalan/xsltc/dom/BitArray.java |    0
 .../xalan/xsltc/dom/CachedNodeListIterator.java    |    0
 .../xalan/xsltc/dom/ClonedNodeListIterator.java    |    0
 .../xalan/xsltc/dom/CollatorFactoryBase.java       |    0
 .../xalan/xsltc/dom/CurrentNodeListFilter.java     |    0
 .../xalan/xsltc/dom/CurrentNodeListIterator.java   |    0
 .../org/apache/xalan/xsltc/dom/DOMAdapter.java     |    0
 .../org/apache/xalan/xsltc/dom/DOMBuilder.java     |    0
 .../org/apache/xalan/xsltc/dom/DOMWSFilter.java    |    0
 .../org/apache/xalan/xsltc/dom/DocumentCache.java  |    0
 .../apache/xalan/xsltc/dom/DupFilterIterator.java  |    0
 .../org/apache/xalan/xsltc/dom/EmptyFilter.java    |    0
 .../org/apache/xalan/xsltc/dom/ExtendedSAX.java    |    0
 .../java}/org/apache/xalan/xsltc/dom/Filter.java   |    0
 .../org/apache/xalan/xsltc/dom/FilterIterator.java |    0
 .../xalan/xsltc/dom/FilteredStepIterator.java      |    0
 .../xalan/xsltc/dom/ForwardPositionIterator.java   |    0
 .../java}/org/apache/xalan/xsltc/dom/KeyIndex.java |    0
 .../org/apache/xalan/xsltc/dom/LoadDocument.java   |    0
 .../apache/xalan/xsltc/dom/MatchingIterator.java   |    0
 .../java}/org/apache/xalan/xsltc/dom/MultiDOM.java |    0
 .../xsltc/dom/MultiValuedNodeHeapIterator.java     |    0
 .../xalan/xsltc/dom/MultipleNodeCounter.java       |    0
 .../org/apache/xalan/xsltc/dom/NodeCounter.java    |    0
 .../apache/xalan/xsltc/dom/NodeIteratorBase.java   |    0
 .../org/apache/xalan/xsltc/dom/NodeSortRecord.java |    0
 .../xalan/xsltc/dom/NodeSortRecordFactory.java     |    0
 .../org/apache/xalan/xsltc/dom/NthIterator.java    |    0
 .../org/apache/xalan/xsltc/dom/ObjectFactory.java  |    0
 .../java}/org/apache/xalan/xsltc/dom/SAXImpl.java  |    0
 .../apache/xalan/xsltc/dom/SecuritySupport.java    |    0
 .../xalan/xsltc/dom/SimpleResultTreeImpl.java      |    0
 .../apache/xalan/xsltc/dom/SingleNodeCounter.java  |    0
 .../apache/xalan/xsltc/dom/SingletonIterator.java  |    0
 .../org/apache/xalan/xsltc/dom/SortSettings.java   |    0
 .../apache/xalan/xsltc/dom/SortingIterator.java    |    0
 .../org/apache/xalan/xsltc/dom/StepIterator.java   |    0
 .../xalan/xsltc/dom/StripWhitespaceFilter.java     |    0
 .../org/apache/xalan/xsltc/dom/UnionIterator.java  |    0
 .../apache/xalan/xsltc/dom/XSLTCDTMManager.java    |    0
 .../xsltc/javax.xml.transform.TransformerFactory   |    0
 .../xalan/xsltc/runtime/AbstractTranslet.java      |    0
 .../apache/xalan/xsltc/runtime/AttributeList.java  |    0
 .../org/apache/xalan/xsltc/runtime/Attributes.java |    0
 .../apache/xalan/xsltc/runtime/BasisLibrary.java   |    0
 .../org/apache/xalan/xsltc/runtime/Constants.java  |    0
 .../apache/xalan/xsltc/runtime/ErrorMessages.java  |    0
 .../xalan/xsltc/runtime/ErrorMessages_ca.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_cs.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_de.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_es.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_fr.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_hu.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_it.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_ja.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_ko.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_no.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_pl.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_pt_BR.java   |    0
 .../xalan/xsltc/runtime/ErrorMessages_ru.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_sk.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_sl.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_tr.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_zh.java      |    0
 .../xalan/xsltc/runtime/ErrorMessages_zh_TW.java   |    0
 .../org/apache/xalan/xsltc/runtime/Hashtable.java  |    0
 .../xalan/xsltc/runtime/InternalRuntimeError.java  |    0
 .../apache/xalan/xsltc/runtime/MessageHandler.java |    0
 .../java}/org/apache/xalan/xsltc/runtime/Node.java |    0
 .../apache/xalan/xsltc/runtime/ObjectFactory.java  |    0
 .../org/apache/xalan/xsltc/runtime/Operators.java  |    0
 .../org/apache/xalan/xsltc/runtime/Parameter.java  |    0
 .../xalan/xsltc/runtime/SecuritySupport.java       |    0
 .../xalan/xsltc/runtime/StringValueHandler.java    |    0
 .../xalan/xsltc/runtime/output/OutputBuffer.java   |    0
 .../xsltc/runtime/output/StringOutputBuffer.java   |    0
 .../output/TransletOutputHandlerFactory.java       |    0
 .../xsltc/runtime/output/WriterOutputBuffer.java   |    0
 .../java}/org/apache/xalan/xsltc/trax/DOM2SAX.java |    0
 .../java}/org/apache/xalan/xsltc/trax/DOM2TO.java  |    0
 .../org/apache/xalan/xsltc/trax/ObjectFactory.java |    0
 .../apache/xalan/xsltc/trax/OutputSettings.java    |    0
 .../java}/org/apache/xalan/xsltc/trax/SAX2DOM.java |    0
 .../apache/xalan/xsltc/trax/SecuritySupport.java   |    0
 .../xsltc/trax/SmartTransformerFactoryImpl.java    |    0
 .../xalan/xsltc/trax/TemplatesHandlerImpl.java     |    0
 .../org/apache/xalan/xsltc/trax/TemplatesImpl.java |    0
 .../org/apache/xalan/xsltc/trax/TrAXFilter.java    |    0
 .../xalan/xsltc/trax/TransformerFactoryImpl.java   |    0
 .../xalan/xsltc/trax/TransformerHandlerImpl.java   |    0
 .../apache/xalan/xsltc/trax/TransformerImpl.java   |    0
 .../java}/org/apache/xalan/xsltc/trax/Util.java    |    0
 .../org/apache/xalan/xsltc/trax/XSLTCSource.java   |    0
 .../org/apache/xalan/xsltc/util/IntegerArray.java  |    0
 .../src/main/java}/org/apache/xml/dtm/Axis.java    |    0
 .../src/main/java}/org/apache/xml/dtm/DTM.java     |    0
 .../java}/org/apache/xml/dtm/DTMAxisIterator.java  |    0
 .../java}/org/apache/xml/dtm/DTMAxisTraverser.java |    0
 .../apache/xml/dtm/DTMConfigurationException.java  |    0
 .../java}/org/apache/xml/dtm/DTMDOMException.java  |    0
 .../java}/org/apache/xml/dtm/DTMException.java     |    0
 .../main/java}/org/apache/xml/dtm/DTMFilter.java   |    0
 .../main/java}/org/apache/xml/dtm/DTMIterator.java |    0
 .../main/java}/org/apache/xml/dtm/DTMManager.java  |    0
 .../main/java}/org/apache/xml/dtm/DTMWSFilter.java |    0
 .../java}/org/apache/xml/dtm/ObjectFactory.java    |    0
 .../java}/org/apache/xml/dtm/SecuritySupport.java  |    0
 .../org/apache/xml/dtm/ref/ChunkedIntArray.java    |    0
 .../org/apache/xml/dtm/ref/CoroutineManager.java   |    0
 .../org/apache/xml/dtm/ref/CoroutineParser.java    |    0
 .../org/apache/xml/dtm/ref/CustomStringPool.java   |    0
 .../apache/xml/dtm/ref/DTMAxisIterNodeList.java    |    0
 .../apache/xml/dtm/ref/DTMAxisIteratorBase.java    |    0
 .../apache/xml/dtm/ref/DTMChildIterNodeList.java   |    0
 .../org/apache/xml/dtm/ref/DTMDefaultBase.java     |    0
 .../xml/dtm/ref/DTMDefaultBaseIterators.java       |    0
 .../xml/dtm/ref/DTMDefaultBaseTraversers.java      |    0
 .../org/apache/xml/dtm/ref/DTMDocumentImpl.java    |    0
 .../org/apache/xml/dtm/ref/DTMManagerDefault.java  |    0
 .../org/apache/xml/dtm/ref/DTMNamedNodeMap.java    |    0
 .../org/apache/xml/dtm/ref/DTMNodeIterator.java    |    0
 .../java}/org/apache/xml/dtm/ref/DTMNodeList.java  |    0
 .../org/apache/xml/dtm/ref/DTMNodeListBase.java    |    0
 .../java}/org/apache/xml/dtm/ref/DTMNodeProxy.java |    0
 .../org/apache/xml/dtm/ref/DTMSafeStringPool.java  |    0
 .../org/apache/xml/dtm/ref/DTMStringPool.java      |    0
 .../org/apache/xml/dtm/ref/DTMTreeWalker.java      |    0
 .../org/apache/xml/dtm/ref/EmptyIterator.java      |    0
 .../org/apache/xml/dtm/ref/ExpandedNameTable.java  |    0
 .../java}/org/apache/xml/dtm/ref/ExtendedType.java |    0
 .../apache/xml/dtm/ref/IncrementalSAXSource.java   |    0
 .../xml/dtm/ref/IncrementalSAXSource_Filter.java   |    0
 .../xml/dtm/ref/IncrementalSAXSource_Xerces.java   |    0
 .../java}/org/apache/xml/dtm/ref/NodeLocator.java  |    0
 .../org/apache/xml/dtm/ref/ObjectFactory.java      |    0
 .../org/apache/xml/dtm/ref/SecuritySupport.java    |    0
 .../org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java    |    0
 .../DOM2DTMdefaultNamespaceDeclarationNode.java    |    0
 .../org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java    |    0
 .../org/apache/xml/dtm/ref/sax2dtm/SAX2DTM2.java   |    0
 .../org/apache/xml/dtm/ref/sax2dtm/SAX2RTFDTM.java |    0
 .../org/apache/xml/res/XMLErrorResources.java      |    0
 .../org/apache/xml/res/XMLErrorResources_ca.java   |    0
 .../org/apache/xml/res/XMLErrorResources_cs.java   |    0
 .../org/apache/xml/res/XMLErrorResources_de.java   |    0
 .../org/apache/xml/res/XMLErrorResources_en.java   |    0
 .../org/apache/xml/res/XMLErrorResources_es.java   |    0
 .../org/apache/xml/res/XMLErrorResources_fr.java   |    0
 .../org/apache/xml/res/XMLErrorResources_hu.java   |    0
 .../org/apache/xml/res/XMLErrorResources_it.java   |    0
 .../org/apache/xml/res/XMLErrorResources_ja.java   |    0
 .../org/apache/xml/res/XMLErrorResources_ko.java   |    0
 .../org/apache/xml/res/XMLErrorResources_pl.java   |    0
 .../apache/xml/res/XMLErrorResources_pt_BR.java    |    0
 .../org/apache/xml/res/XMLErrorResources_ru.java   |    0
 .../org/apache/xml/res/XMLErrorResources_sk.java   |    0
 .../org/apache/xml/res/XMLErrorResources_sl.java   |    0
 .../org/apache/xml/res/XMLErrorResources_sv.java   |    0
 .../org/apache/xml/res/XMLErrorResources_tr.java   |    0
 .../org/apache/xml/res/XMLErrorResources_zh.java   |    0
 .../apache/xml/res/XMLErrorResources_zh_TW.java    |    0
 .../main/java/org/apache/xml/res/XMLMessages.java  |  214 ++
 .../main/java}/org/apache/xml/utils/AttList.java   |    0
 .../main/java/org/apache/xml/utils/BoolStack.java  |  202 ++
 .../main/java}/org/apache/xml/utils/Constants.java |    0
 .../java}/org/apache/xml/utils/DOM2Helper.java     |    0
 .../java}/org/apache/xml/utils/DOMBuilder.java     |    0
 .../main/java}/org/apache/xml/utils/DOMHelper.java |    0
 .../main/java}/org/apache/xml/utils/DOMOrder.java  |    0
 .../org/apache/xml/utils/DefaultErrorHandler.java  |    0
 .../main/java}/org/apache/xml/utils/ElemDesc.java  |    0
 .../org/apache/xml/utils/FastStringBuffer.java     |    0
 .../java}/org/apache/xml/utils/Hashtree2Node.java  |    0
 .../main/java/org/apache/xml/utils/IntStack.java   |  210 ++
 .../main/java}/org/apache/xml/utils/IntVector.java |    0
 .../org/apache/xml/utils/ListingErrorHandler.java  |    0
 .../java}/org/apache/xml/utils/LocaleUtility.java  |    0
 .../org/apache/xml/utils/MutableAttrListImpl.java  |    0
 .../main/java}/org/apache/xml/utils/NSInfo.java    |    0
 .../main/java}/org/apache/xml/utils/NameSpace.java |    0
 .../org/apache/xml/utils/NamespaceSupport2.java    |    0
 .../java}/org/apache/xml/utils/NodeConsumer.java   |    0
 .../java}/org/apache/xml/utils/NodeVector.java     |    0
 .../java}/org/apache/xml/utils/ObjectFactory.java  |    0
 .../java}/org/apache/xml/utils/ObjectPool.java     |    0
 .../java/org/apache/xml/utils/ObjectStack.java     |  214 ++
 .../java}/org/apache/xml/utils/ObjectVector.java   |    0
 .../java}/org/apache/xml/utils/PrefixResolver.java |    0
 .../apache/xml/utils/PrefixResolverDefault.java    |    0
 .../src/main/java}/org/apache/xml/utils/QName.java |    0
 .../org/apache/xml/utils/RawCharacterHandler.java  |    0
 .../org/apache/xml/utils/SAXSourceLocator.java     |    0
 .../org/apache/xml/utils/SecuritySupport.java      |    0
 .../apache/xml/utils/SerializableLocatorImpl.java  |    0
 .../org/apache/xml/utils/StopParseException.java   |    0
 .../org/apache/xml/utils/StringBufferPool.java     |    0
 .../org/apache/xml/utils/StringComparable.java     |    0
 .../org/apache/xml/utils/StringToIntTable.java     |    0
 .../org/apache/xml/utils/StringToStringTable.java  |    0
 .../xml/utils/StringToStringTableVector.java       |    0
 .../java}/org/apache/xml/utils/StringVector.java   |    0
 .../org/apache/xml/utils/StylesheetPIHandler.java  |    0
 .../apache/xml/utils/SuballocatedByteVector.java   |    0
 .../apache/xml/utils/SuballocatedIntVector.java    |    0
 .../org/apache/xml/utils/SystemIDResolver.java     |    0
 .../apache/xml/utils/ThreadControllerWrapper.java  |    0
 .../java}/org/apache/xml/utils/TreeWalker.java     |    0
 .../src/main/java}/org/apache/xml/utils/URI.java   |    0
 .../main/java/org/apache/xml/utils/UnImplNode.java | 1992 +++++++++++
 .../apache/xml/utils/WrappedRuntimeException.java  |    0
 .../org/apache/xml/utils/WrongParserException.java |    0
 .../main/java}/org/apache/xml/utils/XML11Char.java |    0
 .../main/java}/org/apache/xml/utils/XMLChar.java   |    0
 .../apache/xml/utils/XMLCharacterRecognizer.java   |    0
 .../org/apache/xml/utils/XMLReaderManager.java     |    0
 .../main/java}/org/apache/xml/utils/XMLString.java |    0
 .../org/apache/xml/utils/XMLStringDefault.java     |    0
 .../org/apache/xml/utils/XMLStringFactory.java     |    0
 .../apache/xml/utils/XMLStringFactoryDefault.java  |    0
 .../main/java}/org/apache/xml/utils/package.html   |    0
 .../org/apache/xml/utils/res/CharArrayWrapper.java |    0
 .../org/apache/xml/utils/res/IntArrayWrapper.java  |    0
 .../org/apache/xml/utils/res/LongArrayWrapper.java |    0
 .../apache/xml/utils/res/StringArrayWrapper.java   |    0
 .../org/apache/xml/utils/res/XResourceBundle.java  |    0
 .../apache/xml/utils/res/XResourceBundleBase.java  |    0
 .../org/apache/xml/utils/res/XResources_cy.java    |    0
 .../org/apache/xml/utils/res/XResources_de.java    |    0
 .../org/apache/xml/utils/res/XResources_el.java    |    0
 .../org/apache/xml/utils/res/XResources_en.java    |    0
 .../org/apache/xml/utils/res/XResources_es.java    |    0
 .../org/apache/xml/utils/res/XResources_fr.java    |    0
 .../org/apache/xml/utils/res/XResources_he.java    |    0
 .../org/apache/xml/utils/res/XResources_hy.java    |    0
 .../org/apache/xml/utils/res/XResources_it.java    |    0
 .../apache/xml/utils/res/XResources_ja_JP_A.java   |    0
 .../apache/xml/utils/res/XResources_ja_JP_HA.java  |    0
 .../apache/xml/utils/res/XResources_ja_JP_HI.java  |    0
 .../apache/xml/utils/res/XResources_ja_JP_I.java   |    0
 .../org/apache/xml/utils/res/XResources_ka.java    |    0
 .../org/apache/xml/utils/res/XResources_ko.java    |    0
 .../org/apache/xml/utils/res/XResources_sv.java    |    0
 .../org/apache/xml/utils/res/XResources_zh_CN.java |    0
 .../org/apache/xml/utils/res/XResources_zh_TW.java |    0
 .../src/main/java}/org/apache/xpath/Arg.java       |    0
 .../java}/org/apache/xpath/CachedXPathAPI.java     |    0
 .../main/java}/org/apache/xpath/Expression.java    |    0
 .../main/java/org/apache/xpath/ExpressionNode.java |   60 +
 .../java}/org/apache/xpath/ExpressionOwner.java    |    0
 .../java}/org/apache/xpath/ExtensionsProvider.java |    0
 .../main/java}/org/apache/xpath/FoundIndex.java    |    0
 .../src/main/java}/org/apache/xpath/NodeSet.java   |    0
 .../main/java}/org/apache/xpath/NodeSetDTM.java    |    0
 .../main/java}/org/apache/xpath/SourceTree.java    |    0
 .../java}/org/apache/xpath/SourceTreeManager.java  |    0
 .../main/java}/org/apache/xpath/VariableStack.java |    0
 .../xpath/WhitespaceStrippingElementMatcher.java   |   54 +
 .../src/main/java}/org/apache/xpath/XPath.java     |    0
 .../src/main/java}/org/apache/xpath/XPathAPI.java  |    0
 .../main/java}/org/apache/xpath/XPathContext.java  |    0
 .../java}/org/apache/xpath/XPathException.java     |    0
 .../main/java}/org/apache/xpath/XPathFactory.java  |    0
 .../org/apache/xpath/XPathProcessorException.java  |    0
 .../java}/org/apache/xpath/XPathVisitable.java     |    0
 .../main/java}/org/apache/xpath/XPathVisitor.java  |    0
 .../org/apache/xpath/axes/AttributeIterator.java   |    0
 .../java}/org/apache/xpath/axes/AxesWalker.java    |    0
 .../org/apache/xpath/axes/BasicTestIterator.java   |    0
 .../java}/org/apache/xpath/axes/ChildIterator.java |    0
 .../org/apache/xpath/axes/ChildTestIterator.java   |    0
 .../org/apache/xpath/axes/ContextNodeList.java     |    0
 .../org/apache/xpath/axes/DescendantIterator.java  |    0
 .../org/apache/xpath/axes/FilterExprIterator.java  |    0
 .../xpath/axes/FilterExprIteratorSimple.java       |    0
 .../org/apache/xpath/axes/FilterExprWalker.java    |    0
 .../xpath/axes/HasPositionalPredChecker.java       |    0
 .../java}/org/apache/xpath/axes/IteratorPool.java  |    0
 .../org/apache/xpath/axes/LocPathIterator.java     | 1033 ++++++
 .../apache/xpath/axes/MatchPatternIterator.java    |    0
 .../java}/org/apache/xpath/axes/NodeSequence.java  |    0
 .../org/apache/xpath/axes/OneStepIterator.java     |    0
 .../apache/xpath/axes/OneStepIteratorForward.java  |  172 +
 .../java}/org/apache/xpath/axes/PathComponent.java |    0
 .../org/apache/xpath/axes/PredicatedNodeTest.java  |    0
 .../java}/org/apache/xpath/axes/RTFIterator.java   |    0
 .../org/apache/xpath/axes/ReverseAxesWalker.java   |    0
 .../apache/xpath/axes/SelfIteratorNoPredicate.java |    0
 .../org/apache/xpath/axes/SubContextList.java      |    0
 .../org/apache/xpath/axes/UnionChildIterator.java  |    0
 .../org/apache/xpath/axes/UnionPathIterator.java   |    0
 .../java}/org/apache/xpath/axes/WalkerFactory.java |    0
 .../org/apache/xpath/axes/WalkingIterator.java     |    0
 .../apache/xpath/axes/WalkingIteratorSorted.java   |    0
 .../main/java}/org/apache/xpath/axes/package.html  |    0
 .../java}/org/apache/xpath/compiler/Compiler.java  |    0
 .../org/apache/xpath/compiler/FunctionTable.java   |    0
 .../java}/org/apache/xpath/compiler/Keywords.java  |    0
 .../java}/org/apache/xpath/compiler/Lexer.java     |    0
 .../java}/org/apache/xpath/compiler/OpCodes.java   |    0
 .../java}/org/apache/xpath/compiler/OpMap.java     |    0
 .../org/apache/xpath/compiler/OpMapVector.java     |    0
 .../org/apache/xpath/compiler/PsuedoNames.java     |    0
 .../org/apache/xpath/compiler/XPathDumper.java     |    0
 .../org/apache/xpath/compiler/XPathParser.java     |    0
 .../java}/org/apache/xpath/compiler/package.html   |    0
 .../apache/xpath/domapi/XPathEvaluatorImpl.java    |    0
 .../apache/xpath/domapi/XPathExpressionImpl.java   |    0
 .../apache/xpath/domapi/XPathNSResolverImpl.java   |    0
 .../apache/xpath/domapi/XPathNamespaceImpl.java    |    0
 .../org/apache/xpath/domapi/XPathResultImpl.java   |    0
 .../xpath/domapi/XPathStylesheetDOM3Exception.java |    0
 .../java}/org/apache/xpath/domapi/package.html     |    0
 .../org/apache/xpath/functions/FuncBoolean.java    |    0
 .../org/apache/xpath/functions/FuncCeiling.java    |    0
 .../org/apache/xpath/functions/FuncConcat.java     |    0
 .../org/apache/xpath/functions/FuncContains.java   |    0
 .../org/apache/xpath/functions/FuncCount.java      |    0
 .../org/apache/xpath/functions/FuncCurrent.java    |    0
 .../apache/xpath/functions/FuncDoclocation.java    |    0
 .../xpath/functions/FuncExtElementAvailable.java   |    0
 .../apache/xpath/functions/FuncExtFunction.java    |    0
 .../xpath/functions/FuncExtFunctionAvailable.java  |    0
 .../org/apache/xpath/functions/FuncFalse.java      |    0
 .../org/apache/xpath/functions/FuncFloor.java      |    0
 .../org/apache/xpath/functions/FuncGenerateId.java |    0
 .../java}/org/apache/xpath/functions/FuncId.java   |    0
 .../java}/org/apache/xpath/functions/FuncLang.java |    0
 .../java}/org/apache/xpath/functions/FuncLast.java |    0
 .../org/apache/xpath/functions/FuncLocalPart.java  |    0
 .../org/apache/xpath/functions/FuncNamespace.java  |    0
 .../apache/xpath/functions/FuncNormalizeSpace.java |    0
 .../java}/org/apache/xpath/functions/FuncNot.java  |    0
 .../org/apache/xpath/functions/FuncNumber.java     |    0
 .../org/apache/xpath/functions/FuncPosition.java   |    0
 .../org/apache/xpath/functions/FuncQname.java      |    0
 .../org/apache/xpath/functions/FuncRound.java      |    0
 .../org/apache/xpath/functions/FuncStartsWith.java |    0
 .../org/apache/xpath/functions/FuncString.java     |    0
 .../apache/xpath/functions/FuncStringLength.java   |    0
 .../org/apache/xpath/functions/FuncSubstring.java  |    0
 .../apache/xpath/functions/FuncSubstringAfter.java |    0
 .../xpath/functions/FuncSubstringBefore.java       |    0
 .../java}/org/apache/xpath/functions/FuncSum.java  |    0
 .../apache/xpath/functions/FuncSystemProperty.java |    0
 .../org/apache/xpath/functions/FuncTranslate.java  |    0
 .../java}/org/apache/xpath/functions/FuncTrue.java |    0
 .../xpath/functions/FuncUnparsedEntityURI.java     |    0
 .../java}/org/apache/xpath/functions/Function.java |    0
 .../org/apache/xpath/functions/Function2Args.java  |    0
 .../org/apache/xpath/functions/Function3Args.java  |    0
 .../apache/xpath/functions/FunctionDef1Arg.java    |    0
 .../apache/xpath/functions/FunctionMultiArgs.java  |    0
 .../org/apache/xpath/functions/FunctionOneArg.java |    0
 .../org/apache/xpath/functions/ObjectFactory.java  |    0
 .../apache/xpath/functions/SecuritySupport.java    |    0
 .../xpath/functions/WrongNumberArgsException.java  |    0
 .../java}/org/apache/xpath/functions/package.html  |    0
 .../apache/xpath/jaxp/JAXPExtensionsProvider.java  |    0
 .../org/apache/xpath/jaxp/JAXPPrefixResolver.java  |    0
 .../org/apache/xpath/jaxp/JAXPVariableStack.java   |    0
 .../org/apache/xpath/jaxp/XPathExpressionImpl.java |    0
 .../org/apache/xpath/jaxp/XPathFactoryImpl.java    |    0
 .../java}/org/apache/xpath/jaxp/XPathImpl.java     |    0
 .../org/apache/xpath/objects/DTMXRTreeFrag.java    |    0
 .../java}/org/apache/xpath/objects/XBoolean.java   |    0
 .../org/apache/xpath/objects/XBooleanStatic.java   |    0
 .../apache/xpath/objects/XMLStringFactoryImpl.java |    0
 .../java}/org/apache/xpath/objects/XNodeSet.java   |    0
 .../org/apache/xpath/objects/XNodeSetForDOM.java   |    0
 .../main/java}/org/apache/xpath/objects/XNull.java |    0
 .../java}/org/apache/xpath/objects/XNumber.java    |    0
 .../java}/org/apache/xpath/objects/XObject.java    |    0
 .../org/apache/xpath/objects/XObjectFactory.java   |    0
 .../java}/org/apache/xpath/objects/XRTreeFrag.java |    0
 .../xpath/objects/XRTreeFragSelectWrapper.java     |    0
 .../java}/org/apache/xpath/objects/XString.java    |    0
 .../org/apache/xpath/objects/XStringForChars.java  |    0
 .../org/apache/xpath/objects/XStringForFSB.java    |    0
 .../java}/org/apache/xpath/objects/package.html    |    0
 .../java}/org/apache/xpath/operations/And.java     |    0
 .../java}/org/apache/xpath/operations/Bool.java    |    0
 .../java}/org/apache/xpath/operations/Div.java     |    0
 .../java}/org/apache/xpath/operations/Equals.java  |    0
 .../main/java}/org/apache/xpath/operations/Gt.java |    0
 .../java}/org/apache/xpath/operations/Gte.java     |    0
 .../main/java}/org/apache/xpath/operations/Lt.java |    0
 .../java}/org/apache/xpath/operations/Lte.java     |    0
 .../java}/org/apache/xpath/operations/Minus.java   |    0
 .../java}/org/apache/xpath/operations/Mod.java     |    0
 .../java}/org/apache/xpath/operations/Mult.java    |    0
 .../java}/org/apache/xpath/operations/Neg.java     |    0
 .../org/apache/xpath/operations/NotEquals.java     |    0
 .../java}/org/apache/xpath/operations/Number.java  |    0
 .../org/apache/xpath/operations/Operation.java     |    0
 .../main/java}/org/apache/xpath/operations/Or.java |    0
 .../java}/org/apache/xpath/operations/Plus.java    |    0
 .../java}/org/apache/xpath/operations/Quo.java     |    0
 .../java}/org/apache/xpath/operations/String.java  |    0
 .../apache/xpath/operations/UnaryOperation.java    |    0
 .../org/apache/xpath/operations/Variable.java      |    0
 .../xpath/operations/VariableSafeAbsRef.java       |    0
 .../java}/org/apache/xpath/operations/package.html |    0
 .../src/main/java}/org/apache/xpath/package.html   |    0
 .../xpath/patterns/ContextMatchStepPattern.java    |    0
 .../org/apache/xpath/patterns/FunctionPattern.java |    0
 .../java}/org/apache/xpath/patterns/NodeTest.java  |    0
 .../org/apache/xpath/patterns/NodeTestFilter.java  |    0
 .../org/apache/xpath/patterns/StepPattern.java     |    0
 .../org/apache/xpath/patterns/UnionPattern.java    |    0
 .../java}/org/apache/xpath/patterns/package.html   |    0
 .../org/apache/xpath/res/XPATHErrorResources.java  |    0
 .../apache/xpath/res/XPATHErrorResources_ca.java   |    0
 .../apache/xpath/res/XPATHErrorResources_cs.java   |    0
 .../apache/xpath/res/XPATHErrorResources_de.java   |    0
 .../apache/xpath/res/XPATHErrorResources_en.java   |    0
 .../apache/xpath/res/XPATHErrorResources_es.java   |    0
 .../apache/xpath/res/XPATHErrorResources_fr.java   |    0
 .../apache/xpath/res/XPATHErrorResources_hu.java   |    0
 .../apache/xpath/res/XPATHErrorResources_it.java   |    0
 .../apache/xpath/res/XPATHErrorResources_ja.java   |    0
 .../apache/xpath/res/XPATHErrorResources_ko.java   |    0
 .../apache/xpath/res/XPATHErrorResources_pl.java   |    0
 .../xpath/res/XPATHErrorResources_pt_BR.java       |    0
 .../apache/xpath/res/XPATHErrorResources_ru.java   |    0
 .../apache/xpath/res/XPATHErrorResources_sk.java   |    0
 .../apache/xpath/res/XPATHErrorResources_sl.java   |    0
 .../apache/xpath/res/XPATHErrorResources_sv.java   |    0
 .../apache/xpath/res/XPATHErrorResources_tr.java   |    0
 .../apache/xpath/res/XPATHErrorResources_zh.java   |    0
 .../xpath/res/XPATHErrorResources_zh_CN.java       |    0
 .../xpath/res/XPATHErrorResources_zh_TW.java       |    0
 .../java}/org/apache/xpath/res/XPATHMessages.java  |    0
 .../main/java}/org/apache/xpath/res/package.html   |    0
 .../org/apache/xalan/res/XSLTInfo.properties       |    0
 .../src/main/resources}/trax/trax.properties       |    0
 .../src/site/resources/images}/compilation.gif     |  Bin
 .../src/site/resources/images}/conceptual.gif      |  Bin
 .../src/site/resources/images}/data.gif            |  Bin
 .../src/site/resources/images}/org_apache.gif      |  Bin
 .../src/site/resources/images}/trax.gif            |  Bin
 .../src/site/resources/images}/xalan1_1x1.gif      |  Bin
 .../src/site/resources/images}/xmllogo.gif         |  Bin
 .../src/site/resources/images}/xpath.gif           |  Bin
 .../src/site/resources/images}/xslt_abstract.gif   |  Bin
 xalan/src/site/xhtml/design2_0_0.xhtml             |  277 ++
 .../src/site/xhtml/javadocOverview.xhtml           |    0
 .../xhtml/org/apache/xalan/client/package.xhtml    |   26 +
 .../org/apache/xalan/extensions/package.xhtml      |   26 +
 .../site/xhtml/org/apache/xalan/lib/package.xhtml  |   27 +
 .../xhtml/org/apache/xalan/lib/sql/package.xhtml   |    0
 .../xhtml/org/apache/xalan/processor/package.xhtml |    0
 .../site/xhtml/org/apache/xalan/res/package.xhtml  |   26 +
 .../xhtml/org/apache/xalan/templates/package.xhtml |   43 +
 .../xhtml/org/apache/xalan/trace/package.xhtml     |   26 +
 .../org/apache/xalan/transformer/package.xhtml     |    0
 .../site/xhtml/org/apache/xalan/xslt/package.xhtml |   26 +
 .../site/xhtml/org/apache/xml/utils/package.xhtml  |   27 +
 .../site/xhtml/org/apache/xpath/axes/package.xhtml |   27 +
 .../xhtml/org/apache/xpath/compiler/package.xhtml  |   26 +
 .../xhtml/org/apache/xpath/domapi/package.xhtml    |   26 +
 .../xhtml/org/apache/xpath/functions/package.xhtml |   29 +
 .../xhtml/org/apache/xpath/objects/package.xhtml   |   27 +
 .../org/apache/xpath/operations/package.xhtml      |   26 +
 .../src/site/xhtml/org/apache/xpath/package.xhtml  |   27 +
 .../xhtml/org/apache/xpath/patterns/package.xhtml  |   26 +
 .../site/xhtml/org/apache/xpath/res/package.xhtml  |   26 +
 xalan/tools/xalan2jdoc.jar                         |  Bin 0 -> 124095 bytes
 {tools => xalan/tools}/xalan2jtaglet.jar           |  Bin
 xalan2jtaglet/dependency-reduced-pom.xml           |   24 +
 xalan2jtaglet/pom.xml                              |   79 +
 .../src/main/java/xalan2jtaglet/XSLUsage.java      |   49 +
 .../src/main/java/xalan2jtaglet/XSLUsageTag.java   |   89 +
 xdocs/style/stylesheets/done.xsl                   |   67 -
 1564 files changed, 84361 insertions(+), 76748 deletions(-)

diff --git a/.classpath b/.classpath
index b4678427..a8a10f89 100644
--- a/.classpath
+++ b/.classpath
@@ -1,16 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="lib" path="lib/runtime.jar"/>
-	<classpathentry kind="lib" path="lib/regexp.jar"/>
-	<classpathentry kind="lib" path="tools/java_cup.jar"/>
-	<classpathentry kind="lib" path="tools/JLex.jar"/>
-	<classpathentry kind="lib" path="lib/bcel-6.7.0.jar"/>
-	<classpathentry kind="lib" path="lib/endorsed/xml-apis.jar"/>
-	<classpathentry kind="lib" path="lib/endorsed/xercesImpl.jar"/>
-	<classpathentry kind="lib" path="lib/bsf.jar"/>
-	<classpathentry kind="lib" path="lib/commons-logging-1.2.jar"/>
-	<classpathentry kind="lib" path="lib/rhino-1.7.14.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="build/classes"/>
+	<classpathentry including="**/*.java" kind="src" output="target/classes" path="src">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="module" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/.gitignore b/.gitignore
index f4d30d4c..72f53d03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 /bin/
-/build/
\ No newline at end of file
+/build/
+/target/
diff --git a/.project b/.project
index 56d086ee..da8c908e 100644
--- a/.project
+++ b/.project
@@ -1,20 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
--->
 <projectDescription>
 	<name>xalan-j-trunk</name>
 	<comment></comment>
@@ -26,8 +10,14 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 	</natures>
 </projectDescription>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 5917cfb9..e1b6825b 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -10,6 +10,7 @@ org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
 org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
 org.eclipse.jdt.core.compiler.release=disabled
 org.eclipse.jdt.core.compiler.source=1.8
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..0eb2be4e
--- /dev/null
+++ b/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Archiver-Version: Plexus Archiver
+Built-By: keshlam
+Created-By: Apache Maven 3.6.3
+Build-Jdk: 1.8.0_382
+
diff --git a/META-INF/maven/org.apache.bcel/bcel/pom.properties b/META-INF/maven/org.apache.bcel/bcel/pom.properties
new file mode 100644
index 00000000..fe6b7bec
--- /dev/null
+++ b/META-INF/maven/org.apache.bcel/bcel/pom.properties
@@ -0,0 +1,3 @@
+artifactId=bcel
+groupId=org.apache.bcel
+version=6.7.0
diff --git a/commits.xml b/ancient_history.commits.xml
similarity index 100%
rename from commits.xml
rename to ancient_history.commits.xml
diff --git a/build.bat b/build.bat
deleted file mode 100644
index 25c89b86..00000000
--- a/build.bat
+++ /dev/null
@@ -1,70 +0,0 @@
-@echo off
-rem
-rem ==========================================================================
-rem = Licensed to the Apache Software Foundation (ASF) under one or more
-rem = contributor license agreements.  See the NOTICE file distributed with
-rem = this work for additional information regarding copyright ownership.
-rem = The ASF licenses this file to You under the Apache License, Version 2.0
-rem = (the "License"); you may not use this file except in compliance with
-rem = the License.  You may obtain a copy of the License at
-rem =
-rem =     http://www.apache.org/licenses/LICENSE-2.0
-rem =
-rem = Unless required by applicable law or agreed to in writing, software
-rem = distributed under the License is distributed on an "AS IS" BASIS,
-rem = WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-rem = See the License for the specific language governing permissions and
-rem = limitations under the License.
-rem ==========================================================================
-rem
-rem     build.bat: Build Xalan-J 2.x using Ant
-rem     Author: XalanJ team
-rem 
-rem     Usage: build [ant-options] [targets]
-rem
-rem     Setup:
-rem        1) You must set JAVA_HOME
-rem
-rem        2) You can set ANT_HOME if you use your own Ant install
-
-echo.
-echo Xalan-J 2.x Build
-echo -----------------
-
-if "%JAVA_HOME%"=="" goto noJavaHome
-
-if exist "%JAVA_HOME%\lib\tools.jar" (
-   set _CLASSPATH=%JAVA_HOME%\lib\tools.jar
-)
-
-set _JAVACMD=%JAVA_HOME%\bin\java
-
-rem Default ANT_HOME to the one what user has set
-if not "%ANT_HOME%"=="" set _ANT_HOME=%ANT_HOME%
-if "%ANT_HOME%"=="" set _ANT_HOME=.
-
-if exist "%_ANT_HOME%\tools\ant.jar" (
-   set _ANT_JARS=%_ANT_HOME%\tools\ant.jar
-) else (
-   set _ANT_JARS=%_ANT_HOME%\lib\ant.jar;%_ANT_HOME%\lib\ant-launcher.jar
-)
-
-set _CLASSPATH=%_CLASSPATH%;%_ANT_JARS%
-
-set XERCES_ENDORSED_DIR_PATH=lib\endorsed
-
-@echo on
-"%_JAVACMD%" -mx1024m -Djava.endorsed.dirs=%XERCES_ENDORSED_DIR_PATH% -classpath "%_CLASSPATH%" org.apache.tools.ant.Main %1 %2 %3 %4 %5 %6 %7 %8 %9
-@echo off
-
-goto end
-
-:noJavaHome
-echo Warning: JAVA_HOME environment variable is not set
-
-:end
-rem Cleanup environment variables
-set _JAVACMD=
-set _CLASSPATH=
-set _ANT_HOME=
-set _ANT_JARS=
diff --git a/build.sh b/build.sh
deleted file mode 100644
index 4f7ac97c..00000000
--- a/build.sh
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/sh
-#
-#=========================================================================
-# Copyright 2001-2023 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.
-#=========================================================================
-#
-#	Name:   build.sh
-#	Author: Joe Kesselman
-#		Fresh port from Mukul Gandhi's revised build.bat.
-#		WARNING: This currently does not include the hooks needed
-#		to make the script compatable with cygwin (unix/Linux shell
-#		and commands ported to run under Windows). See 
-#		deprecated_build.sh to see how we handled the cygwin
-#		syntax differences back in 2001. These days, Windows users
-#		are more likely to use WSL, which simplifies matters.
-
-#	See:	build.xml
-
-#	Setup:
-#          1) You must set JAVA_HOME, for example,
-#	      $ export JAVA_HOME=/etc/alternatives/java_sdk
-
-#          2) You can set ANT_HOME if you use your own Ant install, for example,
-#	      $ export ANT_HOME=/usr/share/ant
-
-echo
-echo Xalan-J test automation build
-echo -----------------------------
-
-if [ "$1" = "-h" ]; then 
-    echo build.sh - executes Xalan Java-based test automation
-    echo   Usage:   build [target] [-D options]
-    echo   Example: build api -DtestClass=TransformerAPITest -Dqetest.loggingLevel=30
-    echo
-    echo You MUST export the JAVA_HOME environment variable to point to the JDK
-    echo You CAN export ANT_HOME environment variable if you use your own Ant install
-
-    exit 1
-fi
-
-if [ "$JAVA_HOME" = "" ]; then 
-    echo Warning: JAVA_HOME environment variable is not exported
-    echo You may have meant to set it to /etc/alternatives/java_sdk
-    exit 1
-fi
-
-if [ -f "$JAVA_HOME/lib/tools.jar" ]; then
-    CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar
-fi
-
-JAVACMD=$JAVA_HOME/bin/java
-
-CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar
-
-# Since Linux has scoped environments, we don't need explicit temporary vars.
-# Default is to use a copy of ant bundled with xalan-java.
-if [ "$ANT_HOME" = "" ]; then 
-    ANT_HOME=.
-fi
-
-# Check user's ANT_HOME to make sure it actually has what we need
-if [ -f "$ANT_HOME/tools/ant.jar" ]; then
-    ANT_JARS=$ANT_HOME/tools/ant.jar
-else
-    ANT_JARS=$ANT_HOME/lib/ant.jar:$ANT_HOME/lib/ant-launcher.jar
-fi
-
-CLASSPATH=$CLASSPATH:$ANT_JARS
-
-XERCES_ENDORSED_DIR_PATH=lib/endorsed
-
-XALAN_BUILD_DIR_PATH=../xalan-java/build:../build
-
-# Reminder: Note $* versus $@ distinction
-echo Running:$JAVACMD  -mx1024m -Djava.endorsed.dirs=$XERCES_ENDORSED_DIR_PATH -classpath "$CLASSPATH" org.apache.tools.ant.Main "$@"
-$JAVACMD  -mx1024m -Djava.endorsed.dirs=$XERCES_ENDORSED_DIR_PATH -classpath "$CLASSPATH" org.apache.tools.ant.Main "$@"
-
-echo "build.sh complete!"
diff --git a/deprecated_build.sh b/deprecated_build.sh
deleted file mode 100644
index e21d6e13..00000000
--- a/deprecated_build.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/sh
-#
-#=========================================================================
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#=========================================================================
-#
-#	Name:   build.sh Build Xalan-J 2.x using Ant
-#	Author: Shane Curcuru
-
-# Alternatively, you can just call "ant" 
-
-echo "Xalan-J 2.x Build"
-echo "-------------"
-
-_JAVACMD=$JAVA_HOME/bin/java
-if [ "$JAVA_HOME" = "" ] ; then
-    echo "Warning: JAVA_HOME environment variable is not set."
-    _JAVACMD=java
-fi
-
-# Default locations of jars we depend on to run Ant on our build.xml file
-if [ "$ANT_HOME" = "" ] ; then
-    ANT_HOME=.
-fi
-if [ "$ANT_JAR" = "" ] ; then
-    ANT_JAR=./tools/ant.jar
-fi
-if [ "$PARSER_JAR" = "" ] ; then
-    PARSER_JAR=./lib/endorsed/xercesImpl.jar
-fi
-
-if [ "$XML_APIS_JAR" = "" ] ; then
-    XML_APIS_JAR=./lib/endorsed/xml-apis.jar
-fi
-
-# Use _underscore prefix to not conflict with user's settings
-# Default to UNIX-style pathing
-CLPATHSEP=:
-# if we're on a Windows box make it ;
-uname | grep WIN && CLPATHSEP=\;
-_CLASSPATH="$ANT_JAR${CLPATHSEP}$XML_APIS_JAR${CLPATHSEP}$PARSER_JAR${CLPATHSEP}$CLASSPATH"
-
-# Attempt to automatically add system classes to _CLASSPATH
-if [ -f $JAVA_HOME/lib/tools.jar ] ; then
-  _CLASSPATH=${_CLASSPATH}${CLPATHSEP}${JAVA_HOME}/lib/tools.jar
-fi
-
-if [ -f $JAVA_HOME/lib/classes.zip ] ; then
-  _CLASSPATH=${_CLASSPATH}${CLPATHSEP}${JAVA_HOME}/lib/classes.zip
-fi
-
-
-echo "Starting Ant with targets: $@"
-echo "        ...with classpath: $_CLASSPATH"
-
-"$_JAVACMD" $JAVA_OPTS -Dant.home=$ANT_HOME -classpath "$_CLASSPATH" org.apache.tools.ant.Main $@
-
-
-
-
diff --git a/lib/bcel-6.7.0.jar b/lib/bcel-6.7.0.jar
deleted file mode 100644
index fb36e1d3..00000000
Binary files a/lib/bcel-6.7.0.jar and /dev/null differ
diff --git a/lib/bsf.jar b/lib/bsf.jar
deleted file mode 100644
index 30289673..00000000
Binary files a/lib/bsf.jar and /dev/null differ
diff --git a/lib/commons-logging-1.2.jar b/lib/commons-logging-1.2.jar
deleted file mode 100644
index 93a3b9f6..00000000
Binary files a/lib/commons-logging-1.2.jar and /dev/null differ
diff --git a/lib/endorsed/xercesImpl.jar b/lib/endorsed/xercesImpl.jar
deleted file mode 100644
index ccbae9f4..00000000
Binary files a/lib/endorsed/xercesImpl.jar and /dev/null differ
diff --git a/lib/endorsed/xml-apis.jar b/lib/endorsed/xml-apis.jar
deleted file mode 100644
index 4f677fc8..00000000
Binary files a/lib/endorsed/xml-apis.jar and /dev/null differ
diff --git a/lib/javaee-api-5.0-2.jar b/lib/javaee-api-5.0-2.jar
deleted file mode 100644
index 65acd770..00000000
Binary files a/lib/javaee-api-5.0-2.jar and /dev/null differ
diff --git a/lib/regexp.jar b/lib/regexp.jar
deleted file mode 100644
index 713441c5..00000000
Binary files a/lib/regexp.jar and /dev/null differ
diff --git a/lib/rhino-1.7.14.jar b/lib/rhino-1.7.14.jar
deleted file mode 100644
index ad47a201..00000000
Binary files a/lib/rhino-1.7.14.jar and /dev/null differ
diff --git a/lib/runtime.jar b/lib/runtime.jar
deleted file mode 100644
index c74baf19..00000000
Binary files a/lib/runtime.jar and /dev/null differ
diff --git a/lib/servlet-api-2.5.jar b/lib/servlet-api-2.5.jar
deleted file mode 100644
index b0537c4d..00000000
Binary files a/lib/servlet-api-2.5.jar and /dev/null differ
diff --git a/mvnbuild.bat b/mvnbuild.bat
new file mode 100755
index 00000000..c55ac9c9
--- /dev/null
+++ b/mvnbuild.bat
@@ -0,0 +1,4 @@
+call mvn clean package site source:jar source:test-jar
+call ./stylebook_docgen.bat
+rem move stylebook_docgen into toplevel pom.xml?
+
diff --git a/mvnbuild.sh b/mvnbuild.sh
new file mode 100755
index 00000000..13bbe0d1
--- /dev/null
+++ b/mvnbuild.sh
@@ -0,0 +1,4 @@
+mvn clean package site source:jar source:test-jar
+./stylebook_docgen.sh
+# move stylebook_docgen into toplevel pom.xml?
+
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 00000000..4f446e11
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <packaging>pom</packaging>
+  <!-- KNOWN ISSUES:
+	"Production" jar/tar files?
+	Doclet and taglet (taglet working, but only for ./xalan?)
+	stylebook (currenly, see stylebook.docgen.sh)
+       
+       xalan-test compatibility/success/submodule
+
+       NOTE: To get dependency tree from a multi-module project, use the 
+       command "mvn compile dependency:tree" so everything is in scope.
+  -->
+  
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>apache-xalan-j-2.7.3-maint-main</groupId>
+  <artifactId>apache-xalan-j-2.7.3-maint-main</artifactId>
+  <version>2.7.3-SNAPSHOT</version>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <modules>
+    <module>serializer</module>
+    <module>xalan</module>
+    <module>samples</module>
+    <module>xalan2jtaglet</module>
+  </modules>
+
+  <build>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+	<directory>META-INF</directory>
+	<includes>
+	  <include>LICENSE.txt</include>
+	  <include>NOTICE.txt</include>
+	</includes>
+      </resource>
+      <resource>
+	<directory>resources</directory>
+	<includes>
+	  <include>**/*.properties</include>
+	</includes>
+      </resource>
+    </resources>
+    <plugins>
+      <plugin>
+	<artifactId>maven-compiler-plugin</artifactId>
+	<version>3.8.1</version>
+	<configuration>
+	  <source>1.8</source>
+	  <target>1.8</target>
+	</configuration>
+      </plugin>
+
+      <!--
+	  https://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html -->
+      <plugin>
+	<groupId>org.apache.maven.plugins</groupId>
+	<artifactId>maven-shade-plugin</artifactId>
+	<version>3.5.0</version>
+	<executions>
+	  <execution>
+	    <phase>package</phase>
+	    <goals>
+	      <goal>shade</goal>
+	    </goals>
+	    <configuration>
+	      <artifactSet>
+		<excludes>
+		  <!-- Their examples -->
+		  <exclude>junit:junit</exclude>
+		  <exclude>jmock:*</exclude>
+		  <exclude>*:xml-apis</exclude>
+		  <exclude>org.apache.maven:lib:tests</exclude>
+		  <!-- What I think I need to exclude -->
+		  <exclude>com.github.vbmacher:java-cup</exclude>
+		  <exclude>commons-logging:commons-logging</exclude>
+		  <!-- Fighting to excluse javax/script/... -->
+		  <exclude>javax:*</exclude>
+		</excludes>
+	      </artifactSet>
+	    </configuration>
+	  </execution>
+	</executions>
+      </plugin>
+
+      <plugin>
+	<groupId>org.apache.maven.plugins</groupId>
+	<artifactId>maven-site-plugin</artifactId>
+	<version>3.7.1</version>
+      </plugin>
+
+      <!-- Maven finds this without assistance, but grumbles about
+	   unspecified plugin version, so... -->
+      <plugin>
+	<groupId>org.apache.maven.plugins</groupId>
+	<artifactId>maven-project-info-reports-plugin</artifactId>
+	<version>3.4.5</version>
+      </plugin>
+
+    </plugins>
+  </build>
+
+
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>3.6.0</version>
+	<configuration>
+
+	  <!-- Mute "missing" javadoc errors. We have lots of 'em, and
+	       they're a distraction from simply getting the Maven
+	       build up and running. Open a jira task to fix this
+	       later. GONK. -->
+	  <doclint>none</doclint>
+
+	  <groups>
+            <group>
+	      <title>XPath</title>
+	      <packages>org.apache.xpath*</packages>
+	    </group>
+            <group>
+	      <title>Document Table Model (DTM)</title>
+	      <packages>org.apache.xml.dtm*</packages>
+	    </group>          
+            <group>
+	      <title>Utilities</title>
+	      <packages>org.apache.xml.utils*</packages>
+	    </group>
+            <group>
+	      <title>Xalan Other</title>
+	      <packages>org.apache.xalan.client:org:org.apache.xalan.extensions:org.apache.xalan.res:org.apache.xalan.stree:org.apache.xalan.trace:org.apache.xalan.xslt</packages>
+	    </group>
+            <group>
+	      <title>Xalan Extensions</title>
+	      <packages>org.apache.xalan.lib*</packages>
+	    </group>
+            <group>
+	      <title>Serializers</title>
+	      <packages>org.apache.xml.serialize*:org.apache.xalan.serialize</packages>
+	    </group>
+            <group>
+	      <title>SAX 2</title>
+	      <packages>org.xml.sax*</packages>
+	    </group>
+            <group>
+	      <title>DOM 2</title>
+	      <packages>org.w3c.dom*</packages>
+	    </group>
+            <group>
+	      <title>XSLTC Core</title>
+	      <packages>org.apache.xalan.xsltc*</packages>
+	    </group>
+	  </groups>
+
+	  <!-- Locally provided taglet; see xalan2jtaglet module -->
+	  <taglets>
+            <taglet>
+	      <tagletClass>xalan2jtaglet.XSLUsageTag</tagletClass>
+	    </taglet>
+	  </taglets>
+	  <tagletArtifact>
+	    <groupId>apache-xalan-j-2.7.3-maint-main</groupId>
+	    <artifactId>xalan2jtaglet</artifactId>
+	    <version>2.7.3-SNAPSHOT</version>
+	  </tagletArtifact>
+
+	</configuration>
+
+        <reportSets>
+          <reportSet>
+            <id>aggregate</id>
+            <inherited>false</inherited>        
+            <reports>
+              <report>aggregate</report>
+            </reports>
+          </reportSet>
+          <reportSet>
+            <id>default</id>
+            <reports>
+              <report>javadoc</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/samples/ApplyXPath/ApplyXPath.java b/samples/ApplyXPath/ApplyXPath.java
deleted file mode 100644
index fe8478f9..00000000
--- a/samples/ApplyXPath/ApplyXPath.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-// This file uses 4 space indents, no tabs.
-
-import java.io.FileInputStream;
-import java.io.OutputStreamWriter;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.traversal.NodeIterator;
-import org.xml.sax.InputSource;
-
-/**
- *  Very basic utility for applying an XPath epxression to an xml file and printing information
- /  about the execution of the XPath object and the nodes it finds.
- *  Takes 2 arguments:
- *     (1) an xml filename
- *     (2) an XPath expression to apply to the file
- *  Examples:
- *     java ApplyXPath foo.xml /
- *     java ApplyXPath foo.xml /doc/name[1]/@last
- * @see XPathAPI
- */
-public class ApplyXPath
-{
-  protected String filename = null;
-  protected String xpath = null;
-
-  /** Process input args and execute the XPath.  */
-  public void doMain(String[] args)
-    throws Exception
-  {
-    filename = args[0];
-    xpath = args[1];
-
-    if ((filename != null) && (filename.length() > 0)
-        && (xpath != null) && (xpath.length() > 0))
-    {
-      // Tell that we're loading classes and parsing, so the time it 
-      // takes to do this doesn't get confused with the time to do 
-      // the actual query and serialization.
-      System.out.println("Loading classes, parsing "+filename+", and setting up serializer");
-      
-      // Set up a DOM tree to query.
-      InputSource in = new InputSource(new FileInputStream(filename));
-      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-      dfactory.setNamespaceAware(true);
-      Document doc = dfactory.newDocumentBuilder().parse(in);
-      
-      // Set up an identity transformer to use as serializer.
-      Transformer serializer = TransformerFactory.newInstance().newTransformer();
-      serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-
-      // Use the simple XPath API to select a nodeIterator.
-      System.out.println("Querying DOM using "+xpath);
-      NodeIterator nl = XPathAPI.selectNodeIterator(doc, xpath);
-
-      // Serialize the found nodes to System.out.
-      System.out.println("<output>");
-                  
-      Node n;
-      while ((n = nl.nextNode())!= null)
-      {         
-	if (isTextNode(n)) {
-	    // DOM may have more than one node corresponding to a 
-	    // single XPath text node.  Coalesce all contiguous text nodes
-	    // at this level
-	    StringBuffer sb = new StringBuffer(n.getNodeValue());
-	    for (
-	      Node nn = n.getNextSibling(); 
-	      isTextNode(nn);
-	      nn = nn.getNextSibling()
-	    ) {
-	      sb.append(nn.getNodeValue());
-	    }
-	    System.out.print(sb);
-	}
-	else {
-         serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(System.out)));
-	}
-        System.out.println();
-      }
-      System.out.println("</output>");
-    }
-    else
-    {
-      System.out.println("Bad input args: " + filename + ", " + xpath);
-    }
-  }
-  
-  /** Decide if the node is text, and so must be handled specially */
-  static boolean isTextNode(Node n) {
-    if (n == null)
-      return false;
-    short nodeType = n.getNodeType();
-    return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE;
-  }
-
-  /** Main method to run from the command line.    */
-  public static void main (String[] args)
-    throws Exception
-  {
-    if (args.length != 2)
-    {
-      System.out.println("java ApplyXPath filename.xml xpath\n"
-                         + "Reads filename.xml and applies the xpath; prints the nodelist found.");
-      return;
-    }
-        
-    ApplyXPath app = new ApplyXPath();
-    app.doMain(args);
-  }	
-  
-} // end of class ApplyXPath
-
diff --git a/samples/ApplyXPathDOM/ApplyXPathDOM.java b/samples/ApplyXPathDOM/ApplyXPathDOM.java
deleted file mode 100644
index 7ebb1d26..00000000
--- a/samples/ApplyXPathDOM/ApplyXPathDOM.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-// This file uses 4 space indents, no tabs.
-
-import java.io.FileInputStream;
-import java.io.OutputStreamWriter;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.apache.xpath.domapi.XPathEvaluatorImpl;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.xpath.XPathEvaluator;
-import org.w3c.dom.xpath.XPathNSResolver;
-import org.w3c.dom.xpath.XPathResult;
-import org.xml.sax.InputSource;
-
-/**
- *  Very basic utility for applying the DOM L3 XPath API (currently in Last Call)
- *  to an xml file and printing information about the execution of the XPath object 
- *  and the nodes it finds.
- *  Takes 2 arguments:
- *     (1) an xml filename
- *     (2) an XPath expression to apply to the file
- *  Examples:
- *     java ApplyXPathDOM foo.xml /
- *     java ApplyXPathDOM foo.xml /doc/name[1]/@last
- *
- *<p>See also the <a href='http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226'>Document Object Model (DOM) Level 3 XPath Specification</a>.</p>
- * @see XPathEvaluator
- * 
- */
-public class ApplyXPathDOM
-{
-  protected String filename = null;
-  protected String xpath = null;
-
-  /** Process input args and execute the XPath.  */
-  public void doMain(String[] args)
-    throws Exception
-  {
-    filename = args[0];
-    xpath = args[1];
-
-    if ((filename != null) && (filename.length() > 0)
-        && (xpath != null) && (xpath.length() > 0))
-    {
-      // Tell that we're loading classes and parsing, so the time it 
-      // takes to do this doesn't get confused with the time to do 
-      // the actual query and serialization.
-      System.out.println("Loading classes, parsing "+filename+", and setting up serializer");
-      
-      // Set up a DOM tree to query.
-      InputSource in = new InputSource(new FileInputStream(filename));
-      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-      dfactory.setNamespaceAware(true);
-      Document doc = dfactory.newDocumentBuilder().parse(in);
-      
-      // Set up an identity transformer to use as serializer.
-      Transformer serializer = TransformerFactory.newInstance().newTransformer();
-      serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-
-      // Use the DOM L3 XPath API to apply the xpath expression to the doc.
-      System.out.println("Querying DOM using "+xpath);
-      
-      // Create an XPath evaluator and pass in the document.
-      XPathEvaluator evaluator = new XPathEvaluatorImpl(doc);
-      XPathNSResolver resolver = evaluator.createNSResolver(doc);
-      
-      // Evaluate the xpath expression
-      XPathResult result = (XPathResult)evaluator.evaluate(xpath, doc, resolver, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
-      
-
-      // Serialize the found nodes to System.out.
-      System.out.println("<output>");
-                  
-      Node n;
-      while ((n = result.iterateNext())!= null)
-      {         
-        if (isTextNode(n)) {
-	    // DOM may have more than one node corresponding to a 
-	    // single XPath text node.  Coalesce all contiguous text nodes
-	    // at this level
-	    StringBuffer sb = new StringBuffer(n.getNodeValue());
-	    for (
-	      Node nn = n.getNextSibling(); 
-	      isTextNode(nn);
-	      nn = nn.getNextSibling()
-	    ) {
-	      sb.append(nn.getNodeValue());
-	    }
-	    System.out.print(sb);
-	}
-	else {
-         serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(System.out)));
-	}
-        System.out.println();
-      }
-      System.out.println("</output>");
-    }
-    else
-    {
-      System.out.println("Bad input args: " + filename + ", " + xpath);
-    }
-  }
-  
-  /** Decide if the node is text, and so must be handled specially */
-  static boolean isTextNode(Node n) {
-    if (n == null)
-      return false;
-    short nodeType = n.getNodeType();
-    return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE;
-  }
-
-  /** Main method to run from the command line.    */
-  public static void main (String[] args)
-    throws Exception
-  {
-    if (args.length != 2)
-    {
-      System.out.println("java ApplyXPathDOM filename.xml xpath\n"
-                         + "Reads filename.xml and applies the xpath; prints the nodelist found.");
-      return;
-    }
-        
-    ApplyXPathDOM app = new ApplyXPathDOM();
-    app.doMain(args);
-  }	
-  
-} // end of class ApplyXPathDOM
-
diff --git a/samples/CompiledApplet/TransformApplet.java b/samples/CompiledApplet/TransformApplet.java
deleted file mode 100644
index 52baa1b1..00000000
--- a/samples/CompiledApplet/TransformApplet.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.applet.Applet;
-
-import java.awt.BorderLayout;
-import java.awt.Button;
-import java.awt.Frame;
-import java.awt.Label;
-import java.awt.Panel;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-/**
- * This applet demonstrates how XSL transformations can be made to run in
- * browsers without native XSLT support.
- *
- * Note that the XSLTC transformation engine is invoked through the JAXP
- * interface, using the XSLTC "use-classpath" attribute.  The
- * "use-classpath" attribute specifies to the XSLTC TransformerFactory
- * that a precompiled version of the stylesheet (translet) may be available,
- * and that that should be used in preference to recompiling the stylesheet.
- * @author Morten Jorgensen
- * @author Jacek Ambroziak
- */
-public final class TransformApplet extends Applet {
-    TransformerFactory tf;
-    TransformDelegate transformThread;
-    /**
-     * This class implements a dialog box used for XSL messages/comments
-     */
-    public class MessageFrame extends Frame {
-
-        public Frame frame;
-
-        public class ButtonHandler implements ActionListener {
-            public void actionPerformed(ActionEvent e) {
-                frame.setVisible(false);
-            }
-        }
-
-        /**
-         * This method handles xml:message and xsl:comment by displaying
-         * the message/comment in a dialog box.
-         */
-        public MessageFrame(String title, String message) {
-            super(title);
-            frame = this; // Make visible to ButtonHandler
-            setSize(320,200);
-
-            // Create a panel for the message itself
-            Panel center = new Panel();
-            center.add(new Label(message));
-
-            // Create a panel for the 'OK' button
-            Panel bottom = new Panel();
-            Button okButton = new Button("   OK   ");
-            okButton.addActionListener(new ButtonHandler());
-            bottom.add(okButton);
-
-            // Add the two panels to the window/frame
-            add(center, BorderLayout.CENTER);
-            add(bottom,BorderLayout.SOUTH);
-
-            // Show the whole thing
-            setVisible(true);
-        }
-
-    }
-
-    /**
-     * The applet uses this method to display messages and comments
-     * generated by xsl:message and xsl:comment elements.
-     */
-    public class AppletErrorListener implements ErrorListener {
-        public void displayMessage(TransformerException e) {
-            MessageFrame z = new MessageFrame("XSL transformation alert",
-                                              e.getMessageAndLocation());
-        }
-
-        public void error(TransformerException e) {
-            displayMessage(e);
-        }
-
-        public void fatalError(TransformerException e) {
-            displayMessage(e);
-        }
-
-        public void warning(TransformerException e) {
-                    displayMessage(e);
-        }
-    }
-
-    /**
-     * This method is the main body of the applet. The method is called
-     * by some JavaScript code in an HTML document.
-     */
-    public synchronized String transform(Object arg1, Object arg2) {
-        final String stylesheetURL = (String)arg1;
-        final String documentURL = (String)arg2;
-
-        transformThread.setStylesheetURL(stylesheetURL);
-        transformThread.setDocumentURL(documentURL);
-        transformThread.setWaiting(false);
-        transformThread.wakeUp();
-        try{
-            wait();
-        } catch (InterruptedException e){}
-        return transformThread.getOutput();
-    }
-
-    public void start() {
-        transform(getParameter("stylesheet-name"),
-                  getParameter("input-document"));
-    }
-    public void destroy() {
-        transformThread.destroy();
-    }
-    public void init() {
-        tf = TransformerFactory.newInstance();
-        try {
-            tf.setAttribute("use-classpath", Boolean.TRUE);
-        } catch (IllegalArgumentException iae) {
-            System.err.println("Could not set XSLTC-specific TransformerFactory"
-                               + " attributes.  Transformation failed.");
-        }
-        // Another thread is created to keep the context class loader
-        // information.  When use JDK 1.4 plugin for browser, to get around the
-        // problem with the bundled old version of xalan and endorsed class
-        // loading mechanism
-        transformThread = new TransformDelegate(true);
-        Thread t = new Thread(transformThread);
-        t.setName("transformThread");
-        t.start();
-    }
-    public String getOutput(){
-        return transformThread.getOutput();
-    }
-    public synchronized void wakeUp() {
-        notifyAll();
-    }
-    class TransformDelegate implements Runnable {
-        private boolean isRunning, isWaiting;
-        private String stylesheetURL, documentURL;
-        private String outPut;
-        public TransformDelegate(boolean arg) {
-            isRunning = arg;
-            isWaiting = true;
-        }
-        public synchronized void run() {
-            while(isRunning){
-                while(isWaiting){
-                    try {
-                        wait();
-                    } catch (InterruptedException e){}
-                }
-                transform();
-                isWaiting = true;
-                TransformApplet.this.wakeUp();
-            }
-        }
-
-        public void setStylesheetURL(String arg){
-            stylesheetURL = arg;
-        }
-        public void setDocumentURL(String arg) {
-            documentURL = arg;
-        }
-        public String getStylesheetURL(){
-            return stylesheetURL;
-        }
-        public String getDocumentURL() {
-            return documentURL;
-        }
-        public void setWaiting(boolean arg) {
-            isWaiting = arg;
-        }
-        public void destroy() {
-            isRunning = false;
-        }
-        public synchronized void wakeUp() {
-            notifyAll();
-        }
-        public String getOutput(){
-            return outPut;
-        }
-
-        public void transform(){
-            String xslURL = getStylesheetURL();
-            String docURL = getDocumentURL();
-            // Initialise the output stream
-            StringWriter sout = new StringWriter();
-            PrintWriter out = new PrintWriter(sout);
-            // Check that the parameters are valid
-            try {
-                if (xslURL == null || docURL == null) {
-                    out.println("<h1>Transformation error</h1>");
-                    out.println("The parameters <b><tt>stylesheetURL</tt></b> "+
-                                "and <b><tt>source</tt></b> must be specified");
-                } else {
-                    Transformer t = tf.newTransformer(new StreamSource(xslURL));
-                    t.setErrorListener(new AppletErrorListener());
-
-                    final long start = System.currentTimeMillis();
-
-                    t.transform(new StreamSource(docURL),
-                                new StreamResult(out));
-
-                    final long done = System.currentTimeMillis() - start;
-                    out.println("<!-- transformed by XSLTC in " + done
-                                + "msecs -->");
-                }
-                // Now close up the sink, and return the HTML output in the
-                // StringWrite object as a string.
-                out.close();
-                System.err.println("Transformation complete!");
-                System.err.println(sout.toString());
-                outPut = sout.toString();
-                sout.close();
-            } catch (RuntimeException e) {
-                out.println("<h1>RTE</h1>");
-                out.close();
-                outPut = sout.toString();
-            } catch (Exception e) {
-                out.println("<h1>exception</h1>");
-                out.println(e.toString());
-                out.close();
-                outPut = sout.toString();
-            }
-        }
-    }
-}
diff --git a/samples/CompiledBrazil/TransformHandler.java b/samples/CompiledBrazil/TransformHandler.java
deleted file mode 100644
index 530f6bce..00000000
--- a/samples/CompiledBrazil/TransformHandler.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import java.util.StringTokenizer;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import sunlabs.brazil.server.Handler;
-import sunlabs.brazil.server.Request;
-import sunlabs.brazil.server.Server;
-
-/**
- * This Brazil handler demonstrates how XSL transformations can be made
- * available as a web service without using a full web server. This class
- * implements the Handler interface from the Brazil project, see:
- * http://www.sun.com/research/brazil/
- *
- * Note that the XSLTC transformation engine is invoked through the JAXP
- * interface, using the XSLTC "use-classpath" attribute.  The
- * "use-from-classpath" attribute specifies to the XSLTC TransformerFactory
- * that a precompiled version of the stylesheet (translet) may be available,
- * and that should be used in preference to recompiling the stylesheet.
- * @author Morten Jorgensen
- */
-public class TransformHandler implements Handler {
-
-    private TransformerFactory m_tf = null;
-
-    // These two are used while parsing the parameters in the URL
-    private final String PARAM_TRANSLET = "translet=";
-    private final String PARAM_DOCUMENT = "document=";
-    private final String PARAM_STATS = "stats=";
-
-    // All output goes here:
-    private PrintWriter m_out = null;
-
-    /**
-     * Dump an error message to output
-     */
-    public void errorMessage(String message, Exception e) {
-	if (m_out == null) {
-            return;
-        }
-	m_out.println("<h1>XSL transformation error</h1>"+message);
-	m_out.println("<br>Exception:</br>"+e.toString());
-    }
-
-    public void errorMessage(String message) {
-	if (m_out == null) return;
-	m_out.println("<h1>XSL transformation error</h1>"+message);
-    }
-
-    /**
-     * This method is run when the Brazil proxy is loaded
-     */
-    public boolean init(Server server, String prefix) {
-	return true;
-    }
-
-    /**
-     * This method is run for every HTTP request sent to the proxy
-     */
-    public boolean respond(Request request) throws IOException {
-
-	// Initialise the output buffer
-	final StringWriter sout = new StringWriter();
-	m_out = new PrintWriter(sout);
-
-	// These two hold the parameters from the URL 'translet' and 'document'
-	String transletName = null;
-	String document = null;
-	String stats = null;
-
-	// Get the parameters from the URL
-	final StringTokenizer params = new StringTokenizer(request.query,"&");
-	while (params.hasMoreElements()) {
-	    final String param = params.nextToken();
-	    if (param.startsWith(PARAM_TRANSLET)) {
-		transletName = param.substring(PARAM_TRANSLET.length());
-	    }
-	    else if (param.startsWith(PARAM_DOCUMENT)) {
-		document = param.substring(PARAM_DOCUMENT.length());
-	    }
-	    else if (param.startsWith(PARAM_STATS)) {
-		stats = param.substring(PARAM_STATS.length());
-	    }
-	}
-
-	try {
-	    // Make sure that both parameters were specified
-	    if ((transletName == null) || (document == null)) {
-		errorMessage("Parameters <b><tt>translet</tt></b> and/or "+
-			     "<b><tt>document</tt></b> not specified.");
-	    }
-	    else {
-                if (m_tf == null) {
-                    m_tf = TransformerFactory.newInstance();
-                    try {
-                        m_tf.setAttribute("use-classpath", Boolean.TRUE);
-                    } catch (IllegalArgumentException iae) {
-                        System.err.println(
-                            "Could not set XSLTC-specific TransformerFactory "
-                          + "attributes.  Transformation failed.");
-                    }
-                }
-                Transformer t =
-                     m_tf.newTransformer(new StreamSource(transletName));
-
-		// Do the actual transformation
-		final long start = System.currentTimeMillis();
-		t.transform(new StreamSource(document),
-                            new StreamResult(m_out));
-		final long done = System.currentTimeMillis() - start;
-		m_out.println("<!-- transformed by XSLTC in "+done+"ms -->");
-	    }
-	}
-	catch (Exception e) {
-	    errorMessage("Internal error.",e);
-	}
-
-	// Pass the transformation output as the HTTP response
-	request.sendResponse(sout.toString());
-	return true;
-    }
-
-
-}
diff --git a/samples/CompiledEJB/TransformBean.java b/samples/CompiledEJB/TransformBean.java
deleted file mode 100644
index 592fc99e..00000000
--- a/samples/CompiledEJB/TransformBean.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.ErrorListener;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import javax.ejb.SessionBean;
-import javax.ejb.SessionContext;
-
-/**
- * @author Morten Jorgensen
- */
-public class TransformBean implements SessionBean {
-
-    private SessionContext m_context = null;
-    
-    private final static String nullErrorMsg =
-	"<h1>XSL transformation error</h1>"+
-	"<p>'null' parameters sent to the XSL transformation bean's "+
-	"<tt>transform(String document, String translet)</tt> method.</p>";
-
-    private static final String NAMESPACE_FEATURE =
-	"http://xml.org/sax/features/namespaces";
-
-    /**
-     * Generates HTML from a basic error message and an exception
-     */
-    private void errorMsg(PrintWriter out, Exception e, String msg) {
-	out.println("<h1>Error</h1>");
-	out.println("<p>"+msg+"</p><br>");
-	out.println(e.toString());
-    }
-
-    /**
-     * Main bean entry point
-     */
-    public String transform(String document, String transletName) {
-
-	// Initialise the output stream
-	final StringWriter sout = new StringWriter();
-	final PrintWriter out = new PrintWriter(sout);
-
-	try {
-	    if ((document == null) || (transletName == null)) {
-		out.println(nullErrorMsg);
-	    }
-	    else {
-                TransformerFactory tf = TransformerFactory.newInstance();
-                try {
-                    tf.setAttribute("use-classpath", Boolean.TRUE);
-                } catch (IllegalArgumentException iae) {
-                    System.err.println(
-                        "Could not set XSLTC-specific TransformerFactory "
-                      + "attributes.  Transformation failed.");
-                }
-
-                Transformer t =
-                    tf.newTransformer(new StreamSource(transletName));
-
-                // Do the actual transformation
-                final long start = System.currentTimeMillis();
-                t.transform(new StreamSource(document),
-                            new StreamResult(out));
-                final long done = System.currentTimeMillis() - start;
-                out.println("<!-- transformed by XSLTC in "+done+"msecs -->");
-	    }
-	}
-
-	catch (Exception e) {
-	    errorMsg(out, e, "Impossible state reached.");
-	}
-
-	// Now close up the sink, and return the HTML output in the
-	// StringWrite object as a string.
-	out.close();
-	return sout.toString();
-    }
-
-    /**
-     *
-     */
-    public void setSessionContext(SessionContext context) {
-	m_context = context;
-    }
-
-    // General EJB entry points
-    public void ejbCreate() { }
-    public void ejbRemove() { }
-    public void ejbActivate() { }
-    public void ejbPassivate() { }
-    public void ejbLoad() { }
-    public void ejbStore() { }
-}
diff --git a/samples/CompiledEJB/TransformHome.java b/samples/CompiledEJB/TransformHome.java
deleted file mode 100644
index 9451c1c6..00000000
--- a/samples/CompiledEJB/TransformHome.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.rmi.RemoteException;
-
-import javax.ejb.CreateException;
-import javax.ejb.EJBHome;
-
-/**
- * XSL transformation bean home interface
- * @author Morten Jorgensen
- */
-public interface TransformHome extends EJBHome {
-    TransformRemote create() throws CreateException, RemoteException;
-}
diff --git a/samples/CompiledEJB/TransformRemote.java b/samples/CompiledEJB/TransformRemote.java
deleted file mode 100644
index 14b29947..00000000
--- a/samples/CompiledEJB/TransformRemote.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.rmi.RemoteException;
-
-import javax.ejb.EJBObject;
-
-/**
- * XSL transformation bean remote interface
- * @author Morten Jorgensen
- */
-public interface TransformRemote extends EJBObject {
-    public String transform(String document, String transletName) 
-	throws RemoteException;
-}
diff --git a/samples/CompiledEJB/TransformServlet.java b/samples/CompiledEJB/TransformServlet.java
deleted file mode 100644
index 55391709..00000000
--- a/samples/CompiledEJB/TransformServlet.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import javax.naming.InitialContext;
-import javax.rmi.PortableRemoteObject;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * @author Morten Jorgensen
- */
-public class TransformServlet extends HttpServlet {
-
-    // Error message used when the XSL transformation bean cannot be created
-    private final static String createErrorMsg =
-	"<h1>XSL transformation bean error</h1>"+
-	"<p>An XSL transformation bean could not be created.</p>";
-
-    // Transformer - "more than meets the eye".
-    private TransformHome transformer;
-
-    /**
-     * Servlet initializer - look up the bean's home interface
-     */
-    public void init(ServletConfig config) 
-	throws ServletException{
-	try{
-	    InitialContext context = new InitialContext();
-	    Object transformRef = context.lookup("transform");
-	    transformer =
-		(TransformHome)PortableRemoteObject.narrow(transformRef,
-							   TransformHome.class);
-	} catch (Exception NamingException) {
-	    NamingException.printStackTrace();
-	}
-    }
-
-    /**
-     * Handles "GET" HTTP requests - ie. runs the actual transformation
-     */
-    public void doGet (HttpServletRequest request, 
-		       HttpServletResponse response) 
-	throws ServletException, IOException {
-
-	String document = request.getParameter("document");
-	String translet = request.getParameter("translet");
-
-	response.setContentType("text/html");
-
-	PrintWriter out = response.getWriter();
-	try{
-	    // Get the insult from the bean
-	    TransformRemote xslt = transformer.create();
-	    String result = xslt.transform(document, translet);
-	    out.println(result);
-	} catch(Exception CreateException){
-	    out.println(createErrorMsg);
-	}
-	out.close();
-    }
-
-    public void destroy() {
-	System.out.println("Destroy");
-    }
-}
diff --git a/samples/CompiledJAXP/Compile.java b/samples/CompiledJAXP/Compile.java
deleted file mode 100644
index a2c08b35..00000000
--- a/samples/CompiledJAXP/Compile.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import javax.xml.transform.Templates;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamSource;
-
-public class Compile {
-
-    public static void main(String[] args){
-        Compile app = new Compile();
-        app.run(args[0]);
-    }
-
-    /**
-     * Compiles an XSL stylesheet into a translet, wraps the translet
-     * inside a Templates object and dumps it to a file.
-     */
-    public void run(String xsl) {
-        try {
-            // Set XSLTC's TransformerFactory implementation as the default
-            System.setProperty("javax.xml.transform.TransformerFactory",
-                         "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");
-
-	    // Get an input stream for the XSL stylesheet
-	    StreamSource stylesheet = new StreamSource(xsl);
-
-	    // The TransformerFactory will compile the stylesheet and
-	    // put the translet classes inside the Templates object
-	    TransformerFactory factory = TransformerFactory.newInstance();
-            factory.setAttribute("generate-translet", Boolean.TRUE);
-	    Templates templates = factory.newTemplates(stylesheet);
-        }
-	catch (Exception e) {
-            System.err.println("Exception: " + e); 
-	    e.printStackTrace();
-        }
-        System.exit(0);
-    }
-
-    private void usage() {
-        System.err.println("Usage: compile <xsl_file>");
-        System.exit(1);
-    }
-
-}
diff --git a/samples/CompiledJAXP/Transform.java b/samples/CompiledJAXP/Transform.java
deleted file mode 100644
index da9ac396..00000000
--- a/samples/CompiledJAXP/Transform.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.OutputStreamWriter;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-public class Transform {
-
-    public static void main(String[] args){
-        Transform app = new Transform();
-        app.run(args);
-    }
-
-    /**
-     * Asks the TransformerFactory to try to load a precompiled version of
-     * the translet from the class path to construct a Transformer object.
-     * The translet performs the transformation on behalf of the
-     * Transformer.transform() method.
-     */
-    public void run(String[] args){
-        String xml = args[0];
-        String transletURI = args[1];
-
-        try {
-            // Set XSLTC's TransformerFactory implementation as the default
-            System.setProperty("javax.xml.transform.TransformerFactory",
-                         "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");
-
-            TransformerFactory tf = TransformerFactory.newInstance();
-            tf.setAttribute("use-classpath", Boolean.TRUE);
-	    Transformer transformer = tf.newTransformer(
-                                               new StreamSource(transletURI));
-
-	    StreamSource document = new StreamSource(xml);
-            StreamResult result = new StreamResult(
-                                           new OutputStreamWriter(System.out));
-            transformer.transform(document, result);
-        }
-	catch (Exception e) {
-            System.err.println("Exception: " + e); 
-	    e.printStackTrace();
-        }
-        System.exit(0);
-    }
-
-    public void usage() {
-        System.err.println("Usage: run <xml_file> <xsl_file>");
-        System.exit(1);
-    }
-
-}
diff --git a/samples/CompiledServlet/CompileServlet.java b/samples/CompiledServlet/CompileServlet.java
deleted file mode 100644
index 0f2dca8c..00000000
--- a/samples/CompiledServlet/CompileServlet.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import java.net.URL;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.xalan.xsltc.compiler.XSLTC;
-
-/**
- * @author Morten Jorgensen
- * @author Jacek Ambroziak
- */
-public class CompileServlet extends HttpServlet {
-
-    /**
-     * Main servlet entry point. The servlet reads a stylesheet from the
-     * URI specified by the "sheet" parameter. The compiled Java class
-     * ends up in the CWD of the web server (a better solution would be
-     * to have an environment variable point to a translet directory).
-     */
-    public void doGet(HttpServletRequest request,
-		      HttpServletResponse response)
-	throws IOException, ServletException {
-
-	response.setContentType("text/html");
-	PrintWriter out = response.getWriter();
-		
-	String stylesheetName = request.getParameter("sheet");
-	
-	out.println("<html><head>");
-	out.println("<title>Servlet Stylesheet Compilation</title>");
-	out.println("</head><body>");
-
-	if (stylesheetName == null) {
-	    out.println("<h1>Compilation error</h1>");
-	    out.println("The parameter <b><tt>sheet</tt></b> "+
-			"must be specified");
-	}
-	else {
-	    XSLTC xsltc = new XSLTC();
-
-	    xsltc.init();
-	    xsltc.compile(new URL(stylesheetName));
-	    out.println("<h1>Compilation successful</h1>");
-	    out.println("The stylesheet was compiled into the translet "+
-			"class "+xsltc.getClassName() + " and is now "+
-			"available for transformations on this server.");
-	}
-	out.println("</body></html>");
-    }
-}
diff --git a/samples/CompiledServlet/TransformServlet.java b/samples/CompiledServlet/TransformServlet.java
deleted file mode 100644
index 67c13da1..00000000
--- a/samples/CompiledServlet/TransformServlet.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.xml.sax.SAXException;
-
-/**
- * This servlet demonstrates how XSL transformations can be made available as
- * a web service. See the CompileServlet for an example on how stylesheets
- * can be pre-compiled before this servlet is invoked.
- *
- * Note that the XSLTC transformation engine is invoked through the JAXP
- * interface, using the XSLTC "use-classpath" attribute.  The
- * "use-classpath" attribute specifies to the XSLTC TransformerFactory
- * that a precompiled version of the stylesheet (translet) may be available,
- * and that that should be used in preference to recompiling the stylesheet.
- * @author Morten Jorgensen
- * @author Jacek Ambroziak
- */
-public final class TransformServlet extends HttpServlet {
-
-    /**
-     * Main servlet entry point
-     */
-    public void doGet(HttpServletRequest request,
-		      HttpServletResponse response)
-	throws IOException, ServletException {
-
-	// Initialise the output writer
-	response.setContentType("text/html");
-	PrintWriter out = response.getWriter();
-
-	// Get the two paramters "class" and "source".
- String transletName = request.getParameter("class");
-	String documentURI  = request.getParameter("source");
-
-	try {
-	    if ((transletName == null) || (documentURI == null)) {
-	        out.println("<h1>XSL transformation error</h1>");
-		out.println("The parameters <b><tt>class</tt></b> and " +
-			    "<b><tt>source</tt></b> must be specified");
-	    }
-	    else {
-                TransformerFactory tf = TransformerFactory.newInstance();
-                try {
-                    tf.setAttribute("use-classpath", Boolean.TRUE);
-                } catch (IllegalArgumentException iae) {
-                    System.err.println(
-                           "Could not set XSLTC-specific TransformerFactory "
-                         + "attributes.  Transformation failed.");
-                }
-                Transformer t =
-                         tf.newTransformer(new StreamSource(transletName));
-
-		// Start the transformation
-		final long start = System.currentTimeMillis();
-		t.transform(new StreamSource(documentURI),
-                            new StreamResult(out));
-		final long done = System.currentTimeMillis() - start;
-		out.println("<!-- transformed by XSLTC in "+done+"msecs -->");
-	    }
-	}
-	catch (Exception e) {
-	    out.println("<h1>Error</h1>");
-	    out.println(e.toString());
-	}
-    }
-}
diff --git a/samples/DOM2DOM/DOM2DOM.java b/samples/DOM2DOM/DOM2DOM.java
deleted file mode 100644
index 8e9c82a4..00000000
--- a/samples/DOM2DOM/DOM2DOM.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.dom.DOMSource;
-
-import org.apache.xml.serializer.Serializer;
-import org.apache.xml.serializer.SerializerFactory;
-import org.apache.xml.serializer.OutputPropertiesFactory;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException; 
-
-  /**
-   * Show how to transform a DOM tree into another DOM tree.  
-   * This uses the javax.xml.parsers to parse both an XSL file 
-   * and the XML file into a DOM, and create an output DOM.
-   */
-public class DOM2DOM
-{
-	public static void main(String[] args)
-    throws TransformerException, TransformerConfigurationException, FileNotFoundException,
-           ParserConfigurationException, SAXException, IOException
-  {    
-	  TransformerFactory tFactory = TransformerFactory.newInstance();
-
-    if(tFactory.getFeature(DOMSource.FEATURE) && tFactory.getFeature(DOMResult.FEATURE))
-    {
-      //Instantiate a DocumentBuilderFactory.
-      DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
-
-      // And setNamespaceAware, which is required when parsing xsl files
-      dFactory.setNamespaceAware(true);
-      
-      //Use the DocumentBuilderFactory to create a DocumentBuilder.
-      DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
-      
-      //Use the DocumentBuilder to parse the XSL stylesheet.
-      Document xslDoc = dBuilder.parse("birds.xsl");
-
-      // Use the DOM Document to define a DOMSource object.
-      DOMSource xslDomSource = new DOMSource(xslDoc);
-
-      // Set the systemId: note this is actually a URL, not a local filename
-      xslDomSource.setSystemId("birds.xsl");
-
-      // Process the stylesheet DOMSource and generate a Transformer.
-      Transformer transformer = tFactory.newTransformer(xslDomSource);
-
-      //Use the DocumentBuilder to parse the XML input.
-      Document xmlDoc = dBuilder.parse("birds.xml");
-      
-      // Use the DOM Document to define a DOMSource object.
-      DOMSource xmlDomSource = new DOMSource(xmlDoc);
-      
-      // Set the base URI for the DOMSource so any relative URIs it contains can
-      // be resolved.
-      xmlDomSource.setSystemId("birds.xml");
-      
-      // Create an empty DOMResult for the Result.
-      DOMResult domResult = new DOMResult();
-  
-  	  // Perform the transformation, placing the output in the DOMResult.
-      transformer.transform(xmlDomSource, domResult);
-	  
-	    //Instantiate an Xalan XML serializer and use it to serialize the output DOM to System.out
-	    // using the default output format, except for indent="yes"
-      java.util.Properties xmlProps = OutputPropertiesFactory.getDefaultMethodProperties("xml");
-      xmlProps.setProperty("indent", "yes");
-      xmlProps.setProperty("standalone", "no");
-      Serializer serializer = SerializerFactory.getSerializer(xmlProps);                             
-      serializer.setOutputStream(System.out);
-      serializer.asDOMSerializer().serialize(domResult.getNode());
-	}
-    else
-    {
-      throw new org.xml.sax.SAXNotSupportedException("DOM node processing not supported!");
-    }
-  }
-}
diff --git a/samples/Pipe/Pipe.java b/samples/Pipe/Pipe.java
deleted file mode 100644
index 798c243f..00000000
--- a/samples/Pipe/Pipe.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.IOException;
-
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.sax.TransformerHandler;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.xml.serializer.Serializer;
-import org.apache.xml.serializer.SerializerFactory;
-import org.apache.xml.serializer.OutputPropertiesFactory;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-  /**
-   * This example shows how to chain a series of transformations by
-   * piping SAX events from one Transformer to another. Each Transformer
-   * operates as a SAX2 XMLFilter/XMLReader.
-   */
-public class Pipe
-{
-	public static void main(String[] args)
-	throws TransformerException, TransformerConfigurationException, 
-         SAXException, IOException	   
-	{
-    // Instantiate  a TransformerFactory.
-  	TransformerFactory tFactory = TransformerFactory.newInstance();
-    // Determine whether the TransformerFactory supports The use uf SAXSource 
-    // and SAXResult
-    if (tFactory.getFeature(SAXSource.FEATURE) && tFactory.getFeature(SAXResult.FEATURE))
-    { 
-      // Cast the TransformerFactory to SAXTransformerFactory.
-      SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);	  
-      // Create a TransformerHandler for each stylesheet.
-      TransformerHandler tHandler1 = saxTFactory.newTransformerHandler(new StreamSource("foo1.xsl"));
-      TransformerHandler tHandler2 = saxTFactory.newTransformerHandler(new StreamSource("foo2.xsl"));
-      TransformerHandler tHandler3 = saxTFactory.newTransformerHandler(new StreamSource("foo3.xsl"));
-    
-      // Create an XMLReader.
-	    XMLReader reader = XMLReaderFactory.createXMLReader();
-      reader.setContentHandler(tHandler1);
-      reader.setProperty("http://xml.org/sax/properties/lexical-handler", tHandler1);
-
-      tHandler1.setResult(new SAXResult(tHandler2));
-      tHandler2.setResult(new SAXResult(tHandler3));
-
-      // transformer3 outputs SAX events to the serializer.
-      java.util.Properties xmlProps = OutputPropertiesFactory.getDefaultMethodProperties("xml");
-      xmlProps.setProperty("indent", "yes");
-      xmlProps.setProperty("standalone", "no");
-      Serializer serializer = SerializerFactory.getSerializer(xmlProps);
-      serializer.setOutputStream(System.out);
-      tHandler3.setResult(new SAXResult(serializer.asContentHandler()));
-
-	    // Parse the XML input document. The input ContentHandler and output ContentHandler
-      // work in separate threads to optimize performance.   
-      reader.parse("foo.xml");
-    }
-  }
-}
diff --git a/samples/SAX2SAX/SAX2SAX.java b/samples/SAX2SAX/SAX2SAX.java
deleted file mode 100644
index bbcd4022..00000000
--- a/samples/SAX2SAX/SAX2SAX.java
+++ /dev/null
@@ -1,108 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-/**
- *  Replicate the SimpleTransform sample, explicitly using the SAX model to handle the
- *  stylesheet, the XML input, and the transformation.
- */
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Templates;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.sax.TemplatesHandler;
-import javax.xml.transform.sax.TransformerHandler;
-
-import org.apache.xml.serializer.Serializer;
-import org.apache.xml.serializer.SerializerFactory;
-import org.apache.xml.serializer.OutputPropertiesFactory;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-
-public class SAX2SAX
-{
-  public static void main(String[] args)
-	throws TransformerException, TransformerConfigurationException, 
-         SAXException, IOException	   
-	{
-
-    // Instantiate a TransformerFactory.
-  	TransformerFactory tFactory = TransformerFactory.newInstance();
-    // Determine whether the TransformerFactory supports The use of SAXSource 
-    // and SAXResult
-    if (tFactory.getFeature(SAXSource.FEATURE) && tFactory.getFeature(SAXResult.FEATURE))
-    { 
-      // Cast the TransformerFactory.
-      SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);
-      // Create a ContentHandler to handle parsing of the stylesheet.
-      TemplatesHandler templatesHandler = saxTFactory.newTemplatesHandler();
-
-      // Create an XMLReader and set its ContentHandler.
-      XMLReader reader = XMLReaderFactory.createXMLReader();
-      reader.setContentHandler(templatesHandler);
-    
-      // Parse the stylesheet.                       
-      reader.parse("birds.xsl");
-
-      //Get the Templates object from the ContentHandler.
-      Templates templates = templatesHandler.getTemplates();
-      // Create a ContentHandler to handle parsing of the XML source.  
-      TransformerHandler handler 
-        = saxTFactory.newTransformerHandler(templates);
-      // Reset the XMLReader's ContentHandler.
-      reader.setContentHandler(handler);  
-
-      // Set the ContentHandler to also function as a LexicalHandler, which
-      // includes "lexical" events (e.g., comments and CDATA). 
-      reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
-      
-   	  FileOutputStream fos = new FileOutputStream("birds.out");
-      
-      java.util.Properties xmlProps = OutputPropertiesFactory.getDefaultMethodProperties("xml");
-      xmlProps.setProperty("indent", "yes");
-      xmlProps.setProperty("standalone", "no");      
-      Serializer serializer = SerializerFactory.getSerializer(xmlProps);
-      serializer.setOutputStream(fos);
-   
-      
-      // Set the result handling to be a serialization to the file output stream.
-      Result result = new SAXResult(serializer.asContentHandler());
-      handler.setResult(result);
-      
-      // Parse the XML input document.
-      reader.parse("birds.xml");
-      
-    	System.out.println("************* The result is in birds.out *************");	
-    }	
-    else
-      System.out.println("The TransformerFactory does not support SAX input and SAX output");
-  }
-}
diff --git a/samples/SimpleTransform/SimpleTransform.java b/samples/SimpleTransform/SimpleTransform.java
deleted file mode 100644
index fbb1ca0c..00000000
--- a/samples/SimpleTransform/SimpleTransform.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-/**
- *  Use the TraX interface to perform a transformation in the simplest manner possible
- *  (3 statements).
- */
-public class SimpleTransform
-{
-	public static void main(String[] args)
-    throws TransformerException, TransformerConfigurationException, 
-           FileNotFoundException, IOException
-  {  
-  // Use the static TransformerFactory.newInstance() method to instantiate 
-  // a TransformerFactory. The javax.xml.transform.TransformerFactory 
-  // system property setting determines the actual class to instantiate --
-  // org.apache.xalan.transformer.TransformerImpl.
-	TransformerFactory tFactory = TransformerFactory.newInstance();
-	
-	// Use the TransformerFactory to instantiate a Transformer that will work with  
-	// the stylesheet you specify. This method call also processes the stylesheet
-  // into a compiled Templates object.
-	Transformer transformer = tFactory.newTransformer(new StreamSource("birds.xsl"));
-
-	// Use the Transformer to apply the associated Templates object to an XML document
-	// (foo.xml) and write the output to a file (foo.out).
-	transformer.transform(new StreamSource("birds.xml"), new StreamResult(new FileOutputStream("birds.out")));
-	
-	System.out.println("************* The result is in birds.out *************");
-  }
-}
diff --git a/samples/Trace/Trace.java b/samples/Trace/Trace.java
deleted file mode 100644
index 05d90e77..00000000
--- a/samples/Trace/Trace.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.xalan.trace.PrintTraceListener;
-import org.apache.xalan.trace.TraceManager;
-import org.apache.xalan.transformer.TransformerImpl;
-
-/**
- * Sample for demonstrating Xalan "trace" interface.
- * Usage: run in Trace directory: java Trace
- * For an extensions trace sample, run in extensions
- * directory: java Trace 3-java-namespace
- */
-public class Trace
-{	
-  public static void main (String[] args)
-	  throws java.io.IOException, 
-			 TransformerException, TransformerConfigurationException,
-			 java.util.TooManyListenersException, 
-			 org.xml.sax.SAXException			 
-  {
-    String fileName = "foo";
-    if (args.length > 0)
-      fileName = args[0];
-
-    // Set up a PrintTraceListener object to print to a file.
-    java.io.FileWriter fw = new java.io.FileWriter("events.log");  
-    java.io.PrintWriter pw = new java.io.PrintWriter(fw, true);
-    PrintTraceListener ptl = new PrintTraceListener(pw);
-
-    // Print information as each node is 'executed' in the stylesheet.
-    ptl.m_traceElements = true;
-    // Print information after each result-tree generation event.
-    ptl.m_traceGeneration = true;
-    // Print information after each selection event.
-    ptl.m_traceSelection = true;
-    // Print information whenever a template is invoked.
-    ptl.m_traceTemplates = true;
-    // Print information whenever an extension call is made.
-    ptl.m_traceExtension = true;
-
-    // Set up the transformation    
-   	TransformerFactory tFactory = TransformerFactory.newInstance();
-    Transformer transformer = tFactory.newTransformer(new StreamSource(fileName + ".xsl"));
-
-    // Cast the Transformer object to TransformerImpl.
-    if (transformer instanceof TransformerImpl) 
-	  {
-      TransformerImpl transformerImpl = (TransformerImpl)transformer;
-      // Register the TraceListener with a TraceManager associated 
-      // with the TransformerImpl.
-      TraceManager trMgr = transformerImpl.getTraceManager();
-      trMgr.addTraceListener(ptl);
-                     
-      // Perform the transformation --printing information to
-      // the events log during the process.
-      transformer.transform
-                         ( new StreamSource(fileName + ".xml"), 
-                           new StreamResult(new java.io.FileWriter(fileName + ".out")) );
-    }
-    // Close the PrintWriter and FileWriter.
-    pw.close();
-    fw.close();
-   	System.out.println("**The output is in " + fileName + ".out; the log is in events.log ****");	
-    
-  }
-}
diff --git a/samples/TransformThread/TransformThread.java b/samples/TransformThread/TransformThread.java
deleted file mode 100644
index 3146fb42..00000000
--- a/samples/TransformThread/TransformThread.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.xml.sax.InputSource;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * What it does: this sample creates multiple threads 
- * and runs them. Each thread will be assigned a particular
- * stylesheet. Each thread will run multiple transformations on
- * various xml files using its own transformer.
- * 
- * Note: the flavors used by the transformations can be
- * configured below by changing SOURCE_FLAVOR and
- * RESULT_FLAVOR. XSLTC can also be used by changing
- * USE_XSLTC.
- * 
- * Description of files included with the sample:
- * 
- * foo0.xsl and foo1.xsl: foo0.xsl is the stylesheet used 
- * for transformations by thread #0, foo1.xsl is the stylesheet
- * used by thread #1.
- * 
- * foo0.xml and foo1.xml: foo0.xml and foo1.xml are the XML
- * files used for the first and second transformations done
- * by each thread.
- * 
- * Output will go to *.out files in the TransformThread directory.
- * 
- * @author <a href="mailto:richcao@ca.ibm.com">Richard Cao</a>
- */
-public class TransformThread implements Runnable
-{    
-  // Flavors
-  public final static int STREAM = 0;
-  public final static int SAX = 1;
-  public final static int DOM = 2;
-  public final static String[] flavorNames =
-    new String[] { "Stream", "SAX", "DOM" };
-
-  // Configurable options
-  private static int SOURCE_FLAVOR = STREAM;
-    // private static int SOURCE_FLAVOR = SAX;
-    // private static int SOURCE_FLAVOR = DOM;
-    
-  private static int RESULT_FLAVOR = STREAM;
-    // private static int RESULT_FLAVOR = SAX;
-    // private static int RESULT_FLAVOR = DOM;
-  
-  private static boolean USE_XSLTC = false;
-    // private static boolean useXSLTC = true;
-
-
-  // Threads
-  private final static int NUM_THREADS = 2;
-  private static TransformThread INSTANCES[] = null;
-  protected Thread m_thread = null;
-  
-  // Number of transformations per thread
-  private final static int NUM_TRANSFORMATIONS = 2;
-
-  // Files names and extensions
-  private final static String XML_IN_BASE = "foo";
-  private final static String XML_EXT = ".xml";
-  private final static String XSL_IN_BASE = "foo";
-  private final static String XSL_EXT = ".xsl";
-  private final static String FILE_OUT_BASE = "foo_";
-  private final static String FILE_OUT_EXT = ".out";
-
-  // Thread identifier
-  private int m_thrdNum = -1;
-
-  private InputStream[] m_inStream = null;
-
-  private Source[] m_inSource = null;
-  private Result[] m_outResult = null;
-
-  // One Transformer per thread since Transformers
-  // are _NOT_ thread-safe
-  private Transformer m_transformer = null;
-
-  /** Constructs the TransformThread object
-   * @param thrdNum a unique identifier for this object
-   */
-  public TransformThread(int thrdNum)
-  {
-    m_thrdNum = thrdNum;
-
-    m_inStream = new InputStream[NUM_TRANSFORMATIONS];
-    m_inSource = new Source[NUM_TRANSFORMATIONS];
-    m_outResult = new Result[NUM_TRANSFORMATIONS];
-
-    try
-    {
-      initSource();
-      initResult();
-
-      // ensure xslSourceURI is a valid URI
-      final String xslSourceFileName = XSL_IN_BASE + m_thrdNum + XSL_EXT;
-      final String xslSourceURI = (new File(xslSourceFileName)).toURL().toString();
-      StreamSource xslSource = new StreamSource(xslSourceFileName);
-      xslSource.setSystemId(xslSourceURI);
-      
-      // Initialize the tranformer
-      m_transformer =
-        TransformerFactory.newInstance().newTransformer(xslSource);
-      m_thread = new Thread(this);
-    }
-    catch (Throwable e)
-    {
-      e.printStackTrace();
-      System.exit(1);
-    }
-  }
-
-  /** Initialize the results (m_outResult) according
-   * to RESULT_FLAVOR
-   */
-  private void initResult()
-  {
-    try 
-    {
-      for (int i = 0; i < NUM_TRANSFORMATIONS; i++)
-      {
-        switch (RESULT_FLAVOR) 
-        {
-          case STREAM :
-              OutputStream outStream =
-                new FileOutputStream(FILE_OUT_BASE + "thread_" 
-                  + m_thrdNum + "_transformation_" + i + FILE_OUT_EXT);
-                
-              m_outResult[i] = new StreamResult(outStream);
-            break;
-
-          case SAX :
-            DefaultHandler defaultHandler = new DefaultHandler();
-            m_outResult[i] = new SAXResult(defaultHandler);
-            break;
-
-          case DOM :
-            m_outResult[i] = new DOMResult();
-            break;
-        }  
-      }
-    }
-    catch (Exception e)
-    { 
-      e.printStackTrace();
-      System.exit(1);
-    }
-  }
-
-  /** Initialize the sources (m_inSource) according
-   * to SOURCE_FLAVOR
-   */
-  private void initSource()
-  {
-    try 
-    {
-      for (int i = 0; i < NUM_TRANSFORMATIONS; i++)
-      {
-        // Ensure we get a valid URI
-        final String sourceXMLURI = (new File(XML_IN_BASE + i + XML_EXT)).toURL().toString();
-        
-        // Open for input
-        m_inStream[i] = new FileInputStream(XML_IN_BASE + i + XML_EXT);
-        
-        switch (SOURCE_FLAVOR)
-        {
-          case STREAM :
-            m_inSource[i] = new StreamSource(m_inStream[i]);
-            break;
-  
-          case SAX :
-            m_inSource[i] = new SAXSource(new InputSource(m_inStream[i]));
-            break;
-  
-          case DOM :
-            try
-            {
-              DocumentBuilderFactory dfactory =
-                DocumentBuilderFactory.newInstance();
-  
-              // Must always setNamespaceAware when 
-              // building xsl stylesheets
-              dfactory.setNamespaceAware(true);
-              m_inSource[i] =
-                new DOMSource(dfactory.newDocumentBuilder().parse(m_inStream[i]));
-            }
-            catch (Exception e)
-            {
-              e.printStackTrace();
-            }
-            break;
-        }
-  
-        if (m_inSource[i] != null)
-        {
-          // If we don't do this, the transformer 
-          // won't know how to resolve relative URLs 
-          // in the stylesheet.
-          m_inSource[i].setSystemId(sourceXMLURI);
-        }
-      }
-    }
-    catch (Exception e)
-    { 
-      e.printStackTrace();
-      System.exit(1);
-    }
-  }
-
-  /**
-   * @see java.lang.Runnable#run()
-   */
-  public void run()
-  {
-    try
-    {
-      // Perform multiple transformations with the same
-      // transformer
-      for (int i = 0; i < NUM_TRANSFORMATIONS; i++)
-      {
-        m_transformer.transform(m_inSource[i], m_outResult[i]);
-      }
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      System.exit(1);
-    }
-  }
-
-  /** Creates thread instances
-   */
-  private static void initThreads()
-  {
-    INSTANCES = new TransformThread[NUM_THREADS];
-
-    for (int count = 0; count < NUM_THREADS; count++)
-    {
-      INSTANCES[count] = new TransformThread(count);
-    }
-  }
-  
-  /** Sets the appropriate system properties if XSLTC is
-   * to be used (according to USE_XSLTC)
-   */
-  private static void initSystemProperties()
-  {
-    if (USE_XSLTC) 
-    {
-      // Set the TransformerFactory system property if XSLTC is required
-      // Note: To make this sample more flexible, load properties from a properties file.
-      // The setting for the Xalan Transformer is "org.apache.xalan.processor.TransformerFactoryImpl"
-      String key = "javax.xml.transform.TransformerFactory";
-      String value = "org.apache.xalan.xsltc.trax.TransformerFactoryImpl";
-      Properties props = System.getProperties();
-      props.put(key, value); 
-      System.setProperties(props);
-    }
-  }
-
-  /**
-   * Usage:
-   * java TransformThread
-   */
-  public static void main(String argv[])
-  {
-    try
-    { 
-      initSystemProperties();
-      initThreads();
-
-      for (int count = 0; count < NUM_THREADS; count++)
-      {
-        INSTANCES[count].m_thread.start();
-      }
-    }
-    catch (Throwable e)
-    {
-      e.printStackTrace();
-      System.exit(1);
-    }
-  }
-}
diff --git a/samples/UseStylesheetPI/UseStylesheetPI.java b/samples/UseStylesheetPI/UseStylesheetPI.java
deleted file mode 100644
index 0e2ee982..00000000
--- a/samples/UseStylesheetPI/UseStylesheetPI.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;	
-
-public class UseStylesheetPI
-{
-  public static void main(String[] args)
-	  throws TransformerException, TransformerConfigurationException
-	{
-	  String media= null , title = null, charset = null;
-	  try
-	  {	
-    	TransformerFactory tFactory = TransformerFactory.newInstance();
-      Source stylesheet = tFactory.getAssociatedStylesheet
-        (new StreamSource("fooX.xml"),media, title, charset);
-      
-      Transformer transformer = tFactory.newTransformer(stylesheet);
-        
-		   transformer.transform(new StreamSource("fooX.xml"), 
-                             new StreamResult(new java.io.FileOutputStream("foo.out")));
-       
-      System.out.println("************* The result is in foo.out *************");
-       
-	  }
-  	  catch (Exception e)
-	  {
-	    e.printStackTrace();
-	  }
-  }
-}
diff --git a/samples/UseStylesheetParam/UseStylesheetParam.java b/samples/UseStylesheetParam/UseStylesheetParam.java
deleted file mode 100644
index 24b655c1..00000000
--- a/samples/UseStylesheetParam/UseStylesheetParam.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.xml.sax.SAXException;
-
-  /**
-   * Use command-line input as a stylesheet parameter.
-   */
-
-public class UseStylesheetParam
-{
-  public static void main(String[] args)
-	throws TransformerException, TransformerConfigurationException, 
-         SAXException, IOException	   
-	{
-    if(args.length != 1)
-    {
-      System.err.println("Please pass one string to this program");
-      return;
-    }
-  	// Get the parameter value from the command line.
-    String paramValue = args[0];
-	
-   	TransformerFactory tFactory = TransformerFactory.newInstance();
-    Transformer transformer = tFactory.newTransformer(new StreamSource("foo.xsl"));
-
-	// Set the parameter. I can't get non-null namespaces to work!!
-    transformer.setParameter("param1",	/* parameter name */
-               							 paramValue /* parameter value */ );
-    
-    transformer.transform(new StreamSource("foo.xml"), new StreamResult(new OutputStreamWriter(System.out)));
-  }   
-}
diff --git a/samples/UseXMLFilters/UseXMLFilters.java b/samples/UseXMLFilters/UseXMLFilters.java
deleted file mode 100644
index 10b90939..00000000
--- a/samples/UseXMLFilters/UseXMLFilters.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.IOException;
-
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.xml.serializer.Serializer;
-import org.apache.xml.serializer.SerializerFactory;
-import org.apache.xml.serializer.OutputPropertiesFactory;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLFilter;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-  /**
-   * This example shows how to chain a series of transformations by
-   * piping SAX events from one Transformer to another. Each Transformer
-   * operates as a SAX2 XMLFilter/XMLReader.
-   */
-public class UseXMLFilters
-{
-  public static void main(String[] args)
-	throws TransformerException, TransformerConfigurationException, 
-         SAXException, IOException	   
-	{
-    // Instantiate  a TransformerFactory.
-  	TransformerFactory tFactory = TransformerFactory.newInstance();
-    // Determine whether the TransformerFactory supports The use uf SAXSource 
-    // and SAXResult
-    if (tFactory.getFeature(SAXSource.FEATURE) && tFactory.getFeature(SAXResult.FEATURE))
-    { 
-      // Cast the TransformerFactory to SAXTransformerFactory.
-      SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);
-  	  // Create an XMLFilter for each stylesheet.
-      XMLFilter xmlFilter1 = saxTFactory.newXMLFilter(new StreamSource("foo1.xsl"));
-      XMLFilter xmlFilter2 = saxTFactory.newXMLFilter(new StreamSource("foo2.xsl"));
-      XMLFilter xmlFilter3 = saxTFactory.newXMLFilter(new StreamSource("foo3.xsl"));
-    
-      // Create an XMLReader.
-	    XMLReader reader = XMLReaderFactory.createXMLReader();
-    
-      // xmlFilter1 uses the XMLReader as its reader.
-      xmlFilter1.setParent(reader);
-    
-      // xmlFilter2 uses xmlFilter1 as its reader.
-      xmlFilter2.setParent(xmlFilter1);
-    
-      // xmlFilter3 uses xmlFilter2 as its reader.
-      xmlFilter3.setParent(xmlFilter2);
-    
-      // xmlFilter3 outputs SAX events to the serializer.
-      java.util.Properties xmlProps = OutputPropertiesFactory.getDefaultMethodProperties("xml");
-      xmlProps.setProperty("indent", "yes");
-      xmlProps.setProperty("standalone", "no"); 
-      Serializer serializer = SerializerFactory.getSerializer(xmlProps);                      
-      serializer.setOutputStream(System.out);
-      xmlFilter3.setContentHandler(serializer.asContentHandler());
-
-  	  // Perform the series of transformations as follows:
-	    //   - transformer3 gets its parent (transformer2) as the XMLReader/XMLFilter
-	    //     and calls transformer2.parse(new InputSource("foo.xml")).
-      //   - transformer2 gets its parent (transformer1) as the XMLReader/XMLFilter
-	    //     and calls transformer1.parse(new InputSource("foo.xml")). 
-      //   - transformer1 gets its parent (reader, a SAXParser) as the XMLReader 
-      //     and calls reader.parse(new InputSource("foo.xml")).
-	    //   - reader parses the XML document and sends the SAX parse events to transformer1, 
-	    //     which performs transformation 1 and sends the output to transformer2.
-  	  //   - transformer2 parses the transformation 1 output, performs transformation 2, and 
-	    //     sends the output to transformer3.
-	    //   - transformer3 parses the transformation 2 output, performs transformation 3,
-  	  //     and sends the output to the serializer.
-      xmlFilter3.parse(new InputSource("foo.xml"));
-    }
-  }
-}
diff --git a/samples/Validate/Validate.java b/samples/Validate/Validate.java
deleted file mode 100644
index 5756d0f4..00000000
--- a/samples/Validate/Validate.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.FilenameFilter;
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.DefaultHandler;
-
-/* Use JAXP SAXParser to parse 1 .xml file or all the .xml files in a directory.
- * Takes 1 or 2 command-line arguments:
- *   Argument 1 (required) is a file name or directory name.
- *   Argument 2 (optional) is a log file name. If ommitted, messages are written to screen.
- */
-public class Validate
-{
-  static int numXMLFiles = 0;
-  static int numValidFiles = 0;
-  static int numInvalidFiles = 0;
-  static int numFilesMissingDoctype = 0;
-  static int numMalformedFiles = 0;
-  static boolean useLogFile = false;
-  static StringBuffer buff = new StringBuffer();
-
-  public static void main(String[] args)
-    throws FileNotFoundException, IOException, ParserConfigurationException, SAXException
-  {
-    if (args.length == 0 || args.length > 2)
-    {
-      System.out.println("\nEnter 'java validate -help' for information about running Validate");
-      return;
-    }
-    if (args[0].toLowerCase().equals("-help"))
-    { 
-      String sep = "\n====================================================\n";
-      String a = "Validate uses Xerces to parse the xml files in the directory you specify or the individual xml file you specify. The parser validates each document (checks that it conforms to its DOCTYPE).\n";
-      String b = "Each xml file should contain a DOCTYPE declaration.\n\n";
-      String c = "Validate takes 1 or 2 arguments:\n";
-      String d = " Argument 1 specifies a directory or an individual xml file.\n";
-      String e = " Argument 2 specifies a log file. If you include this argument, Validate appends messages to this file. If you do not, Validate writes messages to the screen.\n";
-      System.out.println(sep+a+b+c+d+e+sep);
-      return;
-    }    
-    try
-    {
-      Validate v = new Validate();
-      v.validate(args);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-    }    
-  }
-  
-  void validate(String[] args)
-    throws FileNotFoundException, IOException, ParserConfigurationException, SAXException
-  {
-    File dir = new File(args[0]);
-   
-    // User may include a 2nd argument for the log file. 
-    useLogFile = (args.length == 2);
-   
-    if (dir.isFile()) // Just checking one file.
-    {
-      parse(null,args[0]);
-    }
-    else if (dir.isDirectory())  // Checking the contents of a directory.
-    {
-      // Only interested in .xml files.
-      XMLFileFilter filter = new XMLFileFilter();
-      String [] files = dir.list(filter);
-      for (int i = 0; i <files.length; i++)
-      { 
-        parse(dir.toString(),files[i]); // All the work is done here.
-        
-        if (!useLogFile) 
-        // Write messages to screen after parsing each file.
-        {
-          System.out.print(buff.toString());
-          buff = new StringBuffer();
-        }
-      }
-    }
-    else // Command-line argument is no good!
-    {
-      System.out.println(args[0] + " not found!");
-      return;
-    }
-    // Provide user with a summary.
-    buff.append("================SUMMARY=============================\n");
-    if (numXMLFiles > 1)
-      buff.append("Parsed " + numXMLFiles + " .xml files in " +  args[0] + ".\n");
-    if (numValidFiles > 1)
-      buff.append( numValidFiles + " files are valid.\n");
-    else if (numValidFiles == 1)
-      buff.append( numValidFiles + " file is valid.\n");
-    if (numInvalidFiles > 1)
-      buff.append(numInvalidFiles + " files are not valid.\n");
-    else if (numInvalidFiles == 1)
-      buff.append( numInvalidFiles + " file is not valid.\n");
-    if (numMalformedFiles > 1)
-      buff.append(numMalformedFiles + " files are not well-formed.\n");
-    else if (numMalformedFiles == 1)
-      buff.append( numMalformedFiles + " file is not well-formed.\n");
-    if (numFilesMissingDoctype > 1)
-      buff.append(numFilesMissingDoctype + " files do not contain a DOCTYPE declaration.\n");
-    else if (numFilesMissingDoctype == 1)
-      buff.append(numFilesMissingDoctype + " file does not contain a DOCTYPE declaration.\n");
-     
-    if (!useLogFile)
-      System.out.print(buff.toString());
-    else
-    {
-      // If log file exists, append.
-      FileWriter writer = new FileWriter(args[1], true);
-      writer.write(new java.util.Date().toString()+ "\n");
-      writer.write(buff.toString());
-      writer.close();     
-      System.out.println("Done with validation. See " + args[1] + ".");
-    }
-  }
-  
-  // Parse each XML file.
-  void parse(String dir, String filename)
-     throws FileNotFoundException, IOException, ParserConfigurationException, SAXException
-  {
-    try 
-    {
-      File f = new File(dir, filename);
-      StringBuffer errorBuff = new StringBuffer();
-      InputSource input = new InputSource(new FileInputStream(f));
-      // Set systemID so parser can find the dtd with a relative URL in the source document.
-      input.setSystemId(f.toString());
-      SAXParserFactory spfact = SAXParserFactory.newInstance();
-       
-      spfact.setValidating(true);
-      spfact.setNamespaceAware(true);
-            
-      SAXParser parser = spfact.newSAXParser();
-      XMLReader reader = parser.getXMLReader();
-      
-      //Instantiate inner-class error and lexical handler.
-      Handler handler = new Handler(filename, errorBuff);
-      reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
-      parser.parse(input, handler);
-
-      if (handler.containsDTD && !handler.errorOrWarning) // valid
-      {
-        buff.append("VALID " + filename +"\n");
-        numValidFiles++;
-      }
-      else if (handler.containsDTD) // not valid
-      {
-        buff.append ("NOT VALID " + filename + "\n");
-        buff.append(errorBuff.toString());
-        numInvalidFiles++;
-      }
-      else // no DOCTYPE to use for validation
-      {
-        buff.append("NO DOCTYPE DECLARATION " + filename + "\n");
-        numFilesMissingDoctype++;
-      }
-    }
-    catch (Exception e) // Serious problem!
-    {
-      buff.append("NOT WELL-FORMED " + filename + ". " + e.getMessage() + "\n");
-      numMalformedFiles++;
-    }
-    finally
-    {
-      numXMLFiles++;
-    }
-  }
-  // Inner classes
-  
-  // Only interested in parsing .xml files.
-  class XMLFileFilter implements FilenameFilter
-  {
-    public boolean accept(File dir, String fileName)
-    {
-      return fileName.toLowerCase().endsWith(".xml") && new File(dir.toString(),fileName).isFile();
-    }
-  }
-  
-  // Catch any errors or warnings, and verify presence of doctype statement.
-  class Handler extends DefaultHandler implements LexicalHandler
-  {
-    boolean errorOrWarning;
-    boolean containsDTD;
-    String sourceFile;
-    StringBuffer errorBuff;  
-  
-    Handler(String sourceFile, StringBuffer errorBuff)
-    {
-      super();
-      this.sourceFile = sourceFile;
-      this.errorBuff = errorBuff;
-      errorOrWarning = false;
-      containsDTD = false;
-    }
-    
-    public void error(SAXParseException exc)
-    {
-      errorBuff.append(sourceFile + " Error: " + exc.getMessage()+ "\n");    
-      errorOrWarning = true;
-    }
-    public void warning(SAXParseException exc)
-    {
-      errorBuff.append(sourceFile + " Warning:" + exc.getMessage()+ "\n");   
-      errorOrWarning = true;
-    }
-
-    // LexicalHandler methods; all no-op except startDTD().
-    
-    // Set containsDTD to true when startDTD event occurs.
-    public void startDTD (String name, String publicId, String systemId)
-	    throws SAXException
-    {
-      containsDTD = true;
-    }
- 
-    public void endDTD () throws SAXException
-    {}  
-  
-    public void startEntity (String name) throws SAXException
-    {}
-  
-    public void endEntity (String name) throws SAXException
-    {}
-  
-    public void startCDATA () throws SAXException
-    {}
-  
-    public void endCDATA () throws SAXException
-    {}
-  
-    public void comment (char ch[], int start, int length) throws SAXException
-    {}
-  }
-}
diff --git a/samples/Validate/ValidateXMLInput.java b/samples/Validate/ValidateXMLInput.java
deleted file mode 100644
index bbf3dc7b..00000000
--- a/samples/Validate/ValidateXMLInput.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Validate the XML input by using SAXParserFactory to turn on namespace awareness and 
- * validation, and a SAX XMLReader to parse the input and report problems to an error 
- * handler.
- * 
- * This sample uses birds.xml with an internal DOCTYPE declaration. As shipped, birds.xml
- * contains an element that violates the declared document type.
- */
-public class ValidateXMLInput
-{
-  
-  public static void main(String[] args) 
-    throws Exception
-  {
-    ValidateXMLInput v = new ValidateXMLInput();
-    v.validate();
-  }
-
-  void validate()
-    throws Exception
-   {
-     // Since we're going to use a SAX feature, the transformer must support 
-    // input in the form of a SAXSource.
-    TransformerFactory tfactory = TransformerFactory.newInstance();
-    if(tfactory.getFeature(SAXSource.FEATURE))
-    {
-      // Standard way of creating an XMLReader in JAXP 1.1.
-      SAXParserFactory pfactory= SAXParserFactory.newInstance();
-      pfactory.setNamespaceAware(true); // Very important!
-      // Turn on validation.
-      pfactory.setValidating(true);
-      // Get an XMLReader.
-      XMLReader reader = pfactory.newSAXParser().getXMLReader();
-  
-      // Instantiate an error handler (see the Handler inner class below) that will report any
-      // errors or warnings that occur as the XMLReader is parsing the XML input.
-      Handler handler = new Handler();
-      reader.setErrorHandler(handler);
-  
-      // Standard way of creating a transformer from a URL.
-      Transformer t = tfactory.newTransformer(
-        new StreamSource("birds.xsl"));
-      
-      // Specify a SAXSource that takes both an XMLReader and a URL.
-      SAXSource source = new SAXSource(reader,
-        new InputSource("birds.xml"));
-      
-      // Transform to a file.
-      try
-      {
-        t.transform(source, new StreamResult("birds.out"));
-      }
-      catch (TransformerException te)
-      {
-        // The TransformerException wraps someting other than a SAXParseException
-        // warning or error, either of which should be "caught" by the Handler.
-        System.out.println("Not a SAXParseException warning or error: " + te.getMessage());
-      }
-                                  
-      System.out.println("=====Done=====");
-    }
-    else
-      System.out.println("tfactory does not support SAX features!");
-  }
-
-  // Catch any errors or warnings from the XMLReader.
-  class Handler extends DefaultHandler
-  {
-    public void warning (SAXParseException spe)
-	     throws SAXException
-    {
-      System.out.println("SAXParseException warning: " + spe.getMessage());
-    }    
-
-    public void error (SAXParseException spe)
-    	throws SAXException
-    {
-      System.out.println("SAXParseException error: " + spe.getMessage());
-    }     
-  }
-}
diff --git a/samples/XPathAPI/ApplyXPathJAXP.java b/samples/XPathAPI/ApplyXPathJAXP.java
deleted file mode 100644
index 0bba26fa..00000000
--- a/samples/XPathAPI/ApplyXPathJAXP.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import java.io.OutputStreamWriter;
-
-import javax.xml.namespace.*;
-import javax.xml.transform.*;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.xpath.*;
-import org.xml.sax.*;
-import org.w3c.dom.*;
-
-/**
- * JAXP 1.3 XPath API sample.
- * 
- * Basic utility for applying an XPath expression to an input xml file and printing
- * the evaluation result, using JAXP 1.3 XPath API.
- * 
- * Takes 3 arguments:
- * (1) an xml file name
- * (2) an XPath expression to apply to the input document
- * (3) the return type, which is one of the following Strings:
- *     num, bool, str, node, nodeset
- * 
- * Examples:
- * 	java ApplyXPathJAXP foo.xml /doc/name[1]/@last str
- * 	java ApplyXPathJAXP foo.xml /doc/name nodeset
- */
-public class ApplyXPathJAXP
-{
-    public static void main(String[] args)
-    {
-    	QName returnType = null;
-    	
-        if (args.length != 3)
-        {
-            System.err.println("Usage: java ApplyXPathAPI xml_file xpath_expression type");
-        }
-        
-        InputSource xml = new InputSource(args[0]);
-        String expr = args[1];
-        
-        // set the return type
-        if (args[2].equals("num")) returnType = XPathConstants.NUMBER;
-        else if (args[2].equals("bool")) returnType = XPathConstants.BOOLEAN;
-        else if (args[2].equals("str")) returnType = XPathConstants.STRING;
-        else if (args[2].equals("node")) returnType = XPathConstants.NODE;
-        else if (args[2].equals("nodeset")) returnType = XPathConstants.NODESET;
-        else
-          System.err.println("Invalid return type: " + args[2]);
-        
-        // Create a new XPath
-        XPathFactory factory = XPathFactory.newInstance();
-        XPath xpath = factory.newXPath();
-        
-        Object result = null;
-        try {
-          // compile the XPath expression
-          XPathExpression xpathExpr = xpath.compile(expr);
-          
-          // Evaluate the XPath expression against the input document
-          result = xpathExpr.evaluate(xml, returnType);
-          
-          // Print the result to System.out.
-          printResult(result);
-        }
-        catch (Exception e) {
-          e.printStackTrace();
-        }        
-    }
-    
-    /**
-     * Print the type and value of the evaluation result.
-     */
-    static void printResult(Object result)
-      throws Exception
-    {
-        if (result instanceof Double) {
-            System.out.println("Result type: double");
-            System.out.println("Value: " + result);
-        }
-        else if (result instanceof Boolean) {
-            System.out.println("Result type: boolean");
-            System.out.println("Value: " + ((Boolean)result).booleanValue());
-        }	
-        else if (result instanceof String) {
-            System.out.println("Result type: String");
-             System.out.println("Value: " + result);
-        }
-        else if (result instanceof Node) {
-            Node node = (Node)result;
-            System.out.println("Result type: Node");
-            System.out.println("<output>");
-            printNode(node);
-            System.out.println("</output>");
-        }
-        else if (result instanceof NodeList) {
-            NodeList nodelist = (NodeList)result;
-            System.out.println("Result type: NodeList");
-            System.out.println("<output>");
-            printNodeList(nodelist);
-            System.out.println("</output>");
-        }
-    }
-
-    /** Decide if the node is text, and so must be handled specially */
-    static boolean isTextNode(Node n) 
-    {
-      if (n == null)
-        return false;
-      short nodeType = n.getNodeType();
-      return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE;
-    }
-    
-    static void printNode(Node node) 
-      throws Exception
-    {
-      if (isTextNode(node)) {
-        System.out.println(node.getNodeValue());       
-      }
-      else {
-        // Set up an identity transformer to use as serializer.
-        Transformer serializer = TransformerFactory.newInstance().newTransformer();
-        serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-        serializer.transform(new DOMSource(node), new StreamResult(new OutputStreamWriter(System.out)));
-      }        
-       
-    }
-    
-    static void printNodeList(NodeList nodelist) 
-      throws Exception
-    {
-      Node n;
-      
-      // Set up an identity transformer to use as serializer.
-      Transformer serializer = TransformerFactory.newInstance().newTransformer();
-      serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-      
-      for (int i = 0; i < nodelist.getLength(); i++)
-      {         
-	n = nodelist.item(i);
-	if (isTextNode(n)) {
-	    // DOM may have more than one node corresponding to a 
-	    // single XPath text node.  Coalesce all contiguous text nodes
-	    // at this level
-	    StringBuffer sb = new StringBuffer(n.getNodeValue());
-	    for (
-	      Node nn = n.getNextSibling(); 
-	      isTextNode(nn);
-	      nn = nn.getNextSibling()
-	    ) {
-	      sb.append(nn.getNodeValue());
-	    }
-	    System.out.print(sb);
-	}
-	else {
-         serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(System.out)));
-	}
-        System.out.println();
-      }
-    }
-}
diff --git a/samples/XPathAPI/ExtensionFunctionResolver.java b/samples/XPathAPI/ExtensionFunctionResolver.java
deleted file mode 100644
index f3ebf3ff..00000000
--- a/samples/XPathAPI/ExtensionFunctionResolver.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathFactory;
-import org.apache.xalan.extensions.XPathFunctionResolverImpl;
-import org.apache.xalan.extensions.ExtensionNamespaceContext;
-import org.xml.sax.InputSource;
-
-/**
- * JAXP 1.3 XPath API sample.
- * 
- * This sample shows how to use the sample XPathFunctionResolver to evaluate
- * XPath expressions containing Java or EXSLT extension functions. 
- * 
- * To support extension functions in XPath expressions, you have to set an 
- * XPathFunctionResolver on the XPath object. You can provide your implementation
- * of XPathFunctionResolver or use sample XPathFunctionResolver in
- * org.apache.xalan.extensions.XPathFunctionResolverImpl, which supports
- * the usage of Java and EXSLT extension functions.
- * 
- * You also need to provide a NamespaceContext for the XPath evaluation. You 
- * can provide your own implementation of NamespaceContext, or use the sample
- * implementation in org.apache.xalan.extensions.ExtensionNamespaceContext, 
- * which supports the following namespace prefix to URI mappings:
- * 
- * 	java  --> http://xml.apache.org/xalan/java
- * 	exslt --> http://exslt.org/common
- * 	math  --> http://exslt.org/math
- * 	set   --> http://exslt.org/sets
- * 	str   --> http://exslt.org/strings
- * 	dyn   --> http://exslt.org/dynamic
- * 	datetime --> http://exslt.org/dates-and-times
- * 
- * To run this sample, you have to put the directory containing ExtensionTest.class
- * on your classpath.
- */
-public class ExtensionFunctionResolver
-{
-    // An XPath expression containing an EXSLT extension function call.
-    public static final String EXPR1 = "math:max(/doc/num)";
-    
-    // An XPath expression containing a Java extension function call.
-    // You have to compile the Java source file ExtensionTest.java and put
-    // the directory containing ExtensionTest.class on your classpath.
-    public static final String EXPR2 = "java:ExtensionTest.test('Bob')";
-       
-    public static void main(String[] args) throws Exception
-    {
-        XPathFactory factory = XPathFactory.newInstance();
-        XPath xpath = factory.newXPath();
-        
-        // set the NamespaceContext to 
-        // org.apache.xalan.extensions.ExtensionNamespaceContext
-        xpath.setNamespaceContext(new ExtensionNamespaceContext());
-        
-        // set the XPathFunctionResolver to 
-        // org.apache.xalan.extensions.XPathFunctionResolverImpl
-        xpath.setXPathFunctionResolver(new XPathFunctionResolverImpl());
-        
-        Object result = null;
-        // Evaluate the XPath expression "math:max(/doc/num)" against 
-        // the input document numlist.xml
-        InputSource context = new InputSource("numlist.xml");
-        result = xpath.evaluate(EXPR1, context, XPathConstants.NUMBER);
-        System.out.println(EXPR1 + " = " + result);
-        
-        // Evaluate the XPath expression "java:ExtensionTest.test('Bob')"
-        result = xpath.evaluate(EXPR2, context, XPathConstants.STRING);
-        System.out.println(EXPR2 + " = " + result);
-    }
-    
-}
diff --git a/samples/XPathAPI/ExtensionTest.java b/samples/XPathAPI/ExtensionTest.java
deleted file mode 100644
index a97a2c0e..00000000
--- a/samples/XPathAPI/ExtensionTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-public class ExtensionTest
-{
-    public static String test(String name)
-    {
-        return "Hello " + name + "!";
-    }
-}
diff --git a/samples/XPathAPI/XPathResolver.java b/samples/XPathAPI/XPathResolver.java
deleted file mode 100644
index 50cbddab..00000000
--- a/samples/XPathAPI/XPathResolver.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import javax.xml.namespace.*;
-import javax.xml.xpath.*;
-import java.util.Iterator;
-
-/**
- * JAXP 1.3 XPath API sample.
- * 
- * This sample demonstrates the use of NamespaceContext, XPathFunctionResolver
- * and XPathVariableResolver. The evaluated XPath expression ("ex:addFunc(2, 3) + $xyz")
- * contains an extension function and a variable reference. The extension function
- * and variable are evaluated using our customized XPathFunctionResolver and
- * XPathVariableResolver respectively. A NamespaceContext implementation is also
- * needed to map the prefix in the extension function to a valid namespace uri. 
- */
-public class XPathResolver
-{
-    /**
-     * The XPath expression to evaluate, which contains an extension
-     * function and a variable reference.
-     */
-    private static final String EXPR = "ex:addFunc(2, 3) + $xyz";
-    
-    /**
-     * The NamespaceContext implementation is used to map the prefix "ex"
-     * to the namespace uri "http://ex.com".
-     */
-    public static class MyNamespaceContext implements NamespaceContext
-    {
-        public String getNamespaceURI(String prefix)
-        {
-            if (prefix == null)
-              throw new IllegalArgumentException("The prefix cannot be null.");
-            
-            if (prefix.equals("ex"))
-                return "http://ex.com";
-            else
-                return null;
-        }
-        
-        public String getPrefix(String namespace)
-        {
-            if (namespace == null)
-              throw new IllegalArgumentException("The namespace uri cannot be null.");
-            if (namespace.equals("http://ex.com"))
-              return "ex";
-            else
-              return null;
-        }
-
-        public Iterator getPrefixes(String namespace)
-        {
-            return null;
-        }
-    }
-    
-    /**
-     * The XPathFunctionResolver implementation is used to evaluate
-     * the extension function "ex:addFunc(2, 3)".
-     */
-    public static class MyFunctionResolver implements XPathFunctionResolver
-    {
-    	/**
-    	 * This method returns a customized XPathFunction implementation
-    	 * for the extension function "ex:addFunc()".
-    	 */
-    	public XPathFunction resolveFunction(QName fname, int arity)
-    	{
-    	  if (fname == null)
-    	    throw new NullPointerException("The function name cannot be null.");
-    	  
-    	  // We only recognize one function, i.e. ex:addFunc().
-    	  if (fname.equals(new QName("http://ex.com", "addFunc", "ex")))
-    	    /** 
-    	     * Return a customized implementation of XPathFunction. We need
-    	     * to implement the evaluate(List) method.
-    	     */
-    	    return new XPathFunction() {
-    	      /**
-    	       * The actual implementation of the extension function.
-    	       * Just cast two arguments to Double and add them together.
-    	       */
-    	      public Object evaluate(java.util.List args) {
-    	        if (args.size() == 2) {
-    	          Double arg1 = (Double)args.get(0);
-    	          Double arg2 = (Double)args.get(1);
-    	          return new Double(arg1.doubleValue() + arg2.doubleValue());
-    	        }
-    	        else
-    	          return null;
-    	      }
-    	    };
-    	  else
-    	    return null;
-    	}
-    }
-    
-    /**
-     * Our own implementation of XPathVariableResolver, which resolves the 
-     * variable "xyz" to a double value 4.0.
-     */
-    public static class MyVariableResolver implements XPathVariableResolver
-    {
-      public Object resolveVariable(QName varName)
-      {
-        if (varName == null)
-          throw new NullPointerException("The variable name cannot be null.");
-        
-        if (varName.equals(new QName("", "xyz")))
-          return new Double(4.0);
-        else
-          return null;        	
-      }
-    }
-
-    
-    public static void main(String[] args)
-    {    	        
-        XPathFactory factory = XPathFactory.newInstance();
-        XPath xpath = factory.newXPath();
-        // Set the NamespaceContext
-        xpath.setNamespaceContext(new MyNamespaceContext());
-        // Set the function resolver
-        xpath.setXPathFunctionResolver(new MyFunctionResolver());
-        // Set the variable resolver
-        xpath.setXPathVariableResolver(new MyVariableResolver());
-        
-        Object result = null;
-        try {
-          result = xpath.evaluate(EXPR, (Object)null, XPathConstants.NUMBER);
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-        
-        // The evaluation result is 9.0.
-        System.out.println("The evaluation result: " + result);
-    }
-    
-}
diff --git a/samples/extensions/IntDate.java b/samples/extensions/IntDate.java
deleted file mode 100644
index 41c29fa2..00000000
--- a/samples/extensions/IntDate.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-import java.util.Calendar;
-import java.util.Date;
-
-public class IntDate
-{
-  public static Date getDate(String year, String month, String day)
-    {
-      // Date(int, int, int) has been deprecated, so use Calendar to
-      // set the year, month, and day.
-      Calendar c = Calendar.getInstance();
-      // Convert each argument to int.
-      c.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));
-      return c.getTime();
-    }
-}
-
diff --git a/samples/extensions/MyCounter.java b/samples/extensions/MyCounter.java
deleted file mode 100644
index 6accf7df..00000000
--- a/samples/extensions/MyCounter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-import java.util.Hashtable;
-
-public class MyCounter {
-  static Hashtable counters = new Hashtable ();
-
-
-  public void init(org.apache.xalan.extensions.XSLProcessorContext context, 
-                   org.w3c.dom.Element elem) 
-  {
-    String name = elem.getAttribute("name");
-    String value = elem.getAttribute("value");
-    int val;
-    try 
-    {
-      val = Integer.parseInt (value);
-    } 
-    catch (NumberFormatException e) 
-    {
-      e.printStackTrace ();
-      val = 0;
-    }
-    counters.put (name, new Integer (val));
-  }
-
-  public int read(String name) 
-  { 
-    Integer cval = (Integer)counters.get(name);
-    return (cval == null) ? 0 : cval.intValue();
-  }
-
-  public void incr(org.apache.xalan.extensions.XSLProcessorContext context,  
-                   org.w3c.dom.Element elem) {
-    String name = elem.getAttribute("name");
-    Integer cval = (Integer) counters.get(name);
-    int nval = (cval == null) ? 0 : (cval.intValue () + 1);
-    counters.put (name, new Integer (nval));
-  }
-}
diff --git a/samples/extensions/sql/ext-connection/ExternalConnection.java b/samples/extensions/sql/ext-connection/ExternalConnection.java
deleted file mode 100644
index 0558f05c..00000000
--- a/samples/extensions/sql/ext-connection/ExternalConnection.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-// Imported TraX classes
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerConfigurationException;
-
-import org.apache.xalan.lib.sql.DefaultConnectionPool;
-import org.apache.xalan.lib.sql.ConnectionPoolManager;
-
-
-// Imported java classes
-import java.io.StringReader;
-import java.io.FileOutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-/**
- *  Use the TraX interface to perform a transformation in the simplest manner possible
- *  (3 statements).
- */
-public class ExternalConnection
-{
-	public static void main(String[] args)
-    throws TransformerException, TransformerConfigurationException,
-           FileNotFoundException, IOException
-  {
-
-  // Create a connection to the database server
-  // Up the connection pool count for testing
-  DefaultConnectionPool cp = new DefaultConnectionPool();
-  cp.setDriver("org.apache.derby.jdbc.EmbeddedDriver");
-  cp.setURL("jdbc:derby:sampleDB");
-  //cp.setUser("sa");
-  //cp.setPassword("");
-  cp.setMinConnections(10);
-  cp.setPoolEnabled(true);
-
-  // Now let's register our connection pool so we can use
-  // in a stylesheet
-  ConnectionPoolManager pm = new ConnectionPoolManager();
-  pm.registerPool("extpool", cp);
-
-
-  // Use the static TransformerFactory.newInstance() method to instantiate
-  // a TransformerFactory. The javax.xml.transform.TransformerFactory
-  // system property setting determines the actual class to instantiate --
-  // org.apache.xalan.transformer.TransformerImpl.
-	TransformerFactory tFactory = TransformerFactory.newInstance();
-
-  // Grab the Name of the Stylesheet from the commad line
-  if (args.length == 0)
-  {
-    System.out.println("You must provide the path and name to a stylesheet to process");
-    System.exit(0);
-  }
-  
-  String stylesheet = args[0];
-  System.out.println("Transforming Stylesheet " + stylesheet);
-  
-	// Use the TransformerFactory to instantiate a Transformer that will work with
-	// the stylesheet you specify. This method call also processes the stylesheet
-  // into a compiled Templates object.
-	Transformer transformer = tFactory.newTransformer(
-        new StreamSource(stylesheet));
-
-	// For this transformation, all the required information is in the stylesheet, so generate 
-  // a minimal XML source document for the input.
-  // Note: the command-line processor (org.apache.xalan.xslt.Process) uses this strategy when 
-  // the user does not provide an -IN parameter.
-  StringReader reader =
-              new StringReader("<?xml version=\"1.0\"?> <doc/>");
-
-  // Use the Transformer to apply the associated Templates object to an XML document
-	// and write the output to a file.
-	transformer.transform(
-        new StreamSource(reader),
-        new StreamResult(new FileOutputStream("dbtest-out.html")));
-
-	System.out.println("************* The result is in dbtest-out.html *************");
-  
-  cp.setPoolEnabled(false);
-  }
-}
diff --git a/lib/brazil-2.1.jar b/samples/lib/brazil-2.1.jar
similarity index 100%
rename from lib/brazil-2.1.jar
rename to samples/lib/brazil-2.1.jar
diff --git a/samples/pom.xml b/samples/pom.xml
new file mode 100644
index 00000000..ce8e682e
--- /dev/null
+++ b/samples/pom.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>apache-xalan-j-2.7.3-maint-main</artifactId>
+    <groupId>apache-xalan-j-2.7.3-maint-main</groupId>
+    <version>2.7.3-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>samples</artifactId>
+  <name>Apache Xalan-Java 2.7.3 Samples</name>
+  <!-- FIXME change it to the project's website -->
+  <url>http://www.example.com</url>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>apache-xalan-j-2.7.3-maint-main</groupId>
+      <artifactId>serializer</artifactId>
+      <version>2.7.3-SNAPSHOT</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>apache-xalan-j-2.7.3-maint-main</groupId>
+      <artifactId>xalan</artifactId>
+      <version>2.7.3-SNAPSHOT</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>2.5</version> <!-- jakata servlet is at 6.0 -->
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- https://mvnrepository.com/artifact/javax.ejb/ejb-api -->
+    <dependency>
+      <groupId>javax.ejb</groupId>
+      <artifactId>ejb-api</artifactId>
+      <version>3.0</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
+    <dependency>
+      <groupId>xerces</groupId>
+      <artifactId>xercesImpl</artifactId>
+      <version>2.12.2</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- It isn't clear whether, or where, the Brazil server code
+	 is avalable on Maven. And I suspect the right answer is
+	 really to eliminate use of it in favor of more modern
+	 solutions. But Sun used it in their XSLTC samples, and
+	 for now I'll just continue carrying a local (ugh) copy.
+	 -->
+    <dependency>
+      <groupId>sunlabs</groupId>
+      <artifactId>brazil</artifactId>
+      <version>2.1</version>
+      <scope>system</scope>
+      <systemPath>${basedir}/lib/brazil-2.1.jar</systemPath>
+    </dependency>
+
+    <!-- https://mvnrepository.com/artifact/org.jboss.spec.javax.rmi/jboss-rmi-api_1.0_spec -->
+    <dependency>
+      <groupId>org.jboss.spec.javax.rmi</groupId>
+      <artifactId>jboss-rmi-api_1.0_spec</artifactId>
+      <version>1.0.6.Final</version>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <plugins>
+      <!--
+	  https://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html -->
+      <plugin>
+	<groupId>org.apache.maven.plugins</groupId>
+	<artifactId>maven-shade-plugin</artifactId>
+	<version>3.5.0</version>
+	<executions>
+	  <execution>
+	    <phase>package</phase>
+	    <goals>
+	      <goal>shade</goal>
+	    </goals>
+	    <configuration>
+	      <artifactSet>
+		<excludes>
+		  <!-- Their examples (testing) -->
+		  <exclude>junit:junit</exclude>
+		  <exclude>jmock:*</exclude>
+		  <exclude>org.apache.maven:lib:tests</exclude>
+		  <!-- What I think I need to exclude.
+		       Some are direct dependencies, some come in
+		       via maven packages. -->
+		  <exclude>com.github.vbmacher:java-cup</exclude>
+		  <exclude>commons-logging:commons-logging</exclude>
+		  <exclude>org.apache.commons:commons-lang3</exclude>
+		  <exclude>org.apache.ant:ant</exclude>
+		  <exclude>org.apache.ant:ant-launcher</exclude>
+		  <exclude>apache-xalan-j-2.7.3-maint-main:serializer</exclude>
+		  <exclude>de.jflex:jflex</exclude>	
+		</excludes>
+	      </artifactSet>
+	    </configuration>
+	  </execution>
+	</executions>
+      </plugin>
+  </plugins>
+  </build>
+</project>
diff --git a/samples/servlet/ApplyXSLT.java b/samples/servlet/ApplyXSLT.java
deleted file mode 100644
index 50c4d807..00000000
--- a/samples/servlet/ApplyXSLT.java
+++ /dev/null
@@ -1,854 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-package servlet;
-
-import java.io.*;
-import java.util.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import java.net.URL;
-import java.net.MalformedURLException;
-import java.net.URLConnection;
-import javax.xml.transform.OutputKeys;
-
-import org.apache.xalan.templates.Constants;
-import org.apache.xalan.templates.StylesheetRoot;
-// SAX2 Imports
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.Locator;
-import org.xml.sax.helpers.XMLReaderFactory;
-import org.xml.sax.ext.DeclHandler;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-
-import org.w3c.dom.*;
-import javax.xml.transform.*;
-import javax.xml.transform.stream.*;
-import org.apache.xalan.transformer.TransformerImpl;
-import org.apache.xpath.objects.XObject;
-import org.apache.xpath.objects.XString;
-import org.apache.xalan.processor.*;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-import org.xml.sax.helpers.XMLFilterImpl;
-
-/*****************************************************************************************************
- *
- * ApplyXSLT supplies the basic
- * functions for transforming XML data using XSL stylesheets.
- *
- * @author Spencer Shepard (sshepard@us.ibm.com)
- * @author R. Adam King (rak@us.ibm.com)
- * @author Tom Rowe (trowe@us.ibm.com)
- * @author Don Leslie (donald_leslie@lotus.com)
- *
- *****************************************************************************************************/
-
-public class ApplyXSLT extends HttpServlet
-{
-
-  /**
-   * Operational parameters for this class.
-   * <p>Request-time values override init-time values which override class defaults.</p>
-   * @see #init
-   * @serial
-   */
-  protected ApplyXSLTProperties ourDefaultParameters = null;
-
-  /**
-   * String representing the end of line characters for the System.
-   */
-  public final static String EOL = System.getProperty("line.separator");
-
-  /**
-   * String representing the file separator characters for the System.
-   */
-  public final static String FS = System.getProperty("file.separator");
-
-   /**
-   * String representing the current directory for properties files. See init().
-   */
-  public final static String ROOT = System.getProperty("server.root");
-  public static String CURRENTDIR;
-
-  /**
-   * Initialize operational parameters from the configuration.
-   * @param config Configuration
-   * @exception ServletException Never thrown
-   */
-  public void init(ServletConfig config)
-    throws ServletException
-  {
-    super.init(config);
-    // If the server.root property --see above-- is null, use current working directory
-    // as default location for media.properties.
-    if (ROOT != null){
-      CURRENTDIR= getServletContext().getRealPath("/WEB-INF/classes/servlet/") + FS;
-	  System.out.println ( CURRENTDIR);}
-    else
-      CURRENTDIR = System.getProperty("user.dir")+ FS;
-    
-	setDefaultParameters(config);
-	
-    setMediaProps(config.getInitParameter("mediaURL"));	
-  }
-  
- /**
-   * Sets the default parameters for the servlet from the configuration.
-   * Also sets required system properties until we figure out why servlet 
-   * sometimess fails to read properties from properties files.
-   * @param config Configuration
-   */
-  protected void setDefaultParameters(ServletConfig config)
-  {
-    ourDefaultParameters = new DefaultApplyXSLTProperties(config);
-  }
-  
-  /**
-   *	Loads the media properties file specified by the given string.
-   * @param mediaURLstring Location of the media properties file.  Can be either a full URL or a path relative
-   * to the System's server.root /servlets directory.  If this parameter is null,
-   * server.root/servlets/media.properties will be used.
-   * @see ApplyXSL#CURRENTDIR
-   */
-  protected void setMediaProps(String mediaURLstring)
-  {
-    if (mediaURLstring != null)
-    {
-      URL url = null;
-      try
-      {
-        url = new URL(mediaURLstring);
-      }
-      catch (MalformedURLException mue1)
-      {
-        try
-        {
-          url = new URL("file", "", CURRENTDIR + mediaURLstring);
-        }
-        catch (MalformedURLException mue2)
-        {
-          writeLog("Unable to find the media properties file based on parameter 'mediaURL' = "
-                   + mediaURLstring, HttpServletResponse.SC_ACCEPTED, mue2);
-          url = null;
-        }
-      }
-      if (url != null)
-      {
-        try
-        {
-          ourMediaProps = new OrderedProps(url.openStream());
-        }
-        catch (IOException ioe1)
-        {
-          writeLog("Exception occurred while opening media properties file: " + mediaURLstring +
-                   ".  Media table may be invalid.", HttpServletResponse.SC_ACCEPTED, ioe1);
-        }
-      }
-    }
-    else
-    {
-      String defaultProp = CURRENTDIR + "media.properties";
-      try
-      {
-        ourMediaProps = new OrderedProps(new FileInputStream(defaultProp));
-      }
-      catch (IOException ioe2)
-      {
-        writeLog("Default media properties file " + defaultProp + " not found.",
-                 HttpServletResponse.SC_ACCEPTED, ioe2);
-      }
-    }
-  }
-
-  public String getMedia(HttpServletRequest request)
-  {
-    return ourMediaProps.getValue(request.getHeader(HEADER_NAME));
-  }
-  
-  // doPost removed for security reasons due to the possibility of sending
-  // unsecure XML and XSL XSLTInputSources through the request input stream
-
-  /**
-   * HTTP Get method passed on to process().
-   * @param request The request
-   * @param response The response
-   * @see #process
-   * @exception ServletException Never thrown
-   * @exception IOException Never thrown
-   */
-  public void doGet (HttpServletRequest request,
-                     HttpServletResponse response)
-    throws ServletException, IOException
-  {
-    try
-    {	
-      TransformerFactory tFactory = TransformerFactory.newInstance();
-      process(tFactory, request, response);
-    }
-    catch (Exception e)
-    {
-    }
-  }
-  
-  /**
-   * Coordinates applying an XSL stylesheet to XML data using operational parameters.
-   * <p>If successfully applied, the result tree will be streamed to the response object
-   * and the content type set according to the XSL stylesheet's &lt;xsl:output> element(s).</p>
-   * <p>If there is a problem in parsing the XML/XSL or if there is a problem in applying
-   * the XSL to the XML, an exception will be streamed to the response object.  The detail
-   * of the information returned in the response object will depend on whether we're
-   * running in debug mode or not.</p>
-   * @param processor implementation of TRaX processor
-   * @param request  May contain information relevant to creating XML and XSL XSLTInputSource's
-   * @param response Where to write the transformation result
-   * @see #getDocument
-   * @see #getStylesheet
-   * @see #getContentType
-   * @see #displayException
-   * @see #setStylesheetParams
-   * @exception ServletException Never thrown
-   * @exception IOException Never thrown
-   */
-  
-  public void process(TransformerFactory tFactory, 
-					  HttpServletRequest request,
-                      HttpServletResponse response)
-    throws ServletException, IOException, SAXException
-  {
-    boolean debug = ourDefaultParameters.isDebug(request);
-
-    long time = 0;
-    if (debug)
-      time = System.currentTimeMillis();
-
-    // Listener to be used for all reporting
-    ApplyXSLTListener listener = new ApplyXSLTListener();
-	listener.out.println("debug is " + debug);
-
-    StreamSource xmlSource = null;
-	StreamSource xslSource = null;
-    try
-    {
-      if ((xmlSource = getDocument(request, listener)) == null)
-        throw new ApplyXSLTException("getDocument() returned null",
-                                     new NullPointerException(),
-                                     response.SC_NOT_FOUND);
-    }
-    catch (ApplyXSLTException axe)
-    {
-      axe.appendMessage(EOL + "getDocument() resulted in ApplyXSLTException" + EOL
-                        + listener.getMessage());
-      if (debug) writeLog(axe);
-      displayException(response, axe, debug);
-      xmlSource = null;
-    }
-    // creating XSL Stylesheet
-    if (xmlSource != null)
-	{
-      try
-      {
-	    if ((xslSource = getStylesheet(tFactory, request, xmlSource, listener)) == null)
-		{
-          throw new ApplyXSLTException("getStylesheet() returned null",
-                                       new NullPointerException(),
-                                       response.SC_NOT_FOUND);
-        }
-        // For time being, must "reset" xmlSource after extracting stylesheet PI
-		xmlSource = getDocument(request, listener); 
-      }
-      catch (ApplyXSLTException axe)
-      {
-        axe.appendMessage(EOL + "getStylesheet() resulted in ApplyXSLTException" + EOL
-                          + listener.getMessage());
-        if (debug) writeLog(axe);
-        displayException(response, axe, debug);
-        xslSource = null;
-      }
-    // perform Transformation
-	  
-    if ((xmlSource != null) && (xslSource != null))
-    {
-	  try
-	  {
-        listener.out.println("Performing transformation...");
-		
-        Templates templates = tFactory.newTemplates(xslSource);
-        Transformer transformer = templates.newTransformer();
-        {
-          try
-          {
-            String contentType = null;
-			      contentType = getContentType(templates);
-            if (contentType != null);
-              response.setContentType(contentType);
-
-			      if (transformer instanceof TransformerImpl)
-			      {
-			        TransformerImpl transformerImpl = (TransformerImpl)transformer;
-              transformerImpl.setQuietConflictWarnings(ourDefaultParameters.isNoCW(request));
-			      }
-			
-			      setStylesheetParams(transformer, request);			
-	          transformer.transform(xmlSource, new StreamResult(response.getOutputStream()));
-			
-			      if (debug)              
-              writeLog(listener.getMessage(), response.SC_OK);
-          }
-          catch (Exception exc)
-          {
-            ApplyXSLTException axe = new ApplyXSLTException
-				                     ("Exception occurred during Transformation:"
-                                          + EOL + listener.getMessage() + EOL
-                                          + exc.getMessage(), 
-									              exc,
-                                response.SC_INTERNAL_SERVER_ERROR);
-            if (debug) writeLog(axe);
-            displayException(response, axe, debug);
-          }
-          finally
-          {
-            // transformer.reset();
-          } // end of try ... catch ... finally
-		}
-	  }
-      catch (/*org.xml.sax.SAX*/Exception saxExc)
-      {
-        ApplyXSLTException axe = new ApplyXSLTException
-			                     ("Exception occurred during ctor/Transformation:"
-                                             + EOL + listener.getMessage() + EOL
-                                             + saxExc.getMessage(), 
-			                					  saxExc,
-                                  response.SC_INTERNAL_SERVER_ERROR);
-        if (debug) writeLog(axe);
-        displayException(response, axe, debug);
-      } // end of new try ... catch
-    } // end of if((stylesheetRoot != null) ...
-    if (debug)
-    {
-      time = System.currentTimeMillis() - time;
-      writeLog("  No Conflict Warnings = " + ourDefaultParameters.isNoCW(request) +
-               "  Transformation time: " + time + " ms", response.SC_OK);
-    }
-  }
-  }  
-
-  /**
-   * Returns an XML XSLTInputSource DOM.  Attempts will be make to create the DOM from the following
-   * sources:
-   * <ol>
-   * <li>A relative URL specified in the HTTP request's path information. This capability is intended
-   * for use by <b>servlet engines that map</b> some or all XML data to be processed at the server.</li>
-   * <li>A URL specified in the HTTP request's <code>URL=</code> parameter.  This capability
-   * is intended for <b>clients wishing to selectively process</b> XML data at the server.  For
-   * security reasons, this URL will be forced to the local IP host.</li>
-   * <li>The HTTP request's XML input stream. This capability is intended for use by chained servlets.</li>
-   * </ol>
-   * @param request May contain or point to the XML XSLTInputSource
-   * @param listener To record detailed parsing messages for possible return to requestor
-   * @return XML XSLTInputSource DOM, or null if the XSLTInputSource could not be parsed
-   * @exception ApplyXSLTException Thrown if exception occurs while handling request
-   */
-  protected StreamSource getDocument(HttpServletRequest request,
-                                     ApplyXSLTListener listener)
-    throws ApplyXSLTException
-  {
-    try
-    {
-      String xmlURL = null;
-      // document from PathInfo
-      if ((xmlURL = request.getPathInfo()) != null)
-      {
-        listener.out.println("Parsing XML Document from PathInfo: " + xmlURL);
-        return new StreamSource(new URL("http", ((DefaultApplyXSLTProperties)
-                                         ourDefaultParameters).getLocalHost(),
-                                         request.getServerPort(),
-                                         xmlURL.replace('\\', '/')).openStream());                          
-      }
-      // document from Request parameter
-      if ((xmlURL = ourDefaultParameters.getXMLurl(request)) != null)
-      {
-        listener.out.println("Parsing XML Document from request parameter: " + xmlURL);
-        return new StreamSource(new URL(xmlURL).openStream());
-      }
-      // document from chain
-      String contentType = request.getContentType();
-      if ((contentType != null) && contentType.startsWith("text/xml"))
-      {
-        listener.out.println("Parsing XML Document from request chain");
-        return new StreamSource(request.getInputStream());
-      }
-    }
-    catch (IOException ioe)
-    {
-      throw new ApplyXSLTException(ioe, HttpServletResponse.SC_NOT_FOUND);
-    }
-    catch (Exception e)
-    {
-      throw new ApplyXSLTException(e, HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-    }
-    return null;
-  }
-
-  /**
-   * Returns a Templates (StylesheetRoot) object.  Attempts will be make to create the Stylesheet 
-   * from the followingsources:
-   * <ol>
-   * <li>A URL specified in the HTTP request's <code>xslURL=</code> parameter.  This capability
-   * is intended for clients wishing to selectively override the server algorithm for applying XSL
-   * stylesheets.  For security reasons, this URL will be forced to the local IP host.</li>
-   * <li>XML association.  XML documents may contain references to one or more stylesheets using
-   * <a HREF="http://www.w3.org/TR/1999/PR-xml-stylesheet-19990114">this</a> W3C proposed recommendation.
-   * If the XML document does contain such references, a best match will be chosen based on the browser
-   * type making the request and the default association.  This capability enables relationships to be
-   * defined between client capabilities and stylesheets capable of acting on these capabilities.</li>
-   * <li>A configured default stylesheet URL</li>
-   * </ol>
-   * @param request May contain or point to the XSL XSLTInputSource
-   * @param xmlSource  May point to the XSL XSLTInputSource
-   * @param listener To record detailed parsing messages for possible return to requestor
-   * @return XSL XSLTInputSource, or null if the request could not be parsed
-   * @see #makeDocument
-   * @see #getMedia
-   * @see #STYLESHEET_ATTRIBUTE
-   * @see #getXSLURLfromDoc
-   * @see #toAcceptLanguageConnection
-   * @exception ApplyXSLTException Thrown if exception occurs while handling request
-   */
-  protected StreamSource getStylesheet(TransformerFactory tFactory,
-				   		  			   HttpServletRequest request,
-                                       StreamSource xmlSource,
-                                       ApplyXSLTListener listener)
-    throws ApplyXSLTException
-  {
-    try
-    {
-      //stylesheet URL from request
-      String xslURL = ((DefaultApplyXSLTProperties) ourDefaultParameters).getXSLRequestURL(request);
-
-      if (xslURL != null)
-        listener.out.println("Parsing XSL Stylesheet Document from request parameter: "
-                             + xslURL);
-      else
-      {
-        // find stylesheet from XML Document, Media tag preference
-        if (xmlSource != null){
-          listener.out.println("calling getXSLURLfromDoc and getMedia " + getMedia(request) );
-          xslURL = getXSLURLfromDoc(xmlSource, STYLESHEET_ATTRIBUTE, getMedia(request), tFactory);
-        }
-        if (xslURL != null)
-          listener.out.println("Parsing XSL Stylesheet Document from XML Document tag: " + xslURL);
-        else
-          // Configuration Default
-          if ((xslURL = ourDefaultParameters.getXSLurl(null)) != null)
-            listener.out.println("Parsing XSL Stylesheet Document from configuration: " + xslURL);
-      }
-      return new StreamSource(xslURL);
-    }
-    catch (IOException ioe)
-    {
-      throw new ApplyXSLTException(ioe, HttpServletResponse.SC_NOT_FOUND);
-    }
-    catch (Exception e)
-    {
-      throw new ApplyXSLTException(e, HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-    }
-  }
-
-  /**
-   * Returns the response content type specified by the media-type and encoding attributes of
-   * the &lt;xsl:output> element(s) of the stylesheet.
-   * @param xslSourceRoot XSL Stylesheet to be examined for &lt;xsl:output> elements.
-   * @return The response content type (MIME type and charset) of the stylesheet output
-   * @see #process
-   */
-  public String getContentType(Templates templates)
-  {
-    Properties oprops = templates.getOutputProperties();
-    String encoding = oprops.getProperty(OutputKeys.ENCODING);  
-          String media = oprops.getProperty(OutputKeys.MEDIA_TYPE);
-          if (media != null)
-          {
-      if (encoding != null)
-        return media + "; charset=" + encoding;
-      return media;
-          }
-          else
-          {
-            String method = oprops.getProperty(OutputKeys.METHOD);
-            if (method.equals("html"))
-                    return "text/html";
-            else if (method.equals("text"))
-                    return "text/plain";
-            else 
-                    return "text/xml";
-          }
-  }  
-  
-
-  /**
-   * Defines and sets select top-level XSL stylesheet variables from the HTTP request, which
-   * can be evaluated using &lt;xsl:param-variable&gt;.  The following variables will be
-   * automatically set:
-   * <dl>
-   * <dt><i>ParameterName</i></dt>
-   * <dd>Each non-reserved request parameter returned from request.getParameterNames().  If a
-   *     parameter contains more than a single value, only the first value is available.</dd>
-   * <dt>servlet-RemoteAddr</dt>
-   * <dd>Contains String output from request.getRemoteAddr(), which is the IP address
-   *     of the client machine.</dd>
-   * <dt>servlet-RemoteHost</dt>
-   * <dd>Contains String output from request.getRemoteHost(), which is the host name
-   *     of the client machine.</dd>
-   * <dt>servlet-RemoteUser</dt>
-   * <dd>Contains String output from request.getRemoteUser(), which was the user name
-   *     accepted by the server to grant access to this servlet.</dd>
-   * <dt>servlet-Request</dt>
-   * <dd>Contains the request object.</dd>
-   * </dl>
-   * @param xslprocessor Where to register parameters to be set
-   * @param request Provides access to all meaningful parameters to set
-   * @see #process
-   */
-  public void setStylesheetParams(Transformer transformer, HttpServletRequest request)
-  {
-    Enumeration paramNames = request.getParameterNames();
-    while (paramNames.hasMoreElements())
-    {
-      String paramName = (String) paramNames.nextElement();
-      try
-      {
-        String[] paramVals = request.getParameterValues(paramName);
-        if (paramVals != null)
-            transformer.setParameter(paramName, new XString(paramVals[0]));
-                                            
-      }
-      catch (Exception e)
-      {
-      }
-    }
-    try
-    {
-      transformer.setParameter("servlet-RemoteAddr", new XString(request.getRemoteAddr()));
-                                      
-    }
-    catch (Exception e)
-    {
-    }
-    try
-    {
-      transformer.setParameter("servlet-RemoteHost", new XString(request.getRemoteHost()));
-                                      
-    }
-    catch (Exception e)
-    {
-    }
-    try
-    {
-      transformer.setParameter("servlet-RemoteUser", new XString(request.getRemoteUser()));
-                                      
-    }
-    catch (Exception e)
-    {
-    }
-  }
-
-
-  /**
-   * Writes the following information to the servlet log:
-   * <ol>
-   * <li>HTTP status code</li>
-   * <li>Message</li>
-   * <li>Stack trace</li>
-   * </ol>
-   * @param axe Contains valid HTTP status code, message, and stack trace (optional)
-   */
-  protected void writeLog(ApplyXSLTException axe)
-  {
-    writeLog(axe.getMessage(), axe.getStatusCode(), axe.getException());
-  }
-
-  /**
-   * Writes the following information to the servlet log:
-   * <ol>
-   * <li>HTTP status code</li>
-   * <li>Message</li>
-   * <li>Stack trace</li>
-   * </ol>
-   * @param msg Message to be logged
-   * @param statusCode Valid status code from javax.servlet.http.HttpServletResponse
-   * @param t Used to generate stack trace (may be =null to suppress stack trace)
-   */
-  protected void writeLog(String msg, int statusCode, Throwable t)
-  {
-    if (t == null)
-      writeLog(msg, statusCode);
-    else
-    {
-      ByteArrayOutputStream bytes = new ByteArrayOutputStream();
-      PrintWriter writer = new PrintWriter(bytes, true);
-      System.out.println("Exception is " + t.getClass().getName());
-      t.printStackTrace(writer);
-      log("HTTP Status Code: " + statusCode + " - " + msg + EOL + bytes.toString());
-    }
-  }
-
-  /**
-   * Writes the following information to the servlet log:
-   * <ol>
-   * <li>HTTP status code</li>
-   * <li>Message</li>
-   * </ol>
-   * @param msg Message to be logged
-   * @param statusCode Valid status code from javax.servlet.http.HttpServletResponse
-   */
-  protected void writeLog(String msg, int statusCode)
-  {
-    log("HTTP Status Code: " + statusCode + " - " + msg);
-  }
-
-  /**
-   * Invokes response.sendError setting an HTTP status code and optionally an error message
-   * as an HTML page.
-   * <p>If running in debug mode, also try to return a stack trace of the exception and
-   * and xml/xsl processor messages.</p>
-   * @param response Where to stream the exception to
-   * @param xse The wrapper which contains the exception and its HTTP status code
-   * @param debug Indicates whether to include stack trace, etc.
-   */
-  protected void displayException(HttpServletResponse response, ApplyXSLTException xse, boolean debug)
-  {
-    String mesg = xse.getMessage();
-    if (mesg == null)
-      mesg = "";
-    else mesg = "<B>" + mesg + "</B>";
-    StringTokenizer tokens = new StringTokenizer(mesg, EOL);
-    StringBuffer strBuf = new StringBuffer();
-    while (tokens.hasMoreTokens())
-      strBuf.append(tokens.nextToken() + EOL + "<BR>");
-    mesg = strBuf.toString();
-    if (debug)
-    {
-      ByteArrayOutputStream bytes = new ByteArrayOutputStream();
-      PrintWriter writer = new PrintWriter(bytes, true);
-      xse.getException().printStackTrace(writer);
-      mesg += " <PRE> " + bytes.toString() + " </PRE> ";
-    }
-    response.setContentType("text/html");
-    try
-    {
-      response.sendError(xse.getStatusCode(), mesg);
-    }
-    catch (IOException ioe)
-    {
-      System.err.println("IOException is occurring when sendError is called");
-    }
-  }
-
-  /**
-   * Mapping of HTTP request's user-Agent values to stylesheet media= values.
-   * <p>This mapping is defined by a file pointed to by the operational parameter "mediaURL" which can
-   *  either contain a full URL or a path relative to the System's server.root /servlets directory.</p>
-   * @see #setMediaProps
-   * @see #getMedia
-   * @serial
-   */
-  protected OrderedProps ourMediaProps = null;
-
-  /**
-   * Returns a connection which respects the Accept-Language header of the HTTP request.  This
-   * is useful when XSL files are internationalized for use with Web servers which respect this
-   * header.
-   * <p>For example, Apache 1.3.6 may be configured for multiviews.  Under this configuration,
-   * requests for http://myhost/index.html would return http://myhost/index.html.fr to French browsers
-   * and http://myhost/index.html.en to English browsers.</p>
-   * @param url Location to connect to
-   * @param request Could contain an Accept-Language header
-   * @return An Accept-Language-enabled URL connection
-   * @see #getStylesheet
-   */
-  protected URLConnection toAcceptLanguageConnection(URL url, HttpServletRequest request)
-    throws Exception
-  {
-    URLConnection tempConnection = url.openConnection();
-    tempConnection.setRequestProperty("Accept-Language", request.getHeader("Accept-Language"));
-    return tempConnection;
-  }
-
-
-  /**
-   * Returns the XSL stylesheet URL associated with the specified XML document.  If multiple XSL
-   * stylesheets are associated with the XML document, preference will be given to the stylesheet
-   * which contains an attribute name/value pair that corresponds to the specified attributeName
-   * and attributeValue.
-   * @param xmlSource XML XSLTInputSource to be searched for associated XSL stylesheets
-   * @param attributeName  Attribute name to provide preferential matching
-   * @param attributeValue Attribute value to provide preferential matching
-   * @return The preferred XSL stylesheet URL, or null if no XSL stylesheet association is found
-   * @see #getStylesheet
-   */
-  public static String getXSLURLfromDoc(StreamSource xmlSource,
-                                        String attributeName,
-                                        String attributeValue,
-                                        TransformerFactory tFactory)
-  {
-    String tempURL = null, returnURL = null;
-    try
-    {
-	  DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-      DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
-      Node sourceTree = docBuilder.parse(xmlSource.getInputStream());
-      for(Node child=sourceTree.getFirstChild(); null != child; child=child.getNextSibling())
-      {
-        if(Node.PROCESSING_INSTRUCTION_NODE == child.getNodeType())
-        {
-          ProcessingInstruction pi = (ProcessingInstruction)child;
-          if(pi.getNodeName().equals("xml-stylesheet"))
-          {
-            PIA pia = new PIA(pi);
-            if("text/xsl".equals(pia.getAttribute("type")))
-            {
-              tempURL = pia.getAttribute("href");
-              String attribute = pia.getAttribute(attributeName);
-              if ((attribute != null) && (attribute.indexOf(attributeValue) > -1))
-                return tempURL;
-              if (!"yes".equals(pia.getAttribute("alternate")))
-                returnURL = tempURL;
-            }
-          }
-        }
-      }
-    }
-    catch(Exception saxExc)
-    {
-    }
-    return returnURL;
-  }  
-
- /**
-   * The attribute name in the <?xml-stylesheet> tag used in stylesheet selection.
-   */
-  protected static final String STYLESHEET_ATTRIBUTE = "media";
-
-  /**
-   *	The HTTP Header used for matching the Stylesheet attribute via the
-   * media properties file selected.
-   */
-  protected static final String HEADER_NAME = "user-Agent";
-}
-
-/**
- *  Stores the keys and values from a file (similar to a properties file) and
- *  can return the first value which has a key contained in its string.
- *  File can have comment lines starting with '#" and for each line the entries are
- *  separated by tabs and '=' char.
- */
-class OrderedProps
-{
-
-  /**
-   * Stores the Key and Values as an array of Strings
-   */
-  private Vector attVec = new Vector(15);
-
-  /**
-   * Constructor.
-   * @param inputStream Stream containing the properties file.
-   * @exception IOException Thrown if unable to read from stream
-   */
-  OrderedProps(InputStream inputStream)
-    throws IOException
-  {
-    BufferedReader input  = new BufferedReader(new InputStreamReader(inputStream));
-    String currentLine, Key = null;
-    StringTokenizer currentTokens;
-    while ((currentLine = input.readLine()) != null)
-    {
-      currentTokens = new StringTokenizer(currentLine, "=\t\r\n");
-      if (currentTokens.hasMoreTokens()) Key = currentTokens.nextToken().trim();
-      if ((Key != null) && !Key.startsWith("#") && currentTokens.hasMoreTokens())
-      {
-        String temp[] = new String[2];
-        temp[0] = Key; temp[1] = currentTokens.nextToken().trim();
-        attVec.addElement(temp);
-      }
-    }
-  }
-
-  /**
-   * Iterates through the Key list and returns the first value for whose
-   * key the given string contains.  Returns "unknown" if no key is contained
-   * in the string.
-   * @param s String being searched for a key.
-   * @return Value for key found in string, otherwise "unknown"
-   */
-  String getValue(String s)
-  {
-    int i, j = attVec.size();
-    for (i = 0; i < j; i++)
-    {
-      String temp[] = (String[]) attVec.elementAt(i);
-      if (s.indexOf(temp[0]) > -1)
-        return temp[1];
-    }
-    return "unknown";
-  }
-}
-
-/**
- * Parses a processing instruction's (PI) attributes for easy retrieval.
- */
-class PIA
-{
-
-  private Hashtable piAttributes = null;
-
-  /**
-   * Constructor.
-   * @param pi The processing instruction whose attributes are to be parsed
-   */
-  PIA(ProcessingInstruction pi)
-  {
-    piAttributes = new Hashtable();
-    StringTokenizer tokenizer = new StringTokenizer(pi.getNodeValue(), "=\"");
-    while(tokenizer.hasMoreTokens())
-    {
-      piAttributes.put(tokenizer.nextToken().trim(), tokenizer.nextToken().trim());
-    }
-  }
-
-  /**
-   * Returns value of specified attribute.
-   *  @param name Attribute name
-   *  @return Attribute value, or null if the attribute name does not exist
-   */
-  String getAttribute(String name)
-  {
-    return (String) piAttributes.get(name);
-  }  
-}
diff --git a/samples/servlet/ApplyXSLTException.java b/samples/servlet/ApplyXSLTException.java
deleted file mode 100644
index 023b3c94..00000000
--- a/samples/servlet/ApplyXSLTException.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-/*****************************************************************************************************
- *
- * Wrapper for exceptions occurring during apply XSL processing.  
- * Allows for exceptions to be returned with an associated HTTP Status Code.
- *
- * @author Spencer Shepard (sshepard@us.ibm.com)
- * @author R. Adam King (rak@us.ibm.com)
- * @author Tom Rowe (trowe@us.ibm.com)
- *
- *****************************************************************************************************/
-package servlet;
-
-public class ApplyXSLTException extends Exception {
-
-    /**
-      * Exception Message.
-      * @serial
-      */ 
-    private String myMessage = "";
-
-    /**
-      * HTTP Status Code. Default= internal server error.
-      * @serial
-      */
-    private int  myHttpStatusCode = javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR; 
-
-    /**
-      * Wrapped exception
-      * @serial
-      */
-    private Exception myException = null;
-
-    /**
-      * Constructor for exception with no additional detail.
-      */
-    public ApplyXSLTException() 
-    { 
-        super(); 
-    }
-
-    /**
-      * Constructor for exception with message.
-      * @param s Exception message
-      */
-    public ApplyXSLTException(String s) 
-    { 
-        super(); 
-	myMessage = s;
-    }
-
-    /**
-      * Constructor for exception with HTTP status code.
-      * @param hsc Valid status code from javax.servlet.http.HttpServletResponse
-      */
-    public ApplyXSLTException(int hsc) 
-    {
-	super();
-	myHttpStatusCode = hsc;
-    }
-
-    /**
-      * Constructor for exception with message and HTTP status code.
-      * @param s Exception message
-      * @param hsc Valid status code from javax.servlet.http.HttpServletResponse
-      */
-    public ApplyXSLTException(String s, int hsc)
-    {
-	super();
-	myHttpStatusCode = hsc;
-    }
-
-    /**
-      * Constructor for exception.
-      * @param e Exception to be wrapped.
-      */
-    public ApplyXSLTException(Exception e)
-    {
-	super();
-	myMessage = e.getMessage();
-	myException = e;
-    }
-
-    /**
-      * Constructor for passed exception with message.
-      * @param s Exception message
-      * @param e Exception to be wrapped.
-      */
-    public ApplyXSLTException (String s, Exception e)
-    {
-	super();
-	myMessage = s;
-	myException = e;
-    }
-
-    /**
-      * Constructor for passed exception with HTTP status code.
-      * @param e Exception to be wrapped.
-      * @param hsc Valid status code from javax.servlet.http.HttpServletResponse
-      */
-    public ApplyXSLTException(Exception e, int hsc)
-    {
-	super();
-	myMessage = e.getMessage();
-	myException = e;
-	myHttpStatusCode = hsc;
-    }
-
-    /**
-      * Constructor for passed exception with HTTP status code and message.
-      * @param s Exception message
-      * @param e Exception to be wrapped.
-      * @param hsc Valid status code from javax.servlet.http.HttpServletResponse
-      */
-    public ApplyXSLTException(String s, Exception e, int hsc)
-    {
-	super();
-	myMessage = s;
-	myException = e;
-	myHttpStatusCode = hsc;
-    }
-
-    /**
-      * Returns exception message.
-      * @return exception message
-      */
-    public String getMessage()
-    {
-	return myMessage;
-    }
-
-    /**
-      * Appends string to exception message.
-      * @param s String to be added to message
-      */
-    public void appendMessage(String s)
-    {
-	myMessage += s;
-    }
-
-    /**
-      * Returns the wrapped exception.
-      * @return Wrapped exception
-      */
-    public Exception getException()
-    {
-	return myException;
-    }
-
-    /**
-      * Returns the HTTP status code associated with the exception.
-      * @return Valid status code from javax.servlet.http.HttpServletResponse
-      */
-    public int getStatusCode()
-    {
-	return myHttpStatusCode;
-    }
-}
-
diff --git a/samples/servlet/ApplyXSLTListener.java b/samples/servlet/ApplyXSLTListener.java
deleted file mode 100644
index 7e0f95bd..00000000
--- a/samples/servlet/ApplyXSLTListener.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-package servlet;
-
-import java.io.*;
-import org.xml.sax.*;
-import org.apache.xml.utils.DefaultErrorHandler;
-
-/*****************************************************************************************************
- * ApplyXSLTListener provides a buffered listener essential for capturing, and then subsequently
- * reporting, XML and XSL processor messages which may be of use in debugging XML+XSL processed at
- * the server.
- *
- * @author Spencer Shepard (sshepard@us.ibm.com)
- * @author R. Adam King (rak@us.ibm.com)
- * @author Tom Rowe (trowe@us.ibm.com)
- *
- *****************************************************************************************************/
-
-public class ApplyXSLTListener extends DefaultErrorHandler implements ErrorHandler
-{
-
-    /**
-      * Output stream
-      */
-    private ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-
-    /**
-      * Buffered output stream
-      */
-    public PrintWriter out = null;
-
-    /**
-      * Constructor.
-      */
-    public ApplyXSLTListener()
-    {
-      out = new PrintWriter(new BufferedOutputStream(outStream), true);
-    }
-
-    /**
-      * Receive notification of a warning.
-      *
-      * @param spe The warning information encapsulated in a SAX parse exception.
-      */
-    public void warning(SAXParseException spe)
-    {
-	out.println("Parser Warning: " + spe.getMessage());
-    }
-
-    /**
-      * Receive notification of a recoverable error.
-      *
-      * @param spe The error information encapsulated in a SAX parse exception.
-      */
-    public void error(SAXParseException spe)
-    {
-	out.println("Parser Error: " + spe.getMessage());
-    }
-
-    /**
-      * Receive notification of a non-recoverable error.
-      *
-      * @param spe The error information encapsulated in a SAX parse exception.
-      * @exception SAXException Always thrown
-      */
-    public void fatalError(SAXParseException spe)
-    throws SAXException
-    {
-	out.println("Parser Fatal Error: " + spe.getMessage());
-	throw spe;
-    }
-
-    /**
-      * Returns the buffered processing message(s).
-      * @return Buffered processing message(s)
-      */
-    public String getMessage()
-    {
-	return outStream.toString();
-    }
-}
-
diff --git a/samples/servlet/ApplyXSLTProperties.java b/samples/servlet/ApplyXSLTProperties.java
deleted file mode 100644
index c62a2d2b..00000000
--- a/samples/servlet/ApplyXSLTProperties.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-package servlet;
-
-import java.net.MalformedURLException;
-import javax.servlet.*;
-import javax.servlet.http.*;
-
-/*****************************************************************************************************
- * 
- * ApplyXSLTProperties contains operational parameters for ApplyXSLT based 
- * on program defaults and configuration.  
- * <p>This class is also used to return values for request-time parameters.</p>
- *
- * @author Spencer Shepard (sshepard@us.ibm.com)
- * @author R. Adam King (rak@us.ibm.com)
- * @author Tom Rowe (trowe@us.ibm.com)
- *
- *****************************************************************************************************/
-
-public class ApplyXSLTProperties {
-
-    /**
-      * Program default for parameter "URL"
-      */
-    private final String DEFAULT_URL;
-
-    /**
-      * Program default for parameter "xslURL"
-      */
-    private final String DEFAULT_xslURL;
-    
-    /**
-      * Program default for parameter "debug"
-      */
-    private final boolean DEFAULT_debug;
-
-    /**
-      * Program default for parameter "noConflictWarnings"
-      */
-    private final boolean DEFAULT_noCW;
-    
-    /**
-      * Constructor to use program defaults.
-      */
-    public ApplyXSLTProperties() 
-    {
-	DEFAULT_URL = null;
-	DEFAULT_xslURL = null;
-	DEFAULT_debug = false;
-	DEFAULT_noCW = false;
-    }
-
-    /**
-      * Constructor to use to override program defaults.
-      * @param config Servlet configuration
-      */
-    public ApplyXSLTProperties(ServletConfig config)
-    {
-	String xm = config.getInitParameter("URL"),
-	       xu = config.getInitParameter("xslURL"),
-	       db = config.getInitParameter("debug"),
-	       cw = config.getInitParameter("noConflictWarnings");
-	       
-	if (xm != null) DEFAULT_URL = xm;
-	else DEFAULT_URL = null;
-	if (xu != null) DEFAULT_xslURL = xu;
-	else DEFAULT_xslURL = null;
-	if (db != null) DEFAULT_debug = new Boolean(db).booleanValue();
-	else DEFAULT_debug = false;
-	if (cw != null) DEFAULT_noCW = new Boolean(cw).booleanValue();
-	else DEFAULT_noCW = false;
-    }
-   
-    /**
-      * Given a parameter name, returns the HTTP request's String value; 
-      * if not present in request, returns default String value.
-      * @param request Request to check for default override
-      * @param param Name of the parameter
-      * @return String value of named parameter
-      */
-    public String getRequestParmString(HttpServletRequest request, String param)
-    {
-	if (request != null) { 
-	    String[] paramVals = request.getParameterValues(param); 
-	    if (paramVals != null) 
-		return paramVals[0];
-	}
-	return null;
-    }
-
-    /**
-      * Returns the current setting for "URL".
-      * @param request Request to check for parameter value
-      * @return String value for "URL"
-      * @exception MalformedURLException Will not be thrown
-      */
-    public String getXMLurl(HttpServletRequest request)
-    throws MalformedURLException
-    {
-	String temp = getRequestParmString(request, "URL");
-	if (temp != null)
-	    return temp;
-	return DEFAULT_URL;
-    }     
-    
-    /**
-      * Returns the current setting for "xslURL".
-      * @param request Request to check for parameter value
-      * @return String value for "xslURL"
-      * @exception MalformedURLException Will not be thrown
-      */
-    public String getXSLurl(HttpServletRequest request)
-    throws MalformedURLException
-    {  
-	String temp = getRequestParmString(request, "xslURL");
-	if (temp != null)
-	    return temp;
-	return DEFAULT_xslURL;
-    }
-    
-    /**
-      * Returns the current setting for "debug".
-      * @param request Request to check for parameter value
-      * @return Boolean value for "debug"
-      */
-    public boolean isDebug(HttpServletRequest request)
-    {
-	String temp = getRequestParmString(request, "debug");
-	if (temp != null)
-	    return new Boolean(temp).booleanValue();
-	return DEFAULT_debug;
-    }
-
-    /**
-      * Returns the current setting for "noConflictWarnings".
-      * @param request Request to check for parameter value
-      * @return Boolean value for "noConflictWarnings"
-      */
-    boolean isNoCW(HttpServletRequest request)
-    {
-	String temp = getRequestParmString(request, "noConflictWarnings");
-	if (temp != null)
-	    return new Boolean(temp).booleanValue();
-	return DEFAULT_noCW;
-    }    
-}
diff --git a/samples/servlet/DefaultApplyXSLTProperties.java b/samples/servlet/DefaultApplyXSLTProperties.java
deleted file mode 100644
index b3b72610..00000000
--- a/samples/servlet/DefaultApplyXSLTProperties.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-package servlet;
-
-import java.net.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import java.util.Enumeration;
-import java.util.Properties;
-
-/*****************************************************************************************************
- * 
- * DefaultApplyXSLTProperties contains operational parameters for DefaultApplyXSLT based 
- * on program defaults and configuration.  
- * <p>This class is also used to return values for request-time parameters.</p>
- *
- * @author Spencer Shepard (sshepard@us.ibm.com)
- * @author R. Adam King (rak@us.ibm.com)
- * @author Tom Rowe (trowe@us.ibm.com)
- *
- *****************************************************************************************************/
-
-public class DefaultApplyXSLTProperties extends ApplyXSLTProperties {
-    
-    /**
-      * Program default for parameter "catalog".
-      * @see #getCatalog
-      */
-    private final String DEFAULT_catalog;
-
-    /**
-      * Host used for local context comparisons.
-      * @see #getLocalHost
-      * @see #setLocalHost
-      */
-    protected transient String localHost = null;
-    
-    /**
-     * Server port. Used in toSafeURL() -- fix submitted by Ritesh Kumar.
-     */
-    protected static int port =0;
-
-    /**
-      * Constructor to use program defaults.
-      */
-    public DefaultApplyXSLTProperties()
-    {
-	super();
-	DEFAULT_catalog = null;
-	setLocalHost();
-	// setSystemProperties();
-    }
-
-    /**
-      * Constructor to use to override program defaults.
-      * @param config Servlet configuration
-      * @see #setLocalHost
-      */
-    public DefaultApplyXSLTProperties(ServletConfig config)
-    {
-	    super(config);
-	    String cat = config.getInitParameter("catalog");
-	    if (cat != null) DEFAULT_catalog = cat;
-	    else DEFAULT_catalog = null;
-	    setLocalHost();
-	    setSystemProperties();
-    }
-
-    /**
-      * Sets the name of the local IP host name; this value will be used to constrain untrusted 
-      * XML document and XSL stylesheet URLs to this trusted host.
-      * @see #getLocalHost
-      */
-    protected void setLocalHost()
-    {
-	    try 
-	    { 
-	        localHost = InetAddress.getLocalHost().getHostName();
-	    } 
-	    catch (Exception uhe) 
-	    {
-	      localHost = null;
-	    }
-    }
-
-    /**
-      * Returns the name of trusted IP host.
-      * @return Name of trusted host
-      * @see #setLocalHost
-      */
-    public String getLocalHost()
-    {
-	    return localHost;
-    }
-
-    /**
-      * Returns a URL which is constrained to a trusted IP host.
-      * @param xURL URL or file path to be made safe 
-      * @return Safe URL
-      * @exception MalformedURLException Thrown when xURL is not a valid URL
-      * @see #setLocalHost
-      * @see #getLocalHost
-      */
-    public URL toSafeURL(String xURL, HttpServletRequest request)
-    throws MalformedURLException
-    {
-      // Fix submitted by Ritesh Kumar. Port is included in construction of URL that is returned.
-      if (port == 0)
-        port = request.getServerPort();
-      
-	    if (xURL == null)
-	      return null;
-
-	    if (xURL.startsWith("/")) 
-      {
-	      try 
-        {
-		      return new URL("http", localHost, port, xURL);
-	      }
-        catch (MalformedURLException mue) 
-        {
-	        throw new MalformedURLException("toSafeURL(): " + xURL + 
-					                                " did not map to local");
-	      }
-	    }
-	    URL tempURL = null;
-	    try 
-      { 
-	      tempURL = new URL(xURL);
-	    } 
-      catch (MalformedURLException mue) 
-      {
-	      throw new MalformedURLException("toSafeURL(): " + xURL + 
-					                              " not a valid URL"); 
-	    }
-	    try 
-      { 
-	      return new URL(tempURL.getProtocol(), localHost, 
-			                 port, tempURL.getFile());
-	    } 
-      catch (MalformedURLException mue) 
-      {
-	      throw new MalformedURLException("toSafeURL(): " + xURL + 
-				                          	    " could not be converted to local host");
-	    }
-    }
-
-    /**
-      *	Returns a string representing the constrained URL for the XML document.
-      * If there is no request parameter for the XML document, return the configured default.
-      * @param request May contain an XML document URL parameter
-      * @return String form of XML URL
-      * @exception MalformedURLException Thrown when request URL is not a valid URL or path
-      * @see #toSafeURL
-      */
-    public String getXMLurl(HttpServletRequest request)
-    throws MalformedURLException
-    {
-	    URL url = toSafeURL(getRequestParmString(request, "URL"),request);
-	    if (url == null)
-	      return super.getXMLurl(null);
-	    return url.toExternalForm();
-    }
-
-    /**
-      * Returns a string representing the constrained URL for the XSL stylesheet 
-      * from the request.
-      * @param request May contain an XSL stylesheet URL parameter
-      * @return String form of request XSL URL, or null if request contains no xslURL parameter
-      * @exception MalformedURLException Thrown when request URL is not a valid URL or path
-      * @see #toSafeURL
-      */
-    public String getXSLRequestURL(HttpServletRequest request)
-    throws MalformedURLException
-    {
-	    URL url = toSafeURL(getRequestParmString(request, "xslURL"),request);
-	    if (url == null)
-	        return null;
-	    return url.toExternalForm();
-    }
-
-    /**
-      * Returns a string representing the constrained request URL for the XSL stylesheet.
-      * If there is no request parameter for the XSL stylesheet, return the configured default.
-      * @param request May contain an XSL stylesheet URL parameter
-      * @return String form of XSL URL
-      * @exception MalformedURLException Thrown when request URL is not a valid URL or path
-      * @see #toSafeURL
-      */
-    public String getXSLurl(HttpServletRequest request)
-    throws MalformedURLException
-    {
-	    String reqURL = getXSLRequestURL(request);
-	    if (reqURL != null)
-	        return reqURL;
-	    URL url = toSafeURL(super.getXSLurl(null), request);
-	    return url.toExternalForm();
-    }
-
-    /**
-      * Returns URLs for all <a href="http://www.ccil.org/~cowan/XML/XCatalog.html">XCatalogs</a> 
-      * that are to be used to process the request.  Catalogs are used to resolve XML public identifiers
-      * into system identifiers.
-      * <p>A single XCatalog can be configured as a default,
-      * but multiple XCatalogs can be specified at request time to augment the configured default.
-      * @param request May contain one or more XCatalog parameters
-      * @return Array of strings for all catalog URLs
-      */
-    public String[] getCatalog(HttpServletRequest request)
-    {
-	    String temp[] = request.getParameterValues("catalog");
-	    if (DEFAULT_catalog == null)
-	        return temp;
-	    if (temp == null) 
-      {
-	      String defaultArray[] = new String [1];
-	      defaultArray[0] = DEFAULT_catalog;
-	      return defaultArray;
-	    }
-	    int i, len = temp.length + 1;
-	    String newCatalogs[] = new String[len];
-	    newCatalogs[0] = DEFAULT_catalog;
-	    for (i=1; i < len; i++) 
-      {
-	      newCatalogs[i] = temp[i-1];
-	    }
-	    return newCatalogs;
-    }
-	
-	 /**
-   * I think we no longer need this. Sets the 3 jaxp core system properties.
-   */	
-    protected void setSystemProperties()
-	{
-	  Properties props = new Properties();
-    props.put("javax.xml.transform.TransformerFactory", 
-              "org.apache.xalan.processor.TransformerFactoryImpl");
-    props.put("javax.xml.parsers.DocumentBuilderFactory", 
-              "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
-    props.put("javax.xml.parsers.SAXParserFactory", 
-              "org.apache.xerces.jaxp.SAXParserFactoryImpl");
-    
-      Properties systemProps = System.getProperties();
-      Enumeration propEnum = props.propertyNames();
-      while(propEnum.hasMoreElements())
-      {
-        String prop = (String)propEnum.nextElement();
-        if(!systemProps.containsKey(prop))
-          systemProps.put(prop, props.getProperty(prop));
-      }
-      System.setProperties(systemProps);
-	}
-
-}
diff --git a/samples/servlet/SimpleXSLTServlet.java b/samples/servlet/SimpleXSLTServlet.java
deleted file mode 100644
index 82c9ef6e..00000000
--- a/samples/servlet/SimpleXSLTServlet.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-package servlet;
-
-import javax.servlet.*;
-import javax.servlet.http.*;
-import java.io.*;
-import java.net.URL;
-
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-
-/*
- * This sample applies the todo.xsl stylesheet to the
- * todo.xml XML document, and returns the transformation
- * output (HTML) to the client browser.
- *
- * IMPORTANT: For this to work, you must place todo.xsl and todo.xml 
- * in the servlet root directory for documents.
- *
- */
-
-public class SimpleXSLTServlet extends HttpServlet {
-
-  /**
-   * String representing the file separator characters for the System.
-   */
-  public final static String FS = System.getProperty("file.separator");
-  
-  public void init(ServletConfig config) throws ServletException
-  {
-    super.init(config);
-  }
-
-  public void doGet (HttpServletRequest request,
-                     HttpServletResponse response)
-    throws ServletException, IOException, java.net.MalformedURLException
-  {
-    // The servlet returns HTML.
-    response.setContentType("text/html; charset=UTF-8");    
-    // Output goes in the response stream.
-    PrintWriter out = response.getWriter();
-    try
-    {	
-      TransformerFactory tFactory = TransformerFactory.newInstance();
-      //get the real path for xml and xsl files.
-      String ctx = getServletContext().getRealPath("") + FS;
-      // Get the XML input document and the stylesheet.
-      Source xmlSource = new StreamSource(new URL("file", "", ctx+"birds.xml").openStream());
-      Source xslSource = new StreamSource(new URL("file", "", ctx+"birds.xsl").openStream());
-      // Generate the transformer.
-      Transformer transformer = tFactory.newTransformer(xslSource);
-      // Perform the transformation, sending the output to the response.
-      transformer.transform(xmlSource, new StreamResult(out));
-    }
-    catch (Exception e)
-    {
-      out.write(e.getMessage());
-      e.printStackTrace(out);    
-    }
-    out.close();
-  }
-  
-}
diff --git a/samples/servlet/UseStylesheetParamServlet.java b/samples/servlet/UseStylesheetParamServlet.java
deleted file mode 100644
index fdbcc54c..00000000
--- a/samples/servlet/UseStylesheetParamServlet.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-
-/*
-Simple Servlet Example using a stylesheet parameter
- */
-package servlet;
-// Imported TraX classes
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerConfigurationException;
-
-// Imported SAX classes
-import org.xml.sax.SAXException;
-
-// Imported java.io and javax.servlet classes
-import java.io.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
-
-public class UseStylesheetParamServlet extends HttpServlet {
-	
-
-   /**
-    * String representing the file separator characters for the System.
-    */
-    public final static String FS = System.getProperty("file.separator");
-    
-	PrintWriter out;
-	String xslFile, xmlFile, paramValue;
-	public void doGet(HttpServletRequest req,
-		HttpServletResponse res)
-			throws ServletException, IOException {
-		try {
-			res.setContentType("text/html; charset=UTF-8");
-			out = res.getWriter();
-
-      paramValue = req.getParameter("PVAL");
-			xmlFile    = req.getParameter("XML");
-			xslFile    = req.getParameter("XSL");
- 		if (paramValue == null) {
-			out.println(
-			"<h1>No input for paramValue</h1>");
-			return;
-		}
- 		if ( xmlFile == null) {
-			out.println(
-			"<h1>No input for xmlFile</h1>");
-			return;
-		}	
-		if ( xslFile == null) {
-			out.println(
-			"<h1>No input for xslFile</h1>");
-			return;
-		}
-        
-        // get the real path for xml and xsl files;
-        String ctx = getServletContext().getRealPath("") + FS;
-        xslFile = ctx + xslFile;
-        xmlFile = ctx + xmlFile;
-         
-		TransformerFactory tFactory =
-			TransformerFactory.newInstance();
-		Transformer transformer =
-			tFactory.newTransformer(new StreamSource(xslFile));
-
-    // Set the stylesheet parameter (named param1).
-			transformer.setParameter("param1", paramValue);
-    // Perform the transformation.
-			transformer.transform(new StreamSource(xmlFile),
-					                  new StreamResult(out));
-		}		
-    catch (IOException e) {			
-			e.printStackTrace();
-			System.exit(-1);
-		}
-		catch (TransformerException e) {
-      e.printStackTrace(out);
-			return;
-		}
-	}
-}
diff --git a/samples/servlet/XSLTServletWithParams.java b/samples/servlet/XSLTServletWithParams.java
deleted file mode 100644
index eb60e47d..00000000
--- a/samples/servlet/XSLTServletWithParams.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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$
- */
-package servlet;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import java.io.*;
-import java.util.Enumeration;
-import java.net.URL;
-
-import org.xml.sax.*;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-
-/*
- * This sample takes input parameters in the request URL: a URL
- * parameter for the XML input, an xslURL parameter for the stylesheet,
- * and optional stylesheet parameters.
- * To run the equivalent of SimplestXSLServlet (with the documents in the
- * servlet document root directory), the request URL is
- * http://<server/servletpath>servlet.SimpleXSLServlet?URL=file:todo.xml&xslURL=file:todo.xsl
- *
- * Using a stylesheet Processing Instruction:
- * If the XML document includes a stylesheet PI that you want to use, 
- * omit the xslURL parameter.
- *
- * Sending stylesheet parameters: 
- * If, for example, a servlet takes a stylesheet parameter named param1
- * param1 that you want to set to foo, include param1=foo in the URL.
- */
-
-public class XSLTServletWithParams extends HttpServlet {
-
-  /**
-   * String representing the file separator characters for the System.
-   */
-  public final static String FS = System.getProperty("file.separator");
-  
-  public void init(ServletConfig config) throws ServletException
-  {
-    super.init(config);
-  }
-
-  public void doGet (HttpServletRequest request,
-                     HttpServletResponse response)
-    throws ServletException, IOException
-  {
-    // The servlet returns HTML; charset is UTF8.
-    // See ApplyXSLT.getContentType() to get output properties from <xsl:output>.
-    response.setContentType("text/html; charset=UTF-8"); 
-    PrintWriter out = response.getWriter();
-    try
-    {	
-      TransformerFactory tFactory = TransformerFactory.newInstance();
-      // Get params from URL.
-      String xml = getRequestParam(request, "URL");
-      String xsl = getRequestParam(request, "xslURL");
-      Source xmlSource = null;
-      Source xslSource = null;
-      Transformer transformer = null;
-//get the real path for xml and xsl files.
-      String ctx = getServletContext().getRealPath("") + FS;
-      
-      // Get the XML input document.
-      if (xml != null && xml.length()> 0)
-        xmlSource = new StreamSource(new URL("file", "", ctx + xml).openStream());
-      // Get the stylesheet.
-      if (xsl != null && xsl.length()> 0)
-        xslSource = new StreamSource(new URL("file", "", ctx + xsl).openStream());
-      if (xmlSource != null) // We have an XML input document.
-      {
-        if (xslSource == null) // If no stylesheet, look for PI in XML input document.
-        {
-     	    String media= null , title = null, charset = null;
-          xslSource = tFactory.getAssociatedStylesheet(xmlSource,media, title, charset);
-        }
-        if (xslSource != null) // Now do we have a stylesheet?
-        {
-          transformer = tFactory.newTransformer(xslSource);
-          setParameters(transformer, request); // Set stylesheet params.
-          // Perform the transformation.
-          transformer.transform(xmlSource, new StreamResult(out)); 
-        }
-        else
-          out.write("No Stylesheet!");
-      }
-      else
-        out.write("No XML Input Document!");
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace(out);    
-    }
-    out.close();
-  }
-  
-  // Get parameters from the request URL.
-  String getRequestParam(HttpServletRequest request, String param)
-  {
-	  if (request != null) 
-    { 
-	    String paramVal = request.getParameter(param); 
-		  return paramVal;
-	  }
-	  return null;
-  }
-  
-  // Set stylesheet parameters from the request URL.
-  void setParameters(Transformer transformer, HttpServletRequest request)
-  {
-    Enumeration paramNames = request.getParameterNames();
-    while (paramNames.hasMoreElements())
-    {
-      String paramName = (String) paramNames.nextElement();
-      try
-      {
-        String paramVal = request.getParameter(paramName);
-        if (paramVal != null)
-          transformer.setParameter(paramName, paramVal);                                            
-      }
-      catch (Exception e)
-      {
-      }
-    }
-  }  
-}
diff --git a/samples/src/main/java/org/apache/xalan/App.java b/samples/src/main/java/org/apache/xalan/App.java
new file mode 100644
index 00000000..b1d7b04e
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/App.java
@@ -0,0 +1,13 @@
+package org.apache.xalan.samples;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}
diff --git a/samples/AppletXMLtoHTML/README.html b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/README.html
similarity index 100%
rename from samples/AppletXMLtoHTML/README.html
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/README.html
diff --git a/samples/AppletXMLtoHTML/appletXMLtoHTML.html b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/appletXMLtoHTML.html
similarity index 100%
rename from samples/AppletXMLtoHTML/appletXMLtoHTML.html
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/appletXMLtoHTML.html
diff --git a/samples/AppletXMLtoHTML/client.html b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/client.html
similarity index 100%
rename from samples/AppletXMLtoHTML/client.html
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/client.html
diff --git a/samples/AppletXMLtoHTML/foo-s1.xml b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/foo-s1.xml
similarity index 100%
rename from samples/AppletXMLtoHTML/foo-s1.xml
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/foo-s1.xml
diff --git a/samples/AppletXMLtoHTML/lts3611beac.jpg b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/lts3611beac.jpg
similarity index 100%
rename from samples/AppletXMLtoHTML/lts3611beac.jpg
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/lts3611beac.jpg
diff --git a/samples/AppletXMLtoHTML/rabbitwhorn.jpg b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/rabbitwhorn.jpg
similarity index 100%
rename from samples/AppletXMLtoHTML/rabbitwhorn.jpg
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/rabbitwhorn.jpg
diff --git a/samples/AppletXMLtoHTML/s1ToHTML.xsl b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/s1ToHTML.xsl
similarity index 100%
rename from samples/AppletXMLtoHTML/s1ToHTML.xsl
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/s1ToHTML.xsl
diff --git a/samples/AppletXMLtoHTML/target.html b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/target.html
similarity index 100%
copy from samples/AppletXMLtoHTML/target.html
copy to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/target.html
diff --git a/samples/AppletXMLtoHTML/trax.xml b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/trax.xml
similarity index 100%
rename from samples/AppletXMLtoHTML/trax.xml
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/trax.xml
diff --git a/samples/AppletXMLtoHTML/xalanApplets.xml b/samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/xalanApplets.xml
similarity index 100%
rename from samples/AppletXMLtoHTML/xalanApplets.xml
rename to samples/src/main/java/org/apache/xalan/samples/AppletXMLtoHTML/xalanApplets.xml
diff --git a/samples/src/main/java/org/apache/xalan/samples/ApplyXPath/ApplyXPath.java b/samples/src/main/java/org/apache/xalan/samples/ApplyXPath/ApplyXPath.java
new file mode 100644
index 00000000..222cfe4e
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/ApplyXPath/ApplyXPath.java
@@ -0,0 +1,142 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+// This file uses 4 space indents, no tabs.
+package org.apache.xalan.samples.ApplyXPath;
+
+import java.io.FileInputStream;
+import java.io.OutputStreamWriter;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.traversal.NodeIterator;
+import org.xml.sax.InputSource;
+
+/**
+ *  Very basic utility for applying an XPath epxression to an xml file and printing information
+ /  about the execution of the XPath object and the nodes it finds.
+ *  Takes 2 arguments:
+ *     (1) an xml filename
+ *     (2) an XPath expression to apply to the file
+ *  Examples:
+ *     java ApplyXPath foo.xml /
+ *     java ApplyXPath foo.xml /doc/name[1]/@last
+ * @see XPathAPI
+ */
+public class ApplyXPath
+{
+  protected String filename = null;
+  protected String xpath = null;
+
+  /** Process input args and execute the XPath.  */
+  public void doMain(String[] args)
+    throws Exception
+  {
+    filename = args[0];
+    xpath = args[1];
+
+    if ((filename != null) && (filename.length() > 0)
+        && (xpath != null) && (xpath.length() > 0))
+    {
+      // Tell that we're loading classes and parsing, so the time it 
+      // takes to do this doesn't get confused with the time to do 
+      // the actual query and serialization.
+      System.out.println("Loading classes, parsing "+filename+", and setting up serializer");
+      
+      // Set up a DOM tree to query.
+      InputSource in = new InputSource(new FileInputStream(filename));
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+      dfactory.setNamespaceAware(true);
+      Document doc = dfactory.newDocumentBuilder().parse(in);
+      
+      // Set up an identity transformer to use as serializer.
+      Transformer serializer = TransformerFactory.newInstance().newTransformer();
+      serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+
+      // Use the simple XPath API to select a nodeIterator.
+      System.out.println("Querying DOM using "+xpath);
+      NodeIterator nl = XPathAPI.selectNodeIterator(doc, xpath);
+
+      // Serialize the found nodes to System.out.
+      System.out.println("<output>");
+                  
+      Node n;
+      while ((n = nl.nextNode())!= null)
+      {         
+	if (isTextNode(n)) {
+	    // DOM may have more than one node corresponding to a 
+	    // single XPath text node.  Coalesce all contiguous text nodes
+	    // at this level
+	    StringBuffer sb = new StringBuffer(n.getNodeValue());
+	    for (
+	      Node nn = n.getNextSibling(); 
+	      isTextNode(nn);
+	      nn = nn.getNextSibling()
+	    ) {
+	      sb.append(nn.getNodeValue());
+	    }
+	    System.out.print(sb);
+	}
+	else {
+         serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(System.out)));
+	}
+        System.out.println();
+      }
+      System.out.println("</output>");
+    }
+    else
+    {
+      System.out.println("Bad input args: " + filename + ", " + xpath);
+    }
+  }
+  
+  /** Decide if the node is text, and so must be handled specially */
+  static boolean isTextNode(Node n) {
+    if (n == null)
+      return false;
+    short nodeType = n.getNodeType();
+    return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE;
+  }
+
+  /** Main method to run from the command line.    */
+  public static void main (String[] args)
+    throws Exception
+  {
+    if (args.length != 2)
+    {
+      System.out.println("java ApplyXPath filename.xml xpath\n"
+                         + "Reads filename.xml and applies the xpath; prints the nodelist found.");
+      return;
+    }
+        
+    ApplyXPath app = new ApplyXPath();
+    app.doMain(args);
+  }	
+  
+} // end of class ApplyXPath
+
diff --git a/samples/ApplyXPath/foo.xml b/samples/src/main/java/org/apache/xalan/samples/ApplyXPath/foo.xml
similarity index 100%
rename from samples/ApplyXPath/foo.xml
rename to samples/src/main/java/org/apache/xalan/samples/ApplyXPath/foo.xml
diff --git a/samples/ApplyXPath/readme.html b/samples/src/main/java/org/apache/xalan/samples/ApplyXPath/readme.html
similarity index 100%
copy from samples/ApplyXPath/readme.html
copy to samples/src/main/java/org/apache/xalan/samples/ApplyXPath/readme.html
diff --git a/samples/src/main/java/org/apache/xalan/samples/ApplyXPathDOM/ApplyXPathDOM.java b/samples/src/main/java/org/apache/xalan/samples/ApplyXPathDOM/ApplyXPathDOM.java
new file mode 100644
index 00000000..244eff06
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/ApplyXPathDOM/ApplyXPathDOM.java
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+// This file uses 4 space indents, no tabs.
+
+package org.apache.xalan.samples.ApplyXPathDOM;
+
+
+import java.io.FileInputStream;
+import java.io.OutputStreamWriter;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.xpath.domapi.XPathEvaluatorImpl;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.xpath.XPathEvaluator;
+import org.w3c.dom.xpath.XPathNSResolver;
+import org.w3c.dom.xpath.XPathResult;
+import org.xml.sax.InputSource;
+
+/**
+ *  Very basic utility for applying the DOM L3 XPath API (currently in Last Call)
+ *  to an xml file and printing information about the execution of the XPath object 
+ *  and the nodes it finds.
+ *  Takes 2 arguments:
+ *     (1) an xml filename
+ *     (2) an XPath expression to apply to the file
+ *  Examples:
+ *     java ApplyXPathDOM foo.xml /
+ *     java ApplyXPathDOM foo.xml /doc/name[1]/@last
+ *
+ *<p>See also the <a href='http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226'>Document Object Model (DOM) Level 3 XPath Specification</a>.</p>
+ * @see XPathEvaluator
+ * 
+ */
+public class ApplyXPathDOM
+{
+  protected String filename = null;
+  protected String xpath = null;
+
+  /** Process input args and execute the XPath.  */
+  public void doMain(String[] args)
+    throws Exception
+  {
+    filename = args[0];
+    xpath = args[1];
+
+    if ((filename != null) && (filename.length() > 0)
+        && (xpath != null) && (xpath.length() > 0))
+    {
+      // Tell that we're loading classes and parsing, so the time it 
+      // takes to do this doesn't get confused with the time to do 
+      // the actual query and serialization.
+      System.out.println("Loading classes, parsing "+filename+", and setting up serializer");
+      
+      // Set up a DOM tree to query.
+      InputSource in = new InputSource(new FileInputStream(filename));
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+      dfactory.setNamespaceAware(true);
+      Document doc = dfactory.newDocumentBuilder().parse(in);
+      
+      // Set up an identity transformer to use as serializer.
+      Transformer serializer = TransformerFactory.newInstance().newTransformer();
+      serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+
+      // Use the DOM L3 XPath API to apply the xpath expression to the doc.
+      System.out.println("Querying DOM using "+xpath);
+      
+      // Create an XPath evaluator and pass in the document.
+      XPathEvaluator evaluator = new XPathEvaluatorImpl(doc);
+      XPathNSResolver resolver = evaluator.createNSResolver(doc);
+      
+      // Evaluate the xpath expression
+      XPathResult result = (XPathResult)evaluator.evaluate(xpath, doc, resolver, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
+      
+
+      // Serialize the found nodes to System.out.
+      System.out.println("<output>");
+                  
+      Node n;
+      while ((n = result.iterateNext())!= null)
+      {         
+        if (isTextNode(n)) {
+	    // DOM may have more than one node corresponding to a 
+	    // single XPath text node.  Coalesce all contiguous text nodes
+	    // at this level
+	    StringBuffer sb = new StringBuffer(n.getNodeValue());
+	    for (
+	      Node nn = n.getNextSibling(); 
+	      isTextNode(nn);
+	      nn = nn.getNextSibling()
+	    ) {
+	      sb.append(nn.getNodeValue());
+	    }
+	    System.out.print(sb);
+	}
+	else {
+         serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(System.out)));
+	}
+        System.out.println();
+      }
+      System.out.println("</output>");
+    }
+    else
+    {
+      System.out.println("Bad input args: " + filename + ", " + xpath);
+    }
+  }
+  
+  /** Decide if the node is text, and so must be handled specially */
+  static boolean isTextNode(Node n) {
+    if (n == null)
+      return false;
+    short nodeType = n.getNodeType();
+    return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE;
+  }
+
+  /** Main method to run from the command line.    */
+  public static void main (String[] args)
+    throws Exception
+  {
+    if (args.length != 2)
+    {
+      System.out.println("java ApplyXPathDOM filename.xml xpath\n"
+                         + "Reads filename.xml and applies the xpath; prints the nodelist found.");
+      return;
+    }
+        
+    ApplyXPathDOM app = new ApplyXPathDOM();
+    app.doMain(args);
+  }	
+  
+} // end of class ApplyXPathDOM
+
diff --git a/samples/ApplyXPathDOM/foo.xml b/samples/src/main/java/org/apache/xalan/samples/ApplyXPathDOM/foo.xml
similarity index 100%
rename from samples/ApplyXPathDOM/foo.xml
rename to samples/src/main/java/org/apache/xalan/samples/ApplyXPathDOM/foo.xml
diff --git a/samples/ApplyXPathDOM/readme.html b/samples/src/main/java/org/apache/xalan/samples/ApplyXPathDOM/readme.html
similarity index 100%
rename from samples/ApplyXPathDOM/readme.html
rename to samples/src/main/java/org/apache/xalan/samples/ApplyXPathDOM/readme.html
diff --git a/samples/CompiledApplet/README.applet b/samples/src/main/java/org/apache/xalan/samples/CompiledApplet/README.applet
similarity index 100%
rename from samples/CompiledApplet/README.applet
rename to samples/src/main/java/org/apache/xalan/samples/CompiledApplet/README.applet
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledApplet/TransformApplet.java b/samples/src/main/java/org/apache/xalan/samples/CompiledApplet/TransformApplet.java
new file mode 100644
index 00000000..b1cc0433
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledApplet/TransformApplet.java
@@ -0,0 +1,261 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledApplet;
+
+import java.applet.Applet;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+/**
+ * This applet demonstrates how XSL transformations can be made to run in
+ * browsers without native XSLT support.
+ *
+ * Note that the XSLTC transformation engine is invoked through the JAXP
+ * interface, using the XSLTC "use-classpath" attribute.  The
+ * "use-classpath" attribute specifies to the XSLTC TransformerFactory
+ * that a precompiled version of the stylesheet (translet) may be available,
+ * and that that should be used in preference to recompiling the stylesheet.
+ * @author Morten Jorgensen
+ * @author Jacek Ambroziak
+ */
+public final class TransformApplet extends Applet {
+    TransformerFactory tf;
+    TransformDelegate transformThread;
+    /**
+     * This class implements a dialog box used for XSL messages/comments
+     */
+    public class MessageFrame extends Frame {
+
+        public Frame frame;
+
+        public class ButtonHandler implements ActionListener {
+            public void actionPerformed(ActionEvent e) {
+                frame.setVisible(false);
+            }
+        }
+
+        /**
+         * This method handles xml:message and xsl:comment by displaying
+         * the message/comment in a dialog box.
+         */
+        public MessageFrame(String title, String message) {
+            super(title);
+            frame = this; // Make visible to ButtonHandler
+            setSize(320,200);
+
+            // Create a panel for the message itself
+            Panel center = new Panel();
+            center.add(new Label(message));
+
+            // Create a panel for the 'OK' button
+            Panel bottom = new Panel();
+            Button okButton = new Button("   OK   ");
+            okButton.addActionListener(new ButtonHandler());
+            bottom.add(okButton);
+
+            // Add the two panels to the window/frame
+            add(center, BorderLayout.CENTER);
+            add(bottom,BorderLayout.SOUTH);
+
+            // Show the whole thing
+            setVisible(true);
+        }
+
+    }
+
+    /**
+     * The applet uses this method to display messages and comments
+     * generated by xsl:message and xsl:comment elements.
+     */
+    public class AppletErrorListener implements ErrorListener {
+        public void displayMessage(TransformerException e) {
+            MessageFrame z = new MessageFrame("XSL transformation alert",
+                                              e.getMessageAndLocation());
+        }
+
+        public void error(TransformerException e) {
+            displayMessage(e);
+        }
+
+        public void fatalError(TransformerException e) {
+            displayMessage(e);
+        }
+
+        public void warning(TransformerException e) {
+                    displayMessage(e);
+        }
+    }
+
+    /**
+     * This method is the main body of the applet. The method is called
+     * by some JavaScript code in an HTML document.
+     */
+    public synchronized String transform(Object arg1, Object arg2) {
+        final String stylesheetURL = (String)arg1;
+        final String documentURL = (String)arg2;
+
+        transformThread.setStylesheetURL(stylesheetURL);
+        transformThread.setDocumentURL(documentURL);
+        transformThread.setWaiting(false);
+        transformThread.wakeUp();
+        try{
+            wait();
+        } catch (InterruptedException e){}
+        return transformThread.getOutput();
+    }
+
+    public void start() {
+        transform(getParameter("stylesheet-name"),
+                  getParameter("input-document"));
+    }
+    public void destroy() {
+        transformThread.destroy();
+    }
+    public void init() {
+        tf = TransformerFactory.newInstance();
+        try {
+            tf.setAttribute("use-classpath", Boolean.TRUE);
+        } catch (IllegalArgumentException iae) {
+            System.err.println("Could not set XSLTC-specific TransformerFactory"
+                               + " attributes.  Transformation failed.");
+        }
+        // Another thread is created to keep the context class loader
+        // information.  When use JDK 1.4 plugin for browser, to get around the
+        // problem with the bundled old version of xalan and endorsed class
+        // loading mechanism
+        transformThread = new TransformDelegate(true);
+        Thread t = new Thread(transformThread);
+        t.setName("transformThread");
+        t.start();
+    }
+    public String getOutput(){
+        return transformThread.getOutput();
+    }
+    public synchronized void wakeUp() {
+        notifyAll();
+    }
+    class TransformDelegate implements Runnable {
+        private boolean isRunning, isWaiting;
+        private String stylesheetURL, documentURL;
+        private String outPut;
+        public TransformDelegate(boolean arg) {
+            isRunning = arg;
+            isWaiting = true;
+        }
+        public synchronized void run() {
+            while(isRunning){
+                while(isWaiting){
+                    try {
+                        wait();
+                    } catch (InterruptedException e){}
+                }
+                transform();
+                isWaiting = true;
+                TransformApplet.this.wakeUp();
+            }
+        }
+
+        public void setStylesheetURL(String arg){
+            stylesheetURL = arg;
+        }
+        public void setDocumentURL(String arg) {
+            documentURL = arg;
+        }
+        public String getStylesheetURL(){
+            return stylesheetURL;
+        }
+        public String getDocumentURL() {
+            return documentURL;
+        }
+        public void setWaiting(boolean arg) {
+            isWaiting = arg;
+        }
+        public void destroy() {
+            isRunning = false;
+        }
+        public synchronized void wakeUp() {
+            notifyAll();
+        }
+        public String getOutput(){
+            return outPut;
+        }
+
+        public void transform(){
+            String xslURL = getStylesheetURL();
+            String docURL = getDocumentURL();
+            // Initialise the output stream
+            StringWriter sout = new StringWriter();
+            PrintWriter out = new PrintWriter(sout);
+            // Check that the parameters are valid
+            try {
+                if (xslURL == null || docURL == null) {
+                    out.println("<h1>Transformation error</h1>");
+                    out.println("The parameters <b><tt>stylesheetURL</tt></b> "+
+                                "and <b><tt>source</tt></b> must be specified");
+                } else {
+                    Transformer t = tf.newTransformer(new StreamSource(xslURL));
+                    t.setErrorListener(new AppletErrorListener());
+
+                    final long start = System.currentTimeMillis();
+
+                    t.transform(new StreamSource(docURL),
+                                new StreamResult(out));
+
+                    final long done = System.currentTimeMillis() - start;
+                    out.println("<!-- transformed by XSLTC in " + done
+                                + "msecs -->");
+                }
+                // Now close up the sink, and return the HTML output in the
+                // StringWrite object as a string.
+                out.close();
+                System.err.println("Transformation complete!");
+                System.err.println(sout.toString());
+                outPut = sout.toString();
+                sout.close();
+            } catch (RuntimeException e) {
+                out.println("<h1>RTE</h1>");
+                out.close();
+                outPut = sout.toString();
+            } catch (Exception e) {
+                out.println("<h1>exception</h1>");
+                out.println(e.toString());
+                out.close();
+                outPut = sout.toString();
+            }
+        }
+    }
+}
diff --git a/samples/CompiledApplet/index.html b/samples/src/main/java/org/apache/xalan/samples/CompiledApplet/index.html
similarity index 100%
rename from samples/CompiledApplet/index.html
rename to samples/src/main/java/org/apache/xalan/samples/CompiledApplet/index.html
diff --git a/samples/CompiledApplet/menu.html b/samples/src/main/java/org/apache/xalan/samples/CompiledApplet/menu.html
similarity index 100%
rename from samples/CompiledApplet/menu.html
rename to samples/src/main/java/org/apache/xalan/samples/CompiledApplet/menu.html
diff --git a/samples/CompiledApplet/singleTransform.html b/samples/src/main/java/org/apache/xalan/samples/CompiledApplet/singleTransform.html
similarity index 100%
rename from samples/CompiledApplet/singleTransform.html
rename to samples/src/main/java/org/apache/xalan/samples/CompiledApplet/singleTransform.html
diff --git a/samples/CompiledBrazil/README.brazil b/samples/src/main/java/org/apache/xalan/samples/CompiledBrazil/README.brazil
similarity index 100%
rename from samples/CompiledBrazil/README.brazil
rename to samples/src/main/java/org/apache/xalan/samples/CompiledBrazil/README.brazil
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledBrazil/TransformHandler.java b/samples/src/main/java/org/apache/xalan/samples/CompiledBrazil/TransformHandler.java
new file mode 100644
index 00000000..23f354b6
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledBrazil/TransformHandler.java
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledBrazil;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import java.util.StringTokenizer;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import sunlabs.brazil.server.Handler;
+import sunlabs.brazil.server.Request;
+import sunlabs.brazil.server.Server;
+
+/**
+ * This Brazil handler demonstrates how XSL transformations can be made
+ * available as a web service without using a full web server. This class
+ * implements the Handler interface from the Brazil project, see:
+ * http://www.sun.com/research/brazil/
+ *
+ * Note that the XSLTC transformation engine is invoked through the JAXP
+ * interface, using the XSLTC "use-classpath" attribute.  The
+ * "use-from-classpath" attribute specifies to the XSLTC TransformerFactory
+ * that a precompiled version of the stylesheet (translet) may be available,
+ * and that should be used in preference to recompiling the stylesheet.
+ * @author Morten Jorgensen
+ */
+public class TransformHandler implements Handler {
+
+    private TransformerFactory m_tf = null;
+
+    // These two are used while parsing the parameters in the URL
+    private final String PARAM_TRANSLET = "translet=";
+    private final String PARAM_DOCUMENT = "document=";
+    private final String PARAM_STATS = "stats=";
+
+    // All output goes here:
+    private PrintWriter m_out = null;
+
+    /**
+     * Dump an error message to output
+     */
+    public void errorMessage(String message, Exception e) {
+	if (m_out == null) {
+            return;
+        }
+	m_out.println("<h1>XSL transformation error</h1>"+message);
+	m_out.println("<br>Exception:</br>"+e.toString());
+    }
+
+    public void errorMessage(String message) {
+	if (m_out == null) return;
+	m_out.println("<h1>XSL transformation error</h1>"+message);
+    }
+
+    /**
+     * This method is run when the Brazil proxy is loaded
+     */
+    public boolean init(Server server, String prefix) {
+	return true;
+    }
+
+    /**
+     * This method is run for every HTTP request sent to the proxy
+     */
+    public boolean respond(Request request) throws IOException {
+
+	// Initialise the output buffer
+	final StringWriter sout = new StringWriter();
+	m_out = new PrintWriter(sout);
+
+	// These two hold the parameters from the URL 'translet' and 'document'
+	String transletName = null;
+	String document = null;
+	String stats = null;
+
+	// Get the parameters from the URL
+	final StringTokenizer params = new StringTokenizer(request.query,"&");
+	while (params.hasMoreElements()) {
+	    final String param = params.nextToken();
+	    if (param.startsWith(PARAM_TRANSLET)) {
+		transletName = param.substring(PARAM_TRANSLET.length());
+	    }
+	    else if (param.startsWith(PARAM_DOCUMENT)) {
+		document = param.substring(PARAM_DOCUMENT.length());
+	    }
+	    else if (param.startsWith(PARAM_STATS)) {
+		stats = param.substring(PARAM_STATS.length());
+	    }
+	}
+
+	try {
+	    // Make sure that both parameters were specified
+	    if ((transletName == null) || (document == null)) {
+		errorMessage("Parameters <b><tt>translet</tt></b> and/or "+
+			     "<b><tt>document</tt></b> not specified.");
+	    }
+	    else {
+                if (m_tf == null) {
+                    m_tf = TransformerFactory.newInstance();
+                    try {
+                        m_tf.setAttribute("use-classpath", Boolean.TRUE);
+                    } catch (IllegalArgumentException iae) {
+                        System.err.println(
+                            "Could not set XSLTC-specific TransformerFactory "
+                          + "attributes.  Transformation failed.");
+                    }
+                }
+                Transformer t =
+                     m_tf.newTransformer(new StreamSource(transletName));
+
+		// Do the actual transformation
+		final long start = System.currentTimeMillis();
+		t.transform(new StreamSource(document),
+                            new StreamResult(m_out));
+		final long done = System.currentTimeMillis() - start;
+		m_out.println("<!-- transformed by XSLTC in "+done+"ms -->");
+	    }
+	}
+	catch (Exception e) {
+	    errorMessage("Internal error.",e);
+	}
+
+	// Pass the transformation output as the HTTP response
+	request.sendResponse(sout.toString());
+	return true;
+    }
+
+
+}
diff --git a/samples/CompiledEJB/README.ejb b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/README.ejb
similarity index 100%
rename from samples/CompiledEJB/README.ejb
rename to samples/src/main/java/org/apache/xalan/samples/CompiledEJB/README.ejb
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformBean.java b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformBean.java
new file mode 100644
index 00000000..c2da697a
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformBean.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledEJB;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import javax.ejb.SessionBean;
+import javax.ejb.SessionContext;
+
+/**
+ * @author Morten Jorgensen
+ */
+public class TransformBean implements SessionBean {
+
+    private SessionContext m_context = null;
+    
+    private final static String nullErrorMsg =
+	"<h1>XSL transformation error</h1>"+
+	"<p>'null' parameters sent to the XSL transformation bean's "+
+	"<tt>transform(String document, String translet)</tt> method.</p>";
+
+    private static final String NAMESPACE_FEATURE =
+	"http://xml.org/sax/features/namespaces";
+
+    /**
+     * Generates HTML from a basic error message and an exception
+     */
+    private void errorMsg(PrintWriter out, Exception e, String msg) {
+	out.println("<h1>Error</h1>");
+	out.println("<p>"+msg+"</p><br>");
+	out.println(e.toString());
+    }
+
+    /**
+     * Main bean entry point
+     */
+    public String transform(String document, String transletName) {
+
+	// Initialise the output stream
+	final StringWriter sout = new StringWriter();
+	final PrintWriter out = new PrintWriter(sout);
+
+	try {
+	    if ((document == null) || (transletName == null)) {
+		out.println(nullErrorMsg);
+	    }
+	    else {
+                TransformerFactory tf = TransformerFactory.newInstance();
+                try {
+                    tf.setAttribute("use-classpath", Boolean.TRUE);
+                } catch (IllegalArgumentException iae) {
+                    System.err.println(
+                        "Could not set XSLTC-specific TransformerFactory "
+                      + "attributes.  Transformation failed.");
+                }
+
+                Transformer t =
+                    tf.newTransformer(new StreamSource(transletName));
+
+                // Do the actual transformation
+                final long start = System.currentTimeMillis();
+                t.transform(new StreamSource(document),
+                            new StreamResult(out));
+                final long done = System.currentTimeMillis() - start;
+                out.println("<!-- transformed by XSLTC in "+done+"msecs -->");
+	    }
+	}
+
+	catch (Exception e) {
+	    errorMsg(out, e, "Impossible state reached.");
+	}
+
+	// Now close up the sink, and return the HTML output in the
+	// StringWrite object as a string.
+	out.close();
+	return sout.toString();
+    }
+
+    /**
+     *
+     */
+    public void setSessionContext(SessionContext context) {
+	m_context = context;
+    }
+
+    // General EJB entry points
+    public void ejbCreate() { }
+    public void ejbRemove() { }
+    public void ejbActivate() { }
+    public void ejbPassivate() { }
+    public void ejbLoad() { }
+    public void ejbStore() { }
+}
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformHome.java b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformHome.java
new file mode 100644
index 00000000..c2404c17
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformHome.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledEJB;
+
+
+import java.rmi.RemoteException;
+
+import javax.ejb.CreateException;
+import javax.ejb.EJBHome;
+
+/**
+ * XSL transformation bean home interface
+ * @author Morten Jorgensen
+ */
+public interface TransformHome extends EJBHome {
+    TransformRemote create() throws CreateException, RemoteException;
+}
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformRemote.java b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformRemote.java
new file mode 100644
index 00000000..71622dfd
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformRemote.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledEJB;
+
+
+import java.rmi.RemoteException;
+
+import javax.ejb.EJBObject;
+
+/**
+ * XSL transformation bean remote interface
+ * @author Morten Jorgensen
+ */
+public interface TransformRemote extends EJBObject {
+    public String transform(String document, String transletName) 
+	throws RemoteException;
+}
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformServlet.java b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformServlet.java
new file mode 100644
index 00000000..79fd09b4
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/TransformServlet.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledEJB;
+
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.naming.InitialContext;
+import javax.rmi.PortableRemoteObject;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author Morten Jorgensen
+ */
+public class TransformServlet extends HttpServlet {
+
+    // Error message used when the XSL transformation bean cannot be created
+    private final static String createErrorMsg =
+	"<h1>XSL transformation bean error</h1>"+
+	"<p>An XSL transformation bean could not be created.</p>";
+
+    // Transformer - "more than meets the eye".
+    private TransformHome transformer;
+
+    /**
+     * Servlet initializer - look up the bean's home interface
+     */
+    public void init(ServletConfig config) 
+	throws ServletException{
+	try{
+	    InitialContext context = new InitialContext();
+	    Object transformRef = context.lookup("transform");
+	    transformer =
+		(TransformHome)PortableRemoteObject.narrow(transformRef,
+							   TransformHome.class);
+	} catch (Exception NamingException) {
+	    NamingException.printStackTrace();
+	}
+    }
+
+    /**
+     * Handles "GET" HTTP requests - ie. runs the actual transformation
+     */
+    public void doGet (HttpServletRequest request, 
+		       HttpServletResponse response) 
+	throws ServletException, IOException {
+
+	String document = request.getParameter("document");
+	String translet = request.getParameter("translet");
+
+	response.setContentType("text/html");
+
+	PrintWriter out = response.getWriter();
+	try{
+	    // Get the insult from the bean
+	    TransformRemote xslt = transformer.create();
+	    String result = xslt.transform(document, translet);
+	    out.println(result);
+	} catch(Exception CreateException){
+	    out.println(createErrorMsg);
+	}
+	out.close();
+    }
+
+    public void destroy() {
+	System.out.println("Destroy");
+    }
+}
diff --git a/samples/CompiledEJB/bottom_frame.html b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/bottom_frame.html
similarity index 100%
rename from samples/CompiledEJB/bottom_frame.html
rename to samples/src/main/java/org/apache/xalan/samples/CompiledEJB/bottom_frame.html
diff --git a/samples/CompiledEJB/index.html b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/index.html
similarity index 100%
rename from samples/CompiledEJB/index.html
rename to samples/src/main/java/org/apache/xalan/samples/CompiledEJB/index.html
diff --git a/samples/CompiledEJB/top_frame.html b/samples/src/main/java/org/apache/xalan/samples/CompiledEJB/top_frame.html
similarity index 100%
rename from samples/CompiledEJB/top_frame.html
rename to samples/src/main/java/org/apache/xalan/samples/CompiledEJB/top_frame.html
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledJAXP/Compile.java b/samples/src/main/java/org/apache/xalan/samples/CompiledJAXP/Compile.java
new file mode 100644
index 00000000..64c0ee1c
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledJAXP/Compile.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledJAXP;
+
+import javax.xml.transform.Templates;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamSource;
+
+public class Compile {
+
+    public static void main(String[] args){
+        Compile app = new Compile();
+        app.run(args[0]);
+    }
+
+    /**
+     * Compiles an XSL stylesheet into a translet, wraps the translet
+     * inside a Templates object and dumps it to a file.
+     */
+    public void run(String xsl) {
+        try {
+            // Set XSLTC's TransformerFactory implementation as the default
+            System.setProperty("javax.xml.transform.TransformerFactory",
+                         "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");
+
+	    // Get an input stream for the XSL stylesheet
+	    StreamSource stylesheet = new StreamSource(xsl);
+
+	    // The TransformerFactory will compile the stylesheet and
+	    // put the translet classes inside the Templates object
+	    TransformerFactory factory = TransformerFactory.newInstance();
+            factory.setAttribute("generate-translet", Boolean.TRUE);
+	    Templates templates = factory.newTemplates(stylesheet);
+        }
+	catch (Exception e) {
+            System.err.println("Exception: " + e); 
+	    e.printStackTrace();
+        }
+        System.exit(0);
+    }
+
+    private void usage() {
+        System.err.println("Usage: compile <xsl_file>");
+        System.exit(1);
+    }
+
+}
diff --git a/samples/CompiledJAXP/README.cjaxp b/samples/src/main/java/org/apache/xalan/samples/CompiledJAXP/README.cjaxp
similarity index 100%
rename from samples/CompiledJAXP/README.cjaxp
rename to samples/src/main/java/org/apache/xalan/samples/CompiledJAXP/README.cjaxp
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledJAXP/Transform.java b/samples/src/main/java/org/apache/xalan/samples/CompiledJAXP/Transform.java
new file mode 100644
index 00000000..fb3a7c60
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledJAXP/Transform.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledJAXP;
+
+import java.io.OutputStreamWriter;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+public class Transform {
+
+    public static void main(String[] args){
+        Transform app = new Transform();
+        app.run(args);
+    }
+
+    /**
+     * Asks the TransformerFactory to try to load a precompiled version of
+     * the translet from the class path to construct a Transformer object.
+     * The translet performs the transformation on behalf of the
+     * Transformer.transform() method.
+     */
+    public void run(String[] args){
+        String xml = args[0];
+        String transletURI = args[1];
+
+        try {
+            // Set XSLTC's TransformerFactory implementation as the default
+            System.setProperty("javax.xml.transform.TransformerFactory",
+                         "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");
+
+            TransformerFactory tf = TransformerFactory.newInstance();
+            tf.setAttribute("use-classpath", Boolean.TRUE);
+	    Transformer transformer = tf.newTransformer(
+                                               new StreamSource(transletURI));
+
+	    StreamSource document = new StreamSource(xml);
+            StreamResult result = new StreamResult(
+                                           new OutputStreamWriter(System.out));
+            transformer.transform(document, result);
+        }
+	catch (Exception e) {
+            System.err.println("Exception: " + e); 
+	    e.printStackTrace();
+        }
+        System.exit(0);
+    }
+
+    public void usage() {
+        System.err.println("Usage: run <xml_file> <xsl_file>");
+        System.exit(1);
+    }
+
+}
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledServlet/CompileServlet.java b/samples/src/main/java/org/apache/xalan/samples/CompiledServlet/CompileServlet.java
new file mode 100644
index 00000000..24c2f321
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledServlet/CompileServlet.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledServlet;
+
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import java.net.URL;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.xalan.xsltc.compiler.XSLTC;
+
+/**
+ * @author Morten Jorgensen
+ * @author Jacek Ambroziak
+ */
+public class CompileServlet extends HttpServlet {
+
+    /**
+     * Main servlet entry point. The servlet reads a stylesheet from the
+     * URI specified by the "sheet" parameter. The compiled Java class
+     * ends up in the CWD of the web server (a better solution would be
+     * to have an environment variable point to a translet directory).
+     */
+    public void doGet(HttpServletRequest request,
+		      HttpServletResponse response)
+	throws IOException, ServletException {
+
+	response.setContentType("text/html");
+	PrintWriter out = response.getWriter();
+		
+	String stylesheetName = request.getParameter("sheet");
+	
+	out.println("<html><head>");
+	out.println("<title>Servlet Stylesheet Compilation</title>");
+	out.println("</head><body>");
+
+	if (stylesheetName == null) {
+	    out.println("<h1>Compilation error</h1>");
+	    out.println("The parameter <b><tt>sheet</tt></b> "+
+			"must be specified");
+	}
+	else {
+	    XSLTC xsltc = new XSLTC();
+
+	    xsltc.init();
+	    xsltc.compile(new URL(stylesheetName));
+	    out.println("<h1>Compilation successful</h1>");
+	    out.println("The stylesheet was compiled into the translet "+
+			"class "+xsltc.getClassName() + " and is now "+
+			"available for transformations on this server.");
+	}
+	out.println("</body></html>");
+    }
+}
diff --git a/samples/CompiledServlet/README.servlet b/samples/src/main/java/org/apache/xalan/samples/CompiledServlet/README.servlet
similarity index 100%
rename from samples/CompiledServlet/README.servlet
rename to samples/src/main/java/org/apache/xalan/samples/CompiledServlet/README.servlet
diff --git a/samples/src/main/java/org/apache/xalan/samples/CompiledServlet/TransformationServlet.java b/samples/src/main/java/org/apache/xalan/samples/CompiledServlet/TransformationServlet.java
new file mode 100644
index 00000000..b95cf2d2
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/CompiledServlet/TransformationServlet.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.CompiledServlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.xml.sax.SAXException;
+
+/**
+ * This servlet demonstrates how XSL transformations can be made available as
+ * a web service. See the CompileServlet for an example on how stylesheets
+ * can be pre-compiled before this servlet is invoked.
+ *
+ * Note that the XSLTC transformation engine is invoked through the JAXP
+ * interface, using the XSLTC "use-classpath" attribute.  The
+ * "use-classpath" attribute specifies to the XSLTC TransformerFactory
+ * that a precompiled version of the stylesheet (translet) may be available,
+ * and that that should be used in preference to recompiling the stylesheet.
+ * @author Morten Jorgensen
+ * @author Jacek Ambroziak
+ */
+public final class TransformationServlet extends HttpServlet {
+
+    /**
+     * Main servlet entry point
+     */
+    public void doGet(HttpServletRequest request,
+		      HttpServletResponse response)
+	throws IOException, ServletException {
+
+	// Initialise the output writer
+	response.setContentType("text/html");
+	PrintWriter out = response.getWriter();
+
+	// Get the two paramters "class" and "source".
+ String transletName = request.getParameter("class");
+	String documentURI  = request.getParameter("source");
+
+	try {
+	    if ((transletName == null) || (documentURI == null)) {
+	        out.println("<h1>XSL transformation error</h1>");
+		out.println("The parameters <b><tt>class</tt></b> and " +
+			    "<b><tt>source</tt></b> must be specified");
+	    }
+	    else {
+                TransformerFactory tf = TransformerFactory.newInstance();
+                try {
+                    tf.setAttribute("use-classpath", Boolean.TRUE);
+                } catch (IllegalArgumentException iae) {
+                    System.err.println(
+                           "Could not set XSLTC-specific TransformerFactory "
+                         + "attributes.  Transformation failed.");
+                }
+                Transformer t =
+                         tf.newTransformer(new StreamSource(transletName));
+
+		// Start the transformation
+		final long start = System.currentTimeMillis();
+		t.transform(new StreamSource(documentURI),
+                            new StreamResult(out));
+		final long done = System.currentTimeMillis() - start;
+		out.println("<!-- transformed by XSLTC in "+done+"msecs -->");
+	    }
+	}
+	catch (Exception e) {
+	    out.println("<h1>Error</h1>");
+	    out.println(e.toString());
+	}
+    }
+}
diff --git a/samples/src/main/java/org/apache/xalan/samples/DOM2DOM/DOM2DOM.java b/samples/src/main/java/org/apache/xalan/samples/DOM2DOM/DOM2DOM.java
new file mode 100644
index 00000000..afb0e0fd
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/DOM2DOM/DOM2DOM.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.DOM2DOM;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+
+import org.apache.xml.serializer.Serializer;
+import org.apache.xml.serializer.SerializerFactory;
+import org.apache.xml.serializer.OutputPropertiesFactory;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException; 
+
+  /**
+   * Show how to transform a DOM tree into another DOM tree.  
+   * This uses the javax.xml.parsers to parse both an XSL file 
+   * and the XML file into a DOM, and create an output DOM.
+   */
+public class DOM2DOM
+{
+	public static void main(String[] args)
+    throws TransformerException, TransformerConfigurationException, FileNotFoundException,
+           ParserConfigurationException, SAXException, IOException
+  {    
+	  TransformerFactory tFactory = TransformerFactory.newInstance();
+
+    if(tFactory.getFeature(DOMSource.FEATURE) && tFactory.getFeature(DOMResult.FEATURE))
+    {
+      //Instantiate a DocumentBuilderFactory.
+      DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
+
+      // And setNamespaceAware, which is required when parsing xsl files
+      dFactory.setNamespaceAware(true);
+      
+      //Use the DocumentBuilderFactory to create a DocumentBuilder.
+      DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
+      
+      //Use the DocumentBuilder to parse the XSL stylesheet.
+      Document xslDoc = dBuilder.parse("birds.xsl");
+
+      // Use the DOM Document to define a DOMSource object.
+      DOMSource xslDomSource = new DOMSource(xslDoc);
+
+      // Set the systemId: note this is actually a URL, not a local filename
+      xslDomSource.setSystemId("birds.xsl");
+
+      // Process the stylesheet DOMSource and generate a Transformer.
+      Transformer transformer = tFactory.newTransformer(xslDomSource);
+
+      //Use the DocumentBuilder to parse the XML input.
+      Document xmlDoc = dBuilder.parse("birds.xml");
+      
+      // Use the DOM Document to define a DOMSource object.
+      DOMSource xmlDomSource = new DOMSource(xmlDoc);
+      
+      // Set the base URI for the DOMSource so any relative URIs it contains can
+      // be resolved.
+      xmlDomSource.setSystemId("birds.xml");
+      
+      // Create an empty DOMResult for the Result.
+      DOMResult domResult = new DOMResult();
+  
+  	  // Perform the transformation, placing the output in the DOMResult.
+      transformer.transform(xmlDomSource, domResult);
+	  
+	    //Instantiate an Xalan XML serializer and use it to serialize the output DOM to System.out
+	    // using the default output format, except for indent="yes"
+      java.util.Properties xmlProps = OutputPropertiesFactory.getDefaultMethodProperties("xml");
+      xmlProps.setProperty("indent", "yes");
+      xmlProps.setProperty("standalone", "no");
+      Serializer serializer = SerializerFactory.getSerializer(xmlProps);                             
+      serializer.setOutputStream(System.out);
+      serializer.asDOMSerializer().serialize(domResult.getNode());
+	}
+    else
+    {
+      throw new org.xml.sax.SAXNotSupportedException("DOM node processing not supported!");
+    }
+  }
+}
diff --git a/samples/DOM2DOM/birds.xml b/samples/src/main/java/org/apache/xalan/samples/DOM2DOM/birds.xml
similarity index 100%
rename from samples/DOM2DOM/birds.xml
rename to samples/src/main/java/org/apache/xalan/samples/DOM2DOM/birds.xml
diff --git a/samples/DOM2DOM/birds.xsl b/samples/src/main/java/org/apache/xalan/samples/DOM2DOM/birds.xsl
similarity index 100%
rename from samples/DOM2DOM/birds.xsl
rename to samples/src/main/java/org/apache/xalan/samples/DOM2DOM/birds.xsl
diff --git a/samples/DOM2DOM/readme.html b/samples/src/main/java/org/apache/xalan/samples/DOM2DOM/readme.html
similarity index 100%
rename from samples/DOM2DOM/readme.html
rename to samples/src/main/java/org/apache/xalan/samples/DOM2DOM/readme.html
diff --git a/samples/src/main/java/org/apache/xalan/samples/Pipe/Pipe.java b/samples/src/main/java/org/apache/xalan/samples/Pipe/Pipe.java
new file mode 100644
index 00000000..c783581d
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/Pipe/Pipe.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.Pipe;
+
+import java.io.IOException;
+
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TransformerHandler;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.xml.serializer.Serializer;
+import org.apache.xml.serializer.SerializerFactory;
+import org.apache.xml.serializer.OutputPropertiesFactory;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+  /**
+   * This example shows how to chain a series of transformations by
+   * piping SAX events from one Transformer to another. Each Transformer
+   * operates as a SAX2 XMLFilter/XMLReader.
+   */
+public class Pipe
+{
+	public static void main(String[] args)
+	throws TransformerException, TransformerConfigurationException, 
+         SAXException, IOException	   
+	{
+    // Instantiate  a TransformerFactory.
+  	TransformerFactory tFactory = TransformerFactory.newInstance();
+    // Determine whether the TransformerFactory supports The use uf SAXSource 
+    // and SAXResult
+    if (tFactory.getFeature(SAXSource.FEATURE) && tFactory.getFeature(SAXResult.FEATURE))
+    { 
+      // Cast the TransformerFactory to SAXTransformerFactory.
+      SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);	  
+      // Create a TransformerHandler for each stylesheet.
+      TransformerHandler tHandler1 = saxTFactory.newTransformerHandler(new StreamSource("foo1.xsl"));
+      TransformerHandler tHandler2 = saxTFactory.newTransformerHandler(new StreamSource("foo2.xsl"));
+      TransformerHandler tHandler3 = saxTFactory.newTransformerHandler(new StreamSource("foo3.xsl"));
+    
+      // Create an XMLReader.
+	    XMLReader reader = XMLReaderFactory.createXMLReader();
+      reader.setContentHandler(tHandler1);
+      reader.setProperty("http://xml.org/sax/properties/lexical-handler", tHandler1);
+
+      tHandler1.setResult(new SAXResult(tHandler2));
+      tHandler2.setResult(new SAXResult(tHandler3));
+
+      // transformer3 outputs SAX events to the serializer.
+      java.util.Properties xmlProps = OutputPropertiesFactory.getDefaultMethodProperties("xml");
+      xmlProps.setProperty("indent", "yes");
+      xmlProps.setProperty("standalone", "no");
+      Serializer serializer = SerializerFactory.getSerializer(xmlProps);
+      serializer.setOutputStream(System.out);
+      tHandler3.setResult(new SAXResult(serializer.asContentHandler()));
+
+	    // Parse the XML input document. The input ContentHandler and output ContentHandler
+      // work in separate threads to optimize performance.   
+      reader.parse("foo.xml");
+    }
+  }
+}
diff --git a/samples/Pipe/foo.xml b/samples/src/main/java/org/apache/xalan/samples/Pipe/foo.xml
similarity index 100%
rename from samples/Pipe/foo.xml
rename to samples/src/main/java/org/apache/xalan/samples/Pipe/foo.xml
diff --git a/samples/Pipe/foo1.xsl b/samples/src/main/java/org/apache/xalan/samples/Pipe/foo1.xsl
similarity index 100%
rename from samples/Pipe/foo1.xsl
rename to samples/src/main/java/org/apache/xalan/samples/Pipe/foo1.xsl
diff --git a/samples/Pipe/foo2.xsl b/samples/src/main/java/org/apache/xalan/samples/Pipe/foo2.xsl
similarity index 100%
rename from samples/Pipe/foo2.xsl
rename to samples/src/main/java/org/apache/xalan/samples/Pipe/foo2.xsl
diff --git a/samples/Pipe/foo3.xsl b/samples/src/main/java/org/apache/xalan/samples/Pipe/foo3.xsl
similarity index 100%
rename from samples/Pipe/foo3.xsl
rename to samples/src/main/java/org/apache/xalan/samples/Pipe/foo3.xsl
diff --git a/samples/Pipe/readme.html b/samples/src/main/java/org/apache/xalan/samples/Pipe/readme.html
similarity index 100%
rename from samples/Pipe/readme.html
rename to samples/src/main/java/org/apache/xalan/samples/Pipe/readme.html
diff --git a/samples/src/main/java/org/apache/xalan/samples/SAX2SAX/SAX2SAX.java b/samples/src/main/java/org/apache/xalan/samples/SAX2SAX/SAX2SAX.java
new file mode 100644
index 00000000..0f878dd9
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/SAX2SAX/SAX2SAX.java
@@ -0,0 +1,109 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+
+/**
+ *  Replicate the SimpleTransform sample, explicitly using the SAX model to handle the
+ *  stylesheet, the XML input, and the transformation.
+ */
+package org.apache.xalan.samples.SAX2SAX;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TemplatesHandler;
+import javax.xml.transform.sax.TransformerHandler;
+
+import org.apache.xml.serializer.Serializer;
+import org.apache.xml.serializer.SerializerFactory;
+import org.apache.xml.serializer.OutputPropertiesFactory;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+
+public class SAX2SAX
+{
+  public static void main(String[] args)
+	throws TransformerException, TransformerConfigurationException, 
+         SAXException, IOException	   
+	{
+
+    // Instantiate a TransformerFactory.
+  	TransformerFactory tFactory = TransformerFactory.newInstance();
+    // Determine whether the TransformerFactory supports The use of SAXSource 
+    // and SAXResult
+    if (tFactory.getFeature(SAXSource.FEATURE) && tFactory.getFeature(SAXResult.FEATURE))
+    { 
+      // Cast the TransformerFactory.
+      SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);
+      // Create a ContentHandler to handle parsing of the stylesheet.
+      TemplatesHandler templatesHandler = saxTFactory.newTemplatesHandler();
+
+      // Create an XMLReader and set its ContentHandler.
+      XMLReader reader = XMLReaderFactory.createXMLReader();
+      reader.setContentHandler(templatesHandler);
+    
+      // Parse the stylesheet.                       
+      reader.parse("birds.xsl");
+
+      //Get the Templates object from the ContentHandler.
+      Templates templates = templatesHandler.getTemplates();
+      // Create a ContentHandler to handle parsing of the XML source.  
+      TransformerHandler handler 
+        = saxTFactory.newTransformerHandler(templates);
+      // Reset the XMLReader's ContentHandler.
+      reader.setContentHandler(handler);  
+
+      // Set the ContentHandler to also function as a LexicalHandler, which
+      // includes "lexical" events (e.g., comments and CDATA). 
+      reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
+      
+   	  FileOutputStream fos = new FileOutputStream("birds.out");
+      
+      java.util.Properties xmlProps = OutputPropertiesFactory.getDefaultMethodProperties("xml");
+      xmlProps.setProperty("indent", "yes");
+      xmlProps.setProperty("standalone", "no");      
+      Serializer serializer = SerializerFactory.getSerializer(xmlProps);
+      serializer.setOutputStream(fos);
+   
+      
+      // Set the result handling to be a serialization to the file output stream.
+      Result result = new SAXResult(serializer.asContentHandler());
+      handler.setResult(result);
+      
+      // Parse the XML input document.
+      reader.parse("birds.xml");
+      
+    	System.out.println("************* The result is in birds.out *************");	
+    }	
+    else
+      System.out.println("The TransformerFactory does not support SAX input and SAX output");
+  }
+}
diff --git a/samples/SAX2SAX/birds.xml b/samples/src/main/java/org/apache/xalan/samples/SAX2SAX/birds.xml
similarity index 100%
rename from samples/SAX2SAX/birds.xml
rename to samples/src/main/java/org/apache/xalan/samples/SAX2SAX/birds.xml
diff --git a/samples/SAX2SAX/birds.xsl b/samples/src/main/java/org/apache/xalan/samples/SAX2SAX/birds.xsl
similarity index 100%
rename from samples/SAX2SAX/birds.xsl
rename to samples/src/main/java/org/apache/xalan/samples/SAX2SAX/birds.xsl
diff --git a/samples/SAX2SAX/foo.xml b/samples/src/main/java/org/apache/xalan/samples/SAX2SAX/foo.xml
similarity index 100%
rename from samples/SAX2SAX/foo.xml
rename to samples/src/main/java/org/apache/xalan/samples/SAX2SAX/foo.xml
diff --git a/samples/SAX2SAX/foo.xsl b/samples/src/main/java/org/apache/xalan/samples/SAX2SAX/foo.xsl
similarity index 100%
rename from samples/SAX2SAX/foo.xsl
rename to samples/src/main/java/org/apache/xalan/samples/SAX2SAX/foo.xsl
diff --git a/samples/src/main/java/org/apache/xalan/samples/SimpleTransform/SimpleTransform.java b/samples/src/main/java/org/apache/xalan/samples/SimpleTransform/SimpleTransform.java
new file mode 100644
index 00000000..33679f50
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/SimpleTransform/SimpleTransform.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.SimpleTransform;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+/**
+ *  Use the TraX interface to perform a transformation in the simplest manner possible
+ *  (3 statements).
+ */
+public class SimpleTransform
+{
+	public static void main(String[] args)
+    throws TransformerException, TransformerConfigurationException, 
+           FileNotFoundException, IOException
+  {  
+  // Use the static TransformerFactory.newInstance() method to instantiate 
+  // a TransformerFactory. The javax.xml.transform.TransformerFactory 
+  // system property setting determines the actual class to instantiate --
+  // org.apache.xalan.transformer.TransformerImpl.
+	TransformerFactory tFactory = TransformerFactory.newInstance();
+	
+	// Use the TransformerFactory to instantiate a Transformer that will work with  
+	// the stylesheet you specify. This method call also processes the stylesheet
+  // into a compiled Templates object.
+	Transformer transformer = tFactory.newTransformer(new StreamSource("birds.xsl"));
+
+	// Use the Transformer to apply the associated Templates object to an XML document
+	// (foo.xml) and write the output to a file (foo.out).
+	transformer.transform(new StreamSource("birds.xml"), new StreamResult(new FileOutputStream("birds.out")));
+	
+	System.out.println("************* The result is in birds.out *************");
+  }
+}
diff --git a/samples/SimpleTransform/birds.xml b/samples/src/main/java/org/apache/xalan/samples/SimpleTransform/birds.xml
similarity index 100%
rename from samples/SimpleTransform/birds.xml
rename to samples/src/main/java/org/apache/xalan/samples/SimpleTransform/birds.xml
diff --git a/samples/SimpleTransform/birds.xsl b/samples/src/main/java/org/apache/xalan/samples/SimpleTransform/birds.xsl
similarity index 100%
rename from samples/SimpleTransform/birds.xsl
rename to samples/src/main/java/org/apache/xalan/samples/SimpleTransform/birds.xsl
diff --git a/samples/SimpleTransform/foo.xml b/samples/src/main/java/org/apache/xalan/samples/SimpleTransform/foo.xml
similarity index 100%
rename from samples/SimpleTransform/foo.xml
rename to samples/src/main/java/org/apache/xalan/samples/SimpleTransform/foo.xml
diff --git a/samples/SimpleTransform/foo.xsl b/samples/src/main/java/org/apache/xalan/samples/SimpleTransform/foo.xsl
similarity index 100%
rename from samples/SimpleTransform/foo.xsl
rename to samples/src/main/java/org/apache/xalan/samples/SimpleTransform/foo.xsl
diff --git a/samples/SimpleTransform/readme.html b/samples/src/main/java/org/apache/xalan/samples/SimpleTransform/readme.html
similarity index 100%
rename from samples/SimpleTransform/readme.html
rename to samples/src/main/java/org/apache/xalan/samples/SimpleTransform/readme.html
diff --git a/samples/src/main/java/org/apache/xalan/samples/Trace/Trace.java b/samples/src/main/java/org/apache/xalan/samples/Trace/Trace.java
new file mode 100644
index 00000000..dd621c32
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/Trace/Trace.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.Trace;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.xalan.trace.PrintTraceListener;
+import org.apache.xalan.trace.TraceManager;
+import org.apache.xalan.transformer.TransformerImpl;
+
+/**
+ * Sample for demonstrating Xalan "trace" interface.
+ * Usage: run in Trace directory: java Trace
+ * For an extensions trace sample, run in extensions
+ * directory: java Trace 3-java-namespace
+ */
+public class Trace
+{	
+  public static void main (String[] args)
+	  throws java.io.IOException, 
+			 TransformerException, TransformerConfigurationException,
+			 java.util.TooManyListenersException, 
+			 org.xml.sax.SAXException			 
+  {
+    String fileName = "foo";
+    if (args.length > 0)
+      fileName = args[0];
+
+    // Set up a PrintTraceListener object to print to a file.
+    java.io.FileWriter fw = new java.io.FileWriter("events.log");  
+    java.io.PrintWriter pw = new java.io.PrintWriter(fw, true);
+    PrintTraceListener ptl = new PrintTraceListener(pw);
+
+    // Print information as each node is 'executed' in the stylesheet.
+    ptl.m_traceElements = true;
+    // Print information after each result-tree generation event.
+    ptl.m_traceGeneration = true;
+    // Print information after each selection event.
+    ptl.m_traceSelection = true;
+    // Print information whenever a template is invoked.
+    ptl.m_traceTemplates = true;
+    // Print information whenever an extension call is made.
+    ptl.m_traceExtension = true;
+
+    // Set up the transformation    
+   	TransformerFactory tFactory = TransformerFactory.newInstance();
+    Transformer transformer = tFactory.newTransformer(new StreamSource(fileName + ".xsl"));
+
+    // Cast the Transformer object to TransformerImpl.
+    if (transformer instanceof TransformerImpl) 
+	  {
+      TransformerImpl transformerImpl = (TransformerImpl)transformer;
+      // Register the TraceListener with a TraceManager associated 
+      // with the TransformerImpl.
+      TraceManager trMgr = transformerImpl.getTraceManager();
+      trMgr.addTraceListener(ptl);
+                     
+      // Perform the transformation --printing information to
+      // the events log during the process.
+      transformer.transform
+                         ( new StreamSource(fileName + ".xml"), 
+                           new StreamResult(new java.io.FileWriter(fileName + ".out")) );
+    }
+    // Close the PrintWriter and FileWriter.
+    pw.close();
+    fw.close();
+   	System.out.println("**The output is in " + fileName + ".out; the log is in events.log ****");	
+    
+  }
+}
diff --git a/samples/Trace/foo.xml b/samples/src/main/java/org/apache/xalan/samples/Trace/foo.xml
similarity index 100%
rename from samples/Trace/foo.xml
rename to samples/src/main/java/org/apache/xalan/samples/Trace/foo.xml
diff --git a/samples/Trace/foo.xsl b/samples/src/main/java/org/apache/xalan/samples/Trace/foo.xsl
similarity index 100%
rename from samples/Trace/foo.xsl
rename to samples/src/main/java/org/apache/xalan/samples/Trace/foo.xsl
diff --git a/samples/src/main/java/org/apache/xalan/samples/TransformThread/TransformThread.java b/samples/src/main/java/org/apache/xalan/samples/TransformThread/TransformThread.java
new file mode 100644
index 00000000..e65e0ebf
--- /dev/null
+++ b/samples/src/main/java/org/apache/xalan/samples/TransformThread/TransformThread.java
@@ -0,0 +1,324 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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$
+ */
+package org.apache.xalan.samples.TransformThread;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Properties;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * What it does: this sample creates multiple threads 
+ * and runs them. Each thread will be assigned a particular
+ * stylesheet. Each thread will run multiple transformations on
+ * various xml files using its own transformer.
+ * 
+ * Note: the flavors used by the transformations can be
+ * configured below by changing SOURCE_FLAVOR and
+ * RESULT_FLAVOR. XSLTC can also be used by changing
+ * USE_XSLTC.
+ * 
+ * Description of files included with the sample:
+ * 
+ * foo0.xsl and foo1.xsl: foo0.xsl is the stylesheet used 
+ * for transformations by thread #0, foo1.xsl is the stylesheet
+ * used by thread #1.
+ * 
+ * foo0.xml and foo1.xml: foo0.xml and foo1.xml are the XML
+ * files used for the first and second transformations done
+ * by each thread.
+ * 
+ * Output will go to *.out files in the TransformThread directory.
+ * 
+ * @author <a href="mailto:richcao@ca.ibm.com">Richard Cao</a>
+ */
+public class TransformThread implements Runnable
+{    
+  // Flavors
+  public final static int STREAM = 0;
+  public final static int SAX = 1;
+  public final static int DOM = 2;
+  public final static String[] flavorNames =
+    new String[] { "Stream", "SAX", "DOM" };
+
+  // Configurable options
+  private static int SOURCE_FLAVOR = STREAM;
+    // private static int SOURCE_FLAVOR = SAX;
+    // private static int SOURCE_FLAVOR = DOM;
+    
+  private static int RESULT_FLAVOR = STREAM;
+    // private static int RESULT_FLAVOR = SAX;
+    // private static int RESULT_FLAVOR = DOM;
+  
+  private static boolean USE_XSLTC = false;
+    // private static boolean useXSLTC = true;
+
+
+  // Threads
+  private final static int NUM_THREADS = 2;
+  private static TransformThread INSTANCES[] = null;
+  protected Thread m_thread = null;
+  
+  // Number of transformations per thread
+  private final static int NUM_TRANSFORMATIONS = 2;
+
+  // Files names and extensions
+  private final static String XML_IN_BASE = "foo";
+  private final static String XML_EXT = ".xml";
+  private final static String XSL_IN_BASE = "foo";
+  private final static String XSL_EXT = ".xsl";
+  private final static String FILE_OUT_BASE = "foo_";
+  private final static String FILE_OUT_EXT = ".out";
+
+  // Thread identifier
+  private int m_thrdNum = -1;
+
+  private InputStream[] m_inStream = null;
+
+  private Source[] m_inSource = null;
+  private Result[] m_outResult = null;
+
+  // One Transformer per thread since Transformers
+  // are _NOT_ thread-safe
+  private Transformer m_transformer = null;
+
... 159755 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xalan.apache.org
For additional commands, e-mail: commits-help@xalan.apache.org