diff --git a/README.txt b/README.txt
deleted file mode 100644
index d6fce71..0000000
--- a/README.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Temporary File.
-Attempting to create a new empty branch.
-- Steven J. Hathaway
diff --git a/xalan-j/bugreporting.html b/xalan-j/bugreporting.html
new file mode 100644
index 0000000..c3f5638
--- /dev/null
+++ b/xalan-j/bugreporting.html
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Reporting Bugs</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Reporting Bugs</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>Bug Reporting<br />
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Reporting Bugs</h2>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Before you report a bug</h3>
+  <p>Before you report a bug, please, <b>read</b> the following instructions:</p>
+  <ul>
+  <li>If doubt exists whether the behaviour in question is a bug or a feature, 
+      please post a message to the 
+      <a href="mailto:j-users@xalan.apache.org">j-users@xalan.apache.org</a>
+      list for clarification.</li>
+  <li>To help eliminate duplicate or invalid bug reports, please take a quick look at
+      bugs in JIRA to see whether the bug has been already reported and/or fixed. 
+      You can also download the 
+      <a href="downloads.html">latest code</a>
+      and check if you can reproduce the bug.</li>
+  <li>Report bugs against the newest release.</li>
+  </ul>
+  <p>We strongly encourage you to write patches for problems you find and attach
+     them to your JIRA issue. Being specific in the description of your bug report, and 
+     providing enough information to reproduce the bug will improve the likelihood that 
+     bugs, adding enhancements, and addressing outstanding design issues, we need your 
+     active participation in the ongoing development of Xalan Java.</p>  
+  
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Bugzilla is not used</h3>
+    <p>
+      The old bug tracking system, 
+      <a href="http://issues.apache.org/bugzilla/">bugzilla</a>,
+      is still available but please only use it to look up old bugs.
+      Bugzilla has been replaced by <a href="http://issues.apache.org/jira/browse/XALANJ">JIRA</a>
+      and old bugzilla <b>bugs</b> have been migrated to JIRA as <b>issues</b>.
+    </p>
+  
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Report a bug</h3>  
+  <p>After reading the instructions above, click 
+     <a href="http://issues.apache.org/jira/browse/XALANJ">here</a> to submit a bug report using JIRA.
+  </p>
+  <p>
+     Note that the functionality shown by the JIRA user interface changes depending on whether
+     you <b>Log In</b> or not. In particular, to have the <b>CREATE NEW ISSUE</b> link 
+     you will need to click the <b>Log In</b> in small font, in the top right corner
+     of the page and log in.
+  </p>
+  <p>
+     <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">
+       If you had a bugzilla account previously, and had used it with Xalan bugzilla bugs, 
+       your account should be migrated to JIRA. In this case, do not create a new account, 
+       but use the same e-mail account name and click on "Forgot Password" on the JIRA home page.
+     </td>
+</tr>
+</table>
+  </p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/builds.html b/xalan-j/builds.html
new file mode 100644
index 0000000..eab0786
--- /dev/null
+++ b/xalan-j/builds.html
@@ -0,0 +1,691 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Xalan-Java Release builds</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Xalan-Java Release builds</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>Building a release<br />
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Xalan-Java Release builds</h2>
+<ul>
+<li>
+<a href="#intro">Introduction</a>
+</li>
+<li>
+<a href="#developers">Developer Guidelines</a>
+</li>
+<li>
+<a href="#builds">Running Product Builds - Overview</a>
+</li>
+<li>
+<a href="#builds2">Running Product Builds - Details</a>
+</li>
+</ul>
+
+
+<a name="intro">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>
+  <p>
+    This page is <b>not</b> for users
+    who want to download pre-built jars of Xalan-Java or download 
+    the source code for Xalan-Java and build from that.
+    Users who want to do that 
+    should see the <a href="downloads.html">Download/Build</a> page.
+  </p>
+  <p>
+    This page is intended for Xalan committers and developers and is about the 
+    process to create a new release. It
+    provides a selection of brief checklists for committers and developers 
+    about build procedures for the Xalan-Java community.  Community input 
+    is appreciated; if you have questions, please ask on
+    <a href="contact_us.html">xalan-dev</a>.
+  </p> 
+  <p>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The product build related sections of this document are still 
+    quite thin - they're mainly bullet points almost in checklist style.  
+    If you don't fully understand the procedures in this document, then 
+    you probably should ask for help first!
+    </td>
+</tr>
+</table> 
+  </p>
+  
+
+
+
+<a name="developers">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Developer Guidelines</h3>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This section is meant to become a set of guidelines for all Xalan-Java
+committers and developers who wish to submit patches.  It's still in progress; 
+suggestions to xalan-dev@xml.apache.org appreciated.</td>
+</tr>
+</table> 
+  <p>The project's technical mailing list for all committers and developers 
+  interested in the API and inner workings is 
+  <a href="mailto:xalan-dev@xml.apache.org">xalan-dev@xml.apache.org</a>; 
+  it's a good idea to 
+  <a href="contact_us.html#dev-mailing-list">subscribe</a>
+  if you plan to work on Xalan-Java.  Logs of all Subversion 
+  commits are automatically sent to <a href="mailto:xalan-cvs@xml.apache.org">xalan-cvs@xml.apache.org</a>, although 
+  discussions should happen on xalan-dev.  You can read more <a href="http://xml.apache.org/mail.html">about mailing lists.</a>
+</p>
+  <p>Xalan-Java is a fairly mature project; one where most committers and many 
+  users expect that the daily build will be mostly functional.  Very risky changes 
+  or major architecture updates should be discussed ahead of time or committed onto 
+  branches.</p> 
+  <p>Developers should always run the Smoketest before checking in files or 
+  submitting patches to the list.  If the Smoketest does not pass, you should 
+  either fix whatever you broke or get consensus from xalan-dev that 
+  it's OK to break the Smoketest temporarily.  The Smoketest is a selection of 
+  API functionality tests and a pass through a wide variety of XSLT conformance 
+  tests that ensure basic functionality.  You can also read a full set of 
+  <a href="http://xml.apache.org/xalan-j/test/overview.html">documentation about the tests</a>.</p>
+  <p>
+  (Smoketest doc is TBD!)
+<blockquote class="source">
+<pre>cvs co xml-xalan/java xml-xalan/test
+cd xml-xalan/java
+build smoketest
+# Ant build will fail if smoketest fails.
+</pre>
+</blockquote>
+</p>
+
+
+<a name="builds">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Running Product Builds - Overview</h3>
+<p>Official builds of Xalan-Java require a few more steps than simply doing 
+'build fulldist'.  This is a quick checklist of the steps; if you are 
+not comfortable following this list, then please seek help on xalan-dev.</p> 
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Release Types</h4>
+<p>Official builds come in several flavors:</p>
+<ul>
+<li>Major version releases: when significant new or changed functionality comes out, 
+we bump up the major build number; i.e. from 2.3 to 3.0.  This is fairly rare; 
+anyone reading xalan-dev will know when this is happening.<br />
+<br />
+</li>
+<li>Minor version releases happen when we fix bugs or make moderate improvements to 
+the product.  These are moving from 2.3 to 2.4; they should be planned out.<br />
+<br />
+</li>
+<li>Maintenance point releases are when we find bugs in an existing version and fix them without 
+adding new functionality; these go from 2.3 to 2.3.1.  They should be done on a 
+branch if the mainline development has already moved forward; the point is to 
+make critical bugfixes for existing customers who want to stay on the stable release.<br />
+<br />
+</li>
+<li>Developer releases are very ad hoc; they represent a chunk of progress along the 
+HEAD of our Subversion tree towards a new major or minor release. The developer release 
+versions would be going from 2.3 to a new 2.4.D1 - the developer release is somewhat 
+like a 'beta' towards a new 2.4 minor version release.  Quality standards for developer 
+releases are much less stringent than other releases.<br />
+<br />
+</li>
+</ul>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Condensed Build Checklist</h4>
+<p>A very brief list of stages in running a build.</p>
+<ol>
+<li>Email xalan-dev with build plan.<br />
+<br />
+</li>
+<li>Verify all code changes are checked in.<br />
+<br />
+</li>
+<li>Verify any doc updates for code changes are in.<br />
+<br />
+</li>
+<li>Update build numbers in doc, code, and build scripts.<br />
+<br />
+</li>
+<li>Do a clean checkout and tag the sources.<br />
+<br />
+</li>
+<li>build fulldist -logfile ..\fulldist.log<br />
+<br />
+</li>
+<li>build fulldist-separatejars -logfile ..\fulldist-separatejars.log<br />
+<br />
+</li>
+<li>Run the smoketest for Xalan Interpretive and XSLTC.<br />
+<br />
+</li>
+<li>Verify smoketest passed; check docs built with new build numbers.<br />
+<br />
+</li>
+<li>PGP/GPG sign all .zip/.tar.gz distribution files (distros).<br />
+<br />
+</li>
+<li>Copy distros up to the website.<br />
+<br />
+</li>
+<li>Update website documentation set.<br />
+<br />
+</li>
+<li>Email xalan-dev with build notice!<br />
+<br />
+</li>
+</ol>
+
+
+
+
+<a name="builds2">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Running Product Builds - Details</h3>
+<p>This section is still in progress, but should have all the basics. 
+You should already have read the <a href="#builds">build overview</a> above and you should already be 
+familiar with our build.xml script and development processes.</p> 
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Pre-Build Steps</h4>
+<p>Preparation before you run a build.</p>
+<ul>
+<li>Email xalan-dev with build plan.</li>
+</ul>
+<p>Apache projects are communities: you should always let the community know what 
+the plans for builds are.  The xalan-dev mailing list is the primary communication 
+mechanisim for committers and developers working on Xalan-Java; you may also wish 
+to cc: the xalan-j-users list to let other users and folks know what's coming. 
+For major releases you may also want to cc: the general@xml.apache.org list so that 
+other xml.apache.org projects know our plans, although this is not required.</p>
+<ul>
+<li>Verify all code changes are checked in.</li>
+</ul>
+<p>Ensure that any code changes you're planning to have in this release are actually 
+checked in; make sure any open work by other committers is in a stable state. 
+You should also review any other projects we're dependent on and make sure 
+that (when possible) we've updated to the latest version of their .jar files: 
+like <code>xercesImpl.jar</code>, <code>ant.jar</code>, etc.  Note that occasionally we will have a specific 
+development need to stay with a different version of these projects.</p>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Updating Doc And Version Numbers</h4>
+<p>Getting documentation and version numbers in sync.</p>
+<ul>
+<li>Verify any doc updates for code changes are in.</li>
+</ul>
+<p>Check that the documentation is up to date.  Make sure that any new 
+features or major functionality changes are properly documented.</p>
+<p>Update the commits list and the 'what was done' list in xdocs/sources/xalan/readme.xml 
+and whatsnew.xml.  Note that currently some of the status information for the 
+XSLTC portion of Xalan-Java is stored separately in xsltc_history.xml and XSLTCDONE
+</p>
+<p>Check in all your work!</p>
+
+<ul>
+<li>Update build numbers in doc, code, and build scripts.</li>
+</ul>
+<p>Once you know what the version number should be, you'll need to update 
+it in a number of places - both for the product itself, for the build 
+system, and for the documentation.  If you don't understand how to update 
+any of these files, then please get help - don't just try to wing it.</p>
+<ul>
+<li>build.xml 
+Update the following lines for each version field:<br />
+&lt;property name="version.VERSION" value="2"/&gt;<br />
+&lt;property name="version.RELEASE" value="7"/&gt;<br />
+&lt;property name="version.DEVELOPER" value=""/&gt;<br />
+&lt;property name="version.MINOR" value="0"/&gt;<br />
+&lt;property name="parser.version.VERSION" value="2"/&gt;<br />
+&lt;property name="parser.version.RELEASE" value="7"/&gt;<br />
+&lt;property name="parser.version.MINOR" value="1"/&gt;<br />
+<br />
+</li>
+<li>xml-xalan/java/xdocs/sources/xalan-jsite (document id="index" label="Xalan-Java x.x")<br />
+<br />
+</li>
+<li>If you updated <code>xercesImpl.jar</code> or <code>xml-apis.jar</code>, add a new entry in
+xml-xalan/java/src/org/apache/xalan/xslt/EnvironmentCheck.java</li>
+</ul>
+<p>I did remind you to check in all your work, didn't I?</p>
+
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Run A Candidate Distribution Build</h4>
+<p>Get clean sources and build a distribution and (at least) the smoketest.</p>
+<ul>
+<li>Do a clean checkout and tag the sources.</li>
+</ul>
+<p>Of course, you checked in all your earlier work to the Subversion repository, right?</p>
+<p>The safest way to perform a build for distribution is to check out a fresh 
+new copy of the repository from Subversion.  This avoids any potential problems with 
+uncommitted changes or extra files on your local machine.</p>
+<p>Check out a new copy of both xml-xalan/java and xml-xalan/test repositories 
+to a blank directory on your local machine.  You then need to tag the files in 
+the repository with a marker noting that these versions are the actual ones 
+being used in the build (you could actually do this after running the build below). 
+Use the Subversion tag command to add the tag to both repositories (/java and /test). 
+The tag name should be something like 'xalan-j_2_4'; look at the log of any file 
+to see the exact format of previous builds.</p>
+
+
+<ul>
+<li>build fulldist site -logfile ..\fulldist.log</li>
+</ul>
+<p>The above command will build the binary and source distribution .zip/.tar.gz 
+files, in which the Xalan Interpretive and Xalan Compiled (XSLTC) processors
+are combined into the <code>xalan.jar</code> file.  All the samples and the documentation
+are built as well. The log of the build is saved in ..\fulldist.log.  Note 
+that this will take up a moderate amount of space, especially when building 
+the .tar.gz files, so ensure you have plenty of disk space first.</p>
+<p>Review the fulldist.log file quickly to ensure there were no build errors.   
+Note that you can ignore any 'warnings' from the javadoc target; however any 
+'error's in the documentation must be fixed.</p>
+
+<ul>
+<li>build fulldist-separatejars site -logfile ..\fulldist-separatejars.log</li>
+</ul>
+<p>Before running this command, rename the generated ./build directory from 
+the 'fulldist' command above to another name, for example, build-combinedjar.  The 
+'fulldist-separatejars' command will build the binary and source distribution 
+.zip/.tar.gz files, in which the Xalan Interpretive and Xalan Compiled (XSLTC) processors
+are built into separate jars; <code>xalan.jar</code> and <code>xsltc.jar</code> respectively.  All the samples and 
+the documentation are built as well.  The log of the build is saved in ..\fulldist-separatejars.log.
+Note that this will take up a moderate amount of space, especially when building the .tar.gz 
+files, so ensure you have plenty of disk space first.</p>
+<p>Review the fulldist-separatejars.log file quickly to ensure there were no build errors.   
+Note that you can ignore any 'warnings' from the javadoc target; however any 
+'error's in the documentation must be fixed.</p>
+<p>The results of the build will be
+placed in the ./build directory.  Rename the xalan-j_2_x_x-bin.zip and xalan-j_2_x_x-bin.tar.gz
+files to xalan-j_2_x_x-bin-2jars.zip and xalan-j_2_x_x-bin-2jars.tar.gz respectively so that 
+this binary distribution can be distinguished from the binary distributions created by the
+'fulldist' target.  The source distributions, xalan-j_2_x_x-src.zip and xalan-j_2_x_x-src.tar.gz
+are duplicates of those created by the 'fulldist' target.</p>
+
+<ul>
+<li>Run the smoketest for Xalan Interpretive and XSLTC.</li>
+</ul>
+<p>Change to the xml-xalan\test directory and build the test harness by entering
+"build jar -logfile jar.log".  Run the smoketest for the Xalan Interpretive processor by
+entering "build smoketest -logfile smoketest.log". Run the smoketest for the XSLTC by
+entering "build smoketest.xsltc -logfile smoketest.xsltc.log". 
+</p>
+
+<ul>
+<li>Verify smoketest passed; check docs built with new build numbers.</li>
+</ul>
+<p>Review the smoketest.log and smoketest.xsltc.log files.  If they do not say
+that the Smoketest passed, then you must fix the test results before 
+posting the build.  Even for developer's builds, we must ensure that at least 
+the Smoketest passes.  For major or minor releases, we should also perform more 
+testing to ensure stability.  More detailed log files for the Smoketest can 
+be found in the xml-xalan/test/smoketest/ directory.</p>
+<p>You should also test that the documentation built properly, and that it 
+has the proper build or release number that you edited above.</p>
+<p>IMPORTANT: if you changed any files at all, be sure to check in your work 
+and re-start this process!</p>
+
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Code Signing and Posting</h4>
+<p>Sign the distribution units so end-users can trust them, then copy to the website.</p>
+<ul>
+<li>PGP/GPG sign all .zip/.tar.gz distribution files (distros).</li>
+</ul>
+<p>As a security measure, all xml.apache.org projects must sign or otherwise 
+ensure the integrity of their public distributions.  This is most commonly done 
+by signing the actual .zip/.tar.gz files with your personal PGP or GPG key. 
+Note that you must sign the files before copying them up to the website.</p>
+<p>The Xalan Java distributions consist of: the source distribution files 
+(xalan-j_x_x_x-src.zip and xalan-j_x_x_x-src.tar.gz) and the two binary distributions 
+files (xalan-j_x_x_x-bin.zip and xalan-j_x_x_x-bin.tar.gz, and xalan-j_x_x_x-bin-2jars.zip 
+and xalan-j_x_x_x-bin-2jars.tar.gz).</p>
+<p>Two prerequisites to signing the distribution are: 1) you must have a 
+personal PGP or GPG key, and 2) the public half of your key must be in the 
+appropriate KEYS file before you begin a build.  If you hadn't previously checked 
+in your public key to the KEYS file before beginning this whole process, you'll 
+have to go back and start again.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">We need some good links on getting <a href="http://web.mit.edu/network/pgp.html">PGP</a> 
+and <a href="http://www.gnupg.org/">GPG</a>, and on actually 
+code signing and verifying signatures.  Jakarta has some, but they're 
+scattered. This would be a good volunteer project for someone.</td>
+</tr>
+</table>
+<p>Sign every .zip and .tar.gz file with your personal key, and make a detached 
+text file with the signature - this will usually create a 
+foo.zip.asc or foo.zip.sig file for each foo.zip file you sign.</p>
+<ul>
+<li>Copy distros up to the website.</li>
+</ul>
+<p>You'll need to copy all of the distros plus all of your 
+detached signature files to the website so people can download them.  Note 
+that apache.org machines generally do not allow inbound ftp, so you'll need to 
+either scp them or login to the apache machines and use scp or pftp from there 
+outbound to some server that you've copied them to.</p>
+<p>(Subject to change as www.apache.org/dist gets ready for mirroring) 
+You'll need to log on to xml.apache.org (which is a separate machine 
+from svn.apache.org) and upload the files to /www/xml.apache.org/xalan-j/dist</p>
+<p>You should also update the distribution directory's html files 
+to note the new build numbers.  Carefully edit the .htaccess file 
+to update the 'Latest Stable Build' and 'Latest Developers Build' lines  
+as needed.  If you don't understand the format of this file, ask for help.</p>
+
+
+
+
+
+  <a name="doc">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Rebuilding the Xalan-Java documentation</h4>
+    <p>Xalan-Java includes a number of XML source files, XSL stylesheets, document type definition (DTD)
+      files, entity relationship (ENT) files, graphics, and a JavaScript file that provide the input for the Xalan-Java
+      HTML User's Guide, and the overview and package-level documents used during the generation of Javadoc.
+    </p>
+    <p>
+      Before rebuilding the documentation there are probably a number of pages
+      that need to be updated, at a minimum consider these:
+      
+      <table border="1">
+        <tr>
+<td class="content" rowspan="1" colspan="1">
+<b>XML source file</b>
+</td>
+<td class="content" rowspan="1" colspan="1">
+<b>Description of contents</b>
+</td>
+</tr>
+        <tr>
+<td class="content" rowspan="1" colspan="1">downloads.xml</td>
+<td class="content" rowspan="1" colspan="1">how to download releases</td>
+</tr>
+        <tr>
+<td class="content" rowspan="1" colspan="1">readme.xml</td>
+<td class="content" rowspan="1" colspan="1">has the release notes for each release (most recent to the oldest release)</td>
+</tr>
+        <tr>
+<td class="content" rowspan="1" colspan="1">whatsnew.xml</td>
+<td class="content" rowspan="1" colspan="1">describes what is new in the latest release</td>
+</tr>
+      </table>
+    <p>
+      For a new release it is quite likely that some information in the
+      <b>whatesnew.xml</b> page needs to be moved into the appropriate
+      section of the <b>readme.xml</b> or release notes page before 
+      updating both of these pages with the information for the new release.
+    </p>  
+    </p> 
+    <p>To rebuild the documentation, you must use the StyleBook tool and the JDK 1.2.2 java and javadoc
+      tools. StyleBook (which uses Xalan and Xerces) is in <code>stylebook-1.0-b2.jar</code>. Some of the document definition files,
+      stylesheets, and resources are stored in xml-site-style.tar.gz, and are unzipped when you run Ant as described
+       below.
+    </p>
+    <p>You can use Ant with the docs target to regenerate the User's Guide and with the javadocs target to regenerate the
+      Javadoc API documentation.
+    </p>
+    <p>
+      When building the Javadoc API documentation, or the HTML pages for
+      the website the following Ant Targets are of interest:
+    </p>
+    <table border="1">
+       <tr>
+<td class="content" rowspan="1" colspan="1">
+<b>Ant Target</b>
+</td>
+<td class="content" rowspan="1" colspan="1">
+<b>What Ant does</b>
+</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">javadocs</td>
+<td class="content" rowspan="1" colspan="1">creates the API documentation</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">serializer.javadocs</td>
+<td class="content" rowspan="1" colspan="1">creates the API documetation for the serializer</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">site</td>
+<td class="content" rowspan="1" colspan="1">creates the HTML pages for the site http://xml.apache.org/xalan-j</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">xalan.apache.org.site</td>
+<td class="content" rowspan="1" colspan="1">creates the HTML pages for the site http://xalan.apache.org</td>
+</tr>
+  </table>
+    
+
+
+
+
+
+
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Post-Build Docs and Email</h4>
+<p>Update the live website doc and let the community know you're done!</p>
+<ul>
+<li>Update website documentation set.</li>
+</ul>
+<p>Now that the distribution is available for downloading, you should also 
+update the static copy of the documentation that's posted to xml.apache.org.  
+</p>
+
+<ul>
+<li>Email xalan-dev with build notice!</li>
+</ul>
+<p>After everything is posted, you need to let the community know that 
+a new build is available.  Write up a short email announcing this with just 
+a couple of the highlights of the new build, and a link to the 
+distribution area.</p>
+
+<p>Make the subject something like:  [ANN] Xalan-J 2.x Point/Developers/Whatever Release posted to xml.apache.org
+and send your email to:  general@xml.apache.org, xalan-dev@xml.apache.org, xalan-j-users@xml.apache.org.  Note 
+that for developers releases, you can omit the general@xml.apache.org address if you 
+don't think it will be of interest to the larger audience.
+</p>
+
+
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/charter.html b/xalan-j/charter.html
new file mode 100644
index 0000000..7fabb5f
--- /dev/null
+++ b/xalan-j/charter.html
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Xalan Project Charter</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Xalan Project Charter</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>Charter<br />
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Xalan Project Charter</h2>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Xalan Project Charter</h3>
+  <p>The following charter applies to all Xalan projects.</p>
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>1 INTRODUCTION</h3>
+   <p>1.1 Apache Xalan is a collaborative software development project
+      dedicated to providing robust, full-featured, commercial-quality, and
+      freely available XSLT support on a wide variety of platforms. This
+      project is managed in cooperation with various individuals worldwide
+      (both independent and company-affiliated experts), who use the
+      Internet to communicate, plan, and develop XSLT software and related
+      documentation.</p>
+   <p>1.2 This charter briefly describes the mission, history, organization
+      and processes of the project.</p>
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>2 MISSION</h3>
+   <p>2.1 Apache Xalan exists to promote the use of XSLT. We view XSLT
+      (Extensible Stylesheet Language Transformations) as a compelling 
+      paradigm that transforms XML documents, thereby facilitating the
+      exchange, transformation, and presentation of knowledge. The ability
+      to transform XML documents into usable information has great potential
+      to improve the functionality and use of information systems. We intend
+      to build freely available XSLT processing components in order to
+      engender such improvements.</p>
+   <p>2.2 Apache Xalan consists of a set of components that transform XML
+      documents.  Where appropriate, these components plug into other XML
+      components using standard APIs (formal, de facto, or proposed).  The
+      components must be high performance, reliable, and easy to use.  Where
+      inter-related, the components must be part of an underlying architectural
+      orchestration that will allow them to work together without major
+      negotiations or breakage.</p>
+   <p>2.3 We believe that the best way to define this XML transformation
+      architecture is by having both individuals and corporations
+      collaborate on the best possible infrastructure, APIs, code, testing,
+      and release cycles. Components must be vendor neutral and usable as
+      core components for all.</p>
+   <p>2.4 In order to achieve a coherent architecture between Apache Xalan
+      components and other components and applications, standards (formal or
+      de facto) will be used as much as possible for both protocols and
+      APIs. Where appropriate, experiences and lessons learned will be fed
+      back to standards bodies in an effort to assist in the development of 
+      those standards.  We will also encourage the innovation of new
+      protocols, APIs, and components in order to seed new concepts not
+      yet defined by standards.</p>
+  
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>3 HISTORY</h3>
+   <p>3.1 This project was established under the direction of the Apache
+     Software Foundation in October 2004 to facilitate joint open-source
+     development.  Prior to October 2004 this project was a subproject
+     of the Apache XML project.</p>
+  
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>4 TERMS</h3>
+   <p>4.1 The ASF Board.  The management board of the Apache Software 
+      Foundation.</p>
+   <p>4.2 The Project.  The Apache Xalan project; intended to refer to the 
+      source code, website, subprojects, and community that are Apache Xalan.</p>
+   <p>4.3 Subproject.  The Apache Xalan project may have subprojects; a 
+      subproject is responsible for a component or application whose scope
+      is well defined.</p>
+   <p>4.4 Product.  Some deliverable (usually a binary or source package)
+      that a subproject makes available to the public.  Subprojects may have
+      multiple products.</p>
+   <p>4.5 Release.  A specific version of a product.  Subprojects may have
+      multiple releases of a given product.</p>
+   <p>4.6 Contributor.  Anyone who makes a contribution to the development
+      of the Apache Xalan project.</p>
+   <p>4.7 Committer.  The Apache Xalan project has a set of committers.  
+      Committers are contributors who have read/write access to the source
+      code repository.</p>
+   <p>4.8 PMC. The PMC (Project Management Committee) is the group of people
+      that form the entity that makes decisions and controls the project.  
+      Individual people or committers do not control the project.</p>
+       
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>5 THE PROJECT MANAGEMENT COMMITTEE</h3>
+   <p>5.1 The Apache Xalan project is managed by a core group of committers 
+      known as the Project Management Committee [PMC]. Subprojects, if any,
+      much each have at least one representative committer on the PMC.</p>
+   <p>5.2 The activities of the PMC are coordinated by the Chairperson,
+      who is an officer of the corporation and reports to the Apache
+      Board.  The Chairperson will, on the request of the Apache Board, 
+      provide reports to the Board on issues related to the running of 
+      the Apache Xalan project.</p>
+   <p>5.3 The PMC has the following responsibilities:</p>
+   <p>a) Accepting new subproject proposals, formally submitting these
+      proposals for Apache Xalan committer vote, and creating the subproject
+      (see SUBPROJECTS below).  This is done in collaboration with the 
+      Incubator (see <a href="http://incubator.apache.org">http://incubator.apache.org</a>).</p>
+   <p>b) Facilitating code or other donations by individuals or companies,
+      in collaboration with the Incubator.</p>
+   <p>c) Resolving license issues and other legal issues in conjunction with
+      the ASF board.</p>
+   <p>d) Ensuring that administrative and infrastructure work is completed.</p>
+   <p>e) Facilitating relationships among projects and subprojects.</p>
+   <p>f) Facilitating relationships between the Apache Xalan project and the 
+      external world.</p>
+   <p>g) Overseeing Apache Xalan to ensure that the mission defined in this 
+      document is being fulfilled.</p>
+   <p>h) Resolving conflicts within the project.</p>
+   <p>i) Reporting to the ASF board (through the Chair) on the progress
+      of the project.</p>
+   <p>j) Propose new releases of projects or subprojects.  Such proposals pass
+      if 75% of the PMC members vote in agreement.</p>   
+      
+   <p>5.4 A contributor can, at any time, nominate a committer to be on the PMC,
+      by calling for a vote.  If two thirds, or more, of the active committers 
+      vote in agreement then the nomination is given to the PMC.  The person
+      becomes a new PMC member if 75% or more of the PMC members vote in
+      agreement, with no dissenting votes among the PMC members.  This individual
+      should be elected based on merit for the evolution of the project and 
+      demonstration of commitment.</p>
+   <p>5.5 In cases where the subproject is unable to directly provide a 
+      representative on the PMC, another member of the PMC will be required to
+      represent that subproject on the PMC.  This will be strongly discouraged.
+      It is preferable that all subprojects have direct representation on the
+      PMC.</p>
+   <p>5.6 At least every twelve months, or more often if directed by the ASF
+      board, the PMC members will elect a Chairperson from among themselves;
+      the person with the most votes from the other PMC members is recommended
+      to the ASF board for the position of Chairperson, and with the ASF board's
+      approval, becomes the Chairperson for the new term.</p>
+   <p>5.7 Upon agreement by the Apache Board, the recommended Chairperson will,
+      if they are not already, be appointed an officer of the corporation.  See
+      <a href="http://www.apache.org/foundation/bylaws.html">
+      http://www.apache.org/foundation/bylaws.html</a> for more information.</p>
+   <p>5.8 The PMC is responsible for maintaining and updating this charter. 
+      Development must follow the process outlined below, so any change to the 
+      development process necessitates a change to the charter. Proposed changes
+      to this charter by the PMC are passed if 75% or more of the PMC members
+      approve the proposal, with no dissenting votes. However, an active Apache
+      Xalan committer may challenge the change.</p>
+   <p>5.9 An active Apache Xalan committer may challenge a change to this charter
+      proposed by the PMC within two weeks of its proposal.  When challenged the
+      proposed change is passed if within two weeks of the challenge the active
+      committers approve the change with a two-thirds majority vote.</p>
+   <p>5.10 The PMC ultimately makes the decisions for the project, not the individual
+      people.  At any time the PMC can reject patches or other contributions to the
+      project if 75% or more of the PMC members vote to reject the contribution.</p>
+   <p>5.11 A PMC member may resign their membership at any time.  However, in the
+      unlikely event that a member of the PMC becomes disruptive to the process,
+      such as ceasing to take part in PMC votes, the PMC member may be removed from
+      the PMC by a vote among the other PMC members.  The PMC member is removed if
+      75% or more of the other PMC members approve the removal, with no dissenting
+      votes among the other PMC members.</p>
+   <p>5.12 A person remains a PMC member until he or she resigns, is removed by a
+      vote from among the other PMC members, dies or is incapacitated.</p>
+   
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>6 SUBPROJECTS</h3>
+   <p>6.1 A subproject of the Apache Xalan project is responsible for a component 
+      or application whose scope is well defined.  Each subproject has its own set 
+      of developers, and is responsible for approving its own committers. Apache 
+      Xalan is composed of subprojects which fit into one of two categories:</p>
+   <p>(a) An XSLT processor implementation in some particular programming
+      language.  There may be multiple processors for a given language if
+      the API's the processors support are sufficiently dissimilar.  At the
+      time of writing, there is one processor for C++ and two for Java.</p>
+   <p>(b) A set of components which are used in related applications and are
+      tightly bound, usually through internal API's, to one (or more) of the
+      processor subprojects.</p>
+   <p>6.2 A new subproject proposal is submitted to the PMC, and then accepted
+      by a majority Apache Xalan project active committer vote within two weeks
+      after the proposal.</p>
+   <p>6.3 Each subproject must have a set of requirements as well as an
+      up-to-date release plan and design document on its dedicated web page.</p>
+   <p>6.4 It is recommended that each subproject have a smoke-test system
+      that works at least as a basic integration test.</p>
+   <p>6.5 A subproject may be removed if 75% or more of the PMC members approve
+      the proposal, there are no dissenting votes among the PMC members,
+      and no challenges by active Apache Xalan project committers
+      within two weeks after the proposal.
+      A contributor may challenge the proposed removal
+      of a subproject within two weeks of the proposal.
+      In this case the proposed removal is passed if within two weeks of the
+      challenge the active committers approve the removal with a two-thirds
+      majority vote. Any subproject removal is subject to the approval of the
+      ASF board.</p>
+       
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>7 CONTRIBUTORS</h3>
+   <p>7.1 Like all Apache projects, the Apache Xalan project is a
+      meritocracy -- the more work you do, the more you are allowed to do.</p>
+   <p>7.2 People who make regular and substantial contributions may become
+      committers as described below. Contributions include: participating in
+      mailing lists, reporting issues or bugs in issue-records in the Issue Database, 
+      providing patches, and proposing changes to a product.</p>
+   <p>7.3 In order to ensure that all code contained in the Apache Xalan
+      project's code repository is free of licensing, intellectual property and patent
+      issues, any person wishing to contribute a new feature to Apache Xalan must either
+      sign:</p>
+   <p>a) If contributing as an individual, sign the "Individual
+      Contributor License Agreement (CLA)"
+      (<a href="http://www.apache.org/licenses/icla.txt">http://www.apache.org/licenses/icla.txt</a>)
+      and file a copy with the Secretary of the Corporation; or </p>      
+   <p>b) If making the contribution as part of their employment
+      responsibilities, sign the "Corporate CLA (CCLA)", 
+      (<a href="http://www.apache.org/licenses/cla-corporate.txt">http://www.apache.org/licenses/cla-corporate.txt</a>)
+      and file a copy with the Secretary of the Corporation.</p>
+   <p>7.4 If the contribution in question is a small bugfix, the contributor need
+      not sign a CLA, but need only provide the following information, attaching
+      it to the communication containing the patch:</p>
+   <p>a) Name and employer</p>
+   <p>b) Are you the author of the code being contributed?</p>
+   <p>c) Do you have the right to grant the copyright and patent
+      licenses for the contribution that are set forth in the ASF v.2.0
+      license (<a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)?</p>
+   <p>d) Does your employer have any rights to code that you have
+      written, for example, through your contract for employment?  If
+      so, has your employer given you permission to contribute the code
+      on its behalf or waived its rights in the code?</p>
+   <p>e) Are you aware of any third-party licenses or other
+      restrictions (such as related patents or trademarks) that could
+      apply to your contribution?  If so, what are they?</p>
+     
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>8 COMMITTERS</h3>
+   <p>8.1 The Apache Xalan project has a set of committers. If there
+      are subprojects, each subproject will also have a set of committers.
+      Committers are contributors who have read/write access to the source code 
+      repository. New committers are added when a contributor is nominated by a 
+      committer and approved by at least 50 percent of the active committers for 
+      that subproject with no opposing votes.  In most cases, new committers will 
+      already be participating in the development process by submitting suggestions
+      and/or fixes via issue-records in the Issue Database or mailing lists.</p>
+   <p>8.2 For the purposes of voting, committers will be classed as "active" or
+      "inactive". Only active committers will be included in the totals used to
+      determine the success or failure of a particular vote.</p>
+   <p>8.3 Committers remain active as long as they are contributing code or
+      posting to the project or subproject mailing lists.  If a committers has
+      neither contributed code nor posted to the mailing lists in 3
+      months, a member of the PMC will e-mail the committer,
+      the project or subproject development list, and the PMC mailing list
+      notifying the committer that they are now in inactive status.</p>
+   <p>8.4 An inactive status will not prevent a committer committing new code
+      changes or posting to the mailing lists.  Either of these activities will
+      automatically re-activate the committer for the purposes of voting.</p>
+     
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>9 INFRASTRUCTURE</h3>
+   <p>9.1 The Apache Xalan project relies on the Apache XML project
+      and the Apache Infrastructure project for the following:</p>
+   <p>a) Issue Database -- This is a system with issue-records,
+      for tracking bugs, issues, features and requests.</p>
+   <p>b) Repository -- The xalan.apache.org project has its set
+      of parts that make up the software, and these parts are
+      managed in a repository. Committers make changes to the source code,
+      documentation and other associated parts that are stored in
+      the repository. Any subproject will have its set of committers
+      for its repository.</p>
+   <p>c) Website -- The website <a href="http://xalan.apache.org">xalan.apache.org</a> 
+      will contain information about the Apache Xalan project and its subprojects,
+      including documentation, downloads of releases, and this charter.</p>
+   <p>d) Mailing Lists -- appropriate mailing lists will be created
+      at the discretion of the PMC. Such mailing lists could
+      for example include: a PMC mailing list, a general mailing list,
+      project or subproject public developer mailing lists,
+      project or subproject public user mailing lists.</p>
+   
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>10 LICENSING</h3>
+   <p>10.1 All contributions to the Apache Xalan project adhere to the "Apache
+      Software Foundation License, Version 2.0"
+      (<a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>).
+      All further contributions, including patches, must be made under the same terms.</p>
+   <p>10.2 When a committer is considering integrating a contribution
+      from a contributor who has no CLA on file with the Corporation,
+      it is the responsibility of the committer, in consultation with
+      the PMC, to conduct due diligence on the pedigree of the
+      contribution under consideration; see sections 7.3 and 7.4.  </p>
+       
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>11 THE DEVELOPMENT PROCESS</h3> 
+   <p>11.1 For a committer to commit a change to the MAIN branch of the
+      repository an issue-record must be opened in the "Issue Database"
+      to track the change. The status of the issue must be kept up to date.</p>
+   <p>11.2 No voting is required to commit changes, but one other active 
+      committer must review the changes.  Before the changes are committed, the reviewer
+      must add a comment in the corresponding issue-record indicating that
+      they have reviewed and approve the changes.</p>
+   <p>11.3 Issue-records and reviews are not required for committing changes to
+      other experimental branches (not the MAIN branch) in a repository.</p>
+   
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>12 VOTING</h3>
+   <p>12.1 Unless otherwise stated in this mission, votes cast on Apache Xalan
+      proposals must be made within two weeks of the proposal. A challenge to
+      a proposal must also be made within two weeks of the proposal. Likewise,
+      votes cast on challenges must be cast within two weeks of the challenge.</p>
+   
+  
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>13 RELATIONSHIP TO OTHER APACHE PROJECTS</h3>
+   <p>13.1 The Apache Xalan project should work closely with other Apache
+      projects, such as Xerces and XML, to avoid redundancy
+      and achieve a coherent architecture among Apache Xalan and these
+      projects.</p>
+         
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/commandline.html b/xalan-j/commandline.html
new file mode 100644
index 0000000..fbd0a2e
--- /dev/null
+++ b/xalan-j/commandline.html
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Command-Line Utility</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Command-Line Utility</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>Command Line<br />
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Command-Line Utility</h2>
+<ul>
+<li>
+<a href="commandline_xsltc.html">Command line options for XSLTC</a>
+</li>
+</ul>
+   
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using the Command-Line Utility</h3>
+      <p>To perform a transformation, you can call Xalan-Java from the command line (or script), 
+      an applet, an application, or a servlet (see <a href="usagepatterns.html">Usage Patterns</a>).</p>
+     <p>The org.apache.xalan.xslt.Process main() method provides a command-line interface
+    for performing XSL transformation. To perform a transformation from the command line or a script,
+    do the following:</p>
+ 		<ol>
+    <li>Download Xalan-Java.<br />
+<br />
+</li> 
+    <li>
+<a href="getstarted.html#classpath">Set the Java classpath</a> to include <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, and
+    <code>xercesImpl.jar</code> -- or another conformant XML Parser -- (see <a href="usagepatterns.html#plug">Plugging in 
+    the Transformer and XML parser</a>).<br />
+<br />
+</li>
+    <li>Call java and the Process class with the appropriate flags and
+    arguments (described below). The following command line, for example, includes the -IN, -XSL,
+    and -OUT flags with their accompanying arguments -- the XML source document, the XSL
+    stylesheet, and the output file:<br />
+<br />
+    <code>java org.apache.xalan.xslt.Process -IN foo.xml -XSL foo.xsl -OUT foo.out</code>
+    </li>
+</ol>
+    <p>The command line utility can take the following flags and arguments (the flags are case insensitive):</p> 
+      <blockquote class="source">
+<pre>
+                      Common Options
+
+-XSLTC (use XSLTC for transformation)
+-IN inputXMLURL
+-XSL XSLTransformationURL
+-OUT outputFileName
+-V (Version info)
+-EDUMP [optional filename] (Do stackdump on error.)
+-XML (Use XML formatter and add XML header.)
+-TEXT (Use simple Text formatter.)
+-HTML (Use HTML formatter.)
+-PARAM name expression (Set a stylesheet parameter)
+-MEDIA mediaType (use media attribute to find stylesheet associated with a document)
+-FLAVOR flavorName (Explicitly use s2s=SAX or d2d=DOM to do transform)
+-DIAG (Print overall milliseconds transform took)
+-URIRESOLVER full class name (URIResolver to be used to resolve URIs)
+-ENTITYRESOLVER full class name (EntityResolver to be used to resolve entities)
+-CONTENTHANDLER full class name (ContentHandler to be used to serialize output)
+-SECURE (set the secure processing feature to true)
+
+                      Options for Xalan-Java Interpretive
+
+-QC (Quiet Pattern Conflicts Warnings)
+-TT (Trace the templates as they are being called)
+-TG (Trace each generation event)
+-TS (Trace each selection event)
+-TTC (Trace the template children as they are being processed)
+-TCLASS (TraceListener class for trace extensions)
+-L (use line numbers for source document)
+-INCREMENTAL (request incremental DTM construction by setting 
+    http://xml.apache.org/xalan/features/incremental to true)
+-NOOPTIMIMIZE (request no stylesheet optimization proccessing by setting 
+    http://xml.apache.org/xalan/features/optimize to false)
+-RL recursionlimit (assert numeric limit on stylesheet recursion depth)
+
+                      Options for Xalan-Java Compiled (XSLTC)
+
+-XO [optional transletName] (assign the name to the generated translet)
+-XD destinationDirectory (specify a destination directory for translet)
+-XJ jarfile (package translet classes into a jar file of name &lt;jarfile&gt;)
+-XP package (specify a package name prefix for all generated translet classes)
+-XN (enable XSL template inlining into one big method)
+-XX (turn on additional debugging message output)
+-XT (use translet to transform if possible)
+</pre>
+</blockquote>
+      <p>Use <code>-XSLTC</code> if you want to transform with XSLTC. Please refer to 
+      <a href="commandline_xsltc.html">this document</a> for a detailed description on
+      XSLTC related options.</p>
+      <p>Use <code>-IN</code> to specify the XML source document.</p> 
+      <p>Use <code>-XSL</code> to specify the XSL stylesheet file.</p>
+      <p>Use <code>-TEXT</code> if you want the output to include only element values (not element tags with element names and
+      attributes).</p>
+      <p>Use <code>-HTML</code> to write 4.0 transitional HTML (some elements, such as &lt;br&gt;, are
+      not well formed XML).</p>
+      <p>To set stylesheet parameters from the command line, use <br />
+      <code>java org.apache.xalan.xslt.Process -PARAM <b>
+<i>name value</i>
+</b>
+</code>
+</p>
+      <p>The value is passed to the transformer as a String.</p>
+      <p>For information about incremental and optimized stylesheet processing, see <a href="dtm.html#settings">DTM settings</a>.</p>
+      <p>Use <code>-L</code> to obtain access to a SourceLocator that a stylesheet extension can use to get information about the location
+      of nodes in the source document. For more information, see <a href="extensionslib.html#nodeinfo">NodeInfo extension functions</a>
+      and <a href="features.html#source_location">source_location</a>.</p>
+      <p>Use <code>-URIRESOLVER</code> with a fully qualified class name to utilize a custom implementation of the
+      <a href="apidocs/javax/xml/transform/URIResolver.html">URIResolver</a> JAXP interface to resolve URIs for
+       xsl:include, xsl:import, and the document() function.</p>
+       <p>Use <code>-ENTITYRESOLVER</code> with a fully qualified class name to utilize a custom implementation of the
+       <a href="apidocs/org/xml/sax/EntityResolver.html">EntityResolver</a> SAX interface to handle external entity references.</p>
+       <p>Use <code>-CONTENTHANDLER</code> with a fully qualified class name to utilize a custom implementation of the 
+       <a href="apidocs/org/xml/sax/ContentHandler.html">ContentHandler</a> SAX interface to serialize output.
+       If this same class implements the <a href="apidocs/org/xml/sax/ext/LexicalHandler.html">org.xml.sax.ext.LexicalHandler</a>
+       interface and the output method is "xml", it will also receive lexical information about the XML document during serialization.</p>
+       <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">If you want to validate an XML document (verify that it adheres to its DOCTYPE declaration), you can use the 
+       <a href="samples.html#validateutility">Validate utility</a> shipped with Xalan-Java Version 2.7.2.</td>
+</tr>
+</table>
+   
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/commandline_xsltc.html b/xalan-j/commandline_xsltc.html
new file mode 100644
index 0000000..73df6d7
--- /dev/null
+++ b/xalan-j/commandline_xsltc.html
@@ -0,0 +1,471 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Command line options for XSLTC</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Command line options for XSLTC</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Command line options for XSLTC</h2>
+<ul>
+<li>
+<a href="#options">Options</a>
+</li>
+<li>
+<a href="#examples">Examples</a>
+</li>
+<li>
+<a href="#faq">Simple FAQs</a>
+</li>
+<li>
+<a href="#trax">Using options from the JAXP transform APIs</a>
+</li>
+</ul>
+   
+<a name="options">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Options</h3>
+<p>The <code>org.apache.xalan.xslt.Process</code> command line now supports XSLTC for transformation. 
+You can use the new <code>-XSLTC</code> option to enable the XSLTC support.</p> 
+<p>The following existing options can be used with -XSLTC:</p>
+<p>
+<code>-IN, -XSL, -OUT, -V, -EDUMP, -XML, -TEXT, -HTML, -PARAM, <br />
+-MEDIA, -FLAVOR, -DIAG, -URIRESOLVER, -ENTITYRESOLVER,<br />
+-CONTENTHANDLER</code>
+</p>
+
+<p>The following existing options do not work with <code>-XSLTC</code>. If any of them is used 
+with <code>-XSLTC</code>, a message is printed and the option is ignored.</p>
+<p>
+<code>-QC, -TT, -TG, -TS, -TTC, -TCLASS, -L, -INCREMENTAL, <br />
+-NOOPTIMIMIZE, -RL</code>
+</p>
+
+<p>We also have a new set of options for <code>-XSLTC</code>. They are all two letter options. The first 
+letter is X and the second letter is the same as the corresponding option in the XSLTC command line 
+<code>org.apache.xalan.xsltc.cmdline.Compile</code>.</p>
+
+<p>These new options can only be used with <code>-XSLTC</code>. If any of them is used
+with Xalan-Java Interpretive, a message is printed and the option is ignored.</p>
+
+<p>Here is the list of the new options:</p>
+<ul>
+  <li>
+<code>-XO [optional translet_name]</code>
+<br />
+  Assign the name to the generated translet. If the translet_name is omitted, the translet is 
+  generated using the default name (same as the xsl).</li>
+  <li>
+<code>-XD destination_directory</code>
+<br />
+  Specify a destination directory for translet. The generated translet classes will be put 
+  under the specified destination directory.</li>
+  <li>
+<code>-XJ jar_name</code>
+<br />
+  Package translet classes into a jar file of name &lt;jar_name&gt;</li>
+  <li>
+<code>-XP package_name</code>
+<br />
+  Specify a package name prefix for all generated translet classes</li>
+  <li>
+<code>-XN</code>
+<br />
+  Enable XSL template inlining into one big method</li>
+  <li>
+<code>-XX</code>
+<br />
+  Turn on additional debugging message output</li>
+  <li>
+<code>-XT</code>
+<br />
+  Use translet to transform if possible</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The translet name is the same as the name of the Java class that
+implements the translet.  If the name specified by the <code>-XO</code> option
+or derived from the URL for the stylesheet contains characters that are not
+permitted in a Java class name, any such character will be replaced with an
+underscore.  For example, if the translet name specified by the <code>-XO</code>
+option is <code>my-stylesheet</code>, or if the URL of the stylesheet is
+<code>http://example.org/my-stylesheet.xsl</code>, the translet will actually
+be named<code>my_stylesheet</code>.
+</td>
+</tr>
+</table>
+
+
+<a name="examples">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Examples</h3>
+
+<p>You can just add the <code>-XSLTC</code> option to your existing option list so that it will do 
+the same thing as before, but using XSLTC.</p>
+
+<p>Here is a simple example on how to use XSLTC:</p>
+<p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -xsltc</code>
+</p>
+<p>XSLTC compiles the stylesheet on the fly and uses the bytecode in memory to transform the input xml. 
+No translet class is generated in this simple usage pattern.</p>
+<p>If you want to generate translet classes from the stylesheet, you can use the <code>-XO</code> option:</p>
+<p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -xsltc -xo</code>
+</p>
+
+<p>This example still uses the stylesheet for transformation, but it also generates the 
+translet class "test.class".</p>
+
+<p>You can use the <code>-XJ, -XP</code> or <code>-XD</code> options to further customize the translet 
+generation behavior. Translets will be generated if any of the options <code>-XO, -XJ</code> or 
+<code>-XT</code> is used.</p>
+<p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -xsltc -xo newTranslet -xd temp -xp org.apache.test -xj translets.jar</code>
+</p>
+
+<p>The above command line uses the xsl for transformation. It also generates translet classes in
+the name of <code>newTranslet</code>, using a package prefix of <code>org.apache.test</code>, and packages the translets
+into the jar file <code>translets.jar</code> under the <code>temp</code> directory.</p>
+
+<p>All of the examples above use the stylesheet to do the transformation. If the translets are 
+already generated, you can use the <code>-XT</code> option to specify that you want to use the existing translets for transformation. 
+The <code>-XT</code> option has a makefile like feature in that it will compare the timestamps of the translet 
+and the stylesheet. If the translet is newer, it is used for the transformation, otherwise the stylesheet is 
+used and the translet is regenerated.</p>
+
+<p>The translet is loaded from the specified destination directory or the current directory, using
+the specified translet name or the xsl base name, depending on whether the <code>-XD</code> or 
+<code>-XO</code> option is used. The options <code>-XO, -XD, -XP</code> and <code>-XJ</code>
+can be used with the <code>-XT</code> option to tell XSLTC how to find the translet classes. The translets
+are directly read in as bytecode. You do not need to add the translet directory or the jar file to your
+classpath.</p>
+<p>Example:</p>
+<p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -xsltc -xt -xj translets.jar -xd temp</code>
+</p>
+
+<p>This command line will search for the translet <code>test.class</code> inside the jar file <code>temp/translets.jar</code>. If it is 
+found and newer than test.xsl, it is used for the transformation; otherwise the xsl is used and the
+translet is generated and packaged in the same jar.</p>
+
+<p>Here is how the makefile feature for the <code>-XT</code> option works:</p>
+<ol>
+  <li>If the xsl does not exist, use the translet</li>
+  <li>If the translet does not exist, use the xsl and generate a new translet</li>
+  <li>If both exist and the translet is newer, use the translet for transformation</li>
+  <li>If both exist and the xsl is newer, use the xsl for transformation and regenerate the translet</li>
+</ol>
+
+
+<a name="faq">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Simple FAQs</h3>
+
+<p>
+<b>Q:</b> If I use the <code>-XT</code> option, how can I tell if it is using the translet or the stylesheet for transformation?</p>
+<p>
+<b>A:</b> Use the <code>-XX</code> option. When XSLTC uses the translet for transformation, you will see a debug 
+message like "Tranform using translet ..." or "Tranform using translet ... from jar file ...".</p>
+
+<p>
+<b>Q:</b> I want to use a translet for transformation, and I don't have the stylesheet.</p>
+<p>
+<b>A:</b> Suppose the translet class is <code>c:\translets\myTranslet.class</code>, you can use the following command line:</p>
+<p>&gt; <code>java org.apache.xalan.xslt.Process -in test.xml -xsltc -xt -xo myTranslet -xd c:\translets</code>
+</p>
+<p>If you use <code>-XT</code> option, the <code>-XSL</code> option can be omitted. You have to specify the translet name 
+using the <code>-XO</code> option because there is no default translet name in this situation.</p>
+
+<p>
+<b>Q:</b> I only want to compile the stylesheet. I don't want to do a transformation.</p>
+<p>
+<b>A:</b> JAXP has no notion of compiling a stylesheet. However, you can achieve the same effect by 
+running a dummy transformation and tell XSLTC to save the translet class. Example:</p>
+<p>&gt; <code>java org.apache.xalan.xslt.Process -xsl test.xsl -xsltc <br />-xo</code>
+</p>
+<p>This command runs a transformation on an empty input and generates the translet <code>test.class</code>.</p>
+
+
+<a name="trax">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using options from the JAXP transform APIs</h3>
+<p>You can use some of the attributes in the <code>TransformerFactoryImpl</code> class of XSLTC to 
+customize the translet behaviors from JAXP.</p>
+
+<p>Here is the list of attributes in <code>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</code> 
+and their corresponding Process command line options:</p>
+
+<table border="1">
+  <tr>
+    <td class="content" rowspan="1" colspan="1">
+<b>Attributes</b>
+</td>
+    <td class="content" rowspan="1" colspan="1">
+<b>Process command line options</b>
+</td>
+    <td class="content" rowspan="1" colspan="1">
+<b>Default values</b>
+</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">translet-name</td>
+    <td class="content" rowspan="1" colspan="1">-XO</td>
+    <td class="content" rowspan="1" colspan="1">GregorSamsa</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">destination-directory</td>
+    <td class="content" rowspan="1" colspan="1">-XD</td>
+    <td class="content" rowspan="1" colspan="1">null</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">package-name</td>
+    <td class="content" rowspan="1" colspan="1">-XP</td>
+    <td class="content" rowspan="1" colspan="1">null</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">jar-name</td>
+    <td class="content" rowspan="1" colspan="1">-XJ</td>
+    <td class="content" rowspan="1" colspan="1">null</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">generate-translet</td>
+    <td class="content" rowspan="1" colspan="1" />
+    <td class="content" rowspan="1" colspan="1">false</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">auto-translet</td>
+    <td class="content" rowspan="1" colspan="1">-XT</td>
+    <td class="content" rowspan="1" colspan="1">false</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">use-classpath</td>
+    <td class="content" rowspan="1" colspan="1" />
+    <td class="content" rowspan="1" colspan="1">false</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">enable-inlining</td>
+    <td class="content" rowspan="1" colspan="1">-XN</td>
+    <td class="content" rowspan="1" colspan="1">false</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">debug</td>
+    <td class="content" rowspan="1" colspan="1">-XX</td>
+    <td class="content" rowspan="1" colspan="1">false</td>
+  </tr>
+</table>
+
+<p>You can set the attributes using the JAXP interface <code>TransformerFactory.setAttribute(String name, Object value)</code>. 
+The four attributes <code>translet-name, destination-directory, package-name and jar-name</code> are transient. 
+They only apply to the next <code>newTemplates()</code> or <code>newTransformer()</code> call. Their values are reset to 
+the default after the call.</p>
+
+<p>The <code>generate-translet</code> attribute does not have a corresponding command line option. This attribute is
+implied when the <code>-XO</code> or <code>-XJ</code> option is used. The purpose is to make the command line
+usage syntax a little bit simpler. Setting the <code>generate-attribute</code> attribute to true from JAXP is 
+equivalent to using the <code>-XO</code> option without the optional translet name from the Process command line.</p>
+
+<p>If the <code>use-classpath</code> attribute is set to <code>true</code>, the translet will be loaded
+from the <code>CLASSPATH</code>. This attribute is typically used in a case when the translets are packaged in a 
+prebuilt jar file which is included in the <code>CLASSPATH</code>. You can set the <code>translet-name</code> attribute 
+to indicate which translet to use. If this attribute is not set, the name of the translet is taken from 
+the base name of the stylesheet. The <code>jar-name</code> attribute is not used in this situation.</p>
+
+<p>The following example shows you how to do the same thing from JAXP for the question 2 in the FAQ.</p>
+
+<blockquote class="source">
+<pre>
+// set the system property javax.xml.transform.TransformerFactory in order to use XSLTC
+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);
+
+TransformerFactory tfactory = null;
+try {
+  tfactory = TransformerFactory.newInstance();
+}
+catch (TransformerFactoryConfigurationError pfe) { pfe.printStackTrace(); }
+
+// set the translet name
+tfactory.setAttribute("translet-name", "myTranslet");
+
+// set the destination directory
+tfactory.setAttribute("destination-directory", "c:\\translets");
+
+// use the translet for transformation if possible
+tfactory.setAttribute("auto-translet", "true");
+
+// You can create a Templates object from an empty Source if the translet is specified.
+Templates templates = tfactory.newTemplates(new StreamSource());
+</pre>
+</blockquote>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/contact_us.html b/xalan-j/contact_us.html
new file mode 100644
index 0000000..8c8c091
--- /dev/null
+++ b/xalan-j/contact_us.html
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Contact us</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Contact us</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>Contact us<br />
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Contact us</h2>
+<ul>
+<li>
+<a href="#contact">Getting in touch</a>
+</li>
+<li>
+<a href="#reporting-bugs">Reporting bugs</a>
+</li>
+<li>
+<a href="#user-mailing-list">User mailing list</a>
+</li>
+<li>
+<a href="#dev-maling-list">Developer mailing list</a>
+</li>
+<li>
+<a href="#subscribe">Subscribe to a mailing list</a>
+</li>
+</ul>
+
+<a name="contact">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Getting in touch</h3>
+  <p>
+    Your feedback is more than welcome. Offers of help are even more so! 
+    Perhaps you would like to 
+    take on an active role in the ongoing development, 
+    testing, and documentation of Xalan-Java?
+  </p> 
+  <p>
+    Please email your comments, questions, suggestions, 
+    and offers to join the Xalan team to <a href="mailto:dev@xalan.apache.org">Xalan Development Mailing List</a>
+    (dev@xalan.apache.org).</p>
+ 
+<a name="reporting-bugs">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Reporting bugs</h3>
+  <p>
+    If you need to contact the Xalan team to report a bug please see
+    this <a href="bugreporting.html">bug reporting page</a>.
+  </p>
+
+
+<a name="user-mailing-list">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>User mailing list</h3>
+  <p>
+    If you think you have encountered a bug, but you aren't sure because 
+    it might be a usage problem, or if you have other questions about Xalan 
+    post a note to
+    <a href="mailto:j-users@xalan.apache.org">j-users@xalan.apache.org</a>
+    This mailing list pertains to only to the Java version of Xalan.
+  </p>
+  <p>
+    To view a history of posts to xalan-j-users you can go to
+    <a href="http://mail-archives.apache.org/mod_mbox/xml-xalan-j-users/">
+    xalan-j-users mail archives at Apache</a> or
+    <a href="http://marc.theaimsgroup.com/?l=xalan-j-users">xalan-j-users mail archives at MARC</a>.
+   </p>
+
+
+<a name="dev-mailing-list">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Developer mailing list</h3>
+  <p>
+    The participating developers of the Xalan meet and discuss issues, 
+    code changes/additions, etc. at 
+    <a href="mailto:dev@xalan.apache.org">dev@xalan.apache.org</a>.
+    This mailing list pertains to both the Java and C++ versions of Xalan.
+  </p>
+  <p>
+    To view a history of posts to xalan-dev you can go to
+    <a href="http://mail-archives.apache.org/mod_mbox/xml-xalan-dev/">
+    xalan-dev mail archives at Apache</a> or
+    <a href="http://marc.theaimsgroup.com/?l=xalan-dev">xalan-dev mail archives at MARC</a>.
+   </p> 
+
+<a name="subscribe">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Subscribe to a mailing list</h3>
+ <p>
+    You may want to subscribe to a mailing list before posting a note, so that if 
+    others post a response to the mailing list you will get copied.
+  </p>
+  <p>
+    To subscribe an email account to the Xalan user mailing list send a note to 
+    j-users-subscribe@xalan.apache.org from that account. To unsubscribe
+    do the same, except replace <b>subscribe</b> with <b>unsubscribe</b>.
+  </p>
+  <p>
+    To subscribe to the Xalan developer mailing list send a note to 
+    dev-subscribe@xalan.apache.org. To unsubscribe
+    do the same, except replace <b>subscribe</b> with <b>unsubscribe</b>.
+  </p> 
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/design/compilation.gif b/xalan-j/design/compilation.gif
new file mode 100644
index 0000000..675d7d4
--- /dev/null
+++ b/xalan-j/design/compilation.gif
Binary files differ
diff --git a/xalan-j/design/conceptual.gif b/xalan-j/design/conceptual.gif
new file mode 100644
index 0000000..283fee5
--- /dev/null
+++ b/xalan-j/design/conceptual.gif
Binary files differ
diff --git a/xalan-j/design/data.gif b/xalan-j/design/data.gif
new file mode 100644
index 0000000..0f28a17
--- /dev/null
+++ b/xalan-j/design/data.gif
Binary files differ
diff --git a/xalan-j/design/design2_0_0.html b/xalan-j/design/design2_0_0.html
new file mode 100644
index 0000000..3f1e570
--- /dev/null
+++ b/xalan-j/design/design2_0_0.html
@@ -0,0 +1,631 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Xalan-J 2.0 Design</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan 2.0.0 Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Xalan-J 2.0 Design</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>Xalan-J 2.0.0 Design<br />
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Xalan-J 2.0 Design</h2>
+  <p>
+<img src="xmllogo.gif" alt="xmllogo.gif" />
+</p>
+  <p>Author: Scott Boag<br />State: In Progress</p>
+  <ul> 
+	   <li>
+<a href="#intro">Introduction</a>
+</li>
+ 	   <li>
+<a href="#requirements">Xalan Requirements</a>
+</li>
+	   <li>
+<a href="#overarch">Overview of Architecture</a>
+</li>
+	   <li>
+<a href="#process">Process Module</a>
+</li>
+	   <li>
+<a href="#templates">Templates Module</a>
+</li>
+	   <li>
+<a href="#transformer">Transformer Module</a>
+</li>
+       <ul>
+         <li>
+<a href="#stree">Stree Module</a>
+</li>
+         <li>
+<a href="#extensions">Extensions Module</a>
+</li>
+     </ul>
+	   <li>
+<a href="#xpath">XPath Module</a>
+</li>
+       <ul>
+<li>
+<a href="#xpathdbconn">XPath Database Connection</a>
+</li>
+</ul>
+	   <li>
+<a href="#utils">Utils Package</a>
+</li>         
+	   <li>
+<a href="#other">Other Packages</a>
+</li>         
+	   <li>
+<a href="#compilation">Xalan Stylesheet Complilation to Java</a>
+</li>
+<li>
+<a href="#optimizations">Future Optimizations</a>
+</li>
+<li>
+<a href="#coding">Coding Conventions</a>
+</li>
+	        
+   <li>
+<a href="../apidocs/index.html">Xalan-J 2.0 Javadoc</a>
+</li>
+  </ul>
+<a name="intro">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3> 
+	 <p>This document presents the basic design for Xalan-J 2.0, which is a
+		<a href="http://www.awl.com/cseng/titles/0-201-89542-0/techniques/refactoring.htm">refactoring</a>
+		and redesign of the Xalan-J 1.x processor.   This document will expand and grow over time, and is also incomplete in some sections, though hopefully overall accurate.  The reader should be able to get a good overall idea of the internal design of Xalan, and begin to understand the process flow, and also the technical challenges.</p> 
+	 <p>The main goals of this redesign are
+		to: </p>
+<ol> 
+		<li>Make the design and code more understandable by Open Source
+		  people.</li> 
+		<li>Reduce code size and complexity.</li>
+		<li>By simplifying the code, make optimization easier.</li> 
+		<li>Make modules generally more localized, and less tangled with other
+		  modules.</li> 
+		<li>Conform to the <a href="http://java.sun.com/aboutJava/communityprocess/jsr/jsr_063_jaxp11.html">javax.xml.transform  (TrAX [Transformations for XML])</a> interfaces.</li> 
+	 <li>Increase the ability to incrementally produce the result tree.</li>
+</ol> 
+	 <p>The techniques used toward these goals are to:</p> 
+	 <ol> 
+		<li>In general, flatten the hierarchy of packages, in order to make the
+		  structure more apparent from the top-level view.</li> 
+		<li>Break the construction and the validation of the XSLT stylesheet from
+		  the stylesheet objects themselves.</li>
+		<li>Drive the construction of the stylesheet through a table, so that it
+		  is less prone to error.</li> 
+		<li>Break the transformation process into a separate package, away from
+		  the stylesheet objects.</li> 
+		<li>Create this design document, as a starting point for people interested in
+		  approaching the code.</li> 
+	 </ol> 
+	 <p>The goals are not:</p> 
+	 <ol> 
+		<li>To add more features in the progress of this refactoring. This is
+		  design and code clean-up in order to meet the above-named goals. We expect that it will be <b>much</b> easier to add
+		  features once this work is completed.</li> 
+		<li>To optimize code for the sake of optimization. However, we
+		  expect that the code will be faster once this work is complete.</li> 
+	 </ol> 
+	 <p>How well we've achieved the goals will be measured by feedback from the
+		<a href="http://archive.covalent.net/">Xalan-dev</a> list, and by software metrics tools.</p> 
+	 <p>Please note that the diagrams in this design document are meant to be
+		useful abstractions, and may not always be exact.</p> 
+  <a name="requirements">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Xalan Requirements</h3>
+  <p>These are the concrete general requirements of Xalan, as I understand them, and covering both the Java and C++ versions.  These requirements have been built up over time by experience with product groups and general users.</p>
+<ol>
+<li>Java, C++ Versions.</li>
+<li>XSLT 1.0 conformance, and beyond. (i.e. conform to the current W3C recommendation).</li>
+<li>Have design and Code understandable by Open Source Community.</li>
+<li>Ability to interoperate with standard APIs.  (SAX2, DOM2, JAXP)  [this is currently Less of an issue with C++].</li>
+<li>High Performance (Raw performance, Incremental ability, Scaleability to large documents, Reduction of Garbage Collection for the Java version.)</li>
+<li>Tooling API (Access stylesheet data structures, Access source node from result event, Ask runtime questions, Debugging API).</li>
+<li>Support addressing of XML in standalone fashion (i.e. XPath API).</li>
+<li>Extensibility (Ability to call Java, Ability to call JavaScript, other languages).</li>
+<li>Multiple data sources (JDBC, LDAP, other data sources, Direct XML repository coupling).</li>
+</ol>
+<a name="overarch">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Overview of Architecture</h3> 
+	 <p>The following diagram shows the XSLT abstract processing model.  A transformation expressed in XSLT describes rules for transforming a <a href="http://www.w3.org/TR/xpath#data-model">Source Tree </a> into a result tree. The transformation is achieved by associating patterns with templates. A pattern is matched against elements in the source tree. A template is instantiated to create part of the result tree. The result tree is separate from the source tree. The structure of the result tree can be completely different from the structure of the source tree. In constructing the result tree, elements from the source tree can be filtered and reordered, and arbitrary structure can be added.
+
+</p>
+<p>The term "tree", as used within this document, describes an
+			 abstract structure that consists of nodes or events that may be produced by
+			 XML. A Tree physically may be a DOM tree, a series of well balanced parse
+			 events (such as those coming from a SAX2 ContentHander), a series of requests
+			 (the result of which can describe a tree), or a stream of marked-up
+			 characters.</p>
+<p>
+<img src="xslt_abstract.gif" alt="xslt_abstract.gif" />
+</p>
+<p>The primary interface for Xalan 2.0 external usage is defined in the <a href="../apidocs/javax/xml/transform/package-summary.html#package_description">javax.xml.transform</a> interfaces.  These interfaces define a standard and powerful interface to perform tree-based transformations.</p> 
+	 <p>The internal architecture of Xalan 2.0 is divided into four major modules, and various smaller
+		modules. The main modules are:</p> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/processor/package-summary.html">org.apache.xalan.processor</a>
+</em>
+</p> 
+		<blockquote class="item">The module that processes the stylesheet, and provides the main
+		  entry point into Xalan.</blockquote> 
+	 </div> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/templates/package-summary.html">org.apache.xalan.templates</a>
+</em>
+</p> 
+		<blockquote class="item">The module that defines the stylesheet structures, including the
+		  Stylesheet object, template element instructions, and Attribute Value
+		  Templates. </blockquote> 
+	 </div> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/transformer/package-summary.html">org.apache.xalan.transformer</a>
+</em>
+</p> 
+		<blockquote class="item">The module that applies the source tree to the Templates, and
+		  produces a result tree.</blockquote> 
+	 </div> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xpath/package-summary.html">org.apache.xpath</a>
+</em>
+</p> 
+		<blockquote class="item">The module that processes both XPath expressions, and XSLT Match
+		  patterns.</blockquote> 
+	 </div> 
+	 <p>In addition to the above modules, Xalan implements the
+		<a href="../apidocs/javax/xml/transform/package-summary.html#package_description">javax.xml.transform</a> interfaces, and depends on the
+	 <a href="http://www.megginson.com/SAX/Java/index.html">SAX2</a> and <a href="http://www.w3.org/TR/DOM-Level-2/">DOM</a> packages.
+</p>
+<p>
+<img src="trax.gif" alt="trax.gif" />
+</p>
+<p>There is also a general utilities package that contains both XML utility
+	 classes such as QName, but generally useful classes such as
+	 StringToIntTable.</p> 
+	 <p>In the diagram below, the dashed lines denote visibility. All packages
+		access the SAX2 and DOM packages.</p> 
+	 <p>
+<img src="xalan1_1x1.gif" alt="xalan1_1x1.gif" />
+</p> 
+	 <p>In addition to the above packages, there are the following additional
+		packages:</p> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/client/package-summary.html">org.apache.xalan.client</a>
+</em>
+</p> 
+		<blockquote class="item">This package has a client applet. I suspect this should be moved
+		  into the samples directory.</blockquote> 
+	 </div> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/extensions/package-summary.html">org.apache.xalan.extensions</a>
+</em>
+</p> 
+		<blockquote class="item">This holds classes belonging to the Xalan extensions mechanism,
+		  which allows Java code and script to be called from within a stylesheet.</blockquote>
+		
+	 </div> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/lib/package-summary.html">org.apache.xalan.lib</a>
+</em>
+</p> 
+		<blockquote class="item">This is the built-in Xalan extensions library, which holds
+		  extensions such as Redirect (which allows a stylesheet to produce multiple
+		  output files).</blockquote> 
+	 </div> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/res/package-summary.html">org.apache.xalan.res</a>
+</em>
+</p> 
+		<blockquote class="item">This holds resource files needed by Xalan, such as error message
+		  resources.</blockquote> 
+	 </div> 
+	  
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/trace/package-summary.html">org.apache.xalan.trace</a>
+</em>
+</p> 
+		<blockquote class="item">This package contains classes and interfaces that allow a caller to
+		  add trace listeners to the transformation, allowing an interface to XSLT
+		  debuggers and similar tools.</blockquote> 
+	 </div> 
+	 <div class="glossary"> 
+		<p class="label">
+<em>
+<a href="../apidocs/org/apache/xalan/xslt/package-summary.html">org.apache.xalan.xslt</a>
+</em>
+</p> 
+		<blockquote class="item">This package holds the Xalan2 command line processor.</blockquote> 
+	 </div> 
+  <p>A more conceptual view of this architecture is as follows:</p>
+<p>
+<img src="conceptual.gif" alt="Picture of conceptual architecture." />
+</p>
+<a name="process">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Process Module</h3> 
+	 <p>The <a href="../apidocs/org/apache/xalan/processor/package-summary.html">org.apache.xalan.processor</a> module implements the
+		<a href="../apidocs/javax/xml/transform/TransformerFactory.html">javax.xml.transform.TransformerFactory</a> interface, which provides a
+		factory method for creating a concrete Processor instance, and provides methods
+		for creating a <a href="../apidocs/javax/xml/transform/Templates.html">javax.xml.transform.Templates</a> instance, which, in
+		Xalan and XSLT terms, is the Stylesheet. Thus the task of the process module is
+		to read the XSLT input in the form of a file, stream, SAX events, or a DOM
+		tree, and produce a Templates/Stylesheet object.</p> 
+	 <p>The overall strategy is to define a schema in that dictates the legal
+		structure for XSLT elements and attributes, and to associate with those
+		elements construction-time processors that can fill in the appropriate fields
+		in the top-level Stylesheet object, and also associate classes in the templates
+		module that can be created in a generalized fashion. This makes the validation
+		object-to-class associations centralized and declarative.</p> 
+	 <p>The schema's root class is
+		<a href="../apidocs/org/apache/xalan/processor/XSLTSchema.html">org.apache.xalan.processor.XSLTSchema</a>, and it is here that the
+		XSLT schema structure is defined. XSLTSchema uses
+		<a href="../apidocs/org/apache/xalan/processor/XSLTElementDef.html">org.apache.xalan.processor.XSLTElementDef</a> to define elements, and
+		<a href="../apidocs/org/apache/xalan/processor/XSLTAttributeDef.html">org.apache.xalan.processor.XSLTAttributeDef</a> to define attributes.
+		Both classes hold the allowed namespace, local name, and type of element or
+		attribute. The XSLTElementDef also holds a reference to a
+		<a href="../apidocs/org/apache/xalan/processor/XSLTElementProcessor.html">org.apache.xalan.processor.XSLTElementProcessor</a>, and a sometimes a
+		<code>Class</code> object, with which it can create objects that derive from
+		<a href="../apidocs/org/apache/xalan/templates/ElemTemplateElement.html">org.apache.xalan.templates.ElemTemplateElement</a>. In addition, the
+		XSLTElementDef instance holds a list of XSLTElementDef instances that define
+		legal elements or character events that are allowed as children of the given
+		element.</p> 
+	 <p>The implementation of the <a href="../apidocs/javax/xml/transform/TransformerFactory.html">javax.xml.transform.TransformerFactory</a>
+		interface is in <a href="../apidocs/org/apache/xalan/processor/TransformerFactoryImpl.html">org.apache.xalan.processor.TransformerFactoryImpl</a>,
+		which creates a <a href="../apidocs/org/apache/xalan/processor/StylesheetHandler.html">org.apache.xalan.processor.StylesheetHandler</a>
+		instance. This instance acts as the ContentHandler for the parse events, and is
+		handed to the <a href="../apidocs/org/xml/sax/XMLReader.html">org.xml.sax.XMLReader</a>, which the StylesheetProcessor
+		uses to parse the XSLT document. The <code>StylesheetHandler</code> then receives the parse
+		events, which maintains the state of the construction, and passes the events on
+		to the appropriate <code>XSLTElementProcessor</code> for the given event, as dictated by the
+		<code>XSLTElementDef</code> that is associated with the given event.</p> 
+	 <a name="templates">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Templates Module</h3> 
+	 <p>The <a href="../apidocs/org/apache/xalan/templates/package-summary.html">org.apache.xalan.templates</a> module implements the
+		<a href="../apidocs/javax/xml/transform/Templates.html">javax.xml.transform.Templates</a> interface, and defines a set of
+		classes that represent a Stylesheet. The primary purpose of this module is to
+		hold stylesheet data, not to perform procedural tasks associated with the
+		construction of the data, nor tasks associated with the transformation itself.
+		</p> 
+	 <p>The base class of all templates objects that are associated with an XSLT element is the <a href="../apidocs/org/apache/xalan/templates/ElemTemplateElement.html">ElemTemplateElement</a> object, which in turn implements <a href="../apidocs/org/apache/xml/utils/UnImplNode.html">UnImplNode</a>.  A <code>ElemTemplateElement</code> object must be immutable once it's constructed, so that it may be shared among multiple threads concurrently.  Ideally, a <code>ElemTemplateElement</code> should be a data object only, and be used via a visitor pattern.  However, in practice this is impractical, because it would cause too much data exposure and would have a significant impact on performance.  Therefore, each <code>ElemTemplateElement</code> class has an <a href="../apidocs/org/apache/xalan/templates/ElemTemplateElement.html#execute(org.apache.xalan.transformer.TransformerImpl, org.w3c.dom.Node, org.apache.xml.utils.QName)">execute</a> method where it performs it's transformation duties.  A <code>ElemTemplateElement</code> also knows it's position in the source stylesheet, and can answer questions about current namespace nodes.</p>
+<p>A <a href="../apidocs/org/apache/xalan/templates/StylesheetRoot.html">StylesheetRoot</a>, which implements the
+		<code>Templates</code> interface, is a type of <a href="../apidocs/org/apache/xalan/templates/StylesheetComposed.html">StylesheetComposed</a>,
+		which is a <a href="../apidocs/org/apache/xalan/templates/Stylesheet.html">Stylesheet</a> composed of itself and all included
+		<code>Stylesheet</code> objects. A <code>StylesheetRoot</code> has a global
+		imports list, which is a list of all imported <code>StylesheetComposed</code>
+		instances. From each <code>StylesheetComposed</code> object, one can iterate
+		through the list of directly or indirectly included <code>Stylesheet</code>
+		objects, and one call also iterate through the list of all
+		<code>StylesheetComposed</code> objects of lesser import precedence.
+		<code>StylesheetRoot</code> is a <code>StylesheetComposed</code>, which is a
+		<code>Stylesheet</code>.</p> 
+	 <p>Each stylesheet has a set of properties, which can be set by various
+		means, usually either via an attribute on xsl:stylesheet, or via a top-level
+		xsl instruction (for instance, xsl:attribute-set). The get methods for these
+		properties only access the declaration within the given <code>Stylesheet</code>
+		object, and never takes into account included or imported stylesheets. The
+		<code>StylesheetComposed</code> derivative object, if it is a root
+		<code>Stylesheet</code> or imported <code>Stylesheet</code>, has "composed"
+		getter methods that do take into account imported and included stylesheets, for
+		some of these properties.</p> 
+	  
+  <a name="transformer">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Transformer Module</h3> 
+	 <p>The <a href="../apidocs/org/apache/xalan/transformer/package-summary.html">Transformer</a> module is in charge of run-time transformations.  The <a href="../apidocs/org/apache/xalan/transformer/TransformerImpl.html">TransformerImpl</a> object, which implements the TrAX <a href="../apidocs/javax/xml/transform/Transformer.html">Transformer</a> interface, and has an association with a <a href="../apidocs/org/apache/xalan/templates/StylesheetRoot.html">StylesheetRoot</a> object, begins the processing of the source tree (or provides a <a href="http://www.megginson.com/SAX/Java/javadoc/org/xml/sax/ContentHandler.html">ContentHandler</a> reference via the <a href="../apidocs/org/apache/xalan/stree/SourceTreeHandler.html">SourceTreeHandler</a>), and performs the transformation.  The Transformer package does as much of the transformation as it can, but element level operations are generally performed in the <a href="../apidocs/org/apache/xalan/templates/ElemTemplateElement.html#execute(org.apache.xalan.transformer.TransformerImpl, org.w3c.dom.Node, org.apache.xalan.utils.QName)">ElemTemplateElement.execute(...)</a> methods.</p>
+<p>Result Tree events are fed into a <a href="../apidocs/org/apache/xalan/transformer/ResultTreeHandler.html">ResultTreeHandler</a> object, which acts as a layer between the direct calls to the result 
+tree content handler (often a <a href="../apidocs/org/apache/xalan/serialize/package-summary.html">Serializer</a>), and the <code>Transformer</code>.  For one thing, 
+ we have to delay the call to
+ startElement(name, atts) because of the
+ xsl:attribute and xsl:copy calls.  In other words,
+ the attributes have to be fully collected before you
+ can call startElement.</p>
+<p>Other important classes in this package are:</p>
+<div class="glossary">
+<p class="label">
+<em>CountersTable and Counter</em>
+</p>
+<blockquote class="item">The <a href="../apidocs/org/apache/xalan/transformer/Counter.html">Counter</a> class does incremental counting for support of xsl:number.
+ This class stores a cache of counted nodes (m_countNodes). 
+  It tries to cache the counted nodes in document order... 
+ the node count is based on its position in the cache list.  The <a href="../apidocs/org/apache/xalan/transformer/CountersTable.html">CountersTable</a> class is a table of counters, keyed by <a href="../apidocs/org/apache/xalan/templates/ElemNumber.html">ElemNumber</a> objects, each 
+ of which has a list of <code>Counter</code> objects.</blockquote>
+</div>
+<div class="glossary">
+<p class="label">
+<em>KeyIterator, KeyManager, and KeyTable</em>
+</p>
+<blockquote class="item">These classes handle mapping of keys declared with the xsl:key element.  They attempt to work incrementally, locating nodes on request but indexing all as they traverse the tree, and stopping when the requested node is found.  If a requested node is not found, then the entire tree will be traversed.  Such is the nature of xsl:key.</blockquote>
+</div>
+<div class="glossary">
+<p class="label">
+<em>TransformState</em>
+</p>
+<blockquote class="item">This interface is meant to be used by a consumer of SAX2 events produced by Xalan, and enables the consumer 
+ to get information about the state of the transform.  It 
+ is primarily intended as a tooling interface.</blockquote>
+</div>
+<p>Even though the following modules are defined in the <code>org.apache.xalan</code> package, instead of the transformer package, they are defined in this section as they are mostly related to runtime transformation.</p>
+<a name="stree">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Stree Module [and discussions about streaming]</h4>
+  <p>The Stree module implements the default <a href="http://www.w3.org/TR/xpath#data-model">Source Tree </a> for Xalan, that is to be transformed.  It implements read-only <a href="http://www.w3.org/TR/DOM-Level-2/">DOM2</a> interfaces, and provides some information needed for fast transforms, such as document order indexes.  It also attempts to allow an incremental transform by launching the transform on a secondary thread as soon as the SAX2 <a href="http://www.megginson.com/SAX/Java/javadoc/org/xml/sax/ContentHandler.html#startDocument()">StartDocument</a> event has occurred.  When the transform requests a node, and the node is not present, the getFirstChild and GetNextSibling methods will wait until the child node has arrived, or an <a href="http://www.megginson.com/SAX/Java/javadoc/org/xml/sax/ContentHandler.html#endElement(java.lang.String,%20java.lang.String,%20java.lang.String)">endElement</a> event has occurred.</p>
+<p>Note that the secondary thread is an issue.  It would be better to do the same thing as described above on a single thread, but using the parser in 'pull' mode, or simply with a parseNext method so the parse would occur in blocks.  However, this model would only be possible</p>
+<p>This kind of incrementality is not perfect because it still requires an entire source tree to be concretely built.  There have been a lot of good discussions on the xalan-dev list about how to do static analysis of a stylesheet, and be able to allocate only the nodes needed by the transform, while they are needed (or not allocate source objects at all).</p>
+<a name="serializer">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Serializer Module</h4>
+<p>XML serialization is a term used for turning a tree or set of events into a stream, and should not be confused with Java object serialization.  The Xalan serializers implement the <a href="http://www.megginson.com/SAX/Java/javadoc/org/xml/sax/ContentHandler.html">ContentHandler</a> to turn parser events coming from the transform, into a stream of XML, HTML, or plain text.  The serializers also implement the <a href="../apidocs/org/apache/xml/serializer/Serializer.html">Serializer</a> which allows the transform process to set XSLT output properties and the output stream or Writer.</p>
+<a name="extensions">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Extensions Module</h4>
+<p>This package contains an implementation of Xalan Extension Mechanism, which uses the <a href="http://oss.software.ibm.com/developerworks/opensource/bsf/">Bean Scripting Framework</a>.
+
+The Bean Scripting Framework (BSF) is an architecture for incorporating scripting into Java applications and applets.  Scripting languages such as Netscape Rhino (Javascript), VBScript, Perl, Tcl, Python, NetRexx and Rexx can be used to augment XSLT's functionality.  In addition, the Xalan extension mechanism allows use of Java classes.  See the <a href="http://xml.apache.org/xalan/extensions.html">Xalan-J 2 extension documentation</a> for a description of using extensions in a stylesheet. Please note that the W3C XSL Working Group is working on a specification for standard extension bindings, and this module will change to follow that specification.  </p>
+<p>[More needed... -sb]</p>
+<a name="xpath">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XPath Module</h3> 
+	 <p>This module is pulled out of the Xalan package, and put in the org.apache package, to emphasize that the intention is that this package can be used independently of the XSLT engine, even though it has dependencies on the Xalan utils module.</p>
+<p>
+<img src="org_apache.gif" alt="xalan ---&gt; xpath" />
+</p> 
+  <p>The XPath module first compiles the XPath strings into expression trees, and then executes these expressions via a call to the XPath execute(...) function.  </p>  <p>Major classes are:</p>
+<div class="glossary">
+<p class="label">
+<em>XPath</em>
+</p>
+<blockquote class="item">Represents a compiled XPath.  Major function is <code>XObject execute(XPathContext xctxt, Node contextNode, 
+                         PrefixResolver namespaceContext)</code>.</blockquote>
+</div>
+<div class="glossary">
+<p class="label">
+<em>XPathAPI</em>
+</p>
+<blockquote class="item">The methods in this class are convenience methods into the
+ low-level XPath API.</blockquote>
+</div>
+<div class="glossary">
+<p class="label">
+<em>XPathContext</em>
+</p>
+<blockquote class="item">Used as the runtime execution context for XPath.</blockquote>
+</div>
+<div class="glossary">
+<p class="label">
+<em>DOMHelper</em>
+</p>
+<blockquote class="item">Used as a helper for handling DOM issues.  May be subclassed to take advantage 
+   of specific DOM implementations.</blockquote>
+</div>
+<div class="glossary">
+<p class="label">
+<em>SourceTreeManager</em>
+</p>
+<blockquote class="item">bottlenecks all management of source trees.  The methods
+ in this class should allow easy garbage collection of source 
+ trees, and should centralize parsing for those source trees.</blockquote>
+</div>
+<div class="glossary">
+<p class="label">
+<em>Expression</em>
+</p>
+<blockquote class="item">The base-class of all expression objects, allowing polymorphic behaviors.</blockquote>
+</div>
+<p>The general architecture of the XPath module is divided into the compiler, and categories of expression objects.</p>
+<p>
+<img src="xpath.gif" alt="xpath modules" />
+</p>
+<p>The most important module is the axes module.  This module implements the DOM2 <a href="http://www.w3.org/TR/DOM-Level-2/traversal.html#Iterator-overview">NodeIterator</a> interface, and is meant to allow XPath clients to either override the default behavior or to replace this behavior.</p>
+<p>The <a href="../apidocs/org/apache/xpath/axes/LocPathIterator.html">LocPathIterator</a> and <a href="../apidocs/org/apache/xpath/axes/UnionPathIterator.html">UnionPathIterator</a> classes implement the <a href="http://www.w3.org/TR/DOM-Level-2/java-binding.html#org.w3c.dom.traversal.NodeIterator">NodeIterator</a> interface, and polymorphically use <a href="../apidocs/org/apache/xpath/axes/AxesWalker.html">AxesWalker</a> derived objects to execute each step in the path.  The whole trick is to execute the <code>LocationPath</code> in depth-first document order so that nodes can be found without necessarily looking ahead or performing a breadth-first search.  Because a document order depth-first search requires state to be saved for many expressions, the default operations create "Waiter" clones that have to wait while the main <code>AxesWalkers</code> traverses child nodes (think carefully about what happens when a "//foo/baz" expression is executed).   Optimization is done by implementing specialized iterators and <code>AxesWalkers</code> for certain types of operations.  The decision as to what type of iterator or walker will be created is done in the <a href="../apidocs/org/apache/xpath/axes/WalkerFactory.html">WalkerFactory</a> class.</p>
+<p>[Frankly, the implementation of the default AxesWalker, with it's waiters, is the one totally incomprehensible part of Xalan.  It gets especially difficult because you can not look to the node ahead.  I would be very interested if any rocket scientists out there can come up with a better algorithm.]</p>
+<a name="xpathdbconn">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>XPath Database Connection</h4>
+<p>An important part of the XPath design in both Xalan 1 and Xalan 2, is to enable database connections to be used as drivers directly to the XPath <a href="http://www.w3.org/TR/xpath#location-paths">LocationPath</a> handling.  This allows databases to be directly connected to the transform, and be able to take advantage of internal indexing and the like.  While in Xalan 1 this was done via the <a href="http://xml.apache.org/xalan/apidocs/org/apache/xalan/xpath/XLocator.html">XLocator</a> interface, in Xalan 2 this interface is no longer used, and has been replaced by the DOM2 <a href="http://www.w3.org/TR/DOM-Level-2/traversal.html#Iterator-overview">NodeIterator</a> interface.  An application or extension should be able to install their own NodeIterator for a given document.</p>
+<p>
+<img src="data.gif" alt="data.gif" />
+</p>
+<p>[More to do]</p>
+<a name="utils">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Utils Package</h3> 
+  <p>This package contains general utilities for use by both the xalan and xpath packages.</p>
+<a name="other">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Other Packages</h3> 
+	 <div class="glossary">
+<p class="label">
+<em>client</em>
+</p>
+<blockquote class="item">Implementation of Xalan Applet [should we keep this?].
+
+</blockquote>
+</div> 
+		 
+		 
+		<div class="glossary">
+<p class="label">
+<em>lib</em>
+</p>
+<blockquote class="item">Implementation of Xalan-specific extensions.</blockquote>
+</div>
+<div class="glossary">
+<p class="label">
+<em>res</em>
+</p>
+<blockquote class="item">Contains strings that require internationalization.</blockquote>
+</div>
+<a name="compilation">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Xalan Stylesheet Complilation to Java</h3>
+<p>We are doing some work on compiling stylesheet objects to Java.  This is a work in progress, and is not meant for general use yet.  For the moment, we are writing out Java text files, and then compiling them to bytecodes via javac, rather than directly producing bytecodes.  The CompilingStylesheetProcessor derives from TransformerFactoryImpl to produce these classes, which are then bundled into a jar file.  For the moment the full Xalan jar is required, but we're looking at ways to only use a subset of Xalan, so that only a minimal jar would be required.</p>
+<p>
+<img src="compilation.gif" alt="compilation.gif" />
+</p>
+<a name="optimizations">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Future Optimizations</h3>
+<p>This section enumerates some optimizations that we're planning to do in future versions of Xalan.</p>
+<p>Likely near term optimizations (next six months?):</p>
+<ol>
+<li>By pre-analysis of the stylesheet, prune nodes from the tree that have been processed and can be predicted that they won't be visited again.</li>
+<li>Eliminate redundent expressions (xsl:when, variable sets, rooted patterns, etc.).</li>
+<li>Optimize variable patterns such as &lt;xsl:variable name="foo"&gt;&lt;xsl:variable select="yada"/&gt;&lt;/xsl:variable&gt; into &lt;xsl:variable name="foo" select="string(yada)"/&gt;, in order to reduce result tree fragment creation.</li>
+<li>Reduce size of Stree nodes.</li>
+<li>Implement our own NamespaceSupport class (the SAX2 one is too expensive).</li>
+<li>More specialization of itterators and walkers.</li>
+<li>Full Java compilation support.</li>
+<li>Schema Awareness (if "//foo", the Schema can tell us where to look, but we need standard interface to Schemas).</li>
+</ol>
+<p>Likely longer term optimizations (12-18 months?):</p>
+<ol>
+<li>On-the-fly indexing.</li>
+<li>Predict if nodes won't be processed at all, and so don't build them, achieve full streaming support for a certain class of stylesheets.</li>
+</ol>
+<a name="coding">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Coding Conventions</h3> 
+	 <p>This section documents the coding conventions used in the Xalan
+		source.</p> 
+	 <ol> 
+		<li>Class files are arranged with constructors and possibly an init()
+		  function first, public API methods second, package specific, protected, and
+		  private methods following (arranged based on related functionality), member
+		  variables with their getter/setter access methods last.</li> 
+		<li>Non-static member variables are prefixed with "m_".</li> 
+		<li>static final member variables should always be upper case, without
+		  the "m_" prefix. They need not have accessors.</li> 
+		<li>Private member variables that are not accessed outside the class need
+		  not have getter/setter methods declared.</li> 
+		<li>Private member variables that are accessed outside the class should
+		  have either package specific or public getter/setter methods declared. All
+		  accessors should follow the bean design patterns.</li> 
+		<li>Package-scoped member variables, public member variables, and
+		  protected member variables should not be declared.</li> 
+	 </ol> 
+  <a name="open">‌</a> 
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/design/org_apache.gif b/xalan-j/design/org_apache.gif
new file mode 100644
index 0000000..105f264
--- /dev/null
+++ b/xalan-j/design/org_apache.gif
Binary files differ
diff --git a/xalan-j/design/process.gif b/xalan-j/design/process.gif
new file mode 100644
index 0000000..c7a871e
--- /dev/null
+++ b/xalan-j/design/process.gif
Binary files differ
diff --git a/xalan-j/design/resources/Xalan-Logo-tm.png b/xalan-j/design/resources/Xalan-Logo-tm.png
new file mode 100644
index 0000000..9a08808
--- /dev/null
+++ b/xalan-j/design/resources/Xalan-Logo-tm.png
Binary files differ
diff --git a/xalan-j/design/resources/Xalan-Logo.txt b/xalan-j/design/resources/Xalan-Logo.txt
new file mode 100644
index 0000000..7886950
--- /dev/null
+++ b/xalan-j/design/resources/Xalan-Logo.txt
@@ -0,0 +1,85 @@
+
+The XALAN Logo
+
+Graphic: A stylized version of the African Xalam instrument.
+
+
+
+TEXT FONTS SIZE AND STYLE:
+
+TM (trademark)
+
+	Font: Arial
+	Size: 14pt
+	Style: Bold)
+
+XSLT
+
+	Font: Arial
+	Size: 22pt
+	Style: Bold
+
+Apache Software Foundation
+
+	Font: Arial
+	Size: 18pt
+	Style: Bold
+	Note: 2 space characters between words
+
+Xalan	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-C	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-J	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+
+INSTRUMENT GRAPHIC (vector equations)
+
+	Vertical Width:		0.75 inch (3/4)
+	HorizontalLength:	3.667 inch (3 2/3)
+
+	Oval on the left,
+	neck and butt on the right.
+
+	Oval Width:		0.75 inch (3/4)
+	Oval Length:		1.583 inch (1 7/12)
+
+	Neck Width:		0.167 inch (1/6)
+
+	Butt Width:		0.25 inch (1/4)
+	Butt Length:		0.417 inch (5/12)
+
+
+Description of instrument logo
+
+	Oval: simulation of a gourd sound chamber
+	With orange gradation hues
+
+	Neck: rectangle simulating a round fingerboard
+	With yellow-green gradation hues
+
+	Butt: rounded rectangle simulating end of neck
+	With olive-green hue
+
+	String Anchor:  rounded rectangle on the gourd
+	With olive-green hue
+
+	2 strings: the full length from Anchor to Butt
+
+	2 strings: tied to neck, at 1/2 length from Anchor to Butt
+
+	3 Loose Tie Strings on the Butt, simulating tuning anchors
+
+	
\ No newline at end of file
diff --git a/xalan-j/design/resources/Xalan-Trademark.txt b/xalan-j/design/resources/Xalan-Trademark.txt
new file mode 100644
index 0000000..0bd3704
--- /dev/null
+++ b/xalan-j/design/resources/Xalan-Trademark.txt
@@ -0,0 +1,106 @@
+
+The XALAN Logo - Trademark Description
+--------------------------------------
+
+Prepared By:  
+
+	Steven J. Hathaway
+
+	(shathaway@apache.org)
+
+	September 3, 2011
+
+
+
+Prepared for:
+
+	The Apache Software Foundation
+
+--------------------------------------
+
+Graphic: A stylized version of the African Xalam instrument.
+
+Note: the difference in spelling.
+
+	Xalam is the African Musical Instrument
+	Xalan is the Apache Xalan Software Project
+
+
+TEXT FONTS SIZE AND STYLE:
+
+TM (trademark symbol)
+
+	Font: Arial
+	Size: 14pt
+	Style: Bold)
+
+XSLT
+
+	Font: Arial
+	Size: 22pt
+	Style: Bold
+
+Apache Software Foundation (trademark name)
+
+	Font: Arial
+	Size: 18pt
+	Style: Bold
+	Note: 2 space characters between words
+
+Xalan	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-C	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-J	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+
+INSTRUMENT GRAPHIC (vector equations)
+
+	Vertical Width:		0.75 inch (3/4)
+	HorizontalLength:	3.667 inch (3 2/3)
+
+	Oval on the left,
+	neck and butt on the right.
+
+	Oval Width:		0.75 inch (3/4)
+	Oval Length:		1.583 inch (1 7/12)
+
+	Neck Width:		0.167 inch (1/6)
+
+	Butt Width:		0.25 inch (1/4)
+	Butt Length:		0.417 inch (5/12)
+
+
+Description of instrument logo
+
+	Oval: simulation of a gourd sound chamber
+	With orange gradation hues
+
+	Neck: rectangle simulating a round fingerboard
+	With yellow-green gradation hues
+
+	Butt: rounded rectangle simulating end of neck
+	With olive-green hue
+
+	String Anchor:  rounded rectangle on the gourd
+	With olive-green hue
+
+	2 strings: the full length from Anchor to Butt
+
+	2 strings: tied to neck, at 1/2 length from Anchor to Butt
+
+	3 Loose Tie Strings on the Butt, simulating tuning anchors
+
+	
\ No newline at end of file
diff --git a/xalan-j/design/resources/XalanJ-Logo-tm.png b/xalan-j/design/resources/XalanJ-Logo-tm.png
new file mode 100644
index 0000000..cab93a7
--- /dev/null
+++ b/xalan-j/design/resources/XalanJ-Logo-tm.png
Binary files differ
diff --git a/xalan-j/design/resources/apache-xalan.css b/xalan-j/design/resources/apache-xalan.css
new file mode 100644
index 0000000..fc2fa1a
--- /dev/null
+++ b/xalan-j/design/resources/apache-xalan.css
@@ -0,0 +1,414 @@
+/* Xalan-C/C++ Project Web Pages (css) Stylesheet */
+
+/*
+ * 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.
+*/
+
+/* This (css) stylesheet renders the xhtml web pages that were generated
+ * from StyleBook XML markup using the "xalan-book.xslt" transformation.
+*/
+
+html > bod  {left:0;}
+body {
+/*  background-color: white; */
+  background-color: #f8f8f0;
+  color: black;
+  padding: 0;
+  margin: 0;
+  font-family: arial, "lucida console", san-serif;
+}
+
+/* Emulate table align=center */
+div.centered, td.centered {
+  text-align: center;
+}
+
+div.centered table {
+  margin: 0 auto;
+  text-align: left;
+}
+
+/*
+ * ID Sections
+ */
+
+#content {
+  width: 80%;
+  float: left;
+  font-size: 12pt;
+  padding-top: 1em;
+  padding-left: 5px;
+  margin-left: 10px;
+  border-left: 1px solid #aaa;
+}
+
+#navLeft {
+  clear: left;
+  width: 15%;
+  float: left;
+  padding: 2px;
+  margin-left: 1%;
+  color: red;
+  position: relative;
+  left: 1px;
+  background-color: #eee;
+}
+
+.navGroup {
+  color: Black;
+  font-size: 14pt;
+}
+
+
+#title {
+  color: black;
+  background-color: #eee;
+  text-align: center;
+  border-bottom: 1px solid #aaa;
+  padding: 0;
+  vertical-align: middle;
+}
+
+table.HdrTitle {
+  font-size: 18pt;
+}
+
+table.HdrButtons {
+  font-size: 8pt;
+  background-color: #ccf;
+  align: "center";
+  border: "1";
+
+}
+
+#footer {
+    clear: both;
+    margin: 0 2em;
+    color: #444;
+    background-color: #ddd;
+    text-align: center;
+    padding: .5em 0;
+    font-size: 75%;
+    border-top: 1px solid #aaa;
+}
+
+/*
+ * Anchors
+ */
+
+a {
+  color: blue;
+  text-decoration: undedrline;
+}
+
+a img {
+  border: 0;
+}
+
+a:hover {
+  text-decoration: none;
+  background-color: #d7c9c9;
+}
+
+/*
+ * Headers
+ */
+
+h1 {}
+
+#title h1 {
+  padding: 1px 0;
+  margin: 0;
+  float: right;
+  width: 60%;
+  font-size: 20pt;
+  text-align: center;
+}
+
+#content h1 { background-color: #8af }
+
+h2 {}
+
+#title h2 {
+  font-size: 14pt;
+  width: 60%;
+  text-alignment: center;
+  padding: 1px 0;
+  margin: 0;
+}
+
+#content h2 { background-color: #9bf }
+
+#content h2.year {
+  background-color: #ddd;
+  text-align: center;
+}
+
+h3 {}
+
+#content h3.monthName {
+  background-color: #333;
+  text-align: center;
+}
+
+#content h3 { background-color: #acf }
+
+h4{}
+
+#content h4.eventTitle {
+  margin-left: 1%;
+  border-bottom: 1px solid blue;
+}
+
+#content h4 { background-color: #cdf }
+
+/*
+ * Tables
+ */
+
+th {}
+
+td {}
+
+th.content {background-color: #4BD }
+td.content {background-color: #AEF }
+
+/*
+ * Lists and navLeft
+ */
+
+ul {}
+
+#navLeft ul {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+#navLeft ul li {
+  margin: 0;
+}
+
+#navLeft ul li p {
+  margin: 0;
+}
+
+#navLeft ul li ul {
+  list-style-type: none;
+  font-size: 90%;
+  margin: 0 2em;
+}
+
+#navLeft ul li ul li {
+  margin: 0;
+}
+
+/*
+ * Paragraphs
+ */
+
+p {}
+
+#navLeft p {
+  text-align: center;
+  padding: 0 auto;
+  margin: 0;
+}
+
+#footer p {
+  padding: 0;
+}
+
+#content p.topalign {
+  vertical-align: middle;
+  height: 2em;
+  text-align: center;
+  width: 100%;
+  padding: .5em;
+  border: 1px solid #ddd;
+}
+
+#content p.topalign img {
+  vertical-align: middle;
+  text-align: text-middle;
+}
+
+#content p.quote {
+  color:black;
+  font-style: italic;
+  font-size: 110%;
+  margin-left: 10%;
+  margin-right: 10%;
+  padding 1em;
+  border: 1px solid #ddd;
+  text-align: center;
+}
+
+#content p.navbar {
+  font-size: 90%;
+  text-align: center;
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #ddd;
+}
+
+blockquote {}
+
+blockquote.note {
+  font-size: 80%;
+  border: 1px solid #ddd;
+  background-color: #eee;
+}
+
+td.noteImg {
+  background-color: white;
+  border: 0;
+}
+
+td.noteTxt {
+  background-color: white;
+  font-size: 120%;
+  border: 2px solid #ddd;
+  background-color: #eee;
+}
+
+/**
+ ** UNSPECIFIED IN APACHE STYLEBOOK DTD
+ ** <caution>..</caution> and <warning>..</warning>
+ **
+ * 
+ * td.cautionImg {
+ *   background-color: white;
+ *   border: 0;
+ * }
+ * 
+ * td.cautionTxt {
+ *   background-color: white;
+ *   font-size: 120%;
+ *   border: 2px solid #ddd;
+ *   background-color: #eee;
+ * }
+ * 
+ * 
+ * td.warningImg {
+ *   background-color: white;
+ *   border: 0;
+ * }
+ * 
+ * td.warningTxt {
+ *   background-color: white;
+ *   font-size: 120%;
+ *   border: 2px solid #ddd;
+ *   background-color: #eee;
+ * }
+ * 
+**/
+
+
+blockquote.source {
+  font-size: 75%;
+}
+
+code {
+  font-size: 75%;
+}
+
+
+/*
+ * Special Table (note)
+ */
+
+#notediv div { background-color: white }
+
+table.note {
+  width: 90%;
+}
+
+td.noteImg {
+  background-color: white;
+  vertical-align: top;
+  border: 0;
+  width: 24;
+}
+
+td.noteTxt {
+  color: black;
+  background-color: #eee;
+  font-size: 90%;
+  border: 2px solid;
+  border-color: #ccc;
+}
+
+
+/*
+ * Images
+ */
+
+img {}
+
+
+#footer img {
+  border: 0;
+}
+
+
+/*
+ * Document Divisions
+ */
+
+div {}
+
+/*
+ * Pre
+ */
+
+pre {}
+
+
+/*
+ * Generic Classes
+ */
+
+.indented {
+  margin-left: 3%;
+}
+
+.topBanner {
+  float: right;
+  margin: 0;
+  border: 0;
+  vertical-align: middle;
+}
+
+.noborder {
+  border: 0;
+  margin: 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xalan-j/design/resources/asf_logo.png b/xalan-j/design/resources/asf_logo.png
new file mode 100644
index 0000000..66c34f0
--- /dev/null
+++ b/xalan-j/design/resources/asf_logo.png
Binary files differ
diff --git a/xalan-j/design/resources/note.gif b/xalan-j/design/resources/note.gif
new file mode 100644
index 0000000..3394222
--- /dev/null
+++ b/xalan-j/design/resources/note.gif
Binary files differ
diff --git a/xalan-j/design/trax.gif b/xalan-j/design/trax.gif
new file mode 100644
index 0000000..8eb9614
--- /dev/null
+++ b/xalan-j/design/trax.gif
Binary files differ
diff --git a/xalan-j/design/xalan.gif b/xalan-j/design/xalan.gif
new file mode 100644
index 0000000..ca4a57c
--- /dev/null
+++ b/xalan-j/design/xalan.gif
Binary files differ
diff --git a/xalan-j/design/xalan1_1x1.gif b/xalan-j/design/xalan1_1x1.gif
new file mode 100644
index 0000000..c9e1536
--- /dev/null
+++ b/xalan-j/design/xalan1_1x1.gif
Binary files differ
diff --git a/xalan-j/design/xmllogo.gif b/xalan-j/design/xmllogo.gif
new file mode 100644
index 0000000..b63188d
--- /dev/null
+++ b/xalan-j/design/xmllogo.gif
Binary files differ
diff --git a/xalan-j/design/xpath.gif b/xalan-j/design/xpath.gif
new file mode 100644
index 0000000..cf28f9c
--- /dev/null
+++ b/xalan-j/design/xpath.gif
Binary files differ
diff --git a/xalan-j/design/xslt_abstract.gif b/xalan-j/design/xslt_abstract.gif
new file mode 100644
index 0000000..fa041a6
--- /dev/null
+++ b/xalan-j/design/xslt_abstract.gif
Binary files differ
diff --git a/xalan-j/downloads.html b/xalan-j/downloads.html
new file mode 100644
index 0000000..cf4f021
--- /dev/null
+++ b/xalan-j/downloads.html
@@ -0,0 +1,632 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Download/Build &amp; Dependencies</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Download/Build &amp; Dependencies</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>Download/Build<br />
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Download/Build &amp; Dependencies</h2>
+<ul>
+  <li>
+<a href="#latest-release">Downloading the latest release</a>
+</li>
+  <li>
+<a href="#download">Downloading what else you might need</a>
+</li>
+  <li>
+<a href="#whereis_xml4j">Where do I get Xerces-Java? </a>
+</li>
+  <li>
+<a href="#viewcode">How do I view Xalan code in a browser?</a>
+</li>
+  <li>
+<a href="#buildmyself">How do I download the latest development code to build myself?</a>
+</li>
+  <li>
+<a href="#using-ant">Using ant</a>
+</li>
+  <li>
+<a href="#samples">Rebuilding a sample application</a>
+</li>
+  <li>
+<a href="#previous-releases">Where do I download previous releases?</a>
+</li>
+</ul>
+<a name="latest-release">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Downloading the latest release</h3>
+  <p> You can download the pre-built binary distributions from one of the
+      mirror sites at <a href="http://www.apache.org/dyn/closer.cgi/xalan/xalan-j">xalan-j distribution directory</a>.
+  </p>
+  
+  <p>Xalan-J has two processors, 
+  an interpretive one, Xalan Interpretive, and a compiled one, Xalan Compiled (XSLTC).
+  Your choice of which binary distribution to download depends on which
+  of the processors you want to use.
+  There are 2 binary distributions available; you only need to choose one of them.  
+  Both binary distributions contain <code>xml-apis.jar</code> and <code>xercesImpl.jar</code> from <a href="http://xerces.apache.org/xerces2-j/index.html">Xerces-Java 2.11.0</a>.</p>
+  <ul>
+    <li>The first binary distribution, <code>xalan-j_2_7_2-bin.zip</code> or 
+      <code>xalan-j_2_7_2-bin.tar.gz</code>,
+      contains the Xalan Interpretive processor, the Xalan Compiled processor (XSLTC) and the 
+      runtime support packages in a single jar, called <code>xalan.jar</code>.
+      The reason to use this distribution would be that you don't know
+      which processor you are going to use, or might be using both.
+    </li>
+<br />
+<br />
+    <li>The second binary distribution, <code>xalan-j_2_7_2-bin-2jars.zip</code> or 
+      <code>xalan-j_2_7_2-bin-2jars.tar.gz</code>
+      contains the Xalan Interpretive processor in <code>xalan.jar</code>, and the Xalan Compiled 
+      processor (XSLTC) and the runtime support packages in <code>xsltc.jar</code>.
+      The reason to using this distribution is that you want more control.
+      If you are using just XSLTC you can put <code>xsltc.jar</code> on the classpath
+      and not <code>xalan.jar</code>. If you are using just the interpretive processor
+      you can put xalan <code>xalan.jar</code> on the classpath and not <code>xsltc.jar</code>. Of course
+      you can put both <code>xalan.jar</code> and <code>xsltc.jar</code> from this distribution
+      on your classpath if you want to use both.
+    </li>
+  </ul>  
+
+  
+  <p>
+    We provide two distributions: a binary distribution, and a source distribution.
+    You can also download a source distribution from one of the same
+    mirror sites at <a href="http://www.apache.org/dyn/closer.cgi/xalan/xalan-j">xalan-j distribution directory</a>. The difference
+    is that a binary distribution contains <b>-bin</b> in its name,
+    whereas a source distribution contain <b>-src</b> in its name.
+  </p>
+
+   <p>To use Xalan-Java, you need the following which are available from
+      either a binary or source distribution:</p> 
+  <ul>
+    <li>
+<code>xml-apis.jar</code> JAXP APIs</li>
+    <li>
+<code>xercesImpl.jar</code> (or another <a href="usagepatterns.html#plug">XML Parser</a>)</li>
+    <li>
+<code>xalan.jar</code>
+</li>
+    <li>
+<code>xsltc.jar</code> the XSLTC processor, if you choose a 2jars distribution</li>
+    <li>
+<code>serializer.jar</code> which are the serializer classes of
+    Xalan-Java</li>
+  </ul>
+  <p>  
+    If you have downloaded a binary distribution, you already have a build 
+    (you have the jars). This is also true for a source distribution, however
+    if you downloaded a source distribution, 
+    you have the option to use Ant to build Xalan-Java, 
+    including <code>xalan.jar</code>, <code>xsltc.jar</code>, <code>serializer.jar</code>
+    and other things, see <a href="#using-ant">Using Ant</a> for more
+    details.
+  </p>  
+    
+    
+
+<a name="download">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Downloading what else you might need</h3>
+  <p>To use Xalan-Java, you need the following:</p> 
+  <ul>
+    <li>The JDK or JRE 1.3.x, 1.4.x, or 5.x</li>
+  </ul>
+  <p>
+    You can get the JDK or JRE from <a href="http://www-128.ibm.com/developerworks/java/jdk/index.html">
+    IBM developerWorks</a> or <a href="http://www.java.sun.com">java.sun.com</a>.
+  </p> 
+  <p>If you plan to run <a href="extensions.html">XSLT extensions</a> 
+     through extension functions or elements, and you want to implement
+     that support in languages
+     other than Java, then you will need an implementation of the Bean Scripting Framework (BSF).
+     An open source implementation is available for download from Apache.  See the 
+     <a href="http://jakarta.apache.org/bsf/index.html">Apache Jakarta
+     BSF project</a>. If you plan to run XSLT extensions implemented in scripting 
+     languages, you will need <code>bsf.jar</code> and one or more additional files as indicated in 
+     <a href="extensions.html#supported-lang">extensions language requirements</a>.
+  </p>
+
+
+<a name="whereis_xml4j">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Where do I get Xerces-Java?</h3>
+  <p>
+    The Xalan-Java Version 2.7.2 has been tested with Xerces-Java 2.11.0.
+  </p>
+  <p>
+<b>Important:</b> You may experience unpredictable anomalies
+    if your Xalan-Java and Xerces-Java builds are not in synch.
+    If you download an update to Xalan-Java, check the
+    <a href="readme.html">release notes</a>
+    to determine which version of Xerces-Java you should use.
+  </p>
+  <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">
+    You can use Xalan-Java with other XML parsers that implement
+    the <a href="https://jaxp.java.net/">Java API for XML Processing (JAXP) 1.3</a>. 
+    See <a href="usagepatterns.html#plug">Plugging in the Transformer and XML parser</a>.
+  </td>
+</tr>
+</table>
+  <p>
+    The Xalan-Java download includes <code>xercesImpl.jar</code> from Xerces-Java 2.11.0. In conjunction with <code>xml-apis.jar</code>, 
+    this is all you need to run Xalan-Java with the Xerces-Java XML parser. You can, however, download the 
+    complete Xerces-Java binary or source distribution from the <a href="http://www.apache.org/dyn/closer.cgi/xerces/j/">xerces-j distribution directory</a>.
+    If you cannot find Xerces-Java 2.11.0 at that location, have a look at the 
+    <a href="http://archive.apache.org/dist/xml/xerces-j/">Apache archive location for
+    Xerces Java</a>.
+  </p>
+  <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">
+    If you plan to use a different XML parser, see <a href="usagepatterns.html#plug">Plugging 
+    in a Transformer and XML parser</a>.
+  </td>
+</tr>
+</table> 
+
+
+<a name="viewcode">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>How do I view Xalan code in a browser?</h3>
+  <p>
+    If you wish to view some of Xalan's files in a browser without downloading the
+    whole project you can view it at
+    <a href="http://svn.apache.org/viewvc/xalan/">http://svn.apache.org/viewvc/xalan/</a>
+    or at
+    <a href="http://svn.apache.org/repos/asf/xalan/">http://svn.apache.org/repos/asf/xalan/</a>.  
+    The link with "viewvc" in it is slightly prettier.
+  </p>
+  <p>
+    The java/trunk and test/trunk subdirectories are the ones with the latest development code.  
+  </p>
+
+
+
+<a name="buildmyself">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>How do I download the latest development code to build myself?</h3>
+  <p>
+    If you have downloaded a source distribution, or obtained source code
+    using subversion, this section may be of interest to you.
+  </p>
+  <p>
+    If you wish to download Xalan and build it yourself, perhaps because you want to 
+    apply a patch and test it, you will need a subversion client and anonymous access
+    to the repository.
+    Don't worry, everyone has anonymous access.
+    You can find pre-built binaries of subversion clients for different
+    operating systems here:
+    <a href="http://subversion.tigris.org/project_packages.html#binary-packages">
+    http://subversion.tigris.org/project_packages.html#binary-packages</a>.
+    See 
+    <a href="http://www.apache.org/dev/version-control.html">
+    http://www.apache.org/dev/version-control.html
+    </a> for more information on Apache and subversion.    
+  </p>
+  <p>
+    Once the subverion client is installed on your local machine you
+    can use the command line client program <b>svn</b>
+    to get the latest Xalan-J using a command line something like this:
+    <blockquote class="source">
+<pre>
+    svn checkout http://svn.apache.org/repos/asf/xalan/java/trunk java    
+    </pre>
+</blockquote>
+    where the argument after <b>checkout</b> is the Subversion repository location,
+    in this case the location of the latest development code, and the last argument,
+    in this case <b>java</b> is the location of the local directory that the repository is
+    copied to.   
+  </p>
+  <p>
+    Similarly for the test harness, you can download the latest test harness with a Subversion command
+    something like this:
+    <blockquote class="source">
+<pre>
+    svn checkout http://svn.apache.org/repos/asf/xalan/test/trunk test    
+    </pre>
+</blockquote>  
+  </p>
+  <p>
+    Those two commands will put a copy of the latest parts in the local
+    directories <b>java</b> and <b>test</b>,
+    which are sibling directories.  If you
+    want to test your build with
+    the test harness provided with Xalan then it is easiest if you keep the
+    local directory names
+    as suggested. With your paths set up to compile Java code, go into the local <b>java</b>
+    directory and issue these two commands:
+    <blockquote class="source">
+<pre>
+  build clean
+  build  
+  </pre>
+</blockquote>
+  </p>
+  <p>
+  The <b>build.bat</b> batch file, or <b>build.sh</b> shell script (depending on
+  your operating system use <b>ant</b> and the buildfile <b>build.xml</b>. See
+  the section <a href="#jar">Using ant</a> for more information.
+  </p>
+  <p>
+  Other useful targets may be <code>xsltc.jar</code> or <code>serializer.jar</code>.
+  If you want to test the jars you just built in the directory <b>java/build</b>, change to
+  directory <b>test</b> and issue this command:
+  <blockquote class="source">
+<pre>
+  build jar
+  build smoketest
+    </pre>
+</blockquote>
+    The first target, <b>jar</b> builds the test harness and only needs to be done
+    once after the <b>test</b> repository is checked out. The second target, <b>smoketest</b>,
+    runs the Xalan-J intepretive smoketest. 
+    Running the <b>build smoketest</b> or other targets in the <b>test</b> directory
+    automatically looks for the jars in the directory <b>../java/build</b>
+    and that is why it is easiest to download the projects into suggested sibling
+    directories with the given names.
+  </p>
+  <p>
+    Towards the end of the console output you will see <b>two CONGRATULATIONS!</b> messages if all
+    goes well. The end of the console output should look like this:
+    <blockquote class="source">
+<pre>
+    .
+    .
+    .
+minitest-pass:
+     [echo]  [minitest] CONGRATULATIONS! The Minitest passed!
+     [echo]  [minitest] See details in smoketest/Minitest.xml
+
+smoketest-notpass:
+
+smoketest-pass:
+     [echo]  [minitest] CONGRATULATIONS! The Smoketest passed!
+     [echo]  [minitest] Details are in smoketest/results-conf.xml, smoketest/results-api.xml, smoketest/extensions/results-extensions.xml
+
+smoketest:
+
+BUILD SUCCESSFUL
+Total time: 2 minutes 4 seconds
+build completed! 
+    </pre>
+</blockquote>
+  </p>
+  <p>
+    Don't be fooled by the <b>BUILD SUCCESSFUL</b> messages, look for the two CONGRATULATIONS!
+    messages. If you run the smoketest for XSLTC with <b>build smoketest.xsltc</b> you wil
+    only get one CONGRATULATIONS! message if all goes well.
+  </p>  
+
+
+<a name="using-ant">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using Ant To Build</h3>
+    <p>
+      If you have downloaded a source distribution, or obtained source code
+      using subversion, this section may be of interest to you.
+    </p>
+       
+     <p>Apache <a href="http://jakarta.apache.org/ant/index.html">Ant</a> is a flexible, powerful, and easy-to-use Java build tool that we include with the
+     Xalan-Java distribution. The Ant JAR file is in the tools directory, and the cross-platform XML build file (build.xml) is in 
+     the root directory along with a Windows32 batch file (build.bat) and a UNIX shell file (build.sh). The build file defines 
+     the "targets" that you can use Ant to build. The batch and shell files set up the classpath and launch Ant with the target 
+     (and any other arguments) you provide.</p>
+     <p>
+<b>Instructions for using Ant</b>
+</p>
+     <ol>
+       <li>Set the JAVA_HOME environment variable to the JDK root directory.<br />
+<br />
+       JDK 1.3.1 or higher is required to build Xalan-Java. You must put <code>tools.jar</code> from the JDK
+       bin directory on the classpath.<br />
+<br />
+</li>
+       <li>Depending on your environment, run the batch file (build.bat) or shell file (build.sh) 
+       from the Xalan-Java root directory, optionally with arguments (see the table of targets below).<br />
+<br />
+       The batch/shell file adds several JAR files to the classpath and launches Ant with any arguments 
+       you provide. If you provide no target, Ant compiles the source files and rebuilds <code>xalan.jar</code> 
+       (the "jar" target).</li>
+     </ol>
+     
+     <p>The Xalan-Java source code tree is in the src directory.
+     </p>
+     <p>
+       If you are using Ant, the target is jar (the default). 
+     </p>
+     
+     <p>You can also set up your classpath manually (see build.bat or build.sh for the details), and 
+     then run Ant as follows:<br />
+<br />
+     <code>java org.apache.tools.ant.Main <b>
+<i>target</i>
+</b>
+</code>
+<br />
+<br />
+     where <b>
+<i>target</i>
+</b> is nothing (for the default target) or one of the following.</p>
+     <table border="1">
+       <tr>
+<td class="content" rowspan="1" colspan="1">
+<b>Ant Target</b>
+</td>
+<td class="content" rowspan="1" colspan="1">
+<b>What Ant does</b>
+</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">compile</td>
+<td class="content" rowspan="1" colspan="1">compiles Xalan-Java in build/classes.</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">jar (the default)</td>
+<td class="content" rowspan="1" colspan="1">creates xalan.jar and serializer.jar in the build directory</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">serializer.jar</td>
+<td class="content" rowspan="1" colspan="1">creates serializer.jar in the build directory</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">xsltc.jar</td>
+<td class="content" rowspan="1" colspan="1">creates xsltc.jar in the build directory</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">samples</td>
+<td class="content" rowspan="1" colspan="1">compiles and jars the sample apps in build/xalansamples.jar</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">servlet</td>
+<td class="content" rowspan="1" colspan="1">compiles and jars the sample servlet in build/xalanservlet.jar</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">docs</td>
+<td class="content" rowspan="1" colspan="1">creates the HTML User's Guide in build/docs</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">javadocs</td>
+<td class="content" rowspan="1" colspan="1">generates the API documentation in ./build/docs/apidocs</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">fulldist</td>
+<td class="content" rowspan="1" colspan="1">generates a complete distribution tree with zip and tar.gz distribution files in build</td>
+</tr>
+       <tr>
+<td class="content" rowspan="1" colspan="1">clean</td>
+<td class="content" rowspan="1" colspan="1">purges the build and distribution</td>
+</tr> 
+  </table>
+  <p>If you build a target that depends on other targets, Ant creates those other targets in the correct order.
+  </p>
+  <p>
+<b>Building without Ant</b>
+</p>
+  <p>If you want to do the build without Ant, keep the following in mind:
+  </p>
+     <ul>
+     <li>Set the classpath to include the src directory, <code>xercesImpl.jar</code>, and <code>xml-apis.jar</code>.</li>
+     <li>Use a Java compiler (such as the IBM Just-In-Time compiler or the Sun javac) to compile all the .java files in the src
+     tree. </li>
+     <li>Use the <code>jar</code> utility to store the resulting .class files in <code>xalan.jar</code>
+</li>
+     </ul>
+
+
+
+<a name="samples">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Rebuilding a sample application</h3>
+   <p>If you modify a sample and want to recompile it, you can run the Java compiler in the directory containing the
+   example. Be sure <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, and <code>xercesImpl.jar</code> are on the classpath. </p>
+   <p>To recompile and run the class files in the servlet subdirectory, the javax.servlet and 
+   javax.servlet.http packages must also be on the classpath. These packages are available via
+   the <code>servlet.jar</code> file found in Apache Tomcat ( see <a href="http://tomcat.apache.org/">The Jakarta Site - Apache Tomcat</a> ).</p>
+   <p>After recompiling a sample, you can use the jar utility to place your new .class files in
+    <code>xalansamples.jar</code>.</p>
+    <p>You can use Ant with the samples target to recompile the samples and place the unpackaged class files in <code>xalansamples.jar</code>.
+     For more information, see <a href="#ant">Using Ant</a>.</p>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">To rebuild (and to run) the sample servlet, the javax.servlet and javax.servlet.http packages must be on your
+    classpath.</td>
+</tr>
+</table>
+
+
+<a name="previous-releases">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Where do I download previous releases?</h3>
+  <p>
+    To access previous releases, see the <a href="http://archive.apache.org/dist/xalan/xalan-j/">xalan-j archive directory</a>.
+  </p>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/dtm.html b/xalan-j/dtm.html
new file mode 100644
index 0000000..5cf815f
--- /dev/null
+++ b/xalan-j/dtm.html
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Xalan-Java DTM</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Xalan-Java DTM</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>DTM<br />
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Xalan-Java DTM</h2>
+<ul>
+  <li>
+<a href="#intro">Introduction</a>
+</li>
+  <li>
+<a href="#settings">Performance settings</a>
+</li>  
+</ul>
+<a name="intro">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>
+  <p>The Document Table Model (DTM) is an interface to a Document Model designed specifically for 
+  the needs of our XPath and XSLT implementations. The motivation behind this model is to optimize 
+  performance and minimize storage.</p>
+  <p>Specifically, DTM avoids the overhead of instantiating the objects the standard DOM requires to 
+  represent a tree of nodes. DTM uses unique integer "handles" to identify nodes, integer ID values 
+  to represent URLs, local names, and expanded names, and integer index and length references to a 
+  string buffer to represent the text value of each node.</p>
+  <p>In general, the "read" APIs to DTM resemble those of the W3C Document Object Model 
+  (<a href="http://www.w3.org/DOM">DOM</a>) interface. However, in place of the DOM object tree of nodes, DTM 
+  uses integer arrays and string pools to represent the structure and content of the XML document to 
+  be transformed. DTM also structures the document's contents slightly differently, to better match 
+  the XPath data model; some details and constraints present in a standard DOM are suppressed, and a 
+  few XPath-specific features are added.</p>
+  <p>DTM is intended to be a read-only model, and so does not attempt to replicate the DOM's write or 
+  create-node operations.</p> 
+  <p>The details of constructing a DTM vary depending on which implementation of this API you are 
+  using. Two reference implementations are currently available:</p>
+  <ul>
+    <li>SAX2DTM (built via a SAX stream)</li>
+    <li>DOM2DTM (which provides DTM access to an existing DOM)</li>
+  </ul> 
+  <p>Both DTMs can be built incrementally (see <a href="#incremental">incremental transforms</a>). 
+  When operating incrementally, the DTM allows the Xalan-Java processor to begin reading the DTM and 
+  performing the transformation while the DTM is still being assembled (for example, while the parser 
+  is still parsing the XML source), and attempts to do only as much work as is needed to support the
+  read requests actually made by the XPath or XSLT processor.</p>
+  <p>For the convenience of user-written extensions, a proxy mechanism presents the contents of the 
+  DTM as a read-only subset of the DOM.</p>
+
+
+<a name="settings">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>DTM performance settings</h3>
+  <p>Xalan-Java implements two DTM performance features that you can control with the TransformerFactory
+  <a href="apidocs/javax/xml/transform/TransformerFactory.html#setAttribute(java.lang.String,    java.lang.Object)">setAttribute(String name, Object value)</a> method.</p>
+  <table border="1">
+  <tr>
+    <th class="content" rowspan="1" colspan="1">Attribute name (URL)</th>
+    <th class="content" rowspan="1" colspan="1">Default setting</th>
+    <th class="content" rowspan="1" colspan="1">Description</th>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">"http://xml.apache.org/xalan/features/incremental"</td>
+    <td class="content" rowspan="1" colspan="1">false</td>
+    <td class="content" rowspan="1" colspan="1">
+<a href="#incremental">incremental transforms</a>
+</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">"http://xml.apache.org/xalan/features/optimize"</td>
+    <td class="content" rowspan="1" colspan="1">true</td>
+    <td class="content" rowspan="1" colspan="1">
+<a href="#optimized">optimized transforms</a>
+</td>
+  </tr> 
+  </table>
+  <p>Both of these DTM settings are described below.</p>
+  
+  <p> </p>
+  <a name="incremental">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>'http://xml.apache.org/xalan/features/incremental'</h4>
+   <p>Set this feature to true to enable incremental transformations. If set to false (the default), 
+      the transform and the parse are performed on the same thread.</p>
+   <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt"> When set to true: If the parser is Xerces, we perform an incremental transform on a single 
+          thread using the Xerces "parse on demand" feature. If the parser is not Xerces, we run the
+          transform in one thread and the parse in another. Exception: if the parser is not Xerces 
+          and the XML source is a DOMSource, setting this feature to true has no effect.</td>
+</tr>
+</table>
+   <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt"> The incremental feature is not currently supported by the XSLT Compiling processor, XSLTC.</td>
+</tr>
+</table>
+   <p>Example: setting incremental transforms to true (for the XSLT Interpretive processor):</p>
+   <blockquote class="source">
+<pre>javax.xml.transform.TransformerFactory tFactory =
+            javax.xml.transform.TransformerFactory.newInstance();
+ // setAttribute() takes a String and an Object.            
+  tFactory.setAttribute
+            ("http://xml.apache.org/xalan/features/incremental", 
+             java.lang.Boolean.TRUE);
+  ...</pre>
+</blockquote>
+  
+  
+  <a name="optimized">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>'http://xml.apache.org/xalan/features/optimize'</h4>
+   <p>When set to true (the default), this feature enables optimizations that may involve structural 
+      rewrites of the stylesheet. Any tool that requires direct access to the stylesheet structure 
+      should set this feature to false.</p>
+  
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>DTM node location tracking setting</h3>
+  <p>The DTM also provides a setting that you can use to track location information for each node in 
+     the source document. See <a href="features.html#source_location">"http://apache.org/xalan/features/source_location"</a>
+</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/extensions.html b/xalan-j/extensions.html
new file mode 100644
index 0000000..4f965db
--- /dev/null
+++ b/xalan-j/extensions.html
@@ -0,0 +1,1663 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Xalan-Java Extensions</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Xalan-Java Extensions</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>Extensions<br />
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Xalan-Java Extensions</h2>
+<ul>
+<li>
+<a href="#intro">Introduction</a>
+</li>
+<li>
+<a href="#supported-lang">Supported languages</a>
+</li>
+<li>
+<a href="#basic-pattern">The basic pattern</a>
+</li>
+<li>
+<a href="#setup-runtime">Setting up the runtime environment</a>
+</li>
+<li>
+<a href="#basic-syntax">Syntax</a>
+</li>
+<li>
+<a href="#ext-elements">Using an extension element</a>
+</li>
+<li>
+<a href="#ext-functions">Using extension functions</a>
+</li>
+<li>
+<a href="#java-namespace">Alternative: using the abbreviated syntax for extensions implemented in Java</a>
+</li>
+<li>Examples: <a href="#ex-basic">basic JavaScript example</a>, <a href="#ex-java-namespace">using the java namespace</a>, <a href="#ex-java">using a Java Hashtable</a>, <a href="#ex-javascript">using a JavaScript array</a>
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Unless otherwise specified, the Xalan-Java extensions discussed in this section refers to 
+the Xalan-Java Interpretive processor. See <a href="extensions_xsltc.html">Extensions for XSLTC</a> for 
+more information.</td>
+</tr>
+</table>
+<br />
+<a name="intro">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>
+  <p>For those situations where you would like to augment the functionality of XSLT with calls to a 
+     procedural language, Xalan-Java supports the creation and use of extension elements and extension 
+     functions. Xalan-Java also provides a growing <a href="extensionslib.html">extensions library</a> 
+     available for your use. An extension (a collection of elements and functions) inhabits a namespace, 
+     either a namespace you declare and designate as an extensions namespace, or one of the predefined 
+     namespaces that Xalan-Java provides. For information about XML namespaces, see 
+     <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces in XML</a>.</p>
+  <p>
+<b>Extension elements:</b>  Unlike a literal result element, which the stylesheet simply 
+     transfers to the result tree, an extension element performs an action. For example, you can use 
+     the Redirect extension elements shipped with Xalan-Java to redirect portions of your transformation 
+     output to one or more files. Extension elements may contain attributes, text nodes, other elements, 
+     basically any valid XML. Extension elements may perform quite sophisticated actions, given that 
+     the extension routine (the implementation) has direct access to the XSLT processor context object 
+     and to the element. In many cases the implementation returns void or null; if it does return a 
+     value, that value is placed in the transformation result tree.</p>
+  <p>
+<b>Extension functions:</b>  You can think of extension functions as extending the core library 
+     of functions that XPath provides. An extension function passes arguments to the extension 
+     implementation and returns a value. You can use extension functions to return values that XSLT 
+     can interact with directly (node-set, result tree fragment, string, boolean, and number) as well 
+     as values (of any type) that you pass in turn to other extension functions. Extension functions 
+     written in Java can also access certain items in the XSLT execution environment through an 
+     <a href="apidocs/org/apache/xalan/extensions/ExpressionContext.html">ExpressionContext</a> 
+     interface.</p>
+  <p>XSLT extensions are specified in the <a href="http://www.w3.org/TR/xslt#extension">XSLT 
+     Recommendation</a>.  This document focuses on the Xalan-Java implementation of those 
+     requirements, not on XSLT extensions in general. For additional information on extensions, 
+     consult the Recommendation or the other resources listed in <a href="overview.html#uptospeed">Getting up to speed with XSLT</a>.</p>
+
+<a name="supported-lang">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Supported languages</h3>
+<p>Extensions written in Java are directly supported by Xalan-Java.  For extensions written in languages 
+   other than Java, Xalan-Java uses the <a href="http://jakarta.apache.org/bsf/index.html">Bean Scripting Framework (BSF)</a>, an architecture for incorporating 
+   scripting into Java applications and applets. BSF allows an application to take advantage of 
+   scripting while being independent of any specific scripting language. To date, we have tested 
+   extensions implemented in JavaScript. The set of scripting languages supported using BSF is determined
+   by the BSF implementation you are using. If you are using Jakarta BSF, please refer to 
+   <a href="http://jakarta.apache.org/bsf/index.html">Jakarta BSF Supported Languages</a> for other
+   scripting languages with BSF support.</p>
+<p>BSF requires bsf.jar on the classpath. This JAR file is no longer shipped with Xalan-Java. It can be 
+   downloaded from <a href="http://jakarta.apache.org/bsf/index.html">the Apache Jakarta BSF project 
+   web site</a>. It is required only if you have extensions written in languages other than Java. 
+   The additional JAR files or DLLs required to support extensions written in other languages are 
+   listed at the Jakarta BSF web site as <a href="http://jakarta.apache.org/bsf/projects.html"> 
+   Related Projects </a> . These files are available from the sources indicated and are not shipped 
+   with Xalan-Java. </p>
+<a name="BSFManager">‌</a>
+<p>By default Xalan-Java assumes BSF support is provided by the Jakarta BSF implementation. There are three 
+   ways of specifying the class that provides the BSF Manager service:.</p>
+<ul>
+<li>Set the system property org.apache.xalan.extensions.bsf.BSFManager;</li>
+    <li>In the property file "/lib/xalan.properties" in the JRE directory, add the key 
+    org.apache.xalan.extensions.bsf.BSFManager with the value that is the fully qualified BSF 
+    implementation class name;</li>
+    <li>Include a META-INF/services/org.apache.xalan.extensions.bsf.BSFManager 
+    file in your classpath;</li>
+</ul>
+<a name="basic-pattern">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The basic pattern</h3>
+<p>Let's examine a simple example. The stylesheet below uses an extension element and an 
+   extension function to transform an element in the XML source into a statement in the output 
+   indicating the date by which a customer can expect a response to a given enquiry.</p>
+
+<p>The source element contains a numdays attribute. The extension element contains a multiplier 
+   attribute, which is used to set a variable in the extension. The extension function computes the 
+   deadline, that is the current date plus numdays * multiplier. So for &lt;deadline numdays="3"/&gt; 
+   (in the XML source) and &lt;my-ext:timelapse multiplier="2"/&gt; (in the stylesheet), the 
+   extension computes a deadline 6 days from now, and the stylesheet template transforms the 
+   deadline element into a string along the lines of <code>&lt;p&gt;We have logged your enquiry 
+   and will respond by April 29, 2000 12:07:16 PM EST.&lt;/p&gt;</code>
+</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The extension function could include both numdays and multiplier as arguments, thus bypassing 
+   the need for the extension element, but the purpose here is to illustrate the usage pattern for 
+   extension elements.</td>
+</tr>
+</table>
+<p>As you review this stylesheet, please note the following:</p>
+<ol>
+  <li>The declaration of the xalan namespace, which provides support for the component and
+      component/script elements:<br />
+<br />
+    <code>xmlns:xalan="http://xml.apache.org/xalan"</code>
+<br />
+<br />
+</li>
+  <li>The declaration of a namespace for this extension:<br />
+<br />
+    <code>xmlns:my-ext="ext1"</code>
+<br />
+<br />
+</li>
+  <li>The designation of this namespace prefix as an extension prefix. This causes any element in the 
+      namespace associated with this prefix to be treated as an extension element rather than a literal 
+      result element.<br />
+<br />
+     <code>extension-element-prefixes="my-ext"</code>
+<br />
+<br />
+</li>
+  <li>The xalan:component with attributes designating the namespace prefix and the elements and
+     functions this extension provides.<br />
+<br />
+</li>
+  <li>The xalan:script subelement with a JavaScript implementation of the extension. For Java
+     extensions, the xalan:script element has a src attribute that you set to identify the Java class.</li>
+</ol>
+<a name="ex-basic">‌</a>   
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;!--Namespaces are global if you set them in the stylesheet element--&gt;
+&lt;xsl:stylesheet 
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+    version="1.0"   
+    xmlns:xalan="http://xml.apache.org/xalan"
+    xmlns:my-ext="ext1"
+    extension-element-prefixes="my-ext"&gt;
+    
+  &lt;!--The component and its script are in the xalan namespace and define the 
+    implementation of the extension.--&gt;
+  &lt;xalan:component prefix="my-ext" elements="timelapse" functions="getdate"&gt;
+    &lt;xalan:script lang="javascript"&gt;
+      var multiplier=1;
+      // The methods or functions that implement extension elements always take 2
+      // arguments. The first argument is the XSL Processor context; the second 
+      // argument is the element node.
+      function timelapse(xslProcessorContext, elem)
+      {
+        multiplier=parseInt(elem.getAttribute("multiplier"));
+        // The element return value is placed in the result tree.
+        // If you do not want a return value, return null.
+        return null;
+      }
+      function getdate(numdays)
+      {
+        var d = new Date();
+        var totalDays = parseInt(numdays) * multiplier;
+        d.setDate(d.getDate() + totalDays);
+        return d.toLocaleString();
+      }
+    &lt;/xalan:script&gt;
+  &lt;/xalan:component&gt;
+      
+  &lt;xsl:template match="deadline"&gt;
+    &lt;p&gt;&lt;my-ext:timelapse multiplier="2"/&gt;We have logged your enquiry and will 
+      respond by &lt;xsl:value-of select="my-ext:getdate(string(@numdays))"/&gt;.&lt;/p&gt;
+  &lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;
+</pre>
+</blockquote>
+
+<a name="setup-runtime">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Setting up the runtime environment</h3>
+<p>To run the preceding example, bsf.jar and js.jar must be on the classpath. Remember that bsf.jar 
+   must be on the classpath to run any extension written in a language other than Java. For extensions 
+   implemented in a scripting language, see the additional requirements in 
+   <a href="#supported-lang">Supported languages</a>.</p>
+
+<a name="basic-syntax">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Syntax</h3>
+<p>You can always use the pattern illustrated above to set up and use extension elements and extension 
+   functions. For extension elements and functions implemented in Java, it is recommended that you use 
+   the abbreviated syntax, described in <a href="#java-namespace">Alternative: using the abbreviated 
+   syntax for extensions implemented in Java</a>. Unless you are using the abbreviated syntax, do 
+   the following:</p>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>1. Declare the xalan namespace</h4>
+<p>
+<br />
+<code>xmlns:xalan="http://xml.apache.org/xalan"</code>
+</p>
+<p>The xalan namespace provides support for the xalan:component element and xalan:script subelement.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The old namespace http://xml.apache.org/xslt is still supported for backward compatibility.</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>2. Declare a unique namespace for each extension prefix</h4>
+<p>
+<br />
+<code>xmlns:<b>
+<i>prefix</i>
+</b>=<b>
+<i>URI</i>
+</b>
+</code>
+</p>
+<p>The <b>
+<i>prefix</i>
+</b> identifies the namespace, and <b>
+<i>URI</i>
+</b> is an arbitrary (but unique) 
+string that matches the value of the prefix attribute of an xalan:component element in the 
+stylesheet.<br />
+Example: <code>xmlns:ext1="xyz"</code>
+<br />
+<br />
+</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>3. If you are using extension elements, designate the extension element prefixes</h4>
+<p>
+<br />This step is required only if you are using extension elements.  If you are using extension 
+functions only, you can skip this step.</p>
+<p>In the stylesheet element, write:</p> 
+<p>
+<code>extension-element-prefixes="<b>
+<i>prefix-1 prefix-2 ...</i>
+</b>"</code>
+</p>
+<p>In a literal result element or extension element include the xsl prefix:</p>
+<p>
+<code>xsl:extension-element-prefixes="<b>
+<i>prefix1 prefix2 ...</i>
+</b>"</code>
+</p>
+<p>Keep in mind that where you declare namespaces and designate extension prefixes determines the scope of those namespaces.To make your extensions available throughout the stylesheet, include these settings and attribute in the stylesheet element.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>4. (Optional) Exclude the extension namespace declaration from the result tree</h4>
+<p>
+<br />By default, namespace declarations are included in the transformation output. To exclude 
+namespaces from the output, use</p>
+<p>
+<code>exclude-result-prefixes="<b>
+<i>prefix-1 prefix-2 ...</i>
+</b>"</code>
+</p>
+<p>in the stylesheet element or</p>
+<p>
+<code>xsl:exclude-result-prefixes="<b>
+<i>prefix-1 prefix-2 ...</i>
+</b>"</code>
+</p> 
+<p>in a literal result element or extension element.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>5. Set up an xalan:component</h4>
+<p>
+<br />In the scope of the xalan namespace declaration:</p>
+<p>
+<code>&lt;xalan:component prefix="<b>
+<i>prefix</i>
+</b>" </code>
+<br />
+   <code>    functions="<b>
+<i>func-1 func-2 ...func-n</i>
+</b>"</code>
+<br /> 
+   <code>    elements="<b>
+<i>elem-1 elem-2 ...elem-n</i>
+</b>"&gt;</code>
+<br />
+   <code>  &lt;!--See xalan:script below--&gt;</code>
+<br />
+   <code>&lt;/xalan:component&gt;</code>
+</p>
+<p>where <b>
+<i>func-1 func-2 ... func-n</i>
+</b> and <b>
+<i>elem-1 elem-2 ... elem-n</i>
+</b> designate the 
+functions and elements the extension provides and the stylesheet uses. You can use the function-available 
+and element-available functions to determine at run time whether a function or element designated in the 
+xalan:component is actually available.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">If the component is implemented in Java, the values of the functions and elements attributes are 
+ignored. The function-available and element-available functions use reflection to examine the actual 
+Java methods.</td>
+</tr>
+</table>
+
+<a name="setup-script">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>6. Set up the xalan:script element</h4>
+<p>
+<br />In each xalan:component, you must include exactly one xalan:script element. If the extension 
+is implemented in JavaScript:</p>
+<p>
+<code>&lt;xalan:script lang="javascript" &gt;</code>
+<br />
+<code>  &lt;!--The implementation script--&gt;</code>
+<br />
+<code>&lt;/xalan:script&gt;</code>
+</p>
+<p>For other scripting languages supported by BSF, use the same approach as for JavaScript.
+The src attribute is also supported in the xalan:script element. If it is present, the script will
+be loaded from the URL specified in the src attribute. Otherwise the script is taken from the text child
+of the xalan:script element.</p>
+<p>If the extension is implemented in Java, you have three choices for the format of the src attribute 
+in the xalan:script element.</p>
+<p>
+<code>&lt;xalan:script lang="javaclass" src="xalan://<b>
+<i>FQCN</i>
+</b>"/&gt;</code>
+<br />where <b>
+<i>FQCN</i>
+</b> is the fully qualified class name.
+<br />Example: <code>&lt;xalan:script lang="javaclass" src="xalan://java.util.Hashtable"/&gt;</code>
+</p>
+<p>
+<code>&lt;xalan:script lang="javaclass" src="xalan://<b>
+<i>PJPN</i>
+</b>"/&gt;</code>
+<br />where <b>
+<i>PJPN</i>
+</b> is the beginning of or the complete name of a java package.
+<br />Example: <code>&lt;xalan:script lang="javaclass" src="java.util"/&gt;</code>
+</p>
+<p>
+<code>&lt;xalan:script lang="javaclass" src="http://xml.apache.org/xalan/java"/&gt;</code>
+</p>
+<p>The different formats for the value of the src attribute when using Java extensions are more fully 
+explained in <a href="#java-namespace-declare">Declare the namespace</a>.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Implicit DTD for xalan:component</h4>
+<blockquote class="source">
+<pre>&lt;!ELEMENT xalan:component (xalan:script)&gt;
+&lt;!ATTLIST xalan:component
+  prefix CDATA #REQUIRED
+  elements NMTOKENS #IMPLIED
+  functions NMTOKENS #IMPLIED&gt;
+
+&lt;!ELEMENT xalan:script (#PCDATA | EMPTY)?&gt;
+&lt;!ATTLIST xalan:script
+  lang CDATA #REQUIRED
+  src CDATA #IMPLIED&gt;</pre>
+</blockquote>
+
+<a name="ext-elements">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using an extension element</h3>
+<p>Extension elements pass the extension two objects:</p>
+<ul>
+<li>
+<a href="apidocs/org/apache/xalan/extensions/XSLProcessorContext.html">
+org.apache.xalan.extensions.XSLProcessorContext</a>, which provides access to the XSL processor, 
+the XML source tree, the stylesheet tree, the current context node, and the current mode (if any).
+<br />
+<br />
+</li>
+<li>
+<a href="apidocs/org/apache/xalan/templates/ElemExtensionCall.html">
+org.apache.xalan.templates.ElemExtensionCall</a>, which provides the API for interacting with 
+the extension element.</li>
+</ul>
+<p>You can use the ElemExtensionCall getAttribute(String name) method, for example, to read element 
+attributes in their raw form.  Use the getAttribute(String name, Node sourceNode, XSLTEngineImpl 
+processor) method to evaluate the attribute as an attribute value template.  Note that the method 
+names are the same but the method signatures are different.  For full details, see the 
+<a href="apidocs/org/apache/xalan/templates/ElemExtensionCall.html">Javadoc</a> for the 
+ElemExtensionCall class.</p>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Implementing an extension element</h4>
+<p>For each extension element in a namespace, the implementation must be a Java method with the 
+following signature, or the scripting language equivalent:</p>
+<p>
+<code>
+<b>
+<i>Type element</i>
+</b>(org.apache.xalan.extensions.XSLProcessorContext, </code>
+<br />
+<code>             org.apache.xalan.templates.ElemExtensionCall extensionElement)</code>
+</p>
+<p>where <b>
+<i>Type</i>
+</b> designates the return type and <b>
+<i>element</i>
+</b> is the local part of the 
+extension element name (the element name without the namespace prefix). In the method signature, you 
+may also use superclasses of the indicated types.</p>
+<p>If the extension element is implemented in a loosely typed scripting language, such as JavaScript, 
+the arguments and return value are untyped.</p>
+<p>
+<b>Caution:</b> The value returned by an extension element is placed in the transformation result. 
+If you are not interested in a return value, use a public void Java method or return null from a 
+scripting language function.</p>
+<p>Java example: <code>public void myElement</code>
+<br />
+<code>         (org.apache.xalan.extensions.XSLProcessorContext, </code>
+<br />
+<code>          org.apache.xalan.templates.ElemExtensionCall extensionElement)</code>
+</p>
+<p>JavaScript example: <code>function myElement(xslProcContext, element)</code>
+</p>
+<p>The <a href="extensionslib.html#redirect">Redirect extension</a> in the extensions 
+library contains three extension elements.</p>
+
+
+<a name="ext-functions">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using extension functions</h3>
+<p>Extension functions may include arguments of any type and return a value of any type.</p>
+<p>XSLT recognizes five data types: node-set, result-tree-fragment, string, boolean, and number. You 
+can use XPath expressions to set variables with values of these types. You can also pass literals for 
+string, boolean, and number arguments. If you want to pass an argument of a type that XSLT does not 
+recognize, use another extension function to return an object of that type. The stylesheet that appears 
+in <a href="#format-date-stylesheet">Formatting a date</a>, for example uses extension functions 
+to return a Date object and a SimpleDateFormat object, and then uses these objects to call another 
+extension function.</p>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Data type mapping and method selection</h4>
+<p>When calling an extension function written in a language other than Java, objects of the following 
+Java classes will always be passed to the extension function:</p>
+  <table border="1">
+    <tr>
+      <th class="content" rowspan="1" colspan="1">XSLT Type</th>
+      <th class="content" rowspan="1" colspan="1">Java Type</th>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Node-Set</td>
+       <td class="content" rowspan="1" colspan="1">org.w3c.dom.traversal.NodeIterator</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">String</td>
+       <td class="content" rowspan="1" colspan="1">java.lang.String</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Boolean</td>
+       <td class="content" rowspan="1" colspan="1">java.lang.Boolean</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Number</td>
+       <td class="content" rowspan="1" colspan="1">java.lang.Double</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Result Tree Fragment</td>
+       <td class="content" rowspan="1" colspan="1">org.w3c.dom.DocumentFragment</td>
+    </tr>
+  </table>
+<p>Any non-XSLT type is passed without conversion.</p>
+<p>When calling an extension function written in Java, the extension function signature can specify 
+any of the indicated Java types, as explained below:</p>
+  <table border="1">
+    <tr>
+      <th class="content" rowspan="1" colspan="1">XSLT Type</th>
+      <th class="content" rowspan="1" colspan="1">Java Types</th>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Node-Set</td>
+       <td class="content" rowspan="1" colspan="1">org.w3c.dom.traversal.NodeIterator, org.w3c.dom.NodeList, org.w3c.dom.Node or its 
+           subclasses, java.lang.String, java.lang.Object, char, [double, float, long, int, short, byte,] 
+           boolean</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">String</td>
+       <td class="content" rowspan="1" colspan="1">java.lang.String, java.lang.Object, char, [double, float, long, int, short, byte,] boolean</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Boolean</td>
+       <td class="content" rowspan="1" colspan="1">boolean, java.lang.Boolean, java.lang.Object, java.lang.String</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Number</td>
+       <td class="content" rowspan="1" colspan="1">double, java.lang.Double, float, long, int, short,char, byte, boolean, java.lang.String, 
+           java.lang.Object</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Result Tree Fragment</td>
+       <td class="content" rowspan="1" colspan="1">org.w3c.dom.traversal.NodeIterator, org.w3c.dom.NodeList, org.w3c.dom.Node or its subclasses, 
+           java.lang.String, java.lang.Object, char, [double, float, long, int, short, byte,] boolean</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">Non-XSLT Type</td>
+       <td class="content" rowspan="1" colspan="1">the native type or any of its superclasses, double, float, long, int, short, char, byte, 
+           java.lang.String</td>
+    </tr>
+  </table>
+<p>When calling extension functions written in Java, Xalan-Java selects the method to call as follows:</p>
+<ol>
+  <li>Xalan-Java selects all methods whose name matches the extension function name as specified in 
+      <a href="#ext-func-calls">Extension function Java calls</a>.</li>
+  <li>From this list of methods, Xalan-Java determines which methods are <b>
+<i>qualified</i>
+</b>.</li>
+  <li>Each qualified method is assigned a score based on the table shown above. To assign the score 
+      to a given method, Xalan-Java examines each of the XSLT argument types in the function invocation 
+      in the stylesheet. For each argument, the appropriate row in the table above is selected. Then, 
+      the corresponding Java parameter type in the method signature in the Java program is scored. 
+      Types which appear earlier in the list are given a higher score.  That is, the list appears in 
+      order of scoring preference from highest to lowest. Types shown in square brackets have equal 
+      priority.</li>
+  <li>The method with the highest score is invoked after the arguments are converted to the appropriate 
+      type. If more than one method has the highest score, an exception is thrown.</li>
+</ol>
+<p>Any extension function written in Java can have a first parameter of 
+type <code>org.apache.xalan.extensions.ExpressionContext</code>. Any method with an 
+ExpressionContext as the first parameter will score higher than any method which does not have an 
+ExpressionContext as a first parameter.</p>
+
+
+<a name="ext-func-retval">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Return values</h4>
+<p>The Xalan-Java extension mechanism examines the class of the value returned from a function and 
+   converts the value into an XSLT type according to the following table:</p>
+  <table border="1">
+    <tr>
+      <th class="content" rowspan="1" colspan="1">Java Types</th>
+      <th class="content" rowspan="1" colspan="1">XSLT Type</th>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">org.w3c.dom.traversal.NodeIterator<br />org.apache.xml.dtm.DTM<br />org.apache.xml.dtm.DTMAxisIterator<br />org.apache.xml.dtm.DTMIterator<br />org.w3c.dom.Node</td>
+       <td class="content" rowspan="1" colspan="1">Node-Set</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">java.lang.String</td>
+       <td class="content" rowspan="1" colspan="1">String</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">java.lang.Boolean</td>
+       <td class="content" rowspan="1" colspan="1">Boolean</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">java.lang.Number</td>
+       <td class="content" rowspan="1" colspan="1">Number</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">org.w3c.dom.DocumentFragment</td>
+       <td class="content" rowspan="1" colspan="1">Result Tree Fragment</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">org.apache.xpath.objects.XObject</td>
+       <td class="content" rowspan="1" colspan="1">Specified XSLT Type</td>
+    </tr>
+    <tr>
+       <td class="content" rowspan="1" colspan="1">All other classes</td>
+       <td class="content" rowspan="1" colspan="1">Non-XSLT Type</td>
+    </tr>
+  </table>
+  <p>Note that the above test is applied using <code>instanceof</code> so that any subclasses of the 
+     classes listed above will be treated the same as the listed superclass.  For example, a 
+     <code>java.lang.Double</code> will be treated the same as a <code>java.lang.Number</code> and 
+     will be converted to an XSLT Number.</p>
+  <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The return value conversion can somtimes cause confusion.  For example, if your 
+     extension function returns an object that is a subclass of NodeIterator, that object will be 
+     converted by Xalan-Java to an XSLT Node-Set.  If you later attempt to treat that object as a 
+     non-XSLT object of your original class and try to invoke a method on that object, your method 
+     invocation will fail.</td>
+</tr>
+</table>
+
+
+<a name="ext-func-calls">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Extension function Java calls</h4>
+<p>The technique for instantiating Java objects and calling Java methods depends on the format of the 
+   extension namespace that was declared.  See <a href="#java-namespace-declare">Declare the 
+   namespace</a> for the three different formats of namespace declarations for Java extensions. 
+   For each namespace format, the section below describes how to instantiate an object, how to invoke 
+   an instance method, and how to invoke a static method. The sections below explain, for each syntax, 
+   which methods are <b>
+<i>qualified</i>
+</b> for method selection as described in the preceeding section.</p>
+<h5>Class format namespace</h5>
+<p>
+<br />
+<b>To create an instance of an object</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:new (<b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix. A new instance is to be created with 
+   the <b>
+<i>args</i>
+</b> constructor arguments (if any). All constructor methods are qualified for method 
+   selection.
+<br />Example: <code>&lt;xsl:variable name="myType"</code>
+<br />
+<code>       select="my-class:new()"&gt;</code>
+</p>
+
+<p>
+<b>To invoke an instance method on a specified object</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>methodName</i>
+</b> (<b>
+<i>object</i>
+</b>, <b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix and <b>
+<i>methodName</i>
+</b> is the name of 
+   the method to invoke on <b>
+<i>object</i>
+</b> with the <b>
+<i>args</i>
+</b> arguments. <b>
+<i>object</i>
+</b> must 
+   be an object of the class indicated by the namespace declaration.  Otherwise, the case shown 
+   immediately below will apply. Only instance methods with  the name <b>
+<i>methodName</i>
+</b> are 
+   qualified methods. If a matching method is found, <b>
+<i>object</i>
+</b> will be used to identify the 
+   object instance and <b>
+<i>args</i>
+</b> will be passed to the invoked method.
+<br />
+Example: <code>&lt;xsl:variable name="new-pop"</code>
+<br />
+<code>     select="my-class:valueOf($myType, string(@population))"&gt;</code>
+</p>
+
+<p>
+<b>To invoke an instance method on a default object</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>methodName</i>
+</b> (<b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix and <b>
+<i>methodName</i>
+</b> is the name of 
+the method to invoke with the <b>
+<i>args</i>
+</b> arguments. The first <b>
+<i>arg</i>
+</b>, if any, must not be 
+an object of the class indicated by the namespace declaration.  Otherwise, the case shown immediately 
+above will apply. Only instance methods with the name <b>
+<i>methodName</i>
+</b> are qualified methods. If 
+a matching method is found, a default instance of the class will be created if it does not already 
+exist.
+<br />
+Example: <code>&lt;xsl:variable name="new-pop"</code>
+<br />
+<code>     select="my-class:valueOf(string(@population))"&gt;</code>
+</p>
+
+<p>
+<b>To invoke a static method</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>methodName</i>
+</b> (<b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix and <b>
+<i>methodName</i>
+</b> is the name of 
+the method to invoke with the <b>
+<i>args</i>
+</b> arguments. Only static methods with the name 
+<b>
+<i>methodName</i>
+</b> are qualified methods. If a matching method is found, <b>
+<i>args</i>
+</b> will 
+be passed to the invoked static method.
+<br />
+Example: <code>&lt;xsl:variable name="new-pop"</code>
+<br />
+<code>     select="my-class:printit(string(@population))"&gt;</code>
+</p>
+
+<h5>Package format namespace</h5>
+<p>
+<br />
+<b>To create an instance of an object</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>subpackage</i>
+</b>.<b>
+<i>class</i>
+</b>.new (<b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix, <b>
+<i>subpackage</i>
+</b> is the rest of the 
+package name (the beginning of the package name was in the namespace declaration), and <b>
+<i>class</i>
+</b> 
+is the name of the class. A new instance is to be created with the <b>
+<i>args</i>
+</b> constructor 
+arguments (if any). All constructor methods are qualified for method selection.
+<br />Example: <code>&lt;xsl:variable name="myType"</code>
+<br />
+<code>       select="my-package:extclass.new()"&gt;</code>
+</p>
+
+<p>
+<b>To invoke an instance method on a specified instance</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>methodName</i>
+</b> (<b>
+<i>object</i>
+</b>, <b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix and <b>
+<i>methodName</i>
+</b> is the name of 
+the method to invoke on <b>
+<i>object</i>
+</b> with the <b>
+<i>args</i>
+</b> arguments. Only instance methods of 
+the <b>
+<i>object</i>
+</b> with the name <b>
+<i>methodName</i>
+</b> are qualified methods. If a matching method 
+is found, <b>
+<i>object</i>
+</b> will be used to identify the object instance and <b>
+<i>args</i>
+</b> will be 
+passed to the invoked method.
+<br />
+Example: <code>&lt;xsl:variable name="new-pop"</code>
+<br />
+<code>     select="my-package:valueOf($myType, string(@population))"&gt;</code>
+</p>
+
+<p>
+<b>To invoke a static method</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>subpackage</i>
+</b>.<b>
+<i>class</i>
+</b>.<b>
+<i>methodName</i>
+</b> (<b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix, <b>
+<i>subpackage</i>
+</b> is the rest of 
+the package name (the beginning of the package name was in the namespace declaration), <b>
+<i>class</i>
+</b> 
+is the name of the class, and <b>
+<i>methodName</i>
+</b> is the name of the method to invoke with the 
+<b>
+<i>args</i>
+</b> arguments. Only static methods with the name <b>
+<i>methodName</i>
+</b> are qualified 
+methods. If a matching method is found, <b>
+<i>args</i>
+</b> will be passed to the invoked static method.
+<br />
+Example: <code>&lt;xsl:variable name="new-pop"</code>
+<br />
+<code>     select="my-package:extclass.printit(string(@population))"&gt;</code>
+</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Unlike the class format namespace, there is no concept of a default object since the namespace 
+declaration does not identify a unique class.</td>
+</tr>
+</table>
+
+<h5>Java format namespace</h5>
+<p>
+<br />
+<b>To create an instance of an object</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>FQCN</i>
+</b>.new (<b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix for the Java namespace and <b>
+<i>FQCN</i>
+</b> 
+is the fully qualified class name of the class whose constructor is to be called. A new instance is to 
+be created with the <b>
+<i>args</i>
+</b> constructor arguments (if any). All constructor methods are 
+qualified for method selection.
+<br />Example: <code>&lt;xsl:variable name="myHash"</code>
+<br />
+<code>       select="java:java.util.Hashtable.new()"&gt;</code>
+</p>
+
+<p>
+<b>To invoke an instance method on a specified instance</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>methodName</i>
+</b> (<b>
+<i>object</i>
+</b>, <b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix and <b>
+<i>methodName</i>
+</b> is the name of 
+the method to invoke on <b>
+<i>object</i>
+</b> with the <b>
+<i>args</i>
+</b> arguments. Only instance methods of 
+the <b>
+<i>object</i>
+</b> with the name <b>
+<i>methodName</i>
+</b> are qualified methods. If a matching method 
+is found, <b>
+<i>object</i>
+</b> will be used to identify the object instance and <b>
+<i>args</i>
+</b> will be 
+passed to the invoked method.
+<br />
+Example: <code>&lt;xsl:variable name="new-pop"</code>
+<br />
+<code>     select="java:put($myHash, string(@region), $newpop)"&gt;</code>
+</p>
+
+<p>
+<b>To invoke a static method</b>:
+<br />
+<code>
+<b>
+<i>prefix</i>
+</b>:<b>
+<i>FQCN</i>
+</b>.<b>
+<i>methodName</i>
+</b> (<b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>prefix</i>
+</b> is the extension namespace prefix, <b>
+<i>FQCN</i>
+</b> is the fully qualified 
+class name of the class whose static method is to be called, and <b>
+<i>methodName</i>
+</b> is the name of 
+the method to invoke with the <b>
+<i>args</i>
+</b> arguments. Only static methods with the name 
+<b>
+<i>methodName</i>
+</b> are qualified methods. If a matching method is found, <b>
+<i>args</i>
+</b> will be 
+passed to the invoked static method.
+<br />
+Example: <code>&lt;xsl:variable name="new-pop"</code>
+<br />
+<code>     select="java:java.lang.Integer.valueOf(string(@population))"&gt;</code>
+</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Unlike the class format namespace, there is no concept of a default object since the namespace 
+declaration does not identify a unique class.</td>
+</tr>
+</table>
+
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Passing Nodes to java</h4>
+<p>Please keep in mind that <b>all</b> LocationPath expressions return a node-set, even if the 
+expression only returns a single attribute or a text node (node-sets with one member). You can use 
+the XSLT string() function (as in the syntax examples above) to convert a node-set value to string, 
+and the number() function to convert a node-set value to number (a double).</p>
+<p>If you want to pass a node-set to an extension function, set up a Java method to accept an 
+org.w3c.dom.NodeList (or an org.apache.xpath.NodeSet, which implements NodeList, if you want to modify 
+the nodes).</p>
+<p>Suppose, for example, you have a myExtensions.ProcessNodes class with the following doSomething 
+method:</p>
+<p>
+<code>public static boolean doSomething(org.w3c.dom.NodeList nList)</code>
+</p>
+<p>Assuming you set up this extension in the node-ext namespace, any of the following extension calls 
+from a stylesheet are syntactically possible:</p>
+<p>
+<code>&lt;!--Process the current node--&gt;</code>
+<br />
+<code>&lt;xsl:variable name="success" select="node-ext:MyExtensions.ProcessNodes.doSomething(.)"/&gt;</code>
+</p>
+<p>
+<code>&lt;!--Process all nodes in current context--&gt;</code>
+<br />
+<code>&lt;xsl:variable name="success" select="node-ext:MyExtensions.ProcessNodes.doSomething(*)"/&gt;</code>
+</p>
+<p>
+<code>&lt;!-- Process all nodes --&gt;</code>
+<br />
+<code>&lt;xsl:variable name="success" select="node-ext:MyExtensions.ProcessNodes.doSomething(/*)"/&gt;</code>
+</p>
+<p>
+<code>&lt;!--Process the foo/baz nodes in current context --&gt;</code>
+<br />
+<code>&lt;xsl:variable name="success" select="node-ext:MyExtensions.ProcessNodes.doSomething(foo/baz)"/&gt;</code>
+</p>
+<p>
+<code>&lt;!--Process the/foo/baz and /bar/saz nodes --&gt;</code>
+<br />
+<code>&lt;xsl:variable name="success" select="node-ext:MyExtensions.ProcessNodes.doSomething(/foo/baz | /bar/saz)"/&gt;</code>
+</p>
+<p>The NodeList is in fact a list of references into the XML document, so keep in mind that 
+getNextSibling(), for example, gets you the next sibling in the document, which may not be the next 
+Node in the NodeList.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Implementing extension functions</h4>
+<p>For each extension function in a namespace which is implemented in a language other than Java, the 
+implementation must include a method with the following signature, or the scripting language 
+equivalent:</p>
+<p>
+<code>public <b>
+<i> object function</i>
+</b>(<b>
+<i>args</i>
+</b>)</code>
+</p>
+<p>where <b>
+<i>object</i>
+</b> is the return type, <b>
+<i>function</i>
+</b> is the local part of the extension 
+function name (the function name without the namespace prefix), and <b>
+<i>args</i>
+</b> correspond to the 
+arguments in the function call.</p>
+<p>In addition, for extension functions implemented in Java, the implementation may include either a 
+Java method with the signature shown above or one with the following signature:</p>
+<p>
+<code>public <b>
+<i> object function</i>
+</b>(org.apache.xalan.extensions.ExpressionContext, 
+<b>
+<i>args</i>
+</b>)</code>
+</p>
+
+<a name="java-namespace">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Alternative: using the abbreviated syntax for extensions implemented in Java</h3>
+<p>For extension functions and extension elements implemented in Java, Xalan-Java permits an abbreviated 
+syntax. When you use the abbreviated syntax, you do not use an xalan:component to designate the 
+functions.</p>
+<p>The abbreviated syntax supports the use of extension functions and extension elements implemented 
+in Java. You cannot use this syntax with extensions implemented in JavaScript or another scripting 
+language.</p>
+<a name="java-namespace-declare">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Declare the namespace</h4>
+<p>Declare the namespace for your extensions using one of the following three formats. The 
+technique for invoking an extension for each format is explained in 
+<a href="#ext-func-calls">Extension function Java calls</a>.</p>
+<p>
+<b>class format:</b> <code>xmlns:my-class="xalan://<b>
+<i>FQCN</i>
+</b>"</code>
+</p>
+<p>where <b>
+<i>FQCN</i>
+</b> is the fully qualified class name.
+<br />Examples: <code>xmlns:my-class="xalan://java.util.Hashtable"</code>
+<br />               
+<code>xmlns:my-class="xalan://mypackage.myclass"</code>
+</p>
+<p>
+<b>package format:</b> <code>xmlns:my-class="xalan://<b>
+<i>PJPN</i>
+</b>"</code>
+</p>
+<p>where <b>
+<i>PJPN</i>
+</b> is a partial java package name.  That is, it is the beginning of or the 
+complete name of a java package.
+<br />Examples: <code>xmlns:my-package="xalan://java.util"</code>
+<br />               
+<code>xmlns:my-package="xalan://mypackage"</code>
+</p>
+<p>
+<b>Java format:</b> <code>xmlns:java="http://xml.apache.org/xalan/java"</code>
+</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The old namespace http://xml.apache.org/xslt/java is still supported for backward compatibility.
+</td>
+</tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Although the namespace declarations for the class and package formats are shown with the 
+xalan:// prefix, the current implementation for those formats will simply use the string to the right 
+of the rightmost forward slash as the Java class name. This format, however, is the preferred 
+format for extension namespace declarations.</td>
+</tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The class: prefix which was sometimes required in earlier versions of Xalan-Java is no longer 
+required.</td>
+</tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">These formats are also available when coding the src attribute of the xalan:script element 
+as explained in <a href="#setup-script">Set up the xalan:script element</a>.</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Use the namespace when you make extension calls</h4>
+<p>Use the declared prefix with the syntax described in <a href="#ext-func-calls">Extension 
+function Java calls</a>.</p>
+<p>That is all. You do not include an xalan:component element. Using the abbreviated syntax clearly 
+involves less setup than using the xalan:component/xalan:script approach.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">We recommend that, for extensions coded in Java, the abbreviated syntax should always be used 
+since the xalan:component/xalan:script constructs add no functionality.</td>
+</tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The abbreviated syntax is supported in XSLTC, but the xalan:component/xalan:script constructs 
+are not.</td>
+</tr>
+</table>
+<a name="ex-java-namespace">‌</a> 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Example: Formatting a date</h4>
+<p>This example uses extension functions to call the SimpleDateFormat class and the IntDate class. 
+IntDate uses String arguments to set up a Date object:</p>
+<blockquote class="source">
+<pre>import java.util.Date;
+import java.util.Calendar;
+
+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();
+    }
+}</pre>
+</blockquote>
+<p>The template transforms date elements with four attributes. For example, it transforms 
+<code>&lt;date format="EEEE, MMM dd, yyyy" year="2000" month="4" day="27"/&gt;</code> 
+into &lt;p&gt;Date: Thursday, April 27, 2000.&lt;/p&gt;.</p>
+<p>As you review this stylesheet, please keep the following in mind:</p>
+ <ul>
+  <li>The exclude-result-prefixes stylesheet attribute prevents the java namespace declaration from
+   appearing in the output.</li>
+  <li>The XSLT type returned by any LocationPath expression is node-set, so the XSLT string
+    function is used to convert the format, year, month, and day attribute values from node-sets to
+    strings.</li>
+  <li>The format attribute provides a String argument for constructing a java.text.SimpleDateFormat
+    object.</li>
+    <li>The IntDate class uses String values provided by the year, month, and day attributes, to set the
+    date. XSLT can pass number values, but these are converted into doubles.</li>
+  <li>The formatter variable holds a SimpleDateFormat object, and the date variable holds a Date object.
+    XSLT does not understand either of these types, but they are used to call the SimpleDateFormat format
+     method. In that call, $formatter is the object, and $date is the argument. The syntax for calling
+     Java constructors and methods is described above in <a href="#ext-func-calls">Extension 
+     function Java calls</a>.</li>    
+ </ul>
+<a name="format-date-stylesheet">‌</a>   
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet 
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+    version="1.0"   
+    xmlns:java="http://xml.apache.org/xalan/java"
+    exclude-result-prefixes="java"&gt;
+    
+  &lt;!--Other templates for transforming the rest of
+                                            the XML source documents--&gt;
+  
+  &lt;xsl:template match="date"&gt; 
+    &lt;xsl:variable name="year" select="string(./@year)"/&gt;
+    &lt;xsl:variable name="month" select="string(./@month)"/&gt; 
+    &lt;xsl:variable name="day" select="string(./@day)"/&gt;          
+    &lt;xsl:variable name="format" select="string(./@format)"/&gt;
+
+    &lt;xsl:variable name="formatter"       
+        select="java:java.text.SimpleDateFormat.new($format)"/&gt;
+
+    &lt;xsl:variable name="date" 
+        select="java:IntDate.getDate($year, $month, $day)"/&gt;
+
+    &lt;p&gt;Date: &lt;xsl:value-of select="java:format($formatter, $date)"/&gt;&lt;/p&gt;
+  &lt;/xsl:template&gt;
+&lt;/xsl:stylesheet&gt;  
+</pre>
+</blockquote>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Examples: using Java and JavaScript to implement the same extension</h3>
+<p>This section contains two examples. The first example uses a Java extension to transform a set of 
+name elements  into an alphabetical and numbered list. The second example uses a JavaScript script 
+to do the same. Both examples include equivalent extension elements and an extension function.</p>
+<a name="ex-java">‌</a> 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Java implementation</h4>
+<p>MyCounter.java</p>
+<blockquote class="source">
+<pre>Import java.util.*;
+
+public class MyCounter {
+  Hashtable counters = new Hashtable ();
+
+  public MyCounter () 
+  {}
+
+  public void init
+             ( org.apache.xalan.extensions.XSLProcessorContext context,
+               org.apache.xalan.templates.ElemExtensionCall extElem ) 
+  {
+    String name = extElem.getAttribute("name");
+    String value = extElem.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.apache.xalan.templates.ElemExtensionCall extElem) 
+  {
+    String name = extElem.getAttribute("name");
+    Integer cval = (Integer) counters.get(name);
+    int nval = (cval == null) ? 0 : (cval.intValue () + 1);
+    counters.put (name, new Integer (nval));
+  }
+}
+</pre>
+</blockquote>
+<p>An XML source document:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;doc&gt;
+  &lt;name first="David" last="Marston"/&gt;
+  &lt;name first="David" last="Bertoni"/&gt;
+  &lt;name first="Donald" last="Leslie"/&gt;
+  &lt;name first="Emily" last="Farmer"/&gt;
+  &lt;name first="Jack" last="Donohue"/&gt;
+  &lt;name first="Myriam" last="Midy"/&gt;
+  &lt;name first="Paul" last="Dick"/&gt;
+  &lt;name first="Robert" last="Weir"/&gt;
+  &lt;name first="Scott" last="Boag"/&gt;
+  &lt;name first="Shane" last="Curcuru"/&gt;
+&lt;/doc&gt;</pre>
+</blockquote>
+<p>The stylesheet:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt; 
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:xalan="http://xml.apache.org/xalan"
+                xmlns:counter="MyCounter"
+                extension-element-prefixes="counter"
+                version="1.0"&gt;
+
+  &lt;xalan:component prefix="counter"
+                   elements="init incr" functions="read"&gt;
+    &lt;xalan:script lang="javaclass" src="xalan://MyCounter"/&gt;
+  &lt;/xalan:component&gt;
+
+  &lt;xsl:template match="/"&gt;
+    &lt;HTML&gt;
+      &lt;H1&gt;Names in alphabetical order&lt;/H1&gt;
+      &lt;counter:init name="index" value="1"/&gt;
+      &lt;xsl:for-each select="doc/name"&gt;
+        &lt;xsl:sort select="@last"/&gt;
+        &lt;xsl:sort select="@first"/&gt;
+        &lt;p&gt;
+        &lt;xsl:text&gt;[&lt;/xsl:text&gt;
+        &lt;xsl:value-of select="counter:read('index')"/&gt;
+        &lt;xsl:text&gt;]. &lt;/xsl:text&gt;
+        &lt;xsl:value-of select="@last"/&gt;
+        &lt;xsl:text&gt;, &lt;/xsl:text&gt;
+        &lt;xsl:value-of select="@first"/&gt;
+        &lt;/p&gt;
+        &lt;counter:incr name="index"/&gt;
+      &lt;/xsl:for-each&gt;
+    &lt;/HTML&gt;
+  &lt;/xsl:template&gt;
+ 
+&lt;/xsl:stylesheet&gt;
+</pre>
+</blockquote>
+<p>Transformation output:</p>
+<blockquote class="source">
+<pre>&lt;HTML&gt;
+&lt;H1&gt;Names in alphabetical order&lt;/H1&gt;
+&lt;p&gt;[1]. Bertoni, David&lt;/p&gt;
+&lt;p&gt;[2]. Boag, Scott&lt;/p&gt;
+&lt;p&gt;[3]. Curcuru, Shane&lt;/p&gt;
+&lt;p&gt;[4]. Dick, Paul&lt;/p&gt;
+&lt;p&gt;[5]. Donohue, Jack&lt;/p&gt;
+&lt;p&gt;[6]. Farmer, Emily&lt;/p&gt;
+&lt;p&gt;[7]. Leslie, Donald&lt;/p&gt;
+&lt;p&gt;[8]. Marston, David&lt;/p&gt;
+&lt;p&gt;[9]. Midy, Myriam&lt;/p&gt;
+&lt;p&gt;[10]. Weir, Robert&lt;/p&gt;
+&lt;/HTML&gt;</pre>
+</blockquote>
+<a name="ex-javascript">‌</a> 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>JavaScript implementation</h4>
+<p />
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt; 
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:xalan="http://xml.apache.org/xalan"
+                xmlns:counter="MyCounter"
+                extension-element-prefixes="counter"
+                version="1.0"&gt;
+
+  &lt;xalan:component prefix="counter"
+                   elements="init incr" functions="read"&gt;
+    &lt;xalan:script lang="javascript"&gt;
+      var counters = new Array();
+
+      function init (xslproc, elem) {
+        name = elem.getAttribute ("name");
+        value = parseInt(elem.getAttribute ("value"));
+        counters[name] = value;
+        return null;
+      }
+
+      function read (name) {
+        // Return a string.
+        return "" + (counters[name]);
+      }
+
+      function incr (xslproc, elem)
+      {
+        name = elem.getAttribute ("name");
+        counters[name]++;
+        return null;
+      }
+    &lt;/xalan:script&gt;
+  &lt;/xalan:component&gt;
+
+  &lt;xsl:template match="/"&gt;
+    &lt;HTML&gt;
+      &lt;H1&gt;Names in alphatebical order&lt;/H1&gt;
+      &lt;counter:init name="index" value="1"/&gt;
+      &lt;xsl:for-each select="doc/name"&gt;
+        &lt;xsl:sort select="@last"/&gt;
+        &lt;xsl:sort select="@first"/&gt;
+        &lt;p&gt;
+        &lt;xsl:text&gt;[&lt;/xsl:text&gt;
+        &lt;xsl:value-of select="counter:read('index')"/&gt;
+        &lt;xsl:text&gt;]. &lt;/xsl:text&gt;
+        &lt;xsl:value-of select="@last"/&gt;
+        &lt;xsl:text&gt;, &lt;/xsl:text&gt;
+        &lt;xsl:value-of select="@first"/&gt;
+        &lt;/p&gt;
+        &lt;counter:incr name="index"/&gt;
+      &lt;/xsl:for-each&gt;
+    &lt;/HTML&gt;
+  &lt;/xsl:template&gt;
+ 
+&lt;/xsl:stylesheet&gt;
+</pre>
+</blockquote>
+<p>This stylesheet produces the same output as the preceding example with the Java extension.</p>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/extensions_xsltc.html b/xalan-j/extensions_xsltc.html
new file mode 100644
index 0000000..ad5f31c
--- /dev/null
+++ b/xalan-j/extensions_xsltc.html
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Extensions for XSLTC</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Extensions for XSLTC</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>XSLTC Exts<br />
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Extensions for XSLTC</h2>
+<ul>
+<li>
+<a href="#intro">Introduction</a>
+</li>
+<li>
+<a href="#constraints">Constraints</a>
+</li>
+<li>
+<a href="#java_ext">Java extension</a>
+</li>
+<li>
+<a href="#exslt_ext">EXSLT extensions</a>
+</li>
+<li>
+<a href="#nodeset_ext">nodeset</a>
+</li>
+<li>
+<a href="#redirect_ext">output/redirect</a>
+</li>
+</ul>
+<a name="intro">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>
+  <p>XSLTC supports the use of extension functions implemented in external Java classes. It also
+  supports the <a href="#nodeset_ext">nodeset</a>, <a href="#redirect_ext">output/redirect</a> 
+  and <a href="#exslt_ext">EXSLT</a> extension functions. Extension support in XSLTC is
+  still under development. It is currently not as complete as the extension support in the
+  Xalan-Java Interpretive processor. There are constraints in some areas.</p>
+  
+
+<a name="constraints">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Constraints</h3>
+  <p>In addition to the constraints listed below for each particular extension, extension support
+  in XSLTC also has the following limitations:</p>
+  <ol>
+  <li>
+<a href="extensions.html#ext-elements">Extension element</a> is not supported.
+  The extension element mechanism is closely related to the internal implementation of the XSLT processor.
+  The current extension element mechansim is designed for the Xalan-Java Interpretive processor. It does not work with XSLTC.</li>
+  <li>The <a href="extensions.html#supported-lang">xalan:component and xalan:script</a> extension elements are not supported at the moment. This has
+  the implication that you cannot use scripting languages (e.g. javascript) with XSLTC.</li>
+  <li>
+<a href="extensionslib.html#sql">The SQL extension</a> is not supported in XSLTC at the moment.</li>
+  </ol>
+  
+  
+<a name="java_ext">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Java extension</h3>
+  <p>Java extension is supported in XSLTC. Constructors, static and instance methods are all supported.
+  You can use any of the <a href="extensions.html#ext-func-calls">three namespace formats</a>
+   (Java, package and class) in your stylesheet.
+  </p>
+  <p>The official namespace for the Java extension is <code>http://xml.apache.org/xalan/java</code>. The old XSLTC Java namespace
+  <code>http://xml.apache.org/xalan/xsltc/java</code> and the old Xalan-Java namespace <code>http://xml.apache.org/xslt/java</code>
+  are also supported for backward compatibility.</p>
+  <p>All usage syntax for the Xalan-Java Interpretive processor also applies to XSLTC with only one 
+  exception: XSLTC does not support the notion of default object 
+  in <a href="extensions.html#ext-func-calls">class format namespace</a>. 
+  When using instance methods, you should always specify the class instance as the first argument
+  to the extension function.</p>
+  <p>The following example shows you how to call constructors, static, and nonstatic functions,
+  using different namespace formats:</p>
+
+  <blockquote class="source">
+<pre>&lt;xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:date="http://xml.apache.org/xalan/java/java.util.Date"
+    xmlns:java_lang="http://xml.apache.org/xalan/java/java.lang"
+    exclude-result-prefixes="date java_lang"&gt;
+
+  &lt;!--
+  * test: construction of Date object using a parameter calculated
+  *       by a static call to the java.lang.Math object. Then call
+  *       a non-static method (getTime()) on the newly created Date
+  *       object. Demonstrates calling constructors, static functions
+  *       (Math.max) and non-static functions (getTime()).
+  *
+  * Output:
+  *   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
+  *     Date of object: Sat Nov 30 17:32:41 EST 2002
+  *     Time of object: 1038695561000
+  *
+  --&gt;
+
+  &lt;xsl:template match="/"&gt;
+   &lt;!-- create Date object with calculated parameter --&gt;
+   &lt;xsl:variable name="dateObject"
+     select="date:new(
+         java_lang:Math.max(1027695561000,1038695561000)
+     )"/&gt;
+   Date of object: &lt;xsl:value-of select="$dateObject"/&gt;
+   Time of object: &lt;xsl:value-of select="date:getTime($dateObject)"/&gt;
+  &lt;/xsl:template&gt;
+
+  &lt;/xsl:stylesheet&gt;
+  </pre>
+</blockquote>
+  <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Always use the abbreviated syntax for Java extension, because the xalan:component/xalan:script
+  constructs are not supported in XSLTC.</td>
+</tr>
+</table>
+  
+  
+<a name="exslt_ext">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>EXSLT extensions</h3>
+  <p>The following EXSLT extension modules are supported in XSLTC:</p>
+  <ul>
+  <li>
+<a href="apidocs/org/apache/xalan/lib/ExsltCommon.html">EXSLT common functions</a>
+</li>
+  <li>
+<a href="apidocs/org/apache/xalan/lib/ExsltMath.html">EXSLT math functions</a>
+</li>
+  <li>
+<a href="apidocs/org/apache/xalan/lib/ExsltSets.html">EXSLT set functions</a>
+</li>
+  <li>
+<a href="apidocs/org/apache/xalan/lib/ExsltDatetime.html">EXSLT date-and-time functions</a>
+</li>
+  <li>
+<a href="apidocs/org/apache/xalan/lib/ExsltStrings.html">EXSLT string functions</a>
+</li>
+  </ul> 
+  <p>The functions in the <a href="apidocs/org/apache/xalan/lib/ExsltDynamic.html">dynamic</a> module 
+  (e.g. evaluate) are not supported because of the XSLTC design limitation.
+  Work is currently underway on <a href="http://www.exslt.org/func/elements/function/index.html">user 
+  defined EXSLT functions (with the function and result elements)</a>.</p>
+  <p>The <code>nodeset</code> and <code>objectType</code> extension functions in the <a href="apidocs/org/apache/xalan/lib/ExsltCommon.html">common</a> 
+  module are implemented natively in XSLTC. For all other EXSLT extension functions,
+  XSLTC uses the same implementation as the Xalan-Java Interpretive processor. The implementation classes 
+  are under <code>org.apache.xalan.lib</code>.
+  Depending on the packaging, these classes can be in a separate jar file (e.g. xalan.jar) from
+  the XSLTC classes. In this case you need to add the jar file containing the EXSLT classes to your
+  classpath in order to use EXSLT extensions in XSLTC.</p>
+  
+  
+<a name="nodeset_ext">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>nodeset</h3>
+  <p>XSLTC also supports the nodeset() extension function for transforming an RTF (result 
+    tree fragment) into a node set.</p>
+    <p>The nodeset extension can be used as an XSLTC extension function in the namespace
+    <code>http://xml.apache.org/xalan/xsltc</code>, a Xalan-Java extension function in the namespace
+    <code>http://xml.apache.org/xalan</code>, an EXSLT extension function in the namespace 
+    <code>http://exslt.org/common</code> or as a standard XPATH function. When it is used as
+    an EXSLT extension function, you need to refer to the nodeset extension function as 
+    <code>node-set</code>.</p>
+    <p>The following exmaple shows you how to use the nodeset extension
+    function in different namespaces:</p>
+    <blockquote class="source">
+<pre>&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"        
+  xmlns:xsltc-extension="http://xml.apache.org/xalan/xsltc"
+  xmlns:xalan="http://xml.apache.org/xalan"
+  xmlns:exslt="http://exslt.org/common"
+  version="1.0"&gt;
+  &lt;xsl:template match="/"&gt;
+    &lt;xsl:variable name="rtf"&gt;
+      &lt;docelem&gt;
+        &lt;elem1&gt;elem1&lt;/elem1&gt;
+        &lt;elem2&gt;elem2&lt;/elem2&gt;
+      &lt;/docelem&gt;
+    &lt;/xsl:variable&gt;
+    &lt;!-- Use nodeset as an XSLTC extension function --&gt;
+    &lt;xsl:value-of select="xsltc-extension:nodeset($rtf)/docelem/elem1"/&gt;
+    &lt;!-- Use nodeset as a Xalan-Java extension function --&gt;
+    &lt;xsl:value-of select="xalan:nodeset($rtf)/docelem/elem1"/&gt;
+    &lt;!-- Use nodeset as an EXSLT extension function --&gt;
+    &lt;xsl:value-of select="exslt:node-set($rtf)/docelem/elem1"/&gt;
+    &lt;!-- Use nodeset as standard function --&gt;
+    &lt;xsl:value-of select="nodeset($rtf)/docelem/elem1"/&gt;
+  &lt;/xsl:template&gt; 
+&lt;/xsl:stylesheet&gt;
+</pre>
+</blockquote>
+<br />
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The preferred solution is to use the EXSLT node-set function so that it can work
+with multiple XSLT processors.</td>
+</tr>
+</table>
+  
+  
+<a name="redirect_ext">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>output/redirect</h3>
+  <p>XSLTC supports the output extension element for redirecting the output to one 
+  or more files. The output extension element is also aliased to the write extension element 
+  in the namespace <code>http://xml.apache.org/xalan/redirect</code>. Therefore you can use
+  it in the same way as the <a href="extensionslib.html#redirect">redirect</a> 
+  extension in Xalan-Java.</p>
+  <p>You can use the file and append attributes with the output/redirect extension. The value of the file
+  attribute is an attribute value template. If the value of the append attribute is true or yes, the
+  output is appended to the file rather than overwriting the file.</p>
+  <p>The following example shows you how to use the output/redirect extension:</p>
+    <blockquote class="source">
+<pre> &lt;xsl:stylesheet 
+   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+   xmlns:xsltc="http://xml.apache.org/xalan/xsltc"
+   xmlns:redirect="http://xml.apache.org/xalan/redirect"
+   extension-element-prefixes="xsltc redirect"
+   version="1.0"&gt;
+   &lt;xsl:template match="/"&gt;
+     &lt;xsl:text&gt;This goes to standard output&lt;/xsl:text&gt;
+     &lt;xsltc:output file="blob.xml"&gt;
+       &lt;xsl:text&gt;This ends up in the file 'blob.xml'&lt;/xsl:text&gt;
+     &lt;/xsltc:output&gt;
+     &lt;redirect:write file="blob2.xml"&gt;
+       &lt;xsl:text&gt;This ends up in the file 'blob2.xml'&lt;/xsl:text&gt;
+     &lt;/redirect:write&gt;
+   &lt;/xsl:template&gt;
+&lt;/xsl:stylesheet&gt;</pre>
+</blockquote>  
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/extensionslib.html b/xalan-j/extensionslib.html
new file mode 100644
index 0000000..c21b7c3
--- /dev/null
+++ b/xalan-j/extensionslib.html
@@ -0,0 +1,1022 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Extensions library</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Extensions library</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>Extensions Library<br />
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Extensions library</h2>
+<ul>
+<li>
+<a href="#intro">Introduction</a>
+</li>
+<li>
+<a href="#exslt">EXSLT extensions</a>
+</li>
+<li>
+<a href="#xalanns">Xalan namespace</a>
+</li>
+<li>
+<a href="#redirect">Redirect</a>
+</li>
+<li>
+<a href="#nodeset">nodeset</a>
+</li>
+<li>
+<a href="#nodeinfo">NodeInfo extension functions</a>
+</li>
+<li>
+<a href="#sql">SQL library</a>
+</li>
+<li>
+<a href="#pipedocument">PipeDocument</a>
+</li>
+<li>
+<a href="#evaluate">evaluate</a>
+</li>
+<li>
+<a href="#tokenize">tokenize</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">Extensions for XSLTC</a>
+</li>
+<li>Examples: <a href="#ex-redirect">Redirect</a>, <a href="#ex-nodeset">nodeset</a>, 
+<a href="#ex-sql">SQL library</a>
+</li>
+</ul>
+
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Unless otherwise specified, the Xalan-Java extensions library discussed in this section refers to 
+the Xalan-Java Interpretive processor. See <a href="extensions_xsltc.html">Extensions for XSLTC</a> for 
+more information.</td>
+</tr>
+</table>
+<br />
+
+<a name="intro">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>
+<p>Extension elements and functions provide a powerful mechanism
+for extending and simplifying what you can do with an XLST processor like
+Xalan. With input and contributions from the XML open-source developer community, we are working on 
+placing the most useful extensions in an extensions library distributed with Xalan-Java. If you have 
+ideas and/or contributions you would like to make, please email us at 
+the <a href="mailto:dev@xalan.apache.org">Xalan Development Mailing List</a>.</p>
+<a name="exslt">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>EXSLT extensions</h3>
+ <p>Xalan-Java supports the <a href="http://exslt.org/">EXSLT</a> initiative to provide a set of
+standard extension functions and elements to XSLT users. Xalan-Java includes implementations for the 
+following EXSLT extension modules:</p>
+<ul>
+<li>
+<a href="apidocs/org/apache/xalan/lib/ExsltCommon.html">EXSLT common functions</a>
+</li>
+<li>
+<a href="apidocs/org/apache/xalan/lib/ExsltMath.html">EXSLT math functions</a>
+</li>
+<li>
+<a href="apidocs/org/apache/xalan/lib/ExsltSets.html">EXSLT set functions</a>
+</li>
+<li>
+<a href="apidocs/org/apache/xalan/lib/ExsltDatetime.html">EXSLT date-and-time functions</a>
+</li>
+<li>
+<a href="apidocs/org/apache/xalan/lib/ExsltDynamic.html">EXSLT dynamic functions</a>
+</li>
+<li>
+<a href="apidocs/org/apache/xalan/lib/ExsltStrings.html">EXSLT string functions</a>
+</li>
+<li>The EXSLT func:function and func:result elements (see 
+<a href="http://www.exslt.org/func/elements/function/index.html">EXSLT - func:function)</a>
+</li>
+</ul>
+<p>All EXSLT extensions use namespaces specified in the EXSLT specification. For example, to use the 
+EXSLT math functions, specify a namespace URI as follows:</p>
+<p>     <code>xmlns:math="http://exslt.org/math"</code>
+</p>
+<p>Anyone who would like to help by implementating other EXSLT extensions is more than welcome. Please 
+email us at the <a href="mailto:dev@xalan.apache.org">Xalan Development Mailing List</a>.</p>
+
+<a name="xalanns">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Xalan namespace</h3>
+<p>The Xalan extensions are implemented in one of the classes under org.apache.xalan.lib. The main 
+extension class is <a href="apidocs/org/apache/xalan/lib/Extensions.html">
+org.apache.xalan.lib.Extensions</a>. Some extension
+functions (e.g. intersection, difference, etc.) used to be in this class are now moved to the 
+corresponding <a href="#exslt">EXSLT</a> modules. All Xalan extensions use namespace URIs 
+starting with:</p>
+<p>     <code>http://xml.apache.org/xalan</code>
+</p>
+<p>If you are calling Xalan-Java-supplied extensions, we recommend that you define the corresponding 
+namespace in your stylesheet, and call the extension using the namespace prefix that you have associated 
+with that namespace. That way, if we later reorganize how the Xalan-Java-supplied extensions are stored, 
+you won't have to modify your stylesheet.</p>
+<p>For an example that uses this namespace, see <a href="#ex-nodeset">Example with the nodeset 
+extension function</a>.</p>
+<a name="redirect">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Redirect</h3>
+<p>A standard XSL transformation involves an XSL stylesheet, an XML source tree, and the transformation
+result tree. The transformation sends the entire result to a single 
+<a href="apidocs/javax/xml/transform/Result.html">javax.xml.transform.Result</a> object.</p> 
+<p>The namespace for the <a href="apidocs/org/apache/xalan/lib/Redirect.html">Redirect</a> 
+extension is:</p>
+<p>     <code>http://xml.apache.org/xalan/redirect</code>
+</p>
+<p>It supplies three extension elements that you can use to redirect portions of your transformation 
+output to multiple files: &lt;open&gt;, &lt;write&gt;, and &lt;close&gt;. If you use the &lt;write&gt; 
+element alone, the extension opens a file, writes to it, and closes the file immediately. If you want 
+explicit control over the opening and closing of files, use &lt;write&gt; in conjunction with 
+the &lt;open&gt; and &lt;close&gt; elements.</p>
+<p>The &lt;open&gt; and &lt;write&gt; elements include a file attribute and/or a select attribute to 
+designate the output file. The file attribute takes a string, so you can use it to directly specify 
+the output file name. The select attribute takes an XPath expression, so you can use it to dynamically 
+generate the output file name. If you include both attributes, the Redirect extension first evaluates 
+the select attribute, and falls back to the file attribute if the select attribute expression does 
+not return a valid file name.</p>
+<p>The &lt;open&gt; and &lt;write&gt; elements also support an append attribute. If the append attribute 
+is set to true or yes, then the result is appended to the output file.</p>
+<a name="ex-redirect">‌</a> 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Example with the Redirect extension</h4>
+<p>Suppose you are outputting the bulk of your result tree to one file, but you want to output the 
+transformation of all &lt;foo&gt; elements and their children to another file. The following example 
+illustrates the basic structure of the XML source:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt; 
+&lt;doc&gt;
+  &lt;foo file="foo.out"&gt;
+    Testing Redirect extension:
+      &lt;bar&gt;A foo subelement text node&lt;/bar&gt;
+  &lt;/foo&gt;
+  &lt;main&gt;
+    Everything else
+  &lt;/main&gt;  
+&lt;/doc&gt;</pre>
+</blockquote>
+<p>This stylesheet redirects part of the output to a secondary file:</p>
+<blockquote class="source">
+<pre>
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    version="1.0"
+    xmlns:redirect="http://xml.apache.org/xalan/redirect"
+    extension-element-prefixes="redirect"&gt;
+
+  &lt;xsl:template match="/"&gt;
+    &lt;standard-out&gt;
+      Standard output:
+      &lt;xsl:apply-templates/&gt;
+    &lt;/standard-out&gt;
+  &lt;/xsl:template&gt;
+  
+  &lt;xsl:template match="main"&gt;
+    &lt;main&gt;
+      &lt;xsl:apply-templates/&gt;
+    &lt;/main&gt;
+  &lt;/xsl:template&gt;
+  
+  &lt;xsl:template match="/doc/foo"&gt;
+    &lt;redirect:write select="@file"&gt;
+      &lt;foo-out&gt;
+        &lt;xsl:apply-templates/&gt;
+      &lt;/foo-out&gt;
+    &lt;/redirect:write&gt;
+  &lt;/xsl:template&gt;
+  
+  &lt;xsl:template match="bar"&gt;
+    &lt;foobar-out&gt;
+      &lt;xsl:apply-templates/&gt;
+    &lt;/foobar-out&gt;
+  &lt;/xsl:template&gt;
+  
+&lt;/xsl:stylesheet&gt;</pre>
+</blockquote>
+<p>The standard output is:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;standard-out&gt;
+  Standard output:
+  &lt;main&gt;
+    Everything else.
+  &lt;/main&gt;
+&lt;standard-out&gt;</pre>
+</blockquote>
+<p>The output redirected to foo.out is:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;foo-out&gt;
+    Testing Redirect extension:
+    &lt;foobar-out&gt;foo subelement text node&lt;/foobar-out&gt;
+  &lt;/foo-out&gt;</pre>
+</blockquote>
+<p>For more information on using the Redirect extension to send output to multiple files, examine 
+the <a href="samples.html#ext1">SimpleRedirect</a> sample and see the 
+<a href="apidocs/org/apache/xalan/lib/Redirect.html">Redirect</a> class Javadoc.</p>  
+<a name="nodeset">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>nodeset</h3>
+<p>Implemented in <a href="apidocs/org/apache/xalan/lib/Extensions.html">
+org.apache.xalan.lib.Extensions</a>,<br />
+<code>nodeset (result-tree-fragment)</code>  casts a result tree fragment into a node-set.</p>
+<p>To use the nodeset extension, you can either use the <code>nodeset</code> function in the 
+namespace <code>xmlns:xalan="http://xml.apache.org"</code> or the <a href="#exslt">EXSLT</a> 
+extension function <code>node-set</code> in the namespace 
+<code>xmlns:common="http://exslt.org/common"</code>.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">When you bind a variable to a template, rather than to the value generated by a select 
+expression, the data type of the variable is result tree fragment. For more information, 
+see <a href="http://www.w3.org/TR/xslt#section-Result-Tree-Fragments">Result Tree 
+Fragments</a>.</td>
+</tr>
+</table>
+<a name="ex-nodeset">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Example with the nodeset extension function</h4>
+<p>The following stylesheet uses the nodeset extension function to cast a result tree fragment 
+into a node-set that can then be navigated in standard XPath manner. It uses the 
+http://xml.apache.org/xalan namespace to provide access to the nodeset() method in 
+xml.apache.xalan.lib.Extensions.</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+                   version="1.0"
+                   xmlns:xalan="http://xml.apache.org/xalan"
+                   exclude-result-prefixes="xalan"&gt;
+&lt;xsl:template match="/"&gt;
+  &lt;out&gt;
+	  &lt;xsl:variable name="rtf"&gt;
+      &lt;docelem&gt;
+        &lt;elem1&gt;
+          &lt;elem1a&gt;ELEMENT1A&lt;/elem1a&gt;
+          &lt;elem1b&gt;,ELEMENT1B&lt;/elem1b&gt;
+        &lt;/elem1&gt;
+        &lt;elem2&gt;
+          &lt;elem2a&gt;ELEMENT2A&lt;/elem2a&gt;
+        &lt;/elem2&gt;
+      &lt;/docelem&gt;
+    &lt;/xsl:variable&gt;     
+      &lt;xsl:for-each select="xalan:nodeset($rtf)/docelem//*"&gt;
+        &lt;xsl:value-of select="name(.)"/&gt;&lt;xsl:text&gt;,&lt;/xsl:text&gt;
+      &lt;/xsl:for-each&gt;
+  &lt;/out&gt;
+&lt;/xsl:template&gt; 
+&lt;/xsl:stylesheet&gt;</pre>
+</blockquote>
+<p>The output of running this stylesheet (with any XML input source) is a comma-delimited list of 
+the element names in the node-set<br />
+  <code>&lt;out&gt;elem1,elem1a,elem1b,elem2,elem2a&lt;/out&gt;</code>
+</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">For illustration purposes, the preceding stylesheet pays no attention to the structure and 
+content of the XML input document. Instead, it processes the template (in the stylesheet) bound 
+to the variable named rtf.</td>
+</tr>
+</table>
+
+
+
+
+<a name="nodeinfo">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>NodeInfo</h3>
+<p>
+<a href="apidocs/org/apache/xalan/lib/NodeInfo.html">org.apache.xalan.lib.NodeInfo</a> provides 
+extension elements that you can use to get information about the location of nodes in the source 
+document:</p>
+<ul>
+<li>
+<a href="#systemid">systemId</a>
+</li>
+<li>
+<a href="#publicid">publicId</a> (to be done)</li>
+<li>
+<a href="#linenumber">lineNumber</a>
+</li>
+<li>
+<a href="#columnnumber">columnNumber</a>
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">If you want to use the NodeInfo extension elements, you MUST set the TransformerFactory 
+<a href="features.html#source_location">source_location</a> attribute to true. 
+You can use the <a href="commandline.html">command-line utility</a> -L flag or the 
+<a href="apidocs/javax/xml/transform/TransformerFactory.html#setAttribute(java.lang.String, java.lang.Object)">TransformerFactory.setAttribute()</a> method to set this attribute.</td>
+</tr>
+</table>
+
+<a name="systemid">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>systemId</h4>
+<p>Implemented in <a href="apidocs/org/apache/xalan/lib/NodeInfo.html">
+org.apache.xalan.lib.NodeInfo</a>,
+<code>systemId()</code> returns the system ID for the current node, and
+<code>systemId(node-set)</code> returns the system ID of the first node in the node-set.</p>
+
+
+<a name="publicid">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>publicId</h4>
+<p>
+<b>To be done.</b> Implemented in <a href="apidocs/org/apache/xalan/lib/NodeInfo.html">
+org.apache.xalan.lib.NodeInfo</a>,
+<code>publicId()</code> will return the public ID for the current node, and
+<code>publicId(node-set)</code> will return the public ID of the first node in the node-set.</p>
+
+
+<a name="linenumber">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>lineNumber</h4>
+<p>Implemented in <a href="apidocs/org/apache/xalan/lib/NodeInfo.html">
+org.apache.xalan.lib.NodeInfo</a>,
+<code>lineNumber()</code> returns the line number in the source document for the current node, and
+<code>lineNumber(node-set)</code> returns the line number in the source document for the first node 
+in the node-set.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This function returns -1 if the line number is not known (for example, the source is a 
+DOM Document).</td>
+</tr>
+</table>
+
+
+<a name="columnnumber">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>columnNumber</h4>
+<p>Implemented in <a href="apidocs/org/apache/xalan/lib/NodeInfo.html">
+org.apache.xalan.lib.NodeInfo</a>, <code>columnNumber()</code> returns the column number in the 
+source document for the current node, and <code>columnNumber(node-set)</code> returns the column 
+number in the source document for the first node in the node-set.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This function returns -1 if the column number is not known (for example, the source is a DOM 
+Document).</td>
+</tr>
+</table>
+
+
+
+<a name="sql">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>SQL library</h3>
+<ul>
+ <li>
+<a href="#sqlconn">Setting up a connection</a>
+</li>
+ <li>
+<a href="#sqlparam">Parameterized queries</a>
+</li>
+ <li>
+<a href="#ex-sql">SQL library example</a>
+</li>
+ <li>
+<a href="samples.html#sql">SQL library sample applications</a>
+</li>
+</ul>
+<p>The namespace for the SQL extension is:</p>
+  <code>http://xml.apache.org/xalan/sql</code>
+<p>
+ The SQL extension provides extension functions for connecting to a JDBC data source, 
+ executing a query, and working incrementally through a "streamable" result set. Streaming 
+ (reuse of a single row node to traverse the result set) is the default mode of operation. 
+ if you want unlimited access to the entire result set, you can cache the query result set 
+ (1 row node for each row in the result set).</p>
+<p>
+<b>If you use streaming mode (the default), you can only access row elements one at a time 
+ moving forward through the result set. The use of XPath expressions in your stylesheet, for 
+ example, that attempt to return nodes from the result set in any other manner may produce 
+ unpredictable results.</b>
+</p>
+ <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Many features of the SQL library, including support for connection pools, parameterized 
+ queries, caching, and added support for extracting connection information and query parameters 
+ from XML source documents exist thanks to John Gentilin (johnglinux@eyecatching.com), who has 
+ also added a number of <a href="samples.html#sql">SQL library samples</a>.
+</td>
+</tr>
+</table>
+<p>
+<a href="apidocs/org/apache/xalan/lib/sql/XConnection.html">org.apache.xalan.lib.sql.XConnection</a> 
+ provides a number of extension functions that you can use in your stylesheet.</p>
+<ol>
+<li>new() -- Use one of the XConnection constructors to connect to a data source, and return an 
+XConnection object. You can use one of the constructors creates a connection pool from which 
+stylesheets can obtain connections to a datasource. To support connection pools, SQL library 
+includes a ConnectionPool interface and a implementation: DefaultConnectionPool. You can also 
+provide your own ConnectionPool implementation.<br />
+<br />
+</li>
+<li>query() -- Use the XConnection object query() method to return a "streamable" result set in 
+the form of a row-set node. Work your way through the row-set one row at a time. The same row 
+element is used over and over again, so you can begin "transforming" the row-set before the 
+entire result set has been returned.<br />
+<br />
+</li>
+<li>pquery(), addParameter(), addParameterFromElement(), clearParameters() -- 
+Use the XConnection pquery() method in conjunction with these other methods to 
+set up and execute parameterized queries.<br />
+<br />
+</li>
+<li>Use enableStreamingMode() to use a single row node to "stream" through the result set, and 
+disableStreamingMode() to cache the query result set. <br />
+<br />
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">
+enableStreamingMode and disableStreamingMode() are depricated
+See <a href="extensionslib.html#sql-ext-features">SQL Extension Features</a>.
+</td>
+</tr>
+</table>
+<br />
+</li>
+<li>close() -- Use the XConnection object close() method to terminate the connection.</li>      
+</ol>
+
+<a name="sql-ext-features">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>SQL Extension Feature Settings</h4>
+<p>The SQL Extension allows features of the extension to be set through the setFeature / getFeature interface.</p>
+<p>To set a feature, use: <br />
+    <code>
+      &lt;xsl:value-of select="<br />
+      sql:setFeature($db, 'feature-name', 'feature-value')"/&gt;
+    </code>
+<br />
+<br />
+    To retrive the current value of the feature, use: <br />
+     <code>
+      &lt;xsl:value-of select="<br />
+      sql:getFeature($db, 'feature-name')"/&gt;
+      </code>
+<br /> 
+    </p>
+    <table border="1">
+     <tr>
+      <th class="content" rowspan="1" colspan="1">Feature</th>
+      <th class="content" rowspan="1" colspan="1">Valid Values</th>
+      </tr>
+      <tr>
+       <td class="content" rowspan="1" colspan="1">streaming</td>
+       <td class="content" rowspan="1" colspan="1">true or false</td>
+      </tr>
+    </table>
+
+   
+<p>The query() and pquery() extension functions return a Document node that contains (as needed)       
+an array of column-header elements, a single row element that is used repeatedly, and an array 
+of col elements. Each column-header element (one per column in the row-set) contains an attribute 
+(ColumnAttribute) for each of the column descriptors in the ResultSetMetaData object.  Each col 
+element contains a text node with a textual representation of the value for that column in the 
+current row.</p>
+
+<a name="sqlconn">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Setting up a connection</h4>
+<p>You can place connection information (JDBC driver, datasource URL, and usually user ID 
+and password) in stylesheets or in XML source documents.</p> 
+<p>The following stylesheet fragment uses stylesheet parameters to designate a JDBC driver 
+and datasource. The default parameter values can be overridden with runtime parameter values.</p>
+<blockquote class="source">
+<pre>
+      &lt;xsl:param name="driver" select="'org.apache.derby.jdbc.EmbeddedDriver'"/&gt;
+      &lt;xsl:param name="datasource" select="'jdbc:derby:sampleDB'"/&gt;
+      &lt;xsl:param name="query" select="'SELECT * FROM import1'"/&gt;
+</pre>
+</blockquote>
+<p>You can also obtain connection information from the XML source document that you use for the 
+transformation. Suppose you have the following DBINFO nodeset in an XML document:</p>
+<blockquote class="source">
+<pre>
+      &lt;DBINFO&gt;
+      &lt;dbdriver&gt;org.apache.derby.jdbc.EmbeddedDriver&lt;/dbdriver&gt; 
+      &lt;dburl&gt;jdbc:derby:sampleDB&lt;/dburl&gt; 
+      &lt;user&gt;jbloe&lt;/user&gt; 
+      &lt;password&gt;geron07moe&lt;/password&gt; 
+      &lt;/DBINFO&gt;
+</pre>
+</blockquote>
+<p>In the stylesheet, you can extract this information as follows:</p>
+<blockquote class="source">
+<pre>
+     &lt;xsl:stylesheet version 1.0
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:sql="http://xml.apache.org/xalan/sql"
+           extension-element-prefixes="sql"&gt;
+        &lt;xsl:param name="cinfo" select="//DBINFO"/&gt;
+        &lt;xsl:variable name="db" select="sql:new($cinfo)"/&gt;
+      ....
+</pre>
+</blockquote> 
+<p>For an example of both approaches, see <a href="samples.html#basic-conn">Basic Connection</a> 
+samples.</p>
+<p>You can also create a named connection pool that is maintained external to Xalan-Java.</p>
+<blockquote class="source">
+<pre>
+        import org.apache.xalan.lib.sql.DefaultConnectionPool;
+        import org.apache.xalan.lib.sql.XConnectionPoolManager;
+        ...
+        DefaultConnectionPool cp = new DefaultConnectionPool();
+        cp.setDriver("org.apache.derby.jdbc.EmbeddedDriver");
+        cp.setURL("jdbc:derby:sampleDB");
+        cp.setUser("");
+        cp.setPassword("");
+        // Start with 10 connections.
+        cp.setMinConnections(10);
+        cp.enablePool();
+        // Register the connection pool so stylesheets can use it.
+        XConnectionPoolManager pm = new XConnectionPoolManager();
+        pm.registerPool("extpool", cp);
+</pre>
+</blockquote>
+<p>A stylesheet can use this connection pool as follows:</p>
+<blockquote class="source">
+<pre>
+       &lt;xsl:stylesheet version 1.0
+       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+       xmlns:sql="http://xml.apache.org/xalan/sql"
+       extension-element-prefixes="sql"&gt;
+       ...
+        &lt;xsl:variable name="db" select="sql:new($driver, 'extpool')"/&gt;
+</pre>
+</blockquote>
+<p>For an example, see the <a href="samples.html#ext-conn">ExternalConnection</a> 
+sample.</p>
+
+
+<a name="sqlparam">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Parameterized queries</h4>
+<p>To define a parameterized query, use a SQL query string with a question mark (?) for each 
+parameter. You can provide the parameter values at runtime with stylesheet parameters or with 
+nodes in the XML source document. 
+For each parameter, you should also designate the SQL data type.</p>
+<p>XConnection provides a number of addParameter() methods and an addParameterFromElement() method 
+that you can use as extension functions to pull in the parameter values (in the order the 
+parameters appear in the query). To execute the query and return the result set, call the pquery() 
+method as an extension function. There are two variations of the pquery() method. The one you 
+should ordinarily use includes as arguments the SQL query string and a string list 
+(delimited by the space, tab, or line feeds) of parameter types. For example:</p>
+<blockquote class="source">
+<pre>
+        &lt;xsl:variable name="resultset" 
+        select=sql:pquery($XConnectionObj, 
+                          'select * from X where Y = ? and Z = ?',
+                          'int string')"/&gt;
+</pre>
+</blockquote>
+<p>
+For a complete example, see the <a href="samples.html#pquery">Parameterized query</a> sample.
+</p>
+
+
+<a name="ex-sql">‌</a> 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Example with SQL library</h4>
+<p>This example displays the result set from a table in a sample Derby database. It is also
+available as a sample application; see <a href="samples.html#sql">SQl Extension Samples</a>.</p>
+<blockquote class="source">
+<pre>
+      &lt;?xml version="1.0"?&gt;
+      &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+          version="1.0"
+          xmlns:sql="http://xml.apache.org/xalan/sql"
+          extension-element-prefixes="sql"&gt;
+      &lt;xsl:output method="html" indent="yes"/&gt;
+      &lt;xsl:param name="query" select="'SELECT * FROM import1'"/&gt;
+      &lt;xsl:template match="/"&gt;
+      &lt;!-- 1. Make the connection --&gt;
+      &lt;xsl:variable name="products"
+              select="sql:new('org.apache.derby.jdbc.EmbeddedDriver',
+             'jdbc:derby:sampleDB')"/&gt;
+      &lt;HTML&gt;
+      &lt;HEAD&gt;
+      &lt;/HEAD&gt;
+      &lt;BODY&gt;
+        &lt;TABLE border="1"&gt;
+        &lt;!--2. Execute the query --&gt;
+        &lt;xsl:variable name="table" select='sql:query($products, $query)'/&gt;
+          &lt;TR&gt;
+          &lt;!-- Get column-label attribute from each column-header--&gt;
+          &lt;xsl:for-each select="$table/sql/metadata/column-header"&gt;
+            &lt;TH&gt;&lt;xsl:value-of select="@column-label"/&gt;&lt;/TH&gt;
+          &lt;/xsl:for-each&gt;
+          &lt;/TR&gt;
+          &lt;xsl:apply-templates select="$table/sql/row-set/row"/&gt;
+          &lt;xsl:text&gt;&amp;#10;&lt;/xsl:text&gt;
+        &lt;/TABLE&gt;
+      &lt;/BODY&gt;
+    &lt;/HTML&gt; 
+    &lt;!-- 3. Close the connection --&gt;
+    &lt;xsl:value-of select="sql:close($products)"/&gt;
+  &lt;/xsl:template&gt;
+
+  &lt;xsl:template match="row"&gt;
+        &lt;TR&gt;
+          &lt;xsl:apply-templates select="col"/&gt;
+        &lt;/TR&gt;
+  &lt;/xsl:template&gt;
+
+  &lt;xsl:template match="col"&gt;
+    &lt;TD&gt;
+      &lt;!-- Here is the column data --&gt;
+      &lt;xsl:value-of select="text()"/&gt;
+    &lt;/TD&gt;
+  &lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;
+</pre>
+</blockquote>
+
+
+
+<a name="pipedocument">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>pipeDocument</h3>
+<p>Implemented in <a href="apidocs/org/apache/xalan/lib/PipeDocument.html">
+org.apache.xalan.lib.PipeDocument</a>,<br />
+the pipeDocument extension element pipes an XML document through a series of one or more 
+transformations. The output of each transformation is piped to the next transformation. The 
+final transformation creates a target file.</p>
+<p>The namespace for the pipeDocument extension is:</p>
+<p>     <code>http://xml.apache.org/xalan/PipeDocument</code>
+</p>
+<p>Suppose, for example,you have a stylesheet that is processing a "book" document with elements 
+designating the documents to be transformed. This primary stylesheet generates a table of 
+contents for the book. For each source document it uses a pipeDocument extension element to pipe 
+the document through a series of one or more transformations.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Sample: generating a table of contents and an HTML "book"</h4>
+<p>An XML "book" document contains a number of doc elements like the following:<br />
+<code>&lt;doc source="sources/intro.xml" id="intro" label="Introduction"&gt;</code>
+</p>
+<p>The source attribute identifies the document to be transformed, the id is the output file name, 
+and the primary stylesheet places the label in the table-of-contents link.</p>
+<p>The stylesheet declares the pipeDocument namespace, designates the namespace prefix as an 
+extension element prefix, and contains a parameter designating where the output files are to 
+be placed:</p>
+<blockquote class="source">
+<pre>&lt;xsl:stylesheet version="1.0"
+   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+   xmlns:pipe="http://xml.apache.org/xalan/PipeDocument"
+   extension-element-prefixes="pipe"&gt;
+   
+&lt;xsl:param  name="destdir" value="html/output"&gt;
+...</pre>
+</blockquote>
+<p>This stylesheet contains a template where each doc element is processed. For each doc element, the 
+stylesheet adds an entry to the table-of-contents document. The extension element pipes the specified 
+document through a series of two transformations, with an stylesheet input parameter for the first 
+transformation. The pipeDocument target attribute designates the output from the second 
+transformation.</p>
+
+<blockquote class="source">
+<pre>&lt;xsl:template match="doc"&gt;
+  &lt;p&gt;
+    &lt;a href={$destdir}&gt;&lt;xsl:value-of select="@label"/&gt;&lt;a&gt;
+  &lt;/p&gt;
+
+  &lt;pipe:pipeDocument   source="{@source}" target="{$destdir/@id}"&gt;
+    &lt;stylesheet href="ss1.xsl"&gt;
+      &lt;param name="doc-id" value="@id"/&gt;
+    &lt;/stylesheet&gt;
+    &lt;stylesheet href="ss2.xsl"/&gt;   
+  &lt;/pipe:pipeDocument&gt;
+  
+&lt;/xsl:template&gt;</pre>
+</blockquote>
+ 
+<p>Notes:</p>
+ <ul>
+ <li>The base URI for the source attribute is the XML "book" document.</li>
+ <li>The target attribute is taken as is (the base is the current user directory from which this 
+     transformation is being run).</li>
+ <li>The stylsheet containg the extension element is the base URI for the stylesheet hrefs.</li>
+ </ul>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Variation: using pipeDocument in an empty stylesheet</h4>
+<p>Suppose you want to pipe a document through a series of transformations. You can use the pipeDocument 
+extension element to perform this operation by placing the extension element in an otherwise empty 
+stylesheet.</p>
+<p>The following stylesheet is used to merge the Xalan documents into a book (the first transformation), 
+and transform the book into a tree of formatting objects, which can then be used to generate a PDF file. 
+This transformation is invoked as follows:</p>
+<p>
+<code>java org.apache.xalan.xslt.Process -in printbook.xml</code>
+<br />
+<code> -param source printbook.xml</code>
+<br />
+<code> -param target xalanbook.fo</code>
+</p>
+<p>There is no XML input document or output document for the primary transformation, which does no more 
+than invoke the extension element.</p>
+<blockquote class="source">
+<pre>&lt;?xml version='1.0'?&gt;
+
+&lt;xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:pipe="http://xml.apache.org/xalan/PipeDocument"
+                extension-element-prefixes="pipe"&gt;
+
+&lt;xsl:param name="source"/&gt;
+&lt;xsl:param name="target"/&gt;
+
+&lt;xsl:template match="/"&gt;
+
+  &lt;pipe:pipeDocument 
+        source="{$source}"
+        target="{$target}"&gt;
+    &lt;stylesheet href="printbook_assemble.xsl"/&gt;
+    &lt;stylesheet href="bkbook8x11_xalan.xsl"/&gt;
+  &lt;/pipe:pipeDocument&gt;
+  
+&lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;</pre>
+</blockquote>
+
+  
+
+
+<a name="evaluate">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>evaluate</h3>
+<p>Implemented in <a href="apidocs/org/apache/xalan/lib/Extensions.html">
+org.apache.xalan.lib.Extensions</a>,<br />
+<code>evaluate (xpath-expression)</code> function returns the result of evaluating the xpath-expression 
+in the current XPath expression context (automatically passed in by the extension mechanism).</p>
+<p>Use the evaluation extension function when the value of the expression is not known until run time.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Although you can still use the evaluate extension function in the main Extensions class, the 
+preferred solution is to use the same function in the EXSLT dynamic package. This will make your 
+stylesheet more portable across XSLT processors that support EXSLT extensions.</td>
+</tr>
+</table>
+
+
+<a name="tokenize">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>tokenize</h3>
+<p>Implemented in <a href="apidocs/org/apache/xalan/lib/Extensions.html">
+org.apache.xalan.lib.Extensions</a>,<br /> 
+<code>tokenize (tokenize-string, delimiters)</code>
+<br />
+or<br />
+<code>tokenize (tokenize-string)</code> function returns a node-set containing one text node for each 
+token in the tokenize-string.</p>
+<p>The delimiters determine which characters are used to divide the tokenize-string into individual 
+tokens. If you do not include the delimiters argument, the function uses tab (&amp;#x09), linefeed 
+(&amp;#x0A), return (&amp;#x0D), and space (&amp;#x20) as delimiters. if tokenize-string is an empty 
+string or contains only delimiters, the result is an empty node-set.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Although you can still use the tokenize extension function in the main Extensions class, the 
+preferred solution is to use the same function in the EXSLT strings package. This will make your 
+stylesheet more portable across XSLT processors that support EXSLT extensions.</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/faq.html b/xalan-j/faq.html
new file mode 100644
index 0000000..fc5d256
--- /dev/null
+++ b/xalan-j/faq.html
@@ -0,0 +1,1187 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Frequently asked questions</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Frequently asked questions</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>FAQs<br />
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2 class="faqSubHead">Questions</h2>
+<h3>General XSLT</h3>
+<ol start="1">
+<li>
+<a href="#faq-1">Where do I go to learn about XSLT</a>
+</li>
+<li>
+<a href="#faq-2">Where can I ask questions about XSLT</a>
+</li>
+<li>
+<a href="#faq-3">TrAX and JAXP</a>
+</li>
+</ol>
+<h3>Versions</h3>
+<ol start="4">
+<li>
+<a href="#faq-4">Determining Xalan-Java Version</a>
+</li>
+<li>
+<a href="#faq-5">Determining the Serializer Version</a>
+</li>
+<li>
+<a href="#faq-6">Which version of Xerces should I be using?</a>
+</li>
+<li>
+<a href="#faq-7">Compatibility with Xalan-Java version 1</a>
+</li>
+<li>
+<a href="#faq-8">Issues running Xalan-Java on JDK 1.3</a>
+</li>
+<li>
+<a href="#faq-9">Issues running Xalan-Java on JDK/JRE 1.4 or higher</a>
+</li>
+<li>
+<a href="#faq-10">Issues running Xalan-Java on Tomcat with JDK 1.4</a>
+</li>
+<li>
+<a href="#faq-11">Issues running Applets with XSLTC in Web Browsers with JAVA Plug-in (JRE 1.4)</a>
+</li>
+<li>
+<a href="#faq-12">Using the 'signature' file to verify a download</a>
+</li>
+</ol>
+<h3>Performance Issues</h3>
+<ol start="13">
+<li>
+<a href="#faq-13">Speeding up transformations</a>
+</li>
+<li>
+<a href="#faq-14">JAXP factory lookup procedure</a>
+</li>
+</ol>
+<h3>Namespace Related</h3>
+<ol start="15">
+<li>
+<a href="#faq-15">Retrieving nodes in the default namespace</a>
+</li>
+<li>
+<a href="#faq-16">Setting the parser to be namespace aware</a>
+</li>
+</ol>
+<h3>Common Errors</h3>
+<ol start="17">
+<li>
+<a href="#faq-17">NoClassDefFound errors</a>
+</li>
+<li>
+<a href="#faq-18">a "DOM006 Hierarchy request error"</a>
+</li>
+<li>
+<a href="#faq-19">Namespace not supported by SAXParser</a>
+</li>
+<li>
+<a href="#faq-20">Missing xsl:version attribute error</a>
+</li>
+<li>
+<a href="#faq-21">StackOverflowError with recursive stylesheet</a>
+</li>
+<li>
+<a href="#faq-22">OutOfMemoryError processing multiple documents</a>
+</li>
+<li>
+<a href="#faq-23">File Not Found error</a>
+</li>
+<li>
+<a href="#faq-24">No more DTM IDs are available</a>
+</li>
+<li>
+<a href="#faq-25">IllegalAccessError or could not load output_xml.properties                 on JDK 1.4</a>
+</li>
+</ol>
+<h3>Miscellaneous</h3>
+<ol start="26">
+<li>
+<a href="#faq-26">Chaining transformations</a>
+</li>
+<li>
+<a href="#faq-27">Stylesheet validation</a>
+</li>
+<li>
+<a href="#faq-28">Setting output encoding</a>
+</li>
+<li>
+<a href="#faq-29">Getting line and column numbers for errors in XML input documents and XSL stylesheets</a>
+</li>
+<li>
+<a href="#faq-30">Servlet unable to find classes for extension functions/elements</a>
+</li>
+<li>
+<a href="#faq-31">Translet name doesn't match stylesheet name</a>
+</li>
+</ol>
+<h2 class="faqSubHead">Answers</h2>
+<h3 id="faq-1" class="faqTitle">1. Where do I go to learn about XSLT</h3>
+<div class="faqQuestion">Where do I go to learn about XSLT?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>The definitive sources are the W3C XSLT and XPath recommendations:
+          <a href="http://www.w3.org/TR/xslt">XSL Transformations (XSLT) Version 1.0</a> and
+          <a href="http://www.w3.org/TR/xpath">XML Path Language (XPath) Version 1.0</a>.
+        </p>
+        <p>For a brief listing of tutorials, discussion forums, and other materials, see
+          <a href="overview.html#uptospeed">Getting up to speed with XSLT</a>.
+        </p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-2" class="faqTitle">2. Where can I ask questions about XSLT</h3>
+<div class="faqQuestion">Where can I ask questions about XSLT?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>
+<a href="http://marc.theaimsgroup.com/?l=xalan-dev&amp;r=1&amp;w=2">xalan-dev</a> and
+           <a href="http://marc.theaimsgroup.com/?l=xalan-j-users&amp;r=1&amp;w=2">xalan-j-users</a>
+           are for Xalan-Java questions only. This is not the best 
+           forum to ask general XSLT questions. The <a href="http://mulberrytech.com/xsl/xsl-list/index.html">Mulberry XSL Mailing List</a> is an 
+           excellent place to ask XSLT questions; please search
+          <a href="http://www.dpawson.co.uk/xsl/">XSL Frequently Asked Questions</a> to ensure your question has not been already asked.
+        </p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-3" class="faqTitle">3. TrAX and JAXP</h3>
+<div class="faqQuestion">What are TrAX and JAXP, and are they related?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+      	<p>
+<a name="trax">‌</a>
+</p>
+        <p>TrAX is the Transformation API for XML. In November 2000, TrAX was revised and incorporated 
+           into JAXP, the JAVA API for XML Processing. JAXP (including TrAX) provides users a standard, 
+           vendor-neutral API for working with (and transforming) XML documents. You can use this API 
+           to build applications that are not bound to the particular implementation details of a given 
+           XML parser or XSL transformer.</p>
+        <p>Xalan-Java includes the JAXP packages, implements the TrAX portion of 
+           that API (javax.xml.transform....), implements the XPath API of JAXP (javax.xml.xpath....), 
+           and includes xercesImpl.jar from  
+           <a href="http://xerces.apache.org/xerces2-j/index.html">Xerces-Java 2.11.0</a>, which implements the parser portion of the API 
+           (javax.xml.parser....).</p>
+        <p>For more information, see <a href="trax.html">Using the JAXP Transform APIs</a> and
+          <a href="https://jaxp.java.net/">Java API for XML Processing (JAXP) 1.3</a>.
+        </p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-4" class="faqTitle">4. Determining Xalan-Java Version</h3>
+<div class="faqQuestion">How do I see what version of Xalan-Java I'm running? How do I determine 
+         which parser I'm using?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>
+          <a name="environmentcheck">‌</a>
+        </p>
+        <p>
+          <b>Using the EnvironmentCheck utility:</b> To help diagnose classpath problems and also 
+              determine which version of Xalan-Java is being used, try running 
+              Xalan-Java's environment checking utility.
+        </p>
+        <p>You can run this utility from the command line as follows:</p>
+        <p>
+          <code>java org.apache.xalan.xslt.EnvironmentCheck [-out outFile]</code>
+        </p>
+        <p>You can also call this utility from within your application. For example,</p>
+        <p>
+          <code>boolean environmentOK = (new EnvironmentCheck()).checkEnvironment (yourPrintWriter);</code>
+        </p>
+        <p>Be sure to run EnvironmentCheck in the environment where you are experiencing the problem. 
+           For example, if you get a NoClassDefFound error from a command-line application, run 
+           EnvironmentCheck on the command line with exactly the same classpath. If the error occurs 
+           inside your Java application (or in a servlet, etc.), be sure to call the EnvironmentCheck 
+           checkEnvironment(...) method from within your running application.</p>
+        <p>Best of all, you can call checkEnvironment from a stylesheet using extensions:</p>
+        <blockquote class="source">
+<pre>
+&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+    xmlns:xalan="http://xml.apache.org/xalan"
+    exclude-result-prefixes="xalan"&gt;
+&lt;xsl:output indent="yes"/&gt;
+
+&lt;xsl:template match="/"&gt;
+  &lt;out&gt;
+    &lt;xsl:copy-of select="xalan:checkEnvironment()"/&gt;
+  &lt;/out&gt;
+&lt;/xsl:template&gt;
+&lt;/xsl:stylesheet&gt;</pre>
+</blockquote>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-5" class="faqTitle">5. Determining the Serializer Version</h3>
+<div class="faqQuestion">How do I see what version of the Serializer I'm running? </div>
+<br />
+<hr />
+<div class="faqAnswer">
+          <a name="serlializercheck">‌</a>          
+        <p>
+          Xalan's serialier is now shared with Xerces. It may be packaged in Xalan, or Xerces,
+          or in the JRE itself. You can run the serializer's <b>Version</b> utility from the command line as follows:
+        </p>
+        <p>
+          <code>java org.apache.xml.serializer.Version</code>
+        </p>
+        The output should indicate which serializer you are using.
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-6" class="faqTitle">6. Which version of Xerces should I be using?</h3>
+<div class="faqQuestion">Which version of Xerces-Java should I be using?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>
+<a href="http://xalan.apache.org/xalan-j">Xalan-Java Version 2.7.2</a> has been tested with <a href="http://xerces.apache.org/xerces2-j/index.html">Xerces-Java 2.11.0</a>. 
+           See <a href="readme.html#status">Status</a>.
+        </p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-7" class="faqTitle">7. Compatibility with Xalan-Java version 1</h3>
+<div class="faqQuestion">How do I run applications that use the Xalan-Java version 1 API with Xalan-Java</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>The Xalan-Java version 1 compatibility API has been deprecated and removed, so you 
+           must use the Xalan-Java version 2 API. We strongly encourage you to use the 
+           <a href="https://jaxp.java.net/">Java API for XML Processing (JAXP) 1.3</a>. For more information, see 
+           the FAQ on <a href="#trax">TrAX and JAXP.</a>
+</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-8" class="faqTitle">8. Issues running Xalan-Java on JDK 1.3</h3>
+<div class="faqQuestion">I'm having a problem building or running Xalan-Java on the JDK 1.3.</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>
+<a name="jdk13">‌</a>
+</p>
+        <p>The JDK 1.3 automatically places everything in the lib/ext directory in front of everything 
+           you place on the classpath. If this directory contains a version of DOM, JAXP, or Xerces 
+           that predates the Xalan-Java distribution you are using, you may have problems!</p>
+        <p>The IBM JDK 1.3 includes an earlier version of xerces.jar in the lib/ext directory, a 
+           version that does not implement the JAXP 1.3 interfaces and therefore does not work with the 
+           current Xalan-Java release. Accordingly, you must either remove the 
+           xerces.jar that is in that directory or replace it with the xercesImpl.jar that is included 
+           with the Xalan-Java distribution.</p>
+        <p>The SUN JDK 1.3 includes a pre-1.1 version of the JAXP in crimson.jar. Either remove the 
+           crimson.jar in that directory or overwrite it with a newer crimson.jar that includes and 
+           implements the JAXP 1.3 interfaces.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-9" class="faqTitle">9. Issues running Xalan-Java on JDK/JRE 1.4 or higher</h3>
+<div class="faqQuestion">I'm having a problem running Xalan-Java on JDK/JRE 1.4 or higher</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>
+<a name="jdk14">‌</a>
+</p>      
+        <p>JDK/JRE 1.4, and JDK/JRE 5.0 is packaged with an old version of Xalan-Java. The JDK/JRE 
+           will attempt to use this version instead of any on the classpath. Unfortunately, 
+           this causes problems when attempting to use a newer version of Xalan-Java.</p>
+        <p>You can always determine which version of Xalan-Java you are running 
+           by using the <a href="#environmentcheck">EnvironmentCheck</a> class or by using the 
+           xalan:checkEnvironment extension function. It is highly recommended that you use this 
+           method to verify the version of Xalan-Java you are running, especially 
+           before opening a bug report.</p>
+        <p>To use a newer version of Xalan-Java and override the one packaged with the JDK:</p>
+        <ul>
+          <li>use the
+            <a href="http://java.sun.com/j2se/1.4.2/docs/guide/standards/">Endorsed Standards Override Mechanism</a>. Place the xalan.jar, serializer.jar, xercesImpl.jar 
+            and xml-apis.jar in the 
+            &lt;java-home&gt;\lib\endorsed directory, where
+            &lt;java-home&gt; is where the runtime software is installed.
+          </li>
+        </ul>
+        <p>The following methods
+          <b>do not work</b>:
+        </p>
+        <ul>
+          <li>Using the CLASSPATH environment variable or using -classpath to place the new classes 
+              in the classpath.</li>
+          <li>Using the -jar option to explicitly execute the classes inside the new jar files.</li>
+        </ul>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-10" class="faqTitle">10. Issues running Xalan-Java on Tomcat with JDK 1.4</h3>
+<div class="faqQuestion">I got java.lang.IllegalAccessError running Xalan-Java on Tomcat with JDK 1.4.</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>
+<a name="tomcat">‌</a>
+</p>
+        <p>
+<a href="http://tomcat.apache.org/index.html">jakarta-tomcat 4.1.*</a> is packed
+           with an old version of xercesImpl.jar. Based on the <a href="http://java.sun.com/j2se/1.4.2/docs/guide/standards/">Endorsed Standards Override Mechanism</a>, you should
+           replace it with the newer xercesImpl.jar. You should add a newer xalan.jar and serializer.jar 
+           to Tomcat as well.  
+           Read the FAQ about <a href="#jdk14">Issues running Xalan-Java on JDK/JRE 1.4 or higher</a>. Place the 
+           xalan.jar, serializer.jar, and xercesImpl.jar in the &lt;Tomcat_Home&gt;\common\endorsed directory, where 
+           &lt;Tomcat_Home&gt; is where the Tomcat application server is installed.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-11" class="faqTitle">11. Issues running Applets with XSLTC in Web Browsers with JAVA Plug-in (JRE 1.4)</h3>
+<div class="faqQuestion">I got javax.xml.transform.TransformerException running my applet which uses XSLTC in JRE 1.4.</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>
+<a name="applet">‌</a>
+</p>
+        <p>To overwrite an older version of Xalan Java; packaged with JRE 1.4 or higher you can add a newer 
+        xalan.jar and serializer.jar to the &lt;jre-home&gt;\lib\endorsed directory. Read the FAQ about 
+        <a href="#jdk14">Issues running 
+        Xalan-Java on JDK/JRE 1.4 or higer</a>.  If there is a META-INF/services/javax.xml.transform.TransformerFactory
+        file in xalan.jar (as there is in the Xalan Java distributions), then the TransformerFactoryImpl 
+        setting in this file will be used by the JVM during the factory finder lookup procedure.  
+        The TransformerFactoryImpl for the Xalan Java Interpretive processor is the default setting in the 
+        META-INF/services/javax.xml.transform.TransformerFactory file, therefore, you will get an error
+        when your applet attempts to use the XSLTC implementation.</p>
+        <p>To work around this problem, you can change the contents of the 
+        META-INF/services/javax.xml.transform.TransformerFactory file in xalan.jar so that it refers to the
+        transformer factory class implementation for XSLTC, org.apache.xalan.xsltc.trax.TransformerFactoryImpl. </p>
+        <p>Another solution is to create a jar that contains a META-INF/services/javax.xml.transform.TransformerFactory file 
+        containing the value org.apache.xalan.xsltc.trax.TransformerFactoryImpl.  Place the jar in the 
+         &lt;jre-home&gt;\lib\endorsed directory. When you name your jar file, the ASCII code of the first 
+        character should be smaller than the ASCII code of "X" to ensure that your jar will be loaded before 
+        xalan.jar</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-12" class="faqTitle">12. Using the 'signature' file to verify a download</h3>
+<div class="faqQuestion">How do I use the "signature" file to verify my download?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>For each Xalan-Java download file there is a corresponding signature file. 
+        The signature file for xalan-j_2_0_1.tar.gz, for example, is xalan-j_2_0_1.tar.gz.sig.
+        </p>
+        <p>The .sig files are PGP signatures of the actual .zip or .tar.gz
+        download files.  You can use these files to verify the authenticity of the download. You do not 
+        need the .sig file to use the corresponding download file.</p>
+        <p>To check the authenticity of a Xalan-Java distribution, you need a copy of
+        PGP which is available in a number of licenses, including some free
+        non-commercial licenses, either from an mit.edu site or on
+        the pgp.com site. Once you have a version of PGP installed, you
+        should be able to 'verify the signature' of the .sig file, which basically verifies that the 
+        corresponding .zip or tar.gz file has not been changed since we signed it.</p>
+        <p>The PGP key can be found in 
+        <a href="http://svn.apache.org/viewvc/xalan/java/trunk/KEYS">KEYS.</a>
+</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-13" class="faqTitle">13. Speeding up transformations</h3>
+<div class="faqQuestion">What can I do to speed up transformations?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>In the ongoing development of Xalan-Java, enhancing performance is 
+           the primary goal of the Xalan-Java team.  Here are some preliminary 
+           suggestions for you to keep in mind as you set up your applications:</p>
+        <ul>
+          <li>Use a Templates object (with a different Transformers for each transformation) to 
+              perform multiple transformations with the same set of stylesheet instructions (see
+            <a href="usagepatterns.html#multithreading">Multithreading</a>).
+            <br />
+            <br />
+          </li>
+          <li>Set up your stylesheets to function efficiently.
+            <br />
+            <br />
+          </li>
+          <ul>
+            <li>Don't use "//" (descendant axes) patterns near the root of a large document.
+              <br />
+              <br />
+            </li>
+            <li>Use xsl:key elements and the key() function as an efficient way to retrieve node sets.
+              <br />
+              <br />
+            </li>
+            <li>Where possible, use pattern matching rather than xsl:if or xsl:when statements.
+              <br />
+              <br />
+            </li>
+            <li>xsl:for-each is fast because it does not require pattern matching.
+              <br />
+              <br />
+            </li>
+            <li>Keep in mind that xsl:sort prevents incremental processing.
+              <br />
+              <br />
+            </li>
+            <li>When you create variables, <br />
+<code>&lt;xsl:variable name="fooElem" select="foo"/&gt;</code>
+<br /> is usually faster than
+              <br />
+<code>&lt;xsl:variable name="fooElem"&gt;&lt;xsl:value-of-select="foo"/&gt;&lt;/xsl:variable&gt;</code>
+              <br />
+              <br />
+            </li>
+            <li>Be careful using the last() function.
+              <br />
+              <br />
+            </li>
+            <li>The use of index predicates within match patterns can be expensive.
+              <br />
+              <br />
+            </li>
+            <li>Decoding and encoding is expensive.
+              <br />
+              <br />
+            </li>
+          </ul>
+          <li>For the ultimate in server-side scalability, perform transform operations on the client. 
+              For examples, see
+            <a href="samples.html#appletxmltohtml">appletXMLtoHTML</a> and
+            <a href="samples.html#get-todo-list">get-todo-list</a>.
+          </li>
+        </ul>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-14" class="faqTitle">14. JAXP factory lookup procedure</h3>
+<div class="faqQuestion">What is the JAXP factory lookup procedure and does it affect performance?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+      <p>JAXP uses an ordered lookup procedure to find factory implementations, such as
+         an implementation of javax.xml.transform.TransformerFactory.  For information
+         on this procedure, refer to Section 3 Plugability in <a href="https://jaxp.java.net/">JAXP 1.3</a>.  
+       </p>
+       <p>In most cases, Factory classes need only be looked up once for an application, so
+          performance is not an issue.  However, there may be scenarios where the lookup
+          procedure executes multiple times which could impact performance.  In these cases,
+          users may want to set system properties or populate the jaxp.properties file in order
+          to shorten the time spent in the lookup procedure.
+       </p>   
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-15" class="faqTitle">15. Retrieving nodes in the default namespace</h3>
+<div class="faqQuestion">XPath isn't retrieving nodes that are in the default namespace I defined. How do I get them?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>If you are looking for nodes in a namespace, the XPath expression must include a namespace 
+           prefix that you have mapped to the namespace with an xmlns declaration. If you have declared 
+           a default namespace, it does not have a prefix (see 
+           <a href="http://www.w3.org/TR/xpath.html#node-tests">XPath Node Tests</a>). In order 
+           to construct XPath expressions to retrieve nodes from this namespace, you must add a 
+           namespace declaration that provides a prefix you can include in the XPath expressions.</p>
+        <p>Suppose, for example, you you want to locate nodes in a default namespace declared as follows:
+          <br />
+          <code>xmlns="http://my-namespace"</code>
+        </p>
+        <p>Add a namespace declaration with a prefix:
+          <br />
+          <code>xmlns:foo="http://my-namespace"</code>
+        </p>
+        <p>Then you can use foo: in your XPath expression.</p>
+        <p>Hint: Avoiding the use of default namespaces will prevent this problem from occuring.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-16" class="faqTitle">16. Setting the parser to be namespace aware</h3>
+<div class="faqQuestion">
+        How do I set my parser to be namespace aware?
+      </div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>
+<a name="namespace-aware">‌</a>
+</p>
+        <p>If you use a TransformerFactory to process a stylesheet Source and generate a Transformer, 
+           the TransformerFactory instructs the SAXParserFactory to set the parser's namespaceAware 
+           property to true. But if you call the parser directly, you may need to set the namespaceAware 
+           property yourself. for example:</p>
+        <blockquote class="source">
+<pre>javax.xml.parsers.SAXParserFactory spFactory =
+  javax.xml.parsers.SAXParserFactory.newInstance();
+spFactory.setNamespaceAware(true);</pre>
+</blockquote>
+        <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">For more information about setting the namespaceAware property, and SAX2 vs. JAXP default 
+              settings, see <a href="http://people.apache.org/~edwingo/jaxp-faq.html#nsDefaults">JAXP FAQ: 
+              Warning about namespace processing defaults</a>.
+        </td>
+</tr>
+</table>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-17" class="faqTitle">17. NoClassDefFound errors</h3>
+<div class="faqQuestion">I'm getting a NoClassDefFound error. What has to be on the classpath?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <ol>
+          <li>xalan.jar, serializer.jar, xml-apis.jar, and xercesImpl.jar -- or the XML parser you are using -- must 
+              always be on the classpath.
+            <br />
+            <br />
+          </li>
+          <li>To run the samples in the samples subdirectories, xalansamples.jar must be on the 
+              classpath. To run the servlet samples, you must place xalanservlet.war 
+              on a web server with a servlet engine and you must put the javax.servlet and
+              javax.servlet.http packages on the classpath.  These packages 
+              are available via the servlet.jar file found in Apache Tomcat ( see <a href="http://tomcat.apache.org/">The Jakarta Site - Apache Tomcat</a> ).
+            <br />
+            <br />
+          </li>
+          <li>To run extensions which use the component and script extension elements (including the 
+              samples in samples/extensions), bsf.jar must be on the classpath. To run extensions 
+              implemented in JavaScript, js.jar must also be on the classpath. For information on what 
+              you need to run extensions implemented in other scripting languages, see
+              <a href="extensions.html#supported-lang">Supported languages</a>.
+          </li>
+        </ol>
+    You can check the correctness of your environment with the
+        <a href="#environmentcheck">EnvironmentCheck</a> feature.
+        <p>For more information, see
+          <a href="getstarted.html#classpath">Setting up the system classpath</a>.
+        </p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-18" class="faqTitle">18. a "DOM006 Hierarchy request error"</h3>
+<div class="faqQuestion">Why do I get a "DOM006 Hierarchy request error" when I try to transform into a DOM Document node?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>This error occurs when Xalan-Java tries to add a Node to a Document node 
+           where it isn't allowed. For example, attempting to add non-whitespace text to the DOM Document 
+           node produces this error.</p>
+        <p>The error can also occur when a Document node is created with the DOMImplementation 
+           createDocument() method, which takes a qualified name as an argument and creates an element 
+           node.  If you then pass the returned Document node to Xalan-Java, you 
+           get a "DOM006 Hierarchy request error" when Xalan-Java tries to add a 
+           second element to the Document node. The solution is to either use the DocumentBuilder 
+           newDocument() method to create a Document that does not contain an element node, or use a 
+           DocumentFragment. It should be noted that the DocumentBuilder newDocument() method is 
+           "Non-preferred" according to the JAXP 1.3 documentation.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-19" class="faqTitle">19. Namespace not supported by SAXParser</h3>
+<div class="faqQuestion">Why am I getting a "Namespace not supported by SAXParser exception?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>We have seen this problem arise for two quite different reasons:</p>
+        <ul>
+          <li>SAX1 interfaces are on your classpath in front of the SAX2 interfaces provided with 
+              your XML parser.
+            <br />
+            <br />
+  or
+            <br />
+            <br />
+          </li>
+          <li>The parser you are using to process a stylesheet Source and generate a Transformer does 
+              not have the namespaceAware property set to true.</li>
+        </ul>
+        <p>
+          <b>SAX1 on the classpath</b>
+        </p>
+        <p>SAX1 should not be on your classpath. The SAX1 interfaces and implementations of the SAX1 
+           SAX parser are not namespace aware.</p>
+        <p>To help diagnose your classpath, you can use the
+          <a href="#environmentcheck">EnvironmentCheck
+  utility</a>. If you are running under JDK 1.3, see
+          <a href="#jdk13">Issues running Xalan-Java on JDK
+  1.3</a>. If you are running a servlet, make sure the webserver is not placing SAX1 on the
+  classpath.
+        </p>
+        <p>When you create a Transformer, you must use a
+          <a href="#namespace-aware">namespace-aware</a> parser to parse the stylesheet.
+        </p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-20" class="faqTitle">20. Missing xsl:version attribute error</h3>
+<div class="faqQuestion">I'm getting an error about my stylesheet missing the xsl:version attribute - what's wrong?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>There are two common causes for this error.</p>
+        <ol>
+          <li>Using the wrong URI for the xsl: prefix will cause this message. URIs, and namespace 
+              URIs in particular, are case sensitive. Ensure the URI for the xsl namespace is 
+              "http://www.w3.org/1999/XSL/Transform".<br />
+<br />
+</li>
+          <li>The parser you are using to process a stylesheet Source and generate a Transformer 
+              does not have the namespaceAware property set to true.<br />
+          When you create a Transformer, you must use a <a href="#namespace-aware">namespace-aware</a> parser to parse the stylesheet.</li>
+        </ol>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-21" class="faqTitle">21. StackOverflowError with recursive stylesheet</h3>
+<div class="faqQuestion">Xalan-Java dies with a java.lang.StackOverflowError when I run a deeply 
+         recursive stylesheet. The same stylesheet worked fine in the past (or on other machines). 
+         What's happening?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>That may not be our fault.  As of JDK 1.3.x, many Java Virtual Machine publishers reduced 
+           the default size of a thread's call stack from 1MB to 256KB. This allows more threads to 
+           run simultaneously, but it means that each thread is more limited in how deeply its function 
+           calls can be nested.</p>
+	<p>Some JVMs may offer an option that allows you to raise this limit. For example, in Sun 
+	   JDK 1.3.1 you can start JVM with the -Xss1m option to allow each thread to use a full 
+	   megabyte.  In IBM's JDK you can start with the -Xss1m and -Xoss1m options.  Other JVMs 
+	   may set this in other ways, or may not allow you to control it at all; check the 
+	   documentation on your system for details.</p>
+        <p>Note too that on some platforms 1MB is an architectural upper limit on the stack size, so 
+           setting -Xss2m (or equivalent) may not allow deeper recursion than -Xss1m.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-22" class="faqTitle">22. OutOfMemoryError processing multiple documents</h3>
+<div class="faqQuestion">I get a java.lang.OutOfMemoryError when I try to process multiple documents with the 
+         document() function. What can I do?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>As a general rule, Xalan-Java currently caches all of the documents 
+           that you read in with the document() function during a transformation.</p>
+        <p>If your objective is to transform a series of documents, you can break the process into a 
+           series of transformations. The
+          <a href="extensionslib.html#pipedocument">PipeDocument</a> extension element 
+          provides one strategy for batching a series of parallel transformations.</p>
+        <p>Another alternative is to place your document() call in the select attribute of an 
+           xsl:for-each instruction element and use a custom PI (Processing Instruction) to turn off 
+           document caching. Include an XPath expression in your document() call if you do not 
+           need to process the entire document.</p>
+        <p>Sample stylesheet fragment:</p>
+        <blockquote class="source">
+<pre>
+&lt;xsl:template match="doc"&gt;
+  &lt;xsl:for-each select="document(@href)/bar/zulu"&gt;
+    &lt;?xalan-doc-cache-off?&gt;
+    &lt;!-- process each document --&gt;
+  &lt;xsl:for-each&gt;
+&lt;/xsl:template&gt;</pre>
+</blockquote>
+        <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">PIs do not ordinarily uses namespaces, so "xalan:" is a 'fake' namespace we have 
+        included to indicate that this is not a standard PI.</td>
+</tr>
+</table>
+        <p>If you include an XPath expression in your document() call, you can also turn on
+          <a href="dtm.html#incremental">incremental transform</a> to eliminate the need 
+          to read in the entire document. In fact, you can take advantage of the incremental transform 
+          feature even if you are not turning off document caching.
+        </p>
+        <p>You can also increase your JVM heap size with the -Xmx or -mx flag, depending on which JVM 
+           you are using (you can include both flags, and the JVM will ignore the one it doesn't 
+           understand). For example, to give your JVM 64 meg, try
+          <br />
+          <code> java -Xmx64m -mx64m
+            <b>
+<i>Class</i>
+</b>
+          </code>
+        </p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-23" class="faqTitle">23. File Not Found error</h3>
+<div class="faqQuestion">Why do I get 'file not found' when I pass c:\path\filename.txt?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>Xalan-Java often requires legal URLs as system identifiers, not local 
+           pathnames (this is partly due to underlying parsers requiring this). A simple (but not always 
+           correct!) way to change a local pathname into a URL in Java 1.1x is:</p>
+        <blockquote class="source">
+<pre>
+  public static String filenameToURL(String filename)
+  {
+    File f = new File(filename);
+    String tmp = f.getAbsolutePath();
+    if (File.separatorChar == '\\')
+    {
+      tmp = tmp.replace('\\', '/');
+    }
+    // Note: gives incorrect results when filename already begins with
+file:///
+    return "file:///" + tmp;
+  }
+        </pre>
+</blockquote>
+        <p>For a slightly more detailed example, see org.apache.xml.utils.SystemIDResolver.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-24" class="faqTitle">24. No more DTM IDs are available</h3>
+<div class="faqQuestion">What does: "XSLT Error (javax.xml.transform.TransformerException): 
+          org.apache.xml.dtm.DTMException: No more DTM IDs are available" mean?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+         <p>It means you are probably using a very old version of Xalan or Xalan-Java, 
+            likely the version 2.2D11 which was packaged in JDK1.4.  Architectural changes made in 
+            early 2002 should have eliminated this issue for almost all cases.</p>
+         <p>You should verify the version of Xalan-Java you are using by running 
+            the <a href="#environmentcheck">EnvironmentCheck</a> utility, 
+            and read the FAQ about <a href="#jdk14">Issues running Xalan-Java
+            on JDK 1.4</a>.</p>
+        </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-25" class="faqTitle">25. IllegalAccessError or could not load output_xml.properties                 on JDK 1.4</h3>
+<div class="faqQuestion">Why do I get a "java.lang.IllegalAccessError" or the message
+         "Could not load the property file 'output_xml.properties'" when I try
+         to transform using XSLTC or Xalan-Java Interpretive?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>These errors may occur if you use JDK 1.4 or later releases.</p>
+        <p>JRE 1.4 and later releases contain copies of Xalan-Java.  In some
+        cases, the JRE includes only Xalan-Java Interpretive, while in other cases it also
+        includes XSLTC.  Typically, the copy of the processor packaged
+        with the JRE will be loaded in preference to any copy of Xalan-Java on
+        your class path.</p>
+        <p>Beginning with Xalan-Java 2.5, Xalan-Java Interpretive and XSLTC are both
+        packaged in xalan.jar, and share some of the same classes.  If you
+        are using a version of the JRE that contains Xalan-Java Interpretive, but not
+        XSLTC, and you try to use XSLTC on your class path,
+        classes from that version of XSLTC may be loaded along with
+        classes from the version of Xalan-Java packaged with your JRE.</p>
+        <p>Because the classes may be from different versions of Xalan-Java, the
+        results may be unpredictable.  In particular, a
+        <code>java.lang.IllegalAccessError</code> may be thrown, or an
+        <code>org.apache.xml.utils.WrappedRuntimeException</code> containing
+        the message:  <code>"Could not load the property file
+        'output_xml.properties' for output method 'xml' (check
+        CLASSPATH)"</code> may be thrown.</p>
+        <p>To work around those problems, please read the FAQ entitled
+        <a href="#jdk14">Issues running Xalan-Java on JDK 1.4</a>.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-26" class="faqTitle">26. Chaining transformations</h3>
+<div class="faqQuestion">How do you chain together a series of transformations?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>Xalan-Java supports two strategies for chaining together a series of 
+           transformations such that the output of each transformation provides input for the next 
+           transformation.</p>
+        <ul>
+          <li>For each transformation in the series, you can set one SAX ContentHandler to process 
+              the input, and another ContentHandler to process the output.
+            <br />
+            <br />
+          </li>
+          <li>You can also set up a series of parent-child relationships between an XMLReader and 
+              one or more XMLFilters.</li>
+        </ul>
+        <p>For the details and links to examples, see
+          <a href="usagepatterns.html#outasin">Using transformation output as input for 
+          another transformation</a>.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-27" class="faqTitle">27. Stylesheet validation</h3>
+<div class="faqQuestion">How do I validate an XSL stylesheet?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>An XSL stylesheet is an XML document, so it can have a DOCTYPE and be subject to 
+           validation, right?</p>
+        <p>The XSLT Recommendation includes a
+          <a href="http://www.w3.org/TR/xslt#dtd">DTD Fragment 
+          for XSL Stylesheets</a> with some indications of what you need to do to create a 
+          complete DTD for a given stylesheet. Keep in mind that stylesheets can include literal 
+          result elements and produce output that is not valid XML.</p>
+        <p>You can use the xsl:stylesheet doctype defined in xsl-html40s.dtd for stylesheets that 
+           generate HTML.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-28" class="faqTitle">28. Setting output encoding</h3>
+<div class="faqQuestion">Why is the output character encoding I set in the stylesheet not being used?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>If you use a character output stream to instantiate the
+          <a href="apidocs/javax/xml/transform/stream/StreamResult.html">StreamResult</a> object 
+          which holds the transformation output, the Writer uses its own encoding, not the encoding 
+          you specify in the stylesheet.</p>
+        <p>If you want to use the stylesheet output encoding, do not use StreamResult(java.io.Writer) 
+           to instantiate the holder for the output. Alternatively, you can specify the encoding when 
+           you create a Writer (java.io.OutputStreamWriter). Once the Writer exists, you cannot change 
+           its encoding. If the transformation is run in a servlet, it is possible
+           that the Writer is coming from the ServletResponse object.
+        </p>
+        <p>
+          If the stylesheet is run using the JAXP APIs and the Transformer's setOutputProperty() 
+          method is invoked, it is possible to set the <b>"encoding"</b> property and
+          over-ride the value in the stylesheet.
+        </p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-29" class="faqTitle">29. Getting line and column numbers for errors in XML input documents and XSL stylesheets</h3>
+<div class="faqQuestion">How do I get line numbers for errors in the XML or XSL input when I am performing a 
+         transformation?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>Use or mimic the command-line processor (<a href="apidocs/org/apache/xalan/xslt/Process.html">org.apache.xalan.xslt.Process</a>).
+        </p>
+        <p>A
+          <a href="apidocs/javax/xml/transform/TransformerException.html">TransformerException</a> generally wraps another exception, often a SAXParseException. The command-line processor uses the static
+          <a href="apidocs/org/apache/xml/utils/DefaultErrorHandler.html">org.apache.xml.utils.DefaultErrorHandler</a> printLocation() method to chase down the exception cause and get a
+          <a href="apidocs/javax/xml/transform/SourceLocator.html">SourceLocator</a> that can usually report line and column number.
+        </p>
+        <p>Suppose you wanted to modify the ValidateXMLInput sample in the samples/Validate 
+           subdirectory to include line and column numbers . All you need to do is call 
+           DefaultErrorHandler.printLocation() in the the Handler internal class error() and warning() 
+           methods. For example, replace</p>
+        <blockquote class="source">
+<pre>public void error (SAXParseException spe)
+  throws SAXException
+{
+  System.out.println("SAXParseException error: " + spe.getMessage());
+}</pre>
+</blockquote>
+        <p>with</p>
+        <blockquote class="source">
+<pre>public void error (SAXParseException spe)
+  throws SAXException
+{
+  PrintWriter pw = new PrintWriter(System.out, true);
+  org.apache.xml.utils.DefaultErrorHandler.printLocation(pw, spe);
+  pw.println("SAXParseException error: " + spe.getMessage());
+}</pre>
+</blockquote>
+        <p>You can also replicate code from the printLocation() method to obtain a SourceLocator, and 
+           then use the SourceLocator getLineNumber() and getColumnNumber() methods. The 
+           getRootSourceLocator() method below returns a SourceLocator.</p>
+        <blockquote class="source">
+<pre>
+import javax.xml.transform.SourceLocator;
+import javax.xml.transform.TransformerException;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.apache.xml.utils.SAXSourceLocator;
+import org.apache.xml.utils.WrappedRuntimeException;
+....
+public static SourceLocator getRootSourceLocator(Throwable exception)
+{
+  SourceLocator locator = null;
+  Throwable cause = exception;
+    
+  // Try to find the locator closest to the cause.
+  do
+  {
+    if(cause instanceof SAXParseException)
+    {
+      locator = new SAXSourceLocator((SAXParseException)cause);
+    }
+    else if (cause instanceof TransformerException)
+    {
+      SourceLocator causeLocator = 
+                    ((TransformerException)cause).getLocator();
+      if(null != causeLocator)
+        locator = causeLocator;
+    }
+    if(cause instanceof TransformerException)
+      cause = ((TransformerException)cause).getCause();
+    else if(cause instanceof WrappedRuntimeException)
+      cause = ((WrappedRuntimeException)cause).getException();
+    else if(cause instanceof SAXException)
+      cause = ((SAXException)cause).getException();
+    else
+      cause = null;
+  }
+  while(null != cause);
+        
+  return locator;
+}</pre>
+</blockquote>
+        <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">
+          <b>Xalan-Java exception handling:</b>  The exception architecture 
+          in Xalan-Java and with transforms in general is tricky because of 
+          multiple layers of exception handling, involving movement back and forth between SAX and 
+          Transformer exceptions and across pipes. Xalan-Java often uses a 
+          WrappedRuntimeException to throw over many layers of checked exceptions, in order not to 
+          have every possible checked exception be declared for every function in the stack, which 
+          means it has to catch this exception at the upper levels and unwrap the exception to pass 
+          it on as a TransformerException.
+          <br />
+          <br />A JAXP 1.3 TransformerException often wraps another exception. Two of the 
+          TransformerException structures that are frequently used to construct contained exceptions 
+          in JAXP 1.3 do not set the locator.  The locator is not set because we don't know the type 
+          of exception that the Throwable argument represents.  The solution is to chase up the 
+          contained exceptions to find the root cause, which will usually have a location set for 
+          you.  This can be somewhat tricky, as not all the exceptions may be TransformerExceptions.  
+          A good sample is in the DefaultHandler static printLocation() method, which the 
+          Xalan-Java command-line processor uses to report errors. You can also 
+          roll your own functions along the lines of the getRootSourceLocator() example above.
+        </td>
+</tr>
+</table>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-30" class="faqTitle">30. Servlet unable to find classes for extension functions/elements</h3>
+<div class="faqQuestion">My servlet cannot find classes that implement extension functions or elements. What can I do?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>If you install xalan.jar in the webserver's lib directory (e.g., tomcat/lib), as 
+           opposed to the servlet application's lib directory, then the Xalan-Java classes 
+           are loaded by a classloader that does not see the classes in the application's classloader 
+           (i.e., the extension classes, if you placed them there). The Xalan-Java
+           classes try to load the extension classes using their own classloader, and that attempt 
+           fails.</p>
+        <p>Workaround: place xalan.jar in the servlet application's lib directory and NOT in the webserver's 
+           lib directory. Another workaround is to place the extension classes also in the webserver's
+           lib directory, but you generally want to avoid cluttering that directory.</p>
+        <p>Thanks to Gunnlauger Thor Briem (gthb@dimon.is) for providing this information.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3 id="faq-31" class="faqTitle">31. Translet name doesn't match stylesheet name</h3>
+<div class="faqQuestion">My stylesheet is named <code>foo-bar.xsl</code>, but XSLTC
+         created a translet named <code>foo_bar</code>.  Is that a bug?</div>
+<br />
+<hr />
+<div class="faqAnswer">
+        <p>No.  The name of a translet is usually the name of the stylesheet,
+           the name specified using the <code>translet-name</code> attribute on
+           the XSLTC <code>TransformerFactory</code> or the name
+           specified for the translet on the command-line invocation.
+           However, the name of the translet is also the name of a Java class.
+           Any character that is not permitted in a class name is replaced with
+           an underscore.</p>
+      </div>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/features.html b/xalan-j/features.html
new file mode 100644
index 0000000..0c29cee
--- /dev/null
+++ b/xalan-j/features.html
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Transform Features</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Transform Features</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>Features<br />
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Transform Features</h2>
+<p>Transform features are identified by URI Strings and fall into the following categories:</p>
+<ul>
+<li>
+<a href="#factoryfeature">Standard TransformationFactory features</a>
+</li>
+<li>
+<a href="#factoryattribute">Implementation-specific TransformerFactory attributes</a>
+</li>
+</ul>
+<a name="factoryfeature">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Standard TransformerFactory features</h3>
+<p>
+<a href="https://jaxp.java.net/">Java API for XML Processing (JAXP) 1.3</a> defines objects and methods for processing input and producing 
+output in a variety of formats, including character streams, SAX event streams, and DOM Documents.</p>
+<p>JAXP 1.3 defines the following features:</p>
+<ul>
+<li>
+<a href="#streamsource">StreamSource feature</a>
+</li>
+<li>
+<a href="#streamresult">StreamResult feature</a>
+</li>
+<li>
+<a href="#domsource">DOMSource feature</a>
+</li>
+<li>
+<a href="#domresult">DOMResult feature</a>
+</li>
+<li>
+<a href="#saxsource">SAXSource feature</a>
+</li>
+<li>
+<a href="#saxresult">SAXResult feature</a>
+</li>
+<li>
+<a href="#saxtransformerfactory">SAXTransformerFactory feature</a>
+</li>
+<li>
+<a href="#xmlfilter">XMLFilter feature</a>
+</li>
+<li>
+<a href="#secureprocessing">Secure processing feature</a>
+</li>
+</ul>
+<p>You can use the 
+ <a href="apidocs/javax/xml/transform/TransformerFactory.html#getFeature(java.lang.String)">TransformerFactory.getFeature(String)</a> 
+method to return a boolean indicating whether the implementation you are using supports the use of one of these objects or methods. For the String argument, provide the static String variable or literal URI String as detailed below.</p>
+<p>You can use the 
+<a href="apidocs/javax/xml/transform/TransformerFactory.html#setFeature(java.lang.String, boolean)">TransformerFactory.setFeature(String, boolean)</a>
+method to set the value of a feature. Xalan-Java only supports setting of the
+<a href="apidocs/javax/xml/XMLConstants.html#FEATURE_SECURE_PROCESSING">XMLConstants.FEATURE_SECURE_PROCESSING</a>
+feature. For all other features, TransformerFactory exposes their values, but cannot change their states.</p>
+<p>Xalan-Java supports <b>all</b> TransformerFactory features.</p>
+<a name="streamsource">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>StreamSource feature</h4>
+<p>
+<b>URI:</b> "http://javax.xml.transform.stream.StreamSource/feature"</p>
+<p>The implementation supports the processing of <a href="apidocs/javax/xml/transform/stream/StreamSource.html">StreamSource</a> input objects.</p>
+<p>To determine whether your implementation supports this feature (Xalan-Java does), you can use the static StreamSource.FEATURE variable  (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import javax.xml.stream.StreamSource;
+
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact.getFeature(StreamSource.FEATURE)){
+  // Can process a StreamSource.
+  ..
+}</pre>
+</blockquote>
+<p>For a example that uses this feature, see <a href="samples.html#simpletransform">SimpleTransform</a>.</p>
+<a name="streamresult">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>StreamResult feature</h4>
+<p>
+<b>URI:</b> "http://javax.xml.transform.stream.StreamResult/feature"</p>
+<p>The implementation supports the production of transformation output in the form of <a href="apidocs/javax/xml/transform/stream/StreamResult.html">StreamResult</a> objects.</p>
+<p>To determine whether your implementation supports this feature (Xalan-Java does), you can use the static StreamResult.FEATURE variable  (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import javax.xml.stream.StreamResult;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact.getFeature(StreamResult.FEATURE)){
+  // Can generate a StreamResult.
+  ..
+}</pre>
+</blockquote>
+<p>For a example that uses this feature, see <a href="samples.html#simpletransform">SimpleTransform</a>.</p>
+<a name="domsource">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>DOMSource feature</h4>
+<p>
+<b>URI:</b> "http://javax.xml.transform.dom.DOMSource/feature"</p>
+<p>The implementation supports the processing of XML input in the form of <a href="apidocs/javax/xml/transform/dom/DOMSource.html">DOMSource</a> objects.</p>
+<p>To determine whether your implementation supports this feature (Xalan-Java does), you can use the static DOMSource.FEATURE string variable (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import javax.xml.dom.DOMSource;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact.getFeature(DOMSource.FEATURE)){
+  // Can process DOM input
+  ..
+}</pre>
+</blockquote>
+<p>For a example that uses this feature, see <a href="samples.html#dom2dom">DOM2DOM</a>.</p>
+<a name="domresult">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>DOMResult feature</h4>
+<p>
+<b>URI:</b> "http://javax.xml.transform.dom.DOMResult/feature"</p>
+<p>The implementation supports the production of transformation output in the form of <a href="apidocs/javax/xml/transform/dom/DOMResult.html">DOMResult</a> objects.</p>
+<p>To determine whether your implementation supports this feature (Xalan-Java does), you can use the static DOMResult.FEATURE variable  (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import javax.xml.dom.DOMResult;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact.getFeature(DOMResult.FEATURE)){
+  // Can generate DOM output.
+  ..
+}</pre>
+</blockquote>
+<p>For a example that uses this feature, see <a href="samples.html#dom2dom">DOM2DOM</a>.</p>
+<a name="saxsource">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>SAXSource feature</h4>
+<p>
+<b>URI:</b> "http://javax.xml.transform.dom.SAXSource/feature"</p>
+<p>The implementation supports the processing of XML input in the form of <a href="apidocs/javax/xml/transform/sax/SAXSource.html">SAXSource</a> objects.</p>
+<p>To determine whether your implementation supports this feature (Xalan-Java does), you can use the static SAXSource.FEATURE string variable (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import javax.xml.sax.SAXSource;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact.getFeature(SAXSource.FEATURE)){
+  // Can process SAX events.
+  ..
+}</pre>
+</blockquote>
+<a name="saxresult">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>SAXResult feature</h4>
+<p>
+<b>URI:</b> "http://javax.xml.transform.dom.SAXResult/feature"</p>
+<p>The implementation supports the production of transformation output in the form of <a href="apidocs/javax/xml/transform/sax/SAXResult.html">SAXResult</a> objects.</p>
+<p>To determine whether your implementation supports this feature (Xalan-Java does), you can use the static SAXResult.FEATURE variable  (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import javax.xml.sax.SAXResult;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact.getFeature(SAXResult.FEATURE)){
+  // Can output SAX events.
+  ..
+}</pre>
+</blockquote>
+<p>For a example that uses this feature, see <a href="samples.html#sax2sax">SAX2SAX</a>.</p>
+<a name="saxtransformerfactory">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>SAXTransformerFactory feature</h4>
+<p>
+<b>URI:</b> "http://javax.xml.transform.sax.SAXTransformerFactory/feature"</p>
+<p>The implementation provides a <a href="apidocs/javax/xml/transform/sax/SAXTransformerFactory.html">SAXTransformerFactory</a>. 
+You may safely cast the TransformerFactory returned by TransformerFactory.newInstance() to a SAXTransformerFactory.</p>
+<p>To determine whether your implementation supports this feature (Xalan-Java does), you can use the static SAXTransformerFactory.FEATURE 
+variable (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import javax.xml.sax.SAXTransformerFactory;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact.getFeature(SAXTransformerFactory.FEATURE)){
+  SAXTransformerFactory saxTFact = (SAXTransformerFactory)tFact;
+  ..
+}</pre>
+</blockquote>
+<p>For a example that uses this feature, see <a href="samples.html#sax2sax">SAX2SAX</a>.</p>
+<a name="xmlfilter">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>XMLFilter feature</h4>
+<p>
+<b>URI: </b>"http://javax.xml.transform.sax.SAXTransformerFactory/feature/xmlfilter"</p>
+<p>The implementation supports the use of <a href="apidocs/org/xml/sax/XMLFilter.html">XMLFilter</a> to use the output of one 
+transformation as input for another transformation. The SAXTransformerFactory newXMLFilter(Source) and newXMLFilter(Templates) methods 
+are supported.</p>
+<p>To determine whether your implementation supports this feature (Xalan-Java does), you can use the static 
+SAXTransformerFactory.FEATURE_XMLFilter variable (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import javax.xml.sax.SAXTransformerFactory;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact.getFeature(SAXTransformerFactory.FEATURE_XMLFILTER))){
+  // Can use SAXTransformerFactory to get XMLFilters.
+  ..
+}</pre>
+</blockquote>
+<p>For an example that uses this feature to chain together a series of transformations, see 
+<a href="samples.html#usexmlfilters">UseXMLFilters</a>.</p>
+
+<a name="secureprocessing">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Secure processing feature</h4>
+<p>
+<b>URI: </b>"http://javax.xml.XMLConstants/feature/secure-processing"</p>
+<p>Xalan-Java supports the secure processing feature in both the interpretive and XSLTC 
+processors. When this feature is set to true, the implementation will apply a set of limits on the 
+XSLT/XML processing behavior to make the XSLT processor behave in a secure fashion. The limits are 
+implementation dependent. Xalan-Java applies the following limits when the secure processing feature 
+is set to true:<br />
+<br />
+<li>extension functions and extension elements are disabled.</li>
+<li>parsers created by the XSLT processors will also have the secure processing feature set to true.</li>
+</p>
+
+<a name="factoryattribute">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Xalan-Java TransformerFactory attributes</h3>
+<p>A given implementation may provide TransformerFactory attributes for which you can set and get values. Xalan-Java uses the 
+<a href="dtm.html"> DTM (Document Table Model)</a> to support three attributes which can be set to true or false:</p>
+<ul>
+<li>
+<a href="#optimize">optimize attribute</a>
+</li>
+<li>
+<a href="#incremental">incremental attribute</a>
+</li>
+<li>
+<a href="#source_location">source_location attribute</a>
+</li>
+</ul>
+<p>To get an attribute setting, use the TransformerFactory.getAttribute(String) method, which returns an Object. For these three Xalan-Java 
+attributes, you can cast the return value to a boolean. To set an attribute, use the TransformerFactory.setAttribute(String, Object) method. 
+For the String argument, provide the static String variable or literal URI String as detailed below. For the Object argument, use 
+Boolean.TRUE or Boolean.FALSE (or the Strings "true" or "false").</p>
+<a name="optimize">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>optimize attribute</h4>
+<p>
+<b>URI:</b> "http://xml.apache.org/xalan/features/optimize"</p>
+<p>Optimize stylesheet processing. By default, this attribute is set to true. You may need to set it to false for tooling applications. 
+For more information, see <a href="dtm.html#optimize">DTM optimize</a>.</p>
+<p>To turn optimization off, you can use the TransformerFactoryImpl.FEATURE_OPTIMIZE static variable (equivalent to the URI String above) 
+as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import org.apache.xalan.processor.TransformerFactoryImpl;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact instanceof TransformerFactoryImpl) {
+  tFact.setAttribute(TransformerFactoryImpl.FEATURE_OPTIMIZE, 
+                     Boolean.FALSE);
+}</pre>
+</blockquote>
+<a name="incremental">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>incremental attribute</h4>
+<p>
+<b>URI:</b> "http://xml.apache.org/xalan/features/incremental"</p>
+<p>Produce output incrementally, rather than waiting to finish parsing the input before generating any output. By default this attribute is set
+to false. You can turn this attribute on to transform large documents where the stylesheet structure is optimized to execute individual templates 
+without having to parse the entire document. For more information, see <a href="dtm.html#incremental">DTM incremental</a>.</p>
+<p>To turn incremental transformations on, you can use the TransformerFactoryImpl.FEATURE_INCREMENTAL static variable (equivalent to the URI String above) as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import org.apache.xalan.processor.TransformerFactoryImpl;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact instanceof TransformerFactoryImpl) {
+  tFact.setAttribute(TransformerFactoryImpl.FEATURE_INCREMENTAL, 
+                     Boolean.FALSE);
+}</pre>
+</blockquote>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The incremental feature is not currently supported by XSLTC.</td>
+</tr>
+</table>
+
+<a name="source_location">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>source_location attribute</h4>
+<p>
+<b>URI:</b> "http://xml.apache.org/xalan/properties/source-location"</p>
+<p>Provide a <a href="apidocs/javax/xml/transform/SourceLocator.html">SourceLocator</a> that can be used during a transformation
+to obtain the location of individual nodes in a source document (system ID, line number, and column number).</p>
+<p>By default, this attribute is set to false. Setting this attribute to true involves a substantial increase in storage cost per source 
+document node. If you want to use the <a href="extensionslib.html#nodeinfo">NodeInfo</a> extension functions (or some other mechanism) 
+to provide this information during a transform, you must set the attribute to true before generating the Transformer and processing the 
+stylesheet.</p>
+<p>The <a href="commandline.html">command-line utility</a> -L flag sets this attribute to true. To set the source_location attribute
+programmatically, you can use the TransformerFactoryImpl.FEATURE_SOURCE_LOCATION static variable (equivalent to the URI String above) 
+as follows:</p>
+<blockquote class="source">
+<pre>import javax.xml.transform.TransformerFactory;
+import org.apache.xalan.transformer.TransformerImpl;
+import org.apache.xalan.transformer.XalanProperties;
+..
+TransformerFactory tFact = TransformerFactory.newInstance();
+if (tFact instanceof TransformerFactoryImpl) {
+  tFact.setAttribute(TransformerFactoryImpl.FEATURE_SOURCE_LOCATION, 
+                     Boolean.TRUE);
+}</pre>
+</blockquote>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/getstarted.html b/xalan-j/getstarted.html
new file mode 100644
index 0000000..cd38993
--- /dev/null
+++ b/xalan-j/getstarted.html
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Getting Started</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Getting Started</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>Getting Started<br />
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Getting Started</h2>
+<ul>
+  <li>
+<a href="#classpath">Setting up the system classpath</a>
+</li>
+  <li>
+<a href="#samples">Trying out the samples</a>
+</li>
+  <li>
+<a href="#commandline">Performing your own transformations from the command line</a>
+</li>
+  <li>
+<a href="#java-apps">Setting up your own XSLT applications</a>
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Unless otherwise specified, the usage discussed in this section refers to 
+the Xalan-Java Interpretive processor. See <a href="xsltc_usage.html">Getting Started with XSLTC 
+</a> for information on using the Xalan-Java Compiling processor.</td>
+</tr>
+</table>
+<br />
+<a name="classpath">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Setting up the system classpath</h3>
+  <p>At the very minimum, you must include <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, 
+     and <code>xercesImpl.jar</code> -- or another conformant XML parser -- see <a href="usagepatterns.html#plug">Plugging in a Transformer and XML parser</a>) on the system classpath. 
+     To run the Xalan-Java Interpretive processor sample applications, include <code>xalansamples.jar</code> 
+     (all samples other than the servlet) and <code>xalanservlet.jar</code>. All these JAR files are 
+     distributed with Xalan-Java. To run Javascript extensions, include <code>bsf.jar</code>, which can
+     be obtained from the <a href="http://jakarta.apache.org/bsf/index.html">Apache Jakarta
+     BSF project</a>. For extensions implemented in other scripting language, see 
+     <a href="extensions.html#supported-lang"> extensions language requirements</a> 
+     to identify any additional JAR files you must place on the classpath and where you can 
+     get them.</p>
+     
+  <p>If you are using XSLTC, see <a href="xsltc_usage.html">Getting Starting with XSLTC</a>.</p>
+     
+  <p>If you are using JDK or JRE 1.3.x or 1.4.x, include <code>tools.jar</code> on the classpath.  If you
+     are using JDK or JRE 1.1.8 (supported for runtime only), then include <code>classes.zip</code> on the 
+     classpath.</p>
+
+
+<a name="samples">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Trying out the samples</h3>
+  <p>The Xalan-Java distribution includes a number of basic sample applications. These samples are easy 
+     to run, and you can review the source files -- all of which are brief -- to see just how they 
+     work.</p>
+  <p>To run the samples, do the following:</p>
+  <ol>
+    <li>Set up your classpath (see above), including <code>xalansamples.jar</code> and (for the servlet) 
+        <code>xalanservlet.jar</code>.</li>
+    <li>Be sure the java executable is on your path.</li>
+    <li>Go to the samples subdirectory containing the sample (use the DOS shell if you are running 
+        Windows).</li>
+    <li>Use the java executable to run the sample from the command line.</li>
+    <li>Examine the application source and result files.</li>
+  </ol>
+  <p>For example, go to the SimpleTransform subdirectory and issue the following command:</p>
+  <p>
+<code>java SimpleTransform</code>
+</p>
+  <p>The sample writes the transformation result  to a file (birds.out). To see how the example works, 
+     examine the source files: birds.xml, birds.xsl, and SimpleTransform.java.</p>
+  <p>The extensions examples require additional JAR files on the classpath, and the procedure for 
+     running the sample applet and sample servlet is different. For more information about all the 
+     samples, see <a href="samples.html">Xalan-Java Samples</a>.</p>
+
+
+<a name="commandline">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Performing your own transformations from the command line</h3>
+  <p>org.apache.xalan.xslt.Process provides a basic utility for performing transformations from 
+     the command line. You can use this utility, for example, to run several of the extensions samples. 
+     The command line for most standard transformations is as follows:</p>
+  <p>
+<code>java org.apache.xalan.xslt.Process -in <b>
+<i>xmlSource</i>
+</b>
+</code>
+<br />
+     <code>    -xsl <b>
+<i>stylesheet</i>
+</b> -out <b>
+<i>outputfile</i>
+</b>
+</code>
+</p>
+  <p>where <b>
+<i>xmlSource</i>
+</b> is the XML source file name, <b>
+<i>stylesheet</i>
+</b> is the XSL 
+     stylesheet file name, and <b>
+<i>outputfile</i>
+</b> is the output file name.</p>
+  <p>If you want the output to be displayed on the screen, simply omit the -out flag and argument.</p>
+  <p>You can use this utility to try out XSL stylesheets you have written, to make sure they do what 
+     you expect with the XML source files they are designed to transform. The utility provides useful 
+     messages if the source file or stylesheet is not well formed. For more information, see 
+     <a href="commandline.html">Command-Line Utility</a>.</p>
+
+
+<a name="java-apps">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Setting up your own Java applications</h3>
+  <p>You can start by using your own XML source files and XSL stylesheets with the sample applications, 
+     which illustrate a number of the <a href="usagepatterns.html">basic usage patterns</a>.</p>
+  <p>Here is the basic procedure to keep in mind when you set up a transformation:</p>
+  <ol>
+    <li>Use the <a href="apidocs/javax/xml/transform/TransformerFactory.html">TransformerFactory</a> static newInstance() method to instantiate a TransformerFactory.<br />
+<br />
+</li>
+    <li>Use the TransformerFactory newTransformer(Source stylesheet) method to process the 
+        transformation instructions in an XSLT stylesheet Source (producing under the covers a 
+        <a href="apidocs/javax/xml/transform/Templates.html">Templates</a> object) and generate 
+        a <a href="apidocs/javax/xml/transform/Transformer.html">Transformer</a>.<br />
+<br />
+</li>
+    <li>Use the Transformer transform(Source xmlSource, Result transformResult) method to apply the 
+        transformation instructions (the Templates object) to the XML Source and produce the 
+        transformation Result.<br />
+<br />
+</li>
+  </ol>
+  <p>For more information about this procedure and its variations, see <a href="usagepatterns.html">Basic 
+     Usage Patterns</a>.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/history.html b/xalan-j/history.html
new file mode 100644
index 0000000..8fead4b
--- /dev/null
+++ b/xalan-j/history.html
@@ -0,0 +1,22251 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: History of software changes</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">History of software changes</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>History of software changes</h2>
+<p>The following sections list the core software changes in each release since Xalan-Java version 2.0.D01.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">For XSLTC changes since XSLTC was incorporated into Xalan-Java, see
+                        <a href="xsltc_history.html">XSLTC software changes</a>.</td>
+</tr>
+</table>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.7.0</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/03/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorImport.java ProcessorInclude.java ProcessorLRE.java 
+ProcessorStylesheetElement.java StylesheetHandler.java XSLTElementDef.java xml-xalan/java/src/org/apache/xalan/templates 
+ElemExsltFunction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by: Brian Minchau<br />
+Modified code for potential extension of classes with callbacks to the extensions.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>bhakti@apache.org<b>
+<i> on </i>
+</b>2004/03/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Encodings.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a newline at the end of Encodings.properties to fix bug 27516.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/03/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ObjectFactory.java xml-xalan/java/src/org/apache/xalan/lib 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/lib/sql ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xslt 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/cmdline ObjectFactory.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/dom ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/trax ObjectFactory.java xml-xalan/java/src/org/apache/xml/dtm 
+ObjectFactory.java xml-xalan/java/src/org/apache/xml/dtm/ref ObjectFactory.java xml-xalan/java/src/org/apache/xml/serializer 
+ObjectFactory.java xml-xalan/java/src/org/apache/xml/utils ObjectFactory.java xml-xalan/java/src/org/apache/xpath/compiler 
+ObjectFactory.java xml-xalan/java/src/org/apache/xpath/functions ObjectFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a bug in the findProviderClass method of ObjectFactory
+classes. The argument of SecurityManager.checkPackageAccess should be a string
+value of a package name, instead of a class name.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/03/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler Compiler.java FunctionTable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch to hide static function table in FunctionTable class. We do not want to expose this table to others.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/03/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils DOMBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The xmlns URI should also be used to add NS decls as attributes to a DOM. However, this was only done for attributes that started 
+with 'xmlns:' and not for 'xmlns' (i.e. not for decls of the default NS).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/04/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java xml-xalan/java/src/org/apache/xpath/objects 
+DTMXRTreeFrag.java XRTreeFrag.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The problem is that about 1800 * Thread_num  XRTreeFrag  objects were created. 
+It took too long for finalizer to be executed to release the references.<br />
+A lot of the objects have the same DTMs (and one XPathContext per thread).
+In my fix I am suggesting 
+a. to have new class DTMXRTreeFrag. The object of the class would 
+be created only for different DTMs (just 5 objects). 
+b. release the references to  DTM and XPathContext from XPathContext.reset()
+(and remove finalize() ).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/04/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java xml-xalan/java/src/org/apache/xml/utils Trie.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 28435<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Henry Zongaro<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/04/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates AVT.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Scaling Problem in org/apache/xalan/templates/AVT.evaluate. The problem is that synchronized calls 
+StringBufferPool.get() and StringBufferPool.free(buf) are redundant if (null != m_simpleString).
+The bug results in severe performance degradation in multi-thread test.
+The fix is simple just not to the calls when (null != m_simpleString).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2004/05/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/style/stylesheets designdoc2html.xsl<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Provide alternative text for images to address accessibility issues.
+All images should contain a short alternative text description that represents
+the function of the graphic.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2004/05/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs xml-site-style.tar.gz<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update document2html.xsl within this tarball to provide alternative text for images to address accessibility issues.
+All images should contain a short alternative text description that represents the function of the graphic.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/05/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/SAX2SAX SAX2SAX.java xml-xalan/java/samples/Pipe Pipe.java 
+xml-xalan/java/samples/DOM2DOM DOM2DOM.java
+xml-xalan/java/samples/UseStylesheetPI foo.xsl xml-xalan/java/samples/UseStylesheetParam foo.xsl
+xml-xalan/java/samples/UseXMLFilters UseXMLFilters.java
+xml-xalan/java/samples/Trace foo.xsl<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Clean up related to bugzilla 24304.
+There is no longer a space after the XML header. To keep the output
+of this sample the same as before properties were set on the
+serializer (indent="yes" and standalone="no" ).
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Sarah McNamara<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/05/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates AVT.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The problem is that we use an object pool (shared between different threads)
+to allocate  FastStringBuffer objects. The problem results in a serious performance
+degradation  on Z/OS and seems to be invisible on AIX.<br />
+1 Differences in optimization of object pools  for different JVMs and for different 
+platforms are known(I know it now too). It is not surprising that  Z/OS and AIX 
+have different results.<br />
+2. a. Object pools should be used only for very heavy object which live for a long time
+and could be reused in a lot of places. <br />
+b. Small local objects which size cannot be changed could be allocated on the
+stack =&gt; creating them with new in the local scope could be a good idea.<br />
+c. Caching middle size objects which can grow in size seems as a good idea,
+because such objects usually cannot be allocated on the stack.
+This is actually the case for FastStringBuffer objects. <br />
+Solution: Create FastStringBuffer objects in a local scope and use caching whenever possible.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/client XSLTProcessorApplet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Christine Li<br />
+Fixing binary compatibility (serialization/de-serialization) of XSLTProcessorApplet.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/06/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 29234<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Morris Kwan<br />
+This problem only showed up under XSLTC.  When setting the
+encoding a related field was not set.  Fixed this by over-riding the 
+set method for the stream serializers.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/06/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer WriterToUTF8Buffered.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 29372<br />
+Submitted by:	J Desrochers (john@ASCnet.COM)<br />
+Reviewed by:	Brian Minchau<br />
+
+A safe fix for chunking up an array for output. The length  was multiplied by the
+chunk number (0,1,2... chunks) then divided by "chunks". John's fix uses a 
+"long" to do the arithemetic because multiplying by the chunk number first 
+could cause an overflow.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes ChildIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla bug 28879.  Classes derived from NodeTest need to ensure
+that initNodeTest is called to set the filter for the kinds of nodes accepted.
+Without this change, ChildIterator will reject all nodes.
+
+Patch reviewed by Christine Li (jycli@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>aruny@apache.org<b>
+<i> on </i>
+</b>2004/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Description: Improper Serialization of document type declaration in xml document.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2004/07/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan Version.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bug 30056.  Recover the performance degradation for xsl:copy and xsl:copy-of.
+Reviewed by Henry Zongaro (zongaro@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/07/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerBase.java ToTextStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 29706<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Christine Li<br />
+
+A fix to add a temporary vs. permanent output state to the serializer
+(AKA result-tree-handler).  In theory the XSLT processor should set the
+temporary or permanent output state, but we observer that when the
+encoding of a ToTextStream serializer is null, then such a serializer is
+in temporary output state.<br />
+
+In temorary output state we don't do any escaping or encoding or other 
+sorts of normalization on output. This will be done by another serializer 
+later on, and that one will be in permanent output state.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/07/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 30142<br />
+Submitted by:	Bruno Dumon (bruno@outerthought.org)<br />
+Reviewed by:	Brian Minchau<br />
+
+Thanks to Bruno for this simple one-line, fix where we forgot to put
+a space between the PUBLIC and SYSTEM ID's in a DOCTYPE declaration
+in serialized HTML output.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/07/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/objects XString.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Yash Talwar<br />
+Reviewed by:	Brian Minchau<br />
+Fix for bugzilla 29655.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/08/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib Redirect.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: 30658<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Morris Kwan<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/08/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/trace TraceManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: 30301<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Morris Kwan<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/08/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/objects XRTreeFragSelectWrapper.java xml-xalan/java/src/org/apache/xpath/res 
+XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: 30262<br />
+Submitted by:	Yash Talwar<br />
+Reviewed by:	Henry Zongaro<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm DTMException.java xml-xalan/java/src/org/apache/xpath XPathException.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for printStackTrace when using JDK 1.4.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ObjectFactory.java xml-xalan/java/src/org/apache/xalan/lib 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/lib/sql ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xslt 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/cmdline ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/dom 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/trax 
+ObjectFactory.java xml-xalan/java/src/org/apache/xml/dtm ObjectFactory.java xml-xalan/java/src/org/apache/xml/dtm/ref ObjectFactory.java 
+xml-xalan/java/src/org/apache/xml/serializer ObjectFactory.java xml-xalan/java/src/org/apache/xml/utils ObjectFactory.java 
+xml-xalan/java/src/org/apache/xpath/compiler ObjectFactory.java xml-xalan/java/src/org/apache/xpath/functions ObjectFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixing a potential memory leak.  The reader used to read the service provider is never closed if an IOException is thrown while 
+reading from it.  Adding a finally block so that the reader will always be closed.  Patch reviewed by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ObjectFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added serialVersionUID for classes which implement Serializable interface.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ObjectFactory.java xml-xalan/java/src/org/apache/xalan/lib/sql ObjectFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added serialVersionUID for classes which implement Serializable interface. Was reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorAttributeSet.java ProcessorCharacters.java ProcessorDecimalFormat.java 
+ProcessorExsltFuncResult.java ProcessorExsltFunction.java ProcessorGlobalParamDecl.java ProcessorGlobalVariableDecl.java 
+ProcessorImport.java ProcessorInclude.java ProcessorKey.java ProcessorLRE.java ProcessorNamespaceAlias.java ProcessorOutputElem.java 
+ProcessorPreserveSpace.java ProcessorStripSpace.java ProcessorStylesheetDoc.java ProcessorStylesheetElement.java ProcessorTemplate.java 
+ProcessorTemplateElem.java ProcessorText.java ProcessorUnknown.java WhitespaceInfoPaths.java XSLTElementProcessor.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added serialVersionUID for classes which implement Serializable interface. Patch created by Christine Li (jycli@ca.ibm.com) 
+and was reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates AVT.java AVTPart.java AVTPartSimple.java AVTPartXPath.java 
+DecimalFormatProperties.java ElemApplyImport.java ElemApplyTemplates.java ElemAttribute.java ElemAttributeSet.java 
+ElemCallTemplate.java ElemChoose.java ElemComment.java ElemCopy.java ElemCopyOf.java ElemElement.java ElemEmpty.java 
+ElemExsltFuncResult.java ElemExsltFunction.java ElemExtensionCall.java ElemExtensionDecl.java ElemExtensionScript.java 
+ElemFallback.java ElemForEach.java ElemIf.java ElemLiteralResult.java ElemMessage.java ElemNumber.java ElemOtherwise.java 
+ElemParam.java ElemPI.java ElemSort.java ElemTemplate.java ElemTemplateElement.java ElemText.java ElemTextLiteral.java 
+ElemUnknown.java ElemUse.java ElemValueOf.java ElemVariable.java ElemVariablePsuedo.java ElemWhen.java ElemWithParam.java 
+FuncDocument.java FuncFormatNumb.java FuncKey.java KeyDeclaration.java NamespaceAlias.java OutputProperties.java Stylesheet.java 
+StylesheetComposed.java StylesheetRoot.java TemplateList.java TemplateSubPatternAssociation.java WhiteSpaceInfo.java 
+XMLNSDecl.java XUnresolvedVariable.java XUnresolvedVariableSimple.java xml-xalan/java/src/org/apache/xalan/transformer 
+CountersTable.java KeyIterator.java KeyRefIterator.java xml-xalan/java/src/org/apache/xalan/xslt ObjectFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added serialVersionUID for classes which implement Serializable interface. Patch created by Christine Li (jycli@ca.ibm.com) 
+and was reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm DTMConfigurationException.java DTMDOMException.java ObjectFactory.java 
+xml-xalan/java/src/org/apache/xml/dtm/ref DTMNamedNodeMap.java IncrementalSAXSource_Filter.java ObjectFactory.java 
+xml-xalan/java/src/org/apache/xml/serializer ObjectFactory.java xml-xalan/java/src/org/apache/xml/utils MutableAttrListImpl.java 
+NameSpace.java NodeVector.java ObjectFactory.java ObjectPool.java QName.java SAXSourceLocator.java SerializableLocatorImpl.java 
+StopParseException.java StringVector.java URI.java WrappedRuntimeException.java WrongParserException.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added serialVersionUID for classes which implement Serializable interface. Patch created by Christine Li (jycli@ca.ibm.com) 
+and was reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath Expression.java FoundIndex.java NodeSetDTM.java XPath.java 
+XPathProcessorException.java xml-xalan/java/src/org/apache/xpath/axes AttributeIterator.java AxesWalker.java 
+BasicTestIterator.java ChildIterator.java ChildTestIterator.java DescendantIterator.java FilterExprIterator.java 
+FilterExprIteratorSimple.java FilterExprWalker.java IteratorPool.java LocPathIterator.java MatchPatternIterator.java 
+NodeSequence.java OneStepIterator.java OneStepIteratorForward.java PredicatedNodeTest.java ReverseAxesWalker.java 
+RTFIterator.java SelfIteratorNoPredicate.java UnionChildIterator.java UnionPathIterator.java WalkingIterator.java 
+WalkingIteratorSorted.java xml-xalan/java/src/org/apache/xpath/compiler ObjectFactory.java 
+xml-xalan/java/src/org/apache/xpath/functions FuncBoolean.java FuncCeiling.java FuncConcat.java FuncContains.java 
+FuncCount.java FuncCurrent.java FuncDoclocation.java FuncExtElementAvailable.java FuncExtFunction.java 
+FuncExtFunctionAvailable.java FuncFalse.java FuncFloor.java FuncGenerateId.java FuncId.java FuncLang.java 
+FuncLast.java FuncLocalPart.java FuncNamespace.java FuncNormalizeSpace.java FuncNot.java FuncNumber.java 
+FuncPosition.java FuncQname.java FuncRound.java FuncStartsWith.java FuncString.java FuncStringLength.java 
+FuncSubstring.java FuncSubstringAfter.java FuncSubstringBefore.java FuncSum.java FuncSystemProperty.java 
+Function.java Function2Args.java Function3Args.java FunctionDef1Arg.java FunctionMultiArgs.java FunctionOneArg.java 
+FuncTranslate.java FuncTrue.java FuncUnparsedEntityURI.java ObjectFactory.java WrongNumberArgsException.java 
+xml-xalan/java/src/org/apache/xpath/objects XBoolean.java XBooleanStatic.java XNodeSet.java XNodeSetForDOM.java 
+XNull.java XNumber.java XObject.java XRTreeFrag.java XRTreeFragSelectWrapper.java XString.java XStringForChars.java 
+XStringForFSB.java xml-xalan/java/src/org/apache/xpath/operations And.java Bool.java Div.java Equals.java Gt.java 
+Gte.java Lt.java Lte.java Minus.java Mod.java Mult.java Neg.java NotEquals.java Number.java Operation.java Or.java 
+Plus.java Quo.java String.java UnaryOperation.java Variable.java VariableSafeAbsRef.java 
+xml-xalan/java/src/org/apache/xpath/patterns ContextMatchStepPattern.java FunctionPattern.java NodeTest.java 
+StepPattern.java UnionPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added serialVersionUID for classes which implement Serializable interface. Patch created by Christine Li (jycli@ca.ibm.com) 
+and was reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/08/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils Trie.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Brian Minchau<br />
+No external changes to Trie, but some additional APIs to make for a lower case
+only search in a Trie (possibly for future XHTML support where the element
+names are lower-case only).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer CharInfo.java ToHTMLStream.java ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Minor changes to CharInfo to map charaters to decorated entities (e.g. "&amp;lt;" ) 
+rather than just entity names (e.g. "lt"), which is a minor performance improvement.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2004/08/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils XMLReaderManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a memory leak problem described in bugzilla 28082.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/09/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerTraceWriter.java ToStream.java 
+WriterChain.java WriterToASCI.java WriterToUTF8Buffered.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Brian Minchau<br />
+Code clean up, to have an explicit interface, WriterChain, for writers that wrap other Writers or OutputStreams,
+e.g. WriterToUTF8Buffered.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/09/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToXMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Brian Minchau<br />
+Javadoc changes, and added a call in ToXMLStream.processingInstruction() 
+method to effectively consider that a startDocument() call was made,
+if none was yet seen.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/09/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 27522<br />
+Submitted by:	Brian Minchau<br />
+committing patch from bugzilla 27522.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2004/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed bug where JDBC execute was being called instead ofg executeQuery.
+executeQuery will always retrurn a result set even if the query does not return any  rows
+where execute won't. This was causing a compatibility issue.
+Added in Record skip code to help with pagination.<br />
+PR: http://nagoya.apache.org/jira/browse/XALANJ-1908<br />
+Submitted by:	John Gentilin<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2004/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed bug where the close document method could not locxate the SQL Document.
+see http://nagoya.apache.org/jira/browse/XALANJ-1925.<br />
+Obtained from:  Moraine Didier mailto://didier.moraine@winterthur.be<br />
+Submitted by:	John Gentilin<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2004/09/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added new targets to support building the distribution packages (*-bin.tar.gz/.zip and *-src.tar.gz/.zip)
+without building the user guide and api docs.
+Reorganized some sections to make the targets more readable.
+Renamed the "*-nojardepends" rules to either "*-compile" or "*-build" to make them more intuitive.
+Reviewed by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/10/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler XPathParser.java xml-xalan/java/src/org/apache/xpath/patterns NodeTest.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Yash Talwar (ytalwar@ca.ibm.com) for XALANJ-1186.
+The existing code in the interpretive processor was handling namespace::pre by
+resolving the namespace prefix "pre" in the stylesheet, and then looking for
+namespace nodes with that same URI in the input document.  In fact, it should
+look for namespaces nodes in the input document that declare the prefix "pre",
+without regard to the associated URI. The patch was reviewed by myself (zongaro@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSL Transformation drops content inside xsl:comment tags.<br />
+PR: XALANJ-1966<br />
+Submitted by:	Yash Talwar<br />
+Reviewed by:	 Brian Minchau<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/operations Variable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Null Pointer Exception on sorting using a variable.<br />
+PR: XALANJ-1942<br />
+Submitted by:	Yash Talwar<br />
+Reviewed by:	Brian Minchau<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorNamespaceAlias.java xml-xalan/java/src/org/apache/xalan/res 
+XSLTErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Null Pointer Exception when namespace-alias element says to use "#default" namespace but there is no default namespace.
+PR: XALANJ-1967<br />
+Submitted by:	Yash Talwar<br />
+Reviewed by:	Brian Minchau<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/10/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+At the suggestion of Joseph Kesselman, dropped contents of the org.apache.xml.utils.synthetic package, as they have never been used.
+Patch reviewed by Christine Li (jycli@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/10/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerGeneral.java 
+xml-xalan/java/xdocs/sources/xalan extensions.xml resources.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed of Bug report XalanJ-1822. Added alternative BSF implementation support for extension functions in languages other than Java
+Patch reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer/utils AttList.java BoolStack.java DOM2Helper.java Messages.java 
+SerializerMessages_en.java SerializerMessages.java StringToIntTable.java SystemIDResolver.java URI.java Utils.java 
+WrappedRuntimeException.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-1891<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Yash Talwar<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer/utils Messages.java SerializerMessages.java Utils.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Brian Minchau<br />
+Made some fields final or private to make the objects immutable, especially the messages.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer AttributesImplSerializer.java CharInfo.java DOMSerializer.java ElemDesc.java 
+EmptySerializer.java EncodingInfo.java Encodings.java ExtendedContentHandler.java ExtendedLexicalHandler.java Method.java 
+NamespaceMappings.java ObjectFactory.java OutputPropertiesFactory.java OutputPropertyUtils.java SerializationHandler.java 
+Serializer.java SerializerBase.java SerializerConstants.java SerializerFactory.java SerializerTrace.java SerializerTraceWriter.java 
+ToHTMLSAXHandler.java ToHTMLStream.java ToSAXHandler.java ToStream.java ToTextSAXHandler.java ToTextStream.java ToUnknownStream.java 
+ToXMLSAXHandler.java ToXMLStream.java TreeWalker.java Utils.java Version.java WriterToASCI.java ElemContext.java TransformStateSetter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Yash Talwar<br />
+Source code changes to the serializer to make it independent of Xalan.
+Mostly message and utility usage changes.
+However multiple classes had their visibility reduced to less than "public".<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils CharKey.java Trie.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-1891<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Yash Talwar<br />
+Deleting Charkey and Trie which were only used by the serializer.
+These classes are migrated to the serializer package, in the case of
+CharKey, it is now an inner private class.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src MANIFEST.SERIALIZER<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-1891<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Sarah McNamara<br />
+Creating MANIFEST.SERIALIZER, a template like MANIFEST.MF but
+for an independent serializer.jar that is not part of xalan.jar<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-1891<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Sarah McNamara<br />
+Changes to java/build.xml so that the serializer.jar is built and used by Xalan.
+The two new build targets are serializer.jar and serializer-dist.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin serializer.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-1891<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Sarah McNamara, Yash Talwar<br />
+Checking in an initial serializer.jar into java/bin, hopefully this won't change too often.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2004/10/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql DefaultConnectionPool.java XConnection.java SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+This patch makes the close() function behave better but still has a 
+problem when certain iterators are used.  This code is at least safe 
+in all instaces.  It also fixes a minor bug in the default connection pool.<br />
+Obtained from: John Gentilin<br />
+Submitted by:	John Gentilin<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+A patch to fix Bug XALANJ-1708. Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes NodeSequence.java UnionPathIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+A fix for bug XALANJ-1810. Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2004/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix the samples build. The samples.class.path needs to include the serializer.jar.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2004/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+One more fix to enable builds with JDK 1.4.x.  Need to add the serializer classes to the
+xslt.boot.class.path.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/11/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes DescendantIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+String comparison should use String.equals(), instead of ==.
+Even == works fine for most of the cases, for a serializable object, two variable originally reference to the same string
+after deserialization, they no longer reference the same string, although the values are the same. Fix for bug XalanJ-1550.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/11/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerGeneral.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The latest Rhino1_5R5 checks for the script language line/column no.&gt;=0. Fixed for bug XALANJ-1887.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/11/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/META-INF/services org.apache.xalan.extensions.bsf.BSFManager<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a service provider configuration file to set the Apache BSF as the default implementation for scripting language support.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/11/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin bsf.jar bsf.LICENSE.txt bsf.README.txt<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+remove IBM bsf implementation from the distribution. Xalan is not going to ship any bsf implementation. If users need 
+IBM bsf, they can download it from Attic.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/11/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler Lexer.java XPathParser.java xml-xalan/java/src/org/apache/xpath/domapi 
+XPathEvaluatorImpl.java XPathExpressionImpl.java XPathNamespaceImpl.java XPathNSResolverImpl.java XPathResultImpl.java 
+XPathStylesheetDOM3Exception.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bug XALANJ-1985<br />
+Submitted by:	Yash Talwar<br />
+Reviewed by:	Brian Minchau<br />
+Support for DOM 3 API, for use by an XML Parser.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/11/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-1955.  The equals(Object) method contains a list of
+instanceof checks, and then casts the Object argument to the tested type in
+order to dispatch to a more specific equals method.  In the case where the
+Object argument was an XMLString, the code was actually casting "this" to
+XMLString - thus testing this.equals(this), which will always be true.<br />
+
+Reviewd by Joanne Tong (joannet@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/11/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer KeyTable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-1368.<br />
+The method getKeyDeclaration was looping through all the xsl:key elements
+defined, and returning the first with the required name.  However, more than
+one xsl:key element can specify the same name, and should be treated
+cumulatively.  Modified the method so that it returns all elements with the
+required name, and the caller so that it tries to match against the patterns
+associated with all such elements.<br />
+
+Reviewed by Joanne Tong (joannet@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2004/11/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a memory leak problem in DTMManager (XALANJ-1999).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>joannet@apache.org<b>
+<i> on </i>
+</b>2004/12/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemApplyImport.java xml-xalan/java/src/org/apache/xalan/transformer 
+TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed XALANJ-1824. Changed current template rule when named template executes an xsl:apply-imports.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>joannet@apache.org<b>
+<i> on </i>
+</b>2004/12/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib PipeDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed XALANJ-1662. Allow pipeDocument to throw exceptions.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/12/15<br />
+<b>
+<i>Modified: </i>
+</b> Many files....<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bug report XALANJ-2008<br />
+Based on Sun's Security Code Guidelines, modified the code to improve the security. Major changes includes:<br />
+1. Added final modifier to static variables;<br />
+2. Reduced scope and added public get methods whenever it is appropriate;<br />
+3. Changed some static variable to instance variables;<br />
+4. Changed some interfaces to final classes, if those interfaces are used only to define constants<br />
+5. Removed the usage of System.exit;<br />
+6. For various org.apache.xml.utils.res.XResourceBundle, the getObject() methods return immutable array wrappers instead of arrays<br />
+7. Changed static methods of org.apache.xpath.compiler.FunctionTable to instance methods and the reference of a function table is passed 
+around the processing to create an XPath object;<br />
+8. Changed the flags of FEATURE_INCREMENTAL, FEATURE_OPTIMIZE and FEATURE_SOURCE_LOCATION to instance variables in TransformerFactorImpl. 
+So they will not be changed during a processing once a new Templates is created;<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2004/12/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan Version.java xml-xalan/java/src/org/apache/xpath/functions FuncExtFunction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bug XALANJ-1592. Submitted by Catya Alone (catyaa@hotmail.com).
+Set the parent node for the arguments in extension functions.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/12/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer/utils Messages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Partial fix for bug XALANJ-2021.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/12/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer/utils SerializerMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Partial fix for bug XALANJ-2021 to make key/keyvalue consistent.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/12/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer/utils SerializerMessages_ca.java SerializerMessages_cs.java 
+SerializerMessages_de.java SerializerMessages_es.java SerializerMessages_fr.java SerializerMessages_hu.java 
+SerializerMessages_it.java SerializerMessages_ja.java SerializerMessages_ko.java SerializerMessages_pl.java 
+SerializerMessages_pt_BR.java SerializerMessages_ru.java SerializerMessages_sv.java SerializerMessages_tr.java 
+SerializerMessages_zh_CN.java SerializerMessages_zh_TW.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Other languages, for XALANJ-2021.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/12/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer/utils MsgKey.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+A class containing only message keys, to be shared by all language
+translations (including English).  This is to prevent replication of these
+keys during translation. Related to XALANJ-2021.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/12/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer/utils SerializerMessages_ca.java SerializerMessages_cs.java 
+SerializerMessages_de.java 
+SerializerMessages_es.java SerializerMessages_fr.java SerializerMessages_hu.java SerializerMessages_it.java SerializerMessages_ja.java 
+SerializerMessages_ko.java SerializerMessages_pl.java SerializerMessages_pt_BR.java SerializerMessages_ru.java SerializerMessages_sv.java 
+SerializerMessages_tr.java SerializerMessages_zh_CN.java SerializerMessages_zh_TW.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changes for moving the message keys, to be shared by all language
+translations (including English).  This is to prevent replication of these
+keys during translation. Related to XALANJ-2021.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/12/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer/utils Messages.java SerializerMessages.java URI.java 
+xml-xalan/java/src/org/apache/xml/serializer CharInfo.java OutputPropertiesFactory.java SerializerBase.java 
+SerializerFactory.java ToHTMLStream.java ToStream.java ToTextStream.java ToXMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changes for moving the message keys, to be shared by all language
+translations (including English).  This is to prevent replication of these
+keys during translation. Related to XALANJ-2021.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/12/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/res XMLErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Serializer messages were copied into a message file in the
+org.apache.xml.serializer.utils package.
+The serializer messages in this file are now "dead", so they are being deleted.
+This is part of the cleanup with XALANJ-2021.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/12/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMNamedNodeMap.java DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for Jira bug report XALANJ-1427 on behalf of Yash Talwar (ytalwar@ca.ibm.com).
+
+Completing support for DOM Level 2 Core methods that were previously
+unimplemented, and fixed some bugs in the implementation.  The implementation
+continues to be, of necessity, a read-only implementation.<br />
+
+In particular, implemented the following:<br />
+
+  DTMNamedNodeMap.getNamedItem(String)<br />
+  DTMNodeProxy.getElementsByTagName(String)<br />
+  DTMNodeProxy.getElementsByTagNameNS(String,String)<br />
+  DTMNodeProxy.getElementById(String,String)<br />
+  DTMNodeProxy.getAttributeNodeNS(String,String)<br />
+<br />
+</li>
+  
+  <li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2005/01/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a FAQ about how to use XSLTC in applet when using JRE1.4. It is a fix for bug report XALANJ-1705. Patch reviewed and 
+modified by Sarah McNamara<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2005/01/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDatetime.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-2013.  Duplicate time zone string returned from EXSLT time() function.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/01/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src manifest.xalan-interpretive<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New manifest file to resolve Jira bug report XALANJ-1853.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/01/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Jira bug report XALANJ-1853 .  Use the new xalan interpretive manifest file
+when building the standalone xalan.jar that only contains the interpretive processor.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/01/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src MANIFEST.MF MANIFEST.SERIALIZER manifest.xsltc<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Jira bug report XALANJ-1852.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/01/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize SerializerUtils.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for Jira bug report XALANJ-1640.<br />
+
+As it's currently written, SerializerUtils.outputResultTreeFragment loops
+through the nodes in a result tree fragment, and for each one, it checks
+whether the node is in some namespace.  If it is not, the code undeclares the
+default namespace by calling handler.startPrefixMapping("", "").  The problem
+is that if the RTF that's being copied just consists of a text node (or PIs or
+comments), that undeclaration of the default namespace hangs around until some
+subsequent child element picks it up as one of its attributes, even if that
+element is in some namespace - even what should be the default!<br />
+
+The fix is to check whether the node that is being output is an element node
+prior to issuing the handler.startPrefixMapping call - that ensures the prefix
+mapping is not issued unless it's actually going to be used by the node that is
+about to be serialized.<br />
+
+This patch was reviewed by Brian Minchau (minchau@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/01/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath CachedXPathAPI.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Jira bug report XALANJ-1811.<br />
+
+Updated Javadocs for constructors to make it clear that a single instance of
+CachecXPathAPI must not be used by multiple threads without synchronization.<br />
+
+Reviewed by Christine Li (jycli@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/01/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Jira bug report XALANJ-1888.<br />
+
+It is possible for the characters SAX event to specify a length of zero.  Text
+nodes should not be created in such situations.  Changed the charactersFlush
+method to guard against this case.<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/01/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Two part fix for Jira bug report XALANJ-1888.<br />
+
+1) It is possible for the characters SAX event to specify a length of zero.
+Text nodes should not be created in such situations.  Changed the
+charactersFlush method to guard against this case.<br />
+
+2) Made a defensive change to references to m_dataOrQName.  If the value in
+this vector is to be interpreted as an index into m_data, it is stored as a
+negative value (via calls to addNode).  However, most references to elements of
+m_dataOrQName were checking whether the value was non-positive, treating a
+value of zero as an index into m_data as well.  The zeroth entry into m_data is
+an invalid entry.<br />
+The fix to charactersFlush described above should ensure that zero is never
+stored in m_dataOrQName, but I thought it was just as well to duplicate the
+interpretation used in storing values in m_dataOrQName.<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2005/02/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemNumber.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Implement Errata E24, when the value attribute of xsl:number is NaN, infinite or less than 0.5. 
+More details please refer to bug report XALANJ-1979. Patch is reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/02/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler XPathParser.java xml-xalan/java/src/org/apache/xpath/res 
+XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Jira bug report XALANJ-1478.<br />
+
+In the recursive descent parsing of an ill-formed XPath expression like "2+",
+when the parser reaches the end of the expression while still looking for an
+operand it ultimately ends up trying to see whether what remains can be parsed
+as a location path.  However, the LocationPath method was silently parsing the
+end of an expression as a location path!  Added an error for that situation.<br />
+
+Reviewed by Brian Minchau (minchau@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/02/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/trax ExampleContentHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Jira bug report XALANJ-2054.<br />
+
+The sample ContentHandler code was printing the namespaceURI argument of
+startElement and of endElement twice, but never printed the localName argument.
+Fixed that typo.<br />
+
+Reviewed by Brian Minchau (minchau@ca.ibm.com)<br />
+<br />
+</li>
+
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/02/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer AttributesImplSerializer.java EmptySerializer.java 
+ExtendedContentHandler.java NamespaceMappings.java SerializerBase.java ToStream.java ToTextSAXHandler.java 
+ToTextStream.java ToUnknownStream.java ToXMLSAXHandler.java ToXMLStream.java xml-xalan/java/src/org/apache/xalan/serialize 
+SerializerUtils.java xml-xalan/java/src/org/apache/xalan/templates ElemAttribute.java ElemLiteralResult.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-1886. Multiple problems fixed related to collecting xsl:attributes 
+with over-ridden values and prefix/URI maps.  With this fix, internally the
+serializer correctly identifies attributes by their expanded QName, which 
+includes the URI rather than the prefix.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/02/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java xml-xalan/java/src/org/apache/xml/serializer 
+TreeWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-1985, reviewed by Henry Zongaro. The problem was that a serialized DOM failed to declare a prefix/URI mapping.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/02/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorLRE.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-2037.  The trace information doesn't have the right location information in this case.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/02/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer EmptySerializer.java ExtendedContentHandler.java SerializerBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing serializer.patch5.txt in JIRA issue XALANJ-1886,
+that puts back an old attAttribute() method that takes 5 String arguments.
+There is a new one that takes these 5 String arguments and a boolean to indicate if it is from an xsl:attribute
+or not.  I'm just restoring the old method. Patch reviewed by Henry Zongaro.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/02/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer EmptySerializer.java SerializationHandler.java SerializerBase.java 
+ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-2033 and XALANJ-2051 so that the serializer will serialize DTD
+tags if desired.  The patch was reviewed by Ilene Seeleman.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/02/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils URI.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The fix is for XALANJ-2059.<br />
+
+The problem is that when href attribute has aboslute uri with jar scheme and
+base uri is not null, then base uri is pre-appended to uri specified in href attribute.
+The newer patch is according to RFC 2396.
+The newer patch ignores base uri and directly make use of uri specifed href attribute, provided following conditions are met.<br />
+a)If uri specified in href attribute starts with / after the scheme and :
+  For example, href="file:/myDIR/myXSLFile.xsl.<br />
+b)If scheme specified for uri href attribute is not same as scheme for base uri.<br />
+c)If base uri is not hierarchical<br />
+
+Henry Zongaro has helped creating this patch.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/03/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerConstants.java ToStream.java ToXMLStream.java 
+xml-xalan/java/src/org/apache/xml/serializer/utils MsgKey.java SerializerMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+This patch fix XALANJ-2070.  This patch add XML 1.1 support in term of following:<br />
+- Output Document can be of Version XML 1.1<br />
+- Control Characters in Range C0 and C1 are output as NCR.<br />
+- Namespaces in XML 1.1 can be IRIs.<br />
+- NCNames and QNames can conform to XML 1.1 specifications.<br />
+- NEL and LSEP characters are treated as new end of line character as per XML 1.1 specifications.<br />
+
+Thanks to Brian Minchau for reviewing the patch.  Brian Minchau and Henry Zongaro has also helped how XML 1.1 support should be done.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2005/03/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java xml-xalan/java/src/org/apache/xalan/templates 
+ElemExtensionCall.java ElemLiteralResult.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added implementation for getAttribute, getAttributeNS and getAttributes for LRE. A fix for bug report XALANJ-1526.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/03/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/design design2_0_0.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-1990.  Fixes broken link to apidocs for Serializer.html.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/03/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan usagepatterns.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2026.  Fixes typo in Debugger interface code example.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/03/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerFactory.java xml-xalan/java/src/org/apache/xml/serializer/utils 
+MsgKey.java SerializerMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-2074, committing patch2 in that issue, which removes two
+untranslated messages in SerializerFactory, and uses a new common message
+in SerializerMessages.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2005/03/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer CharInfo.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Marked the code to be privileged, which allows users to load
+customized entity files in sandbox. Fixed bug report XALANJ-2068.
+Patch was reviewed by Brian Minchau (minchau@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/03/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+This patch fixes XALANJ-1431. The patch has been reviewed by Brian.
+The problem is that that when an empty attribute value is encountered, a text node is being created 
+with empty string. 
+Henry Zongaro has helped finding the XSLT 1.0 specs. that suggest a text node with empty string should not be created. 
+URL http://www.w3.org/TR/xslt#value-of has the following information: 
+"The xsl:value-of element is instantiated to create a text node in the result tree. The required select attribute is an 
+expression; this expression is evaluated and the resulting object is converted to a string as if by a call to the string 
+function. The string specifies the string-value of the created text node. If the string is empty, no text node will be 
+created. The created text node will be merged with any adjacent text nodes."<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/03/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan builds.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Jira bug report XALANJ-2079.  Updated links to nightly Gump build. Reviewed by Brian Minchau.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/03/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTAttributeDef.java xml-xalan/java/src/org/apache/xalan/templates 
+ElemAttribute.java ElemElement.java ElemPI.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java 
+AttributeSet.java CallTemplate.java DecimalFormatting.java Key.java Output.java ProcessingInstruction.java Template.java 
+VariableBase.java WithParam.java xpath.lex XslAttribute.java XslElement.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util 
+Util.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java xml-xalan/java/src/org/apache/xml/serializer 
+WriterToUTF8Buffered.java xml-xalan/java/src/org/apache/xml/utils QName.java XML11Char.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+This is resolve UTF-8 Charcater support and QName character support for XML 1.1 support in XALANJ-2070.
+Henry Zongaro and Brian Minchau helped in fixing this part of the JIRA issue.
+A new class org.apache.xml.utils.XML11Char has been included to support XML 1.1 characters.
+Also a reference to org.apache.xml.utils.XMLChar has been replaced with a reference to
+org.apache.xml.utils.XML11Char in almost all the places in Xalan.
+org.apache.xml.serializer.WriterToUTF8Buffered has been update to support UTF-8 characters that can be represented in four bytes.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/03/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/domapi package.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+This resolves XALANJ-2085. Sarah McNamara has reviewed this change.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemNumber.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+This is a fix for XALANJ-2089.
+Christine Li has created this patch.
+Brian Minchau helped in creating this patch.
+Brian Minchau also reviewed this patch.
+org.apache.xalan.templates.ElemNumber.java has raised some performance issue as 
+a static array to hold resources was removed earlier.  However, the removal of static array is necessary
+to fix a potential bug multithread environment, where a given thread can request different locale than another thread.
+
+This patch resolves the performance glicth that was found in internal testing.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer CharInfo.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Commiting patch for XALANJ-2095, that tabs in text nodes in XML documents
+are serialized to &amp;#9; but should stay as a tab character.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan usagepatterns.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from XALANJ-1924 applied. The one deprecated API used is replace
+by the current one, but multiple typos in other examples are corrected.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Encodings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing patch for XALANJ-2077.  This performance modification is
+estimated to shave 3% of the serialization stage of small documents.
+Every little bit counts.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Encodings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Appling fix for XALANJ-2086, which pointed out that findCharToByteConverterMethod() 
+always returned null.  This bug was introduced some time ago during some security
+fixes.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/04/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-2109 applied (we won't \n to \r\n in an HTML attribute value on
+Windows OS anymore, it will be left as is during serialization).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/04/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils XMLReaderManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch in XALANJ-2105.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan Version.java xml-xalan/java/src/org/apache/xalan/processor 
+TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xalan/templates ElemLiteralResult.java 
+xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/trax 
+SmartTransformerFactoryImpl.java TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xml/dtm/ref DTMNodeProxy.java 
+xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTMdefaultNamespaceDeclarationNode.java xml-xalan/java/src/org/apache/xml/utils 
+UnImplNode.java xml-xalan/java/src/org/apache/xpath/domapi XPathNamespaceImpl.java xml-xalan/java/src/org/apache/xpath/operations 
+Variable.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+JAXP 1.3 integration. Integrate the Sun donated JAXP 1.3 implementation into the head branch.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/jaxp JAXPExtensionsProvider.java JAXPPrefixResolver.java JAXPVariableStack.java 
+XPathExpressionImpl.java XPathFactoryImpl.java XPathImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+JAXP 1.3 integration. Commit the XPath API implementation under org.apache.xpath.jaxp.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xml-apis.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New xml-apis.jar containing JAXP 1.3 APIs.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2005/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler Compiler.java FuncLoader.java FunctionTable.java Keywords.java 
+ObjectFactory.java SecuritySupport.java SecuritySupport12.java XPathParser.java xml-xalan/java/src/org/apache/xpath/functions 
+FuncExtFunctionAvailable.java xml-xalan/java/src/org/apache/xalan/processor StylesheetHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Modified FunctionTable. Although it is not recommanded, but it is doable for users to add a customized function or overwrite 
+the default implementation of a build-in function. Fixed bug report XALANJ-2116. Patch is reviewed by Henry Zongaro.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java TransformerImpl.java 
+xml-xalan/java/src/org/apache/xml/utils DOMBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Support DOMResult.nextSibling in XalanJ Interpretive. If nextSibling is not null, then result nodes are inserted
+before it.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/XPathAPI ApplyXPathJAXP.java foo.xml XPathResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add two samples to demonstrate how to use the XPath API in JAXP 1.3.<br />
+1. ApplyXPathJAXP. Basic sample like ApplyXPath, but use JAXP 1.3 XPath API instead.<br />
+2. XPathResolver. Demonstrate how to use NamespaceContext, XPathFunctionResolver and XPathVariableResolver.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerJavaClass.java ExtensionHandlerJavaPackage.java 
+ExtensionNamespaceContext.java XPathFunctionImpl.java XPathFunctionResolverImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2126. This is a sample implementation of XPathFunctionResolver, with support for
+Java and EXSLT extension functions.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New messages for XALANJ-2126. Messages for the sample XPathFunctionResolver implementation.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/XPathAPI ExtensionFunctionResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For XALANJ-2126. New sample to demonstrate how to use the sample
+XPathFunctionResolver to evaluate XPath expression containing
+Java and EXSLT extension functions.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/05/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing patch for issue XALANJ-2121, which is that some empty attributes
+of some HTML elements are note serialized as empty.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/05/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Putting static iniitialization of HTML element/attribute information in a static method,
+which is invoked from a static { ...} block.
+No real difference, but slowly inching this code towards adding a
+ToXHTMLStream class that extends ToXMLStream, but uses methods in
+ToHTMLStream.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/05/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added "nowrap" as an empty attribute for elements &lt;div&gt; &lt;src&gt; and &lt;tr&gt;
+as these are either Netscape or Internet-Explorer extensions.
+This is patch3 from XALANJ-2121.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/06/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer OutputPropertiesFactory.java ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patcth for JIRA XALANJ-2093. Adding a xalan:line-separator extension output attribute.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan Version.java xml-xalan/java/src/org/apache/xalan/processor 
+TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java 
+TransformerImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java xml-xalan/java/src/org/apache/xalan/xsltc/trax 
+TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xml/utils DefaultErrorHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2134. Change the error handling behavior to be conformant with the requirement
+from JAXP 1.3 that the default ErrorListener will report all warnings and errors
+to System.err and does not throw any Exceptions.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan Version.java xml-xalan/java/src/org/apache/xalan/processor 
+ProcessorInclude.java ProcessorLRE.java ProcessorStylesheetElement.java TransformerFactoryImpl.java 
+xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java xml-xalan/java/src/org/apache/xalan/templates 
+ElemExtensionCall.java StylesheetRoot.java xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java 
+TransformerImpl.java TrAXFilter.java xml-xalan/java/src/org/apache/xalan/xslt Process.java xml-xalan/java/src/org/apache/xml/utils 
+DOMHelper.java xml-xalan/java/src/org/apache/xpath XPathContext.java xml-xalan/java/src/org/apache/xpath/functions 
+FuncExtFunction.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2136. Support the secure processing feature in Xalan interpretive. When this feature
+is set to true, the following XML processing limits are applied:<br />
+1. extension functions and extension elements are disabled.<br />
+2. parsers created by the XSLT processor also have the secure processing feature set
+to true.<br />
+
+A new option -secure is added to the Process command line to enable the secure
+processing feature.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources entities.ent xalan-jlocal.xml xalan-jsite.xml xml-xalan/java/xdocs/sources/xalan 
+features.xml samples.xml xpath_apis.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2124. Update the online documentation to include descriptions on the new JAXP 1.3 features:<br />
+1. Add a new "XPath API" page to provide a complete guide on how to use the
+XPath API in JAXP 1.3. Details on basic usage patterns, factory plugin mechanism,
+how to use NamespaceContext, XPathVariableResolver and XPathFunctionResolver.<br />
+2. Document the secure processing feature in the features page.<br />
+3. Describe three new XPath API related samples in the samples page.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/META-INF/services javax.xml.xpath.XPathFactory<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Service provider file for javax.xml.xpath.XPathFactory.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/XPathAPI ExtensionTest.java numlist.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+xml and extension java source for the ExtensionFunctionResolver sample.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src MANIFEST.MF manifest.xalan-interpretive manifest.xsltc<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update manifest files for jaxp version and remove entry for org.w3c.dom.xpath.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml xml-xalan/java/bin xml-apis.jar xml-xalan/java/src 
+xml-commons-external-1.2.01-src.tar.gz xml-commons-external-1.3.01-src.tar.gz<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update the source and binary of xml-apis.jar.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Java docs cleanup. Remove the word "Experimental" for DOM Level 3 spec and update the URI link.
+Also remove the obsolete methods that are replaced by new ones.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan Version.java xml-xalan/java/src/org/apache/xalan/processor 
+StylesheetHandler.java xml-xalan/java/src/org/apache/xml/utils UnImplNode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Cleanup javadocs on DOM Level 3 spec. Update the uri and remove
+obsolete methods. The getVersion() method in org.w3c.dom.Node is replaced by
+getXmlVersion().<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add xml-apis.jar to boot classpath to fix a build problem with JDK 1.4.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDatetime.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2076. Fix a bug in date:month-in-year.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New xercesImpl.jar from the official Xerces-J 2.7.0 release.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2005/06/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java
+xml-xalan/java/src/org/apache/xml/res XMLErrorResources.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Cleanup resource files. Remove unused constants and commented out message keys. Fix for bug XALANJ-2161
+Patch is reviewed by Sarah McNamara (mcnamara@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/07/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Jira issue XALANJ-1978.  Reviewed by Christine Li (jycli@ca.ibm.com).<br />
+
+Behaviour of StreamResult.getSystemId has changed if the Result object was
+created using a File.  The URI returned begins with "file:/" where it used to
+begin with "file:///".  TransformerIdentityImpl had a dependency on the old
+behaviour.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch2 from XALANJ-2023.<br />
+Submitted by Ken Weiner, reviewed, approved, applied by Brian Minchau.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changing "&lt;!DOCTYPE HTML" to "&lt;!DOCTYPE html" to be more xhtml friendly.
+Applying the patch in XALANJ-2103 that was created by Brian Minchau
+and reviewed/approved by Joanne Tong.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDatetime.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2099 provided by Morris Kwan and reviewed by me.
+
+According to the EXSLT doc the extension date:day-abbreviation() should
+output a three-letter English day abbreviation: one of 'Sun', 'Mon', 'Tue',
+'Wed', 'Thu' or 'Fri'.  (See http://exslt.org/date/functions/day-abbreviation/index.html)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2143.   Javadoc improvement for TransformerImpl.setOutputProperty(name,value).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan usagepatterns.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2142 - correction for the xalan namespace URI.  Patch provided by Brian Minchau and
+reviewed by Sarah McNamara.<br />
+
+Patch for XALANJ-2144 - incorrect use of the word "concurrently" when referring to the XPath module.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/licenses BCEL.LICENSE.txt LICENSE.DOM-documentation.html LICENSE.DOM-software.html 
+LICENSE-SAX.html regexp.LICENSE.txt runtime.LICENSE.txt serializer.LICENSE.txt serializer.NOTICE.txt xalan.LICENSE.txt 
+xalan.NOTICE.txt xercesImpl.LICENSE.txt xercesImpl.NOTICE.txt xml-apis.LICENSE.txt xml-apis.NOTICE.txt<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Creation of the xml-xalan/java/licenses directory which contains
+all licenses required for the Xalan Java (interpretive and compiled) runtime
+jars and its dependencies.   Most of these files have been moved here
+from xml-xalan/java/bin.  The serializer files are new for the Xalan Java 2.7
+release (fixes XALANJ-1977).  The xercesImpl.LICENSE.txt and xml-apis.LICENSE.txt
+now reflect ASL v2.0. This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/lib xercesImpl.jar xercesImpl.README.txt xml-apis.jar xml-apis.README.txt BCEL.jar BCEL.README.txt 
+regexp.jar regexp.README.txt runtime.jar runtime.README.txt<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Creation of the xml-xalan/java/lib directory which contains all runtime
+library dependencies (jars) required by Xalan Java (interpretive and compiled) runtime
+These files have been moved here from xml-xalan/java/bin.<br />
+
+This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/tools ant.jar ant.LICENSE.txt ant.README.txt antRun antRun.bat java_cup.jar java_cup.LICENSE.txt 
+java_cup.README.txt JLex.jar JLex.LICENSE.txt JLex.README.txt stylebook-1.0-b3_xalan-2.jar stylebook-1.0-b3_xalan-2.LICENSE.txt 
+stylebook-1.0-b3_xalan-2.README.txt xalan2jdoc.jar xalan2jtaglet.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Creation of the xml-xalan/java/tools directory which contains all build time
+tools required by Xalan Java (interpretive and compiled) builds, including
+documentation builds.  These tools are not required at runtime.<br />
+
+These files have been moved here from xml-xalan/java/bin.<br />
+
+This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java serializer.README.txt xalan.README.txt<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New readme files for the xalan.jar and serializer.jar.
+This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.bat build.sh build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updates to the build scripts and Ant build.xml file to accomodate the
+restructuring of the tools and runtime libraries in xml-xalan/java/tools and
+xml-xalan/java/lib.    Also changes to build.xml to reflect upcoming
+Xalan Java 2.7.0 (version number) changes.<br />
+
+This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/AppletXMLtoHTML client.html README.html xml-xalan/java/samples/ApplyXPathDOM ApplyXPathDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Doc changes for Xalan Java 2.7.0 release.
+This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLProcessorVersion.java xml-xalan/java/src/org/apache/xalan/xslt 
+EnvironmentCheck.java xml-xalan/java/src/org/apache/xpath/domapi XPathEvaluatorImpl.java XPathExpressionImpl.java 
+XPathNSResolverImpl.java XPathResultImpl.java xml-xalan/java/src/org/apache/xml/serializer Version.src xml-xalan/java/xdocs/sources 
+entities.src xalan-jlocal.xml xalan-jsite.xml xml-xalan/java/xdocs/sources/xalan commandline_xsltc.xml commandline.xml downloads.xml 
+extensions.xml extensionslib.xml faq.xml features.xml getstarted.xml index.xml overview.xml public_apis.xml resources.xml samples.xml 
+trax.xml usagepatterns.xml whatsnew.xml xpath_apis.xml xsltc_usage.xml xml-xalan/java/xdocs/sources/xsltc README.xslt README.xsltc<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Doc changes for Xalan Java 2.7.0 release.
+This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLProcessorVersion.src xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Doc changes for Xalan Java 2.7.0 release.
+This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/07/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils XMLString.java XMLStringDefault.java xml-xalan/java/src/org/apache/xpath/objects 
+XString.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2176 reviewed by Christine Li (jycli@ca.ibm.com).<br />
+
+Replaced characters in Javadoc comments that were encoded in ISO-8859-1 with
+HTML character entity references.  This avoids any problems with editors, IDEs
+or versions of javac that make faulty assumptions about source encodings.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2005/07/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-2113<br />
+Submitted by:		 John Gentilin<br />
+Reviewed by:		 Henry Zongaro<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2005/07/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/objects XString.java
+xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-2114<br />
+Submitted by:		 John Gentilin<br />
+Reviewed by:		 Henry Zongaro<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@ca.ibm.com<b>
+<i> on </i>
+</b>2005/07/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/functions FuncSystemProperty.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-936. Reviewed by Yash Talwar.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xml-apis.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update xml-apis.jar to xml-commons-external-1.3.02 version.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2005/07/27<br />
+<b>
+<i>Modified: </i>
+</b> java/src/org/apache/xalan/lib/sql JNDIConnectionPool.java<br />
+java/samples/extensions/sql/basic-connection dbinfo.xml dbtest.xsl DumpSQL.xsl dbtest-cinfo.xsl<br />
+java/samples/extensions/sql/ext-connection dbtest.xsl ExternalConnection.java<br />
+java/samples/extensions/sql/pquery dbinfo.xml<br />
+java/samples/extensions/sql/streamable cachedNodes.xsl streamNodes.xsl pivot.xsl<br />
+java/samples/extensions/sql GETTING_STARTED.txt runDerby.bat runXalan.sh createdb.sql runDerby.sh runXalan.bat<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-2172<br />
+Obtained from: Eric Everman<br />
+Submitted by: Eric Everman / John Gentilin<br />
+Reviewed by: Yash Talwar<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New xercesImpl.jar from the official Xerces-J 2.7.1 release.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/08/03<br />
+<b>
+<i>Modified: </i>
+</b> java/src/org/apache/xml/serializer ToTextStream.java Encodings.properties ToHTMLStream.java
+ToStream.java EncodingInfo.java ToXMLStream.java Encodings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing patch for XALANJ-2087. This is a fix for correctly deciding if a character is in an encoding or not,
+so we write it as is, or as an entity.<br />
+The old code had a concept of a maximum character in the encoding, and assumed that all characters less
+than that unicode value were in the encoding.  New code uses the underlying Java libarary, but caches results 
+for performance.<br />
+Patch was reviewed/approved by Yash Talwar (see XALANJ-2087).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/08/04<br />
+<b>
+<i>Modified: </i>
+</b> java/samples/extensions/sql/show-error invalidQuery.xsl invalidPQuery.xsl invalidConn.xsl<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updates for the SQL samples (part of the fix for XALANJ-2172). Patch provided by John Gentilin and reviewed by Sarah McNamara.<br />
+<br />
+</li>
+ 
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/08/04<br />
+<b>
+<i>Modified: </i>
+</b> java/src/org/apache/xml/serializer ToStream.java EncodingInfo.java<br />
+java/src/org/apache/xml/serializer/utils SerializerMessages.java MsgKey.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing XALANJ-2181. When the requested encoding is not supported by the JDK no
+warning is given,... this fix adds an error message.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2005/08/05<br />
+<b>
+<i>Modified: </i>
+</b> java/samples/extensions/sql/ext-connection ExternalConnection.java<br />
+java/xdocs/sources/xalan samples.xml<br />
+java/samples/extensions/sql runDerby.bat runXalan.sh runDerby.sh runXalan.bat runExtConnection.bat runExtConnection.sh<br />
+java/src/org/apache/xalan/lib/sql DefaultConnectionPool.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: XALANJ-2183.<br />
+<br />
+</li>
+
+</ul>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.6.0</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/11/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOM.java Translet.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler SyntaxTreeNode.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util 
+ResultTreeType.java xml-xalan/java/src/org/apache/xalan/xsltc/dom AdaptiveResultTreeImpl.java 
+DOMAdapter.java DOMWSFilter.java MultiDOM.java SAXImpl.java SimpleResultTreeImpl.java 
+xml-xalan/java/src/org/apache/xml/dtm/ref ExpandedNameTable.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Morris Kwan (mkwan@ca.ibm.com), reviewed by myself, with a tweak
+or two from myself, reviewed by Morris.<br />
+<br />
+
+Split namesArray in translet into three arrays:  namesArray, urisArray and
+typesArray.<br />
+<br />
+
+Previously, entries in the namesArray had to be examined at run-time to
+distinguish those that represented elements, from those that represented
+attributes (prefixed by an '@'), and those that represented namespace node
+names (prefixed by a '?').  In addition, any namespace URI for the element or
+attribute was similarly stored in the namesArray entry.  So,
+"http://example.org:abc" and "http://example.org:@abc" respectively represented
+an element and an attribute named abc in the http://example.org namespace;
+"?abc" represented a namespace prefix of abc.<br />
+<br />
+
+With this change, the namesArray will have entries for "abc" in all three
+cases; the urisArray will contain entries for "http://example.org" for the
+element and attribute, and an empty string for the namespace prefix; and the
+typesArray will contain the value 1 for the element, 2 for the attribute and 13
+for the namespace (which correspond to the DTM constant values for those kinds
+of nodes).<br />
+<br />
+
+In addition, these values are stored in static arrays in the translet, and
+references to those arrays are copied to instance fields in the translet's
+constructor, rather than constructing arrays and initializing all their entries
+in the constructor each time.<br />
+<br />
+
+All this serves to reduce the overhead of initializing a transformation.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/11/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer NamespaceMappings.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Brian Minchau<br />
+<br />
+Just indentation and whitespace changes in the code
+(trying to get Apache head and the xslt2.0-compiled branches closer).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/11/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToTextStream.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 24278<br />
+<br />
+Submitted by:	Brian Minchau<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/11/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemLiteralResult.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 24423<br />
+<br />
+Submitted by:	Brian Minchau<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/11/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerBase.java ToXMLSAXHandler.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Brian Minchau<br />
+<br />
+Just indentation and whitespace changes in the code
+(trying to get Apache head and the xslt2.0-compiled branches closer).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/11/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 24958<br />
+<br />
+Submitted by:	Brian Minchau<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/TransformThread TransformThread.java foo0.xml foo0.xsl foo1.xml 
+foo1.xsl xml-xalan/java/xdocs/sources/xalan samples.xml<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Transform Thread sample. Submitted by  Richard Cao.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/trax TrAXFilter.java xml-xalan/java/src/org/apache/xml/dtm/ref 
+DTMManagerDefault.java xml-xalan/java/src/org/apache/xml/utils XMLReaderManager.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Moved code for caching XMLReader objects from XSLTC's TransformerFactoryImpl to
+a new org.apache.xml.utils.XMLReaderManager class.<br />
+<br />
+
+It is now the responsibility of the DTMManagerDefault class to request one of
+these cached XMLReader objects, so the benefit of reusing an XMLReader is now
+conferred upon both XSLTC and Xalan-J Interpretive, as well as upon references
+to the document() function.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils ObjectFactory.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Factored out part of ObjectFactory's createObject method into separately
+callable lookUpFactoryClass and lookUpFactoryClassName methods.  This allows
+the caller to cache the Class object that provides a service at an appropriate
+level, and create new instances of that class at will, rather than going
+through the expensive service provider look-up procedure for each and every
+object created.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Encodings.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Reflection code to load sun.io.CharToByteConverter is now wrapped in a privileged action. 
+This is needed when user code is run without the required permssions.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml xml-xalan/java/bin xml-apis.jar xml-xalan/java/src 
+xml-commons-src.tar.gz xml-commons-external-1.2.01-src.tar.gz<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Upgrading to xml-commons-external-1.2.01 release, and moving to new naming
+convention for xml-commons source file.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Encodings.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Avoid RuntimeException(Throwable) as it is only available in JDK 1.4.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java 
+xml-xalan/java/src/org/apache/xalan/templates ElemVariable.java ElemWithParam.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch from Richard Cao (richcao@ca.ibm.com) for Bugzilla bug report
+797.<br />
+<br />
+
+Added code that checks whether an xsl:param, xsl:variable or xsl:with-param
+has both a select attribute and content.  Also, new test case to test for
+message in case of xsl:with-param, and updated messages in existing tests for
+xsl:param and xsl:variable.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer NodeSorter.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch from Richard Cao (richcao@ca.ibm.com) for Bugzilla bug report
+5761.  Removed code that caused keys to be ignored when they select an empty set of
+values.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Upgrading to version 2.6.0 of Xerces-Java.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a finally block for SAXSource/StreamSource case in order to ensure that
+any XMLReader is released to the XMLReader cache.<br />
+<br />
+
+Thanks to Joanne Tong (joannet@ca.ibm.com) for catching this bug when she
+reviewed my changes to where caching of XMLReaders was handled, and the DTM
+plugability changes for XSLTC.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils ObjectFactory.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Created a named constant for "META-INF/services" string.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>rameshm@apache.org<b>
+<i> on </i>
+</b>2003/12/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor StopParseException.java StylesheetPIHandler.java 
+TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java 
+xml-xalan/java/src/org/apache/xml/utils StopParseException.java StylesheetPIHandler.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Moving classes that are used between Xalan interpretive and XSLTC ( StylesheetPIHandler and StopParseException )  
+to xml/utils package . Making the required modifications to accomadate this change.<br />
+<br />
+
+Submitted by:	Bhakti Mehta ( bhakti.mehta@sun.com )<br />
+<br />
+Reviewed by: Ramesh Mandava<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils ObjectFactory.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed a bug I injected recently - missing slash between 'META-INF/services' and service name.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/01/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates RedundentExprEliminator.java XSLTVisitor.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Made methods in this class public, as is the case in the XPathVisitor class that
+it extends.  Having the class be public, but none of the methods public isn't
+helpful.<br />
+<br />
+
+Contributed by Warwick Burrows (wburrows@us.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/01/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates RedundentExprEliminator.java XSLTVisitor.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating the copyright dates to reflect recent modifications.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/01/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating build copyright year.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/01/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemLiteralResult.java ElemTextLiteral.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: 26169<br />
+Submitted by:	Brian Minchau<br />
+Flushed serialier before emitting trace event in ElemeTextLiteral and
+ElemLiteralResult.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/01/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add TransformThread sample to xalansamples.jar.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2RTFDTM.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 25442.
+
+Record the initial empty sizes of the various vectors in the DTM, and use those
+sizes as the defaults in popRewindMark.  The code originally assumed that these
+vectors had default sizes of zero, but that's not true in the case of m_data,
+which reserves entry zero.<br />
+<br />
+
+Reviewed by Christine Li (jycli@ca.ibm.com)
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemApplyTemplates.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 19464.
+A reworked patch, move the push statements to the beginning of try block
+and added a flag to make sure that there is always something to pop
+Reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes UnionPathIterator.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 26019. detach location path iterators happens only when allowDetach flag is true.
+Reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorExsltFunction.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 18351.
+xsl:message instruction is allowed inside func:function.
+It doesn't construct nodes as part of the result.
+Reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/functions FuncExtFunction.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix bugzilla bug report 18351.
+Set allowDetachToRelease flag to false, which allow caching of the arguments
+Reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/02/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemAttribute.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla Bug 26075.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/02/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils TreeWalker.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla Bug 25416.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemTemplateElement.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying Joanne Tone's (joannet@ca.ibm.com) patch for
+bugzilla bug report 26030.<br />
+<br />
+
+Do not suppress Xalan specified extension element namespace, unless they
+are declared as extension element namespaces by users.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 26829.
+
+Modified build.xml to add xalanj2taglet.jar to Xalan source distribution
+Contributed by Sarah McNamara (mcnamara@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerExsltFunction.java
+xml-xalan/java/src/org/apache/xalan/templates ElemExsltFunction.java ElemExsltFuncResult.java 
+xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 24302.
+
+Fields in the object representing an EXSLT function element (ElemExsltFunction)
+were being used to store execution state information for references to that
+function.  That caused problems with multi-threaded code that used Transformer
+objects created from the same Templates object - each Transformer shares the
+same instances of ElemExsltFunction.<br />
+<br />
+
+The fix was to replace the fields ElemExsltFunction.m_result and
+ElemExsltFunction.m_isResultSet with a new ObjectStack field in TransformerImpl
+named m_currentFuncResult.<br />
+<br />
+
+Also, changed how VariableStack was being updated in the execute method for a
+function reference - this change was modelled on equivalent code in
+ElemCallTemplate.<br />
+<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemParam.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 24302.
+
+Changed condition under which the parent element's m_inArgsSize field is
+incremented - that field keeps track of the number of xsl:param children an
+element has.  This was only happening for ElemTemplate, but it needs to happen
+for ElemExsltFunction, which is a subclass of ElemTemplate, as well.<br />
+<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/02/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Sort.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java NodeSortRecordFactory.java 
+xml-xalan/java/src/org/apache/xml/utils LocaleUtility.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla Bug 26842.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/02/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java 
+xml-xalan/java/src/org/apache/xml/utils StringComparable.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla Bug 1396.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/17<br />
+<b>
+<i>Modified: </i>
+</b> Most files in the Xalan Java cvs repository (too many to list) <br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New Apache 2.0 license update.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemForEach.java
+xml-xalan/java/src/org/apache/xalan/processor StylesheetHandler.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 26217<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Henry Zongaro<br />
+This is a javadoc update only.
+Programming instructions don't have a namespace, so make
+the PI with no namespace be "xalan-doc-cache-off" rather than
+"xalan:doc-cache-off"<br />
+<br />
+</li>
+
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 26217<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Henry Zongaro<br />
+Changed a ":" to a "-" in "xalan:doc-cache-off" in the FAQ.
+Programming instructions don't have a namespace, so make
+the PI with no namespace be "xalan-doc-cache-off" rather than
+"xalan:doc-cache-off". <br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils DOMBuilder.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 15140<br />
+Submitted by:	patch submitted by Bruno Dumon (bruno@outerthought.org)<br />
+Reviewed by:	Brian Minchau (minchau@ca.ibm.com)<br />
+<br />
+</li>
+
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToXMLStream.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 24304<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Henry Zongaro<br />
+Serialized XML no longer put a new line after the xml header unless indent="yes".<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemForEach.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 16889<br />
+Submitted by:	Elson Jiang<br />
+Reviewed by:	Brian Minchau<br />
+Fixes ElemForEach TraceListener bug.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java TransformerImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 23591<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Henry Zongaro<br />
+
+JAXP transformer.setOutputProperties(null); now not only doesn't
+get an exception, it also resets the internal state to flush out any
+previously accumulated properties as if the transformer had
+just been created.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer OutputPropertiesFactory.java 
+ToHTMLStream.java ToStream.java ToXMLStream.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 25816<br />
+Submitted by:	Brian Minchau<br />
+Reviewed by:	Henry Zongaro<br />
+Make default properties returned by serializer factory immutable.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib Redirect.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Javadoc update only.<br />
+PR: bugzilla 26742<br />
+Submitted by:	Brian Minchau<br />
+<br />
+
+Changed old invalid URI for xmlns:xsl to the correct one
+for XSLT 1.0.  The old value was before the XSLT 1.0 recommendation
+and appeared only in a javadoc example.  But it did confuse me when
+I tried to run the example in the javadoc.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils PrefixResolverDefault.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 24979.
+
+Fix for DOM XPath API, any element has an implicit declaration of its own
+prefix, which is enforced during namespace serialization.<br />
+<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/02/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java 
+xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Code cleaning and optimization for copy and copy-of.  Discussed with Henry Zongaro.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml xml-xalan/java/src MANIFEST.MF manifest.xsltc<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for Bugzilla bug report 24728 from Sarah McNamara (mcnamara@ca.ibm.com).<br />
+<br />
+
+Use Ant's filtering capabilities to place appropriate "created-by" information
+into the MANIFEST.MF file of the jar that's being built.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TrAXFilter.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 22376.
+
+When a TrAXFilter has a parent, should set itself as the EntityResolver,
+DTDHandler and ErrorHandler for it's parent to keep the filter chain,
+instead of always use the default EntityResolver, DTDHandler and ErrorHandler<br />
+<br />
+
+The patch is submitted by Werner Donne (werner.donne@re.be)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>aruny@apache.org<b>
+<i> on </i>
+</b>2004/02/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils DOMBuilder.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Description : Copying the patch from jaxp-1_3_0-branch  to main trunk.
+When there is no mark up inside element content, text should be contained in single TEXT node.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemAttribute.java ElemElement.java 
+ElemPI.java ElemTemplateElement.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java 
+AttributeSet.java Copy.java DecimalFormatting.java Key.java LiteralElement.java Output.java ProcessingInstruction.java 
+Template.java XslAttribute.java XslElement.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util 
+ErrorMessages.java ErrorMsg.java Util.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java 
+ErrorMessages.java xml-xalan/java/src/org/apache/xml/utils XMLChar.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla bug report 24988 from Joanne Tong (joannet@ca.ibm.com)
+reviewed by myself.<br />
+<br />
+
+Changes required to test whether an attribute value that is required to be
+a QName, NCName or whitespace-separated list of QNames actually meets that
+requirement.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Upgrading to version 2.6.2 of Xerces-Java.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Part of patch for bug report 24985.  Ensure that m_size is set to zero in
+setStartNode methods of AncestorIterator and TypedAncestorIterator.  The way
+getLast() is implemented resulted in setStartNode being called twice in
+some circumstances, with the nodes from the second call being included as
+additional (though duplicate) ancestors.  Clearing m_size avoids that.<br />
+<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com).<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.5.2</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml xml-xalan/java/src/org/apache/xalan Version.java Version.src<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Generate values for Version information from constants in the build script.
+(Adapted from xml-commons build script for the resolver.)
+New file Version.src (in org.apache.xalan) is copied into Version.java
+with version constants from build script plugged in.
+Deprecated XSLProcessorVersion class can be removed.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Generate values for Version information from constants in the build script.
+(Adapted from xml-commons build script for the resolver.)
+New file Version.src (in org.apache.xalan) is copied into Version.java
+with version constants from build script plugged in.
+Deprecated XSLProcessorVersion class can be removed.
+Also, updated build clean target to delete Version.java, so it will
+be regenerated in the next build.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml overview.xml whatsnew.xml xsltc_usage.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Documentation patch to correct typos, contributed by Glen Mazza 
+(glenmazza@yahoo.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml getstarted.xml history.xml index.xml samples.xml trax.xml usagepatterns.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Documentation update: Replaced all occurrences of TRaX with the properly
+capitalized TrAX.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer CharInfo.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Speed up CharInfo.isSpecial() by replacing its internal use of 
+java.util.BitSet with a more tuned bitset.
+Also sped up the common case of this method for ASCII values (0-126) by
+saving booleans in a cached array rather than looking them up via their
+bits in the bitset.
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Speed up ToStream.characters(char[] , int, int) method by
+caching commonly calculated boolean expression for characters in the range (0-126)
+in an array in CharInfo.
+Also move a whitespace check out of the loop that processes characters and into
+a separate loop.  Most of the time this whitspace checking loop will end early and
+speed up the other loop which no longer checks for whitespace with every character.
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer WriterToUTF8Buffered.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Performance improvement of WriterToUTF8Buffered.characters(char[],int,int);
+1. Reduced the number of checks for buffer overflow from 2 to 1
+   most of the time by nesting the checks.
+2. Used local variables for the array reference and count of characters stored in
+   the buffer to make the loop faster.
+3. Added an additional tight loop for better optimization.
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java ToStream.java ToTextStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changing firePseudoAttributes() to firePseudoElement() which
+is for debugger tooling.  Now both the whole start of the element-tag
+e.g.   &lt;abc attr1="val1" attr2="val2"
+will appear as output that might be written out, rather than
+just the attributes.
+Submitted by:	Gordon Chiu
+Reviewed by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToTextStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Change to use a local variable to hold the reference to m_writer (minor change for performance).
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java ToStream.java ToXMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed references to m_writer to a local writer variable in
+a number of places (a minor performance improvement).
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Made ToStream.characters(char[], int, int) not bail out early if
+the length was 0 characters, but do all processing.  This forces
+the close of any open start tag.
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/06/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Igor Hersht for Bug 19770.  getFirstAttributeIdentity should check
+that argument is not equal to DTM.NULL prior to calling _type2 method - that
+method assumes that the argument is not NULL.  Added comments to that effect to
+_type2, _parent2, _firstch2, _nextsib2 and _exptype2.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMAxisIteratorBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for the general case of bugzilla 20685:
+DTMAxisIteratorBase#cloneIterator() was not setting clones to be
+non-restartable.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch contributed by Glen Mazza (glenmazza@yahoo.com):
+Fixing a typo in the command line help.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan commandline.xml samples.xml trax.xml usagepatterns.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch contributed by Glen Mazza (glenmazza@yahoo.com) for bugzilla 20625:
+Fixing some documentation typos.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java ToStream.java ToTextStream.java ToUnknownStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from myself and Brian Minchau (minchau@ca.ibm.com):
+Added serializer trace mechanisms to flush trace pseudo characters for
+start tag before attributes are added. Fixed serializer trace to generate
+correct pseudo characters for html attributes.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2003/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+A little code clean up, introduce the SQLQueryParser to handle variables
+better.
+
+Added code by Art Welsh to hande the Set/get Feature routine
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2003/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql SQLQueryParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added code by Art Welsh to hande the inline variable parser.
+SQL Statements can describe an XSL variable name along with
+its type inside the statement instead of using the addParameter methods.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2003/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql SQLErrorDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added code by Art Welsh to hande full errors, where multiple warning
+stattments wll be output into the error document
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2003/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added code by Art Welsh to hande multiple result sets and Callable statements.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2003/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql QueryParameter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added code by Art Welsh to handle more of the SQL Types, and other attributes
+about the parameter. such as IsOutput and the Name for XSL Variable reference
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java ToSAXHandler.java ToTextStream.java 
+ElemContext.java SerializerBase.java ToHTMLSAXHandler.java ToStream.java ToXMLSAXHandler.java ToXMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Moved a number of serializer instance variables into ElemContext,
+which is a stack to push/pop such values in unison. This makes
+the code clearer and less error prone and probably marginally
+(0.001%) faster.
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixing a build issue for JDKs that include XSLTC (specifically, the
+JavaCupRedirect class) but not java_cup.jar. Need to put java_cup.jar
+and runtime.jar on the bootclasspath.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java SimpleResultTreeImpl.java XSLTCDTMManager.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/trax XSLTCSource.java xml-xalan/java/src/org/apache/xml/dtm DTM.java 
+xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java DTMDefaultBaseIterators.java DTMDefaultBaseTraversers.java 
+DTMDocumentImpl.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Implement a "DTM migration" feature, which allows a DTM that is built with
+an old DTMManager to be migrated to a new DTMManager. This is to support
+DTM sharing between multiple transformations.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer CharInfo.java EmptySerializer.java ExtendedContentHandler.java 
+ToHTMLStream.java ToSAXHandler.java ToTextStream.java ToUnknownStream.java ToXMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added addUniqueAttribute() method for optimization purposes.
+The serializer may write out this attribute straight away with little processing becuase the caller guarantees
+that the value has these qualities:
+1) Value is unique, i.e. will not be changed by other addAttribute() calls.
+2) Value is ASCII
+3) Value does not contain quot (34) amp (38)  lt (60) gt (62)
+
+Submitted by:	Brian Minchau
+Reviewed by:	Morris Kwan
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler LiteralAttribute.java LiteralElement.java Output.java 
+Stylesheet.java Text.java XslAttribute.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util MethodGenerator.java 
+xml-xalan/java/src/org/apache/xml/serializer ElemDesc.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Performance improvement for XSLTC
+
+Implement a compiler-assisted serialization feature.
+Generate code to make use of the new
+addUniqAttribute(String name, String value, int flags)
+interface in SerializationHandler. The compiler does
+more static analysis on attributes of literal elements
+and passes the additional information to the serializer
+via a bit-encoded flag.
+
+The additional information includes whether this attribute
+is unique, whether its value has bad characters (something
+needs to be escaped), whether it is a HTML URI or empty
+attribute. If the attribute is unique, the serializer can
+write out the attribute right away, without having to
+accumulate it in an internal table. If it also does not
+contain bad characters, then escaping is not needed.
+All these information speeds up the serializer on writing
+the attributes out.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLSAXHandler.java ToHTMLStream.java ToSAXHandler.java 
+ToTextStream.java ToUnknownStream.java ToXMLSAXHandler.java ToXMLStream.java SerializerBase.java ToStream.java 
+ToTextSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed code like this:
+
+String s; ...
+char[] array = s.toCharArray();
+
+To this:
+final int length = s.length();
+if (length &gt; m_charsBuff.length)
+{
+    m_charsBuff = new char[length * 2 + 1];
+}
+char[] array = m_charsBuff;
+// re-use "array" but use "length" for the
+// number of characters in the array.
+
+This shows a 2% performance improvement for some
+XSLTC/HTML testcases. Of course some transformations
+may do betterthan this, and some worse, but all should be
+faster.
+
+The performance should also get marginally better for transformations that spend their
+time writing out attributes.  It runs marginally faster because
+the helper character buffer, m_charsBuffer is re-used rather
+than a new one being created each time. 
+
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref ExpandedNameTable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for problem in ExpandedNameTable (bugzilla 21087).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltStrings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix problem in EXSLT align function (bugzilla 19890).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils Trie.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Sped up the Trie.get(String) method by about a factor of 2.
+This was done by:
+1) Not using string.charAt(i) when looping through the characters,
+   but rather using string.getChars(0, len, array, 0) and looping over the array.
+2) Special casing the lookup in get(String key) for 0,1,2 or more characters
+3) Putting the objects into the Trie considering the key as case insensitive at the
+   time of putting the objects in, rather than at the time of taking them out.
+4) Not using a try/catch in the search loop to test if an
+   index is out of bounds, but testing if the character value is less than 128.
+Thanks to Gordon Chiu for optimization 1) and Henry Zongaro for 3) and 4).
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath NodeSet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from John Lambe (john.lambe@openjawtech.com) for bugzilla 20819
+with some modifications. removeElement() and removeElementAt() were
+not removing nodes correctly.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemIf.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Minor change to firing of trace events from xsl:if.
+
+xsl:for-each now fires one trace event plus one for every iteration.
+xsl:if should fire one regardless of whether or not the expression
+evaluates true or false. Related to discussion on bug 11414.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/06/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java xml-xalan/java/src/org/apache/xpath/functions FuncCurrent.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applied Igor Hersht's (igorh@ca.ibm.com) patch for Bugzilla bug 10900.  Fixed
+up algorithm for determining the result of the current() function to avoid
+NullPointerException.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/07/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src MANIFEST.MF manifest.xsltc xml-xalan/java/xdocs/sources/xalan downloads.xml xml-xalan/java/bin 
+java_cup.jar runtime.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Sarah McNamara (mcnamara@ca.ibm.com)
+Moving java_cup.jar and runtime.jar from v0.10j to the latest version: v0.10k.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/07/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes UnionChildIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla 20909.
+Need to fix-up variables for PredicatedNodeTest sub-iterators in
+UnionChildIterator. Variables in the m_nodeTests expressions were not
+'fixed up'.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/07/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemApplyTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Adding missing trace events for xsl:with-param. Trace events for
+xsl:with-param are fired as the parameter expressions are executed.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/07/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemCallTemplate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Adding missing trace events for ElemWithParam as used in xsl:call-template.
+Trace events for xsl:with-param are fired as the expression is executed.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/07/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer NamespaceMappings.java ToHTMLStream.java ToStream.java 
+ToTextStream.java ToXMLSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patches for bugzilla 20841 and 21039.
+PR: 20841, 21039
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/07/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch from David Bertoni (bertoni@us.ibm.com) for bug 20920.  The code
+for xsl:element was copying all accessible namespace declarations to the
+result, but that's something that should only happen for literal result
+elements.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/07/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 21423
+PR: 21423
+Bug caused by an optimization where the element name was not
+remembered if the HTML tag was empty and the endElement() call
+was coming right away.  But XSLTC injected startNamespaceAfterElement() 
+in the middle, and it needed the element name, So startElement() records the 
+element name in the ElemContext even though the context is soon going away.
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/07/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Reduce the indentation level of end-element tags by 1 level.
+PR: bugzilla 21449
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/07/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java WriterToUTF8.java WriterToUTF8Buffered.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+WriterToUTF8Buffered is now faster because it uses a character
+array rather than a series of string.charAt(i) calls.  Other changes 
+were also made to this class.  
+
+Performance gains are when writing to an output stream that has UTF-8 encoding.
+WriterToUTF8   (not buffered) is deleted.  On analysis, its slow feature was that it
+didn't buffer and so it suffered many calls to the underlying OutputStream.  The more work that was done to
+this class to speed it up, the more it looked like WriterToUTF8Buffered.
+PR: bugzilla 21452
+
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/07/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler Compiler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 17630 (method keys for extension functions are not unique).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/07/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer WriterToUTF8Buffered.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix to WriterToUTF8Buffered to ALWAYS buffer regardless of the
+size of the input char array or String.  This is achieved by logically cutting
+the input into chunks, each of which will not blow the internal byte buffer,
+and calling itself recursively.
+PR: bugzilla 21491
+Submitted by:	Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2003/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql SQLQueryParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed NPE bug with inline variables
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/07/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 21697:
+processAttributes always called writeAttrString with m_writer, regardless
+of which writer was passed to it. Now always using the passed writer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/07/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java KEYS<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Adding my public key.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/07/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates FuncFormatNumb.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch from Igor Hersht (igorh@ca.ibm.com) for Bugzilla bug 6155.
+Prior to looking up an unnamed decimal format, the FuncFormatNumb.execute
+method was calling the stylesheet's getDecimalFormatCount method to save the
+cost of the look-up, in the event the result was zero.  The problem is that
+that method only returns the number of decimal-formats prior to composition of
+multiple stylesheets into a single stylesheet, so it was incorrectly returning
+zero always.  Now, the FuncFormatNumb.execute always performs the look-up.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/07/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes DescendantIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 21713: need to check m_allowDetach before detach()ing an
+iterator of type DescendantIterator. (Thanks to Morris Kwan for reviewing
+this patch.)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/07/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src xml-commons-src.tar.gz xml-xalan/java/bin xml-apis.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating with latest code from the tck-jaxp_1_2_0 branch of xml-commons
+
+which contains the SAX 2.0.1 code.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Made a couple of improvements to startElement and endElement to cache
+m_elemContext in a local variable.  Also, replaced calls to ElemDesc.is with a
+single call to ElemDesc.getFlags, and used inline code to check flag settings.
+
+Reviewed by Brian Minchau (minchau@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ElemDesc.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a getFlags() method to allow all flags on an ElemDesc object to be
+retrieved at once, rather than forcing multiple calls to ElemDesc.is(int).
+Also, marked class final.
+
+Reviewed by Brian Minchau (minchau@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/08/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xml-apis.jar xml-xalan/java/src xml-commons-src.tar.gz<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Backing out SAX 2.0.1 xml-apis to the level used in XalanJ 2.5.1.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/08/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 21893
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 19591
+Submitted by:	Gordon Chiu
+Reviewed by:	Brian Minchau
+
+Fixes a few methods in the ToStream serializer so that it outputs the DOCTYPE
+sooner and in the correct location.  Thanks to Bruno Dumon for the nice test case
+and thanks to Gordon Chiu for the fix.
+- Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Utils.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 21309
+Submitted by:	Brian Minchau
+
+Utils.classForName(String classname) still throws a ClassNotFoundException rather than
+return null, but it doesn't cache the classname/null combination anymore if the classname 
+is not loaded.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/08/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java ToStream.java ToTextStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+PR: bugzilla 18907
+Submitted by:	Brian Minchau 
+Patch has just been applied to main branch of CVS.
+
+Now ToStream.writeUTF16Surrogate(char c, char ch[], int i, int end) 
+return nothing rather than the "i+1" that it had always returned, 
+which was a bit confusing. 
+This routine always processed 2 input characters and always returned "i+1" so why bother?  
+
+There was no error in returning "i+1" because the situation in which this routine was called were always in a loop:
+for (int i=start; i &lt; end; i++) { ... }
+so "i" was always incremented before going on to the next iteration. Any i++; after calling writeUTF16Surrogate() now 
+means that 2 input characters have been processed, so there is no bug here (never was).  The code is just clearer now.
+A bug has been fixed in ToStream.accumDefaultEscape() which used to mis-count how many input characters that it processed.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/08/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Encodings.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+
+PR: bugzilla 21300	
+
+Submitted by:	Brian Minchau
+
+Reviewed by:	Henry Zongaro
+
+The review was done via a discussion.  Not too many requests are made to
+
+add encoding information to this property file.  Doing one now and then is OK.
+
+A comment was added to the property file showing where to go to get information
+
+on ISO encodings.   
+
+
+
+At this point a decision was made to NOT update the information en-mass, but wait for
+
+individual requests.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/08/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xml/serializer 
+CharInfo.java Encodings.java OutputPropertiesFactory.java SerializerFactory.java xml-xalan/java/src/org/apache/xpath/functions 
+FuncSystemProperty.java xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandler.java ExtensionHandlerGeneral.java 
+xml-xalan/java/src/org/apache/xalan/processor TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler 
+FunctionAvailableCall.java FunctionCall.java Parser.java xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java 
+NodeSortRecordFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/trax SmartTransformerFactoryImpl.java TemplatesImpl.java 
+TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xalan/lib Extensions.java xml-xalan/java/src/org/apache/xalan/lib/sql 
+DefaultConnectionPool.java xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java xml-xalan/java/src/org/apache/xalan/xslt 
+EnvironmentCheck.java Process.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ObjectType.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime TransletLoader.java xml-xalan/java/src/org/apache/xml/dtm DTMManager.java 
+FactoryFinder.java SecuritySupport.java SecuritySupport12.java xml-xalan/java/src/org/apache/xml/dtm/ref CoroutineParser.java 
+IncrementalSAXSource_Xerces.java xml-xalan/java/src/org/apache/xml/utils ObjectPool.java ObjectFactory.java SecuritySupport.java 
+SecuritySupport12.java xml-xalan/java/src/org/apache/xpath/compiler FuncLoader.java xml-xalan/java/src/org/apache/xml/utils
+ ObjectPool.java ObjectFactory.java SecuritySupport.java SecuritySupport12.java<br />
+ <b>
+<i>Committer's log entry: </i>
+</b>
+Applying Igor Malinin's (igor@widespace.ee) patch for more convenient	(centralized)
+
+classloading.  See bugzilla #16675.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/08/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan overview.xml trax.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+A few minor doc updates.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/08/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerGeneral.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a typepo in ExtensionHandlerGeneral.java. It should check for null
+instead of nonnull.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/08/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTElementProcessor.java xml-xalan/java/src/org/apache/xalan/templates 
+Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla 12441. In forward-compatible mode, an unknown attribute
+should be ignored. Currently Xalan throws an exception.
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Removed static method which was reading XSLTInfo.properties file and setting
+a system property for each property in the file.  That code was not appropriate
+in a secure environment, and wasn't actually needed.  Three of the properties
+were being set in support of the XSLT system-property function, but the
+implementation of that function didn't actually access the values from the
+system properties; the fourth was org.xml.sax.driver, which should be provided
+by the user's application or by the parser in a
+META-INF/services/org.xml.sax.driver file.
+
+Reviewed with Christine Li (jycli@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Removed property for org.xml.sax.driver.  This is something that should be
+set by either the user's application code or by a
+META-INF/service/org.xml.sax.driver supplied with an XML parser.  Xalan
+shouldn't be responsible for setting it.
+
+Reviewed with Christine Li (jycli@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/functions FuncSystemProperty.java SecuritySupport.java SecuritySupport12.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed the way XSLTInfo.properties file was being read to use SecuritySupport
+class instead.  Added copies of SecuritySupport classes to this package as well.
+
+Reviewed with Christine Li (jycli@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils SecuritySupport.java SecuritySupport12.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed comments that referred to JAXP.  Updated imports to avoid using
+wildcards, which is a practice Xalan-J has largely eschewed.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates FuncDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for bug 19297 from Christine Li (jycli@ca.ibm.com).  The
+document() function must treat the second argument as a node-set; it should
+not permit an argument of any other type.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerJavaClass.java ExtensionHandlerJavaPackage.java 
+xml-xalan/java/src/org/apache/xalan/templates ElemExtensionCall.java xml-xalan/java/src/org/apache/xalan/trace ExtensionEvent.java 
+TraceListenerEx3.java TraceManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Implemented extensions trace mechanism for Java extension calls.
+(http://marc.theaimsgroup.com/?l=xalan-dev&amp;m=105715909512185&amp;w=2)
+
+Added new interfaces to allow a trace listener to receive information about
+extension functions and elements that are called or executed.
+
+Placed hooks in subclasses of ExtensionHandler prior to and after invoking
+the resolved extension method.
+
+Adding missing trace event for ElemExtensionCall.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/08/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Sarah McNamara (mcnamara@ca.ibm.com).
+
+Removing JavaCupRedirect from the jar files. This class is only
+needed at build time, and causes build problems when placed on the
+bootclasspath (when bootclasspathing xalan.jar under JDK 1.4).
+
+See also (http://marc.theaimsgroup.com/?l=xalan-cvs&amp;m=105637851030164&amp;w=2)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/09/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerExsltFunction.java xml-xalan/java/src/org/apache/xalan/res 
+XSLTErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applied patch for bug 15090 from Joanne Tong (joannet@ca.ibm.com).  Added code
+to handle the case in which a referenced function is not found by reporting an
+error.  Previously, a NullPointerException was the result.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/09/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 22777
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/09/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 21478	
+Submitted by:	Christine Li
+Reviewed by:	Brian Minchau
+
+Added message key ER_FUNCTION_NOT_SUPPORTED that
+maps to message (in English) "Function not supported!"
+so that an error message comes out rather than a crash.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 22808
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/09/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java ErrorMsg.java xml-xalan/java/xdocs/sources/xalan 
+commandline_xsltc.xml faq.xml xsltc_usage.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated documentation to describe behaviour of XSLTC when the translet name
+specified by the user contains characters that are not permitted as part of a
+Java class name.
+
+Reviewed by Sarah McNamara (mcnamara@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/09/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer SerializerSwitcher.java 
+xml-xalan/java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Apply the patch from Richard Cao (richcao@ca.ibm.com) for bug 13082.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/09/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/trace PrintTraceListener.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating PrintTraceListener to print information about the recently
+added ExtensionEvents.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/09/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/Trace Trace.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update Trace sample to allow tracing of extension calls, as well as
+optionally read the name of the stylesheet from the command line arguments.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/09/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan samples.xml usagepatterns.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Documenting the addition of the ExtensionEvent trace event, as well as
+the Trace sample changes.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/09/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorUnknown.java 
+xml-xalan/java/src/org/apache/xalan/templates ElemExtensionCall.java ElemFallback.java ElemUnknown.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: Bugzilla 23089
+Submitted by:	Joanne Tong
+Reviewed by:	Brian Minchau
+
+A slight rework of Joanne's patch made by Brian and now commited to CVS.
+Also just previosly commited was a testcase, extend06 created by Joanne (thank!).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/09/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch from Joanne Tong (joannet@ca.ibm.com) for Bugzilla bug report
+16311.  After completing the relevant operations in applyTemplateToNode, the
+method was popping various pieces of the context off of stacks.  However, in
+the case of the default template rule for text nodes, it was trying to pop
+variables off the stack, even though no variables had been pushed onto the
+stack.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/09/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch from Joanne Tong (joannet@ca.ibm.com) for Bugzilla bug report
+23200.  The XPath syntax for a number is "Digits ('.' Digits?)? | '.' Digits".
+The XPath parser accepted anything accepted by the Java double literal syntax,
+including values using "E" exponential notation.  The fix was to guard against
+any value using exponential notation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/09/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources entities.ent xml-xalan/java/xdocs/sources/xalan downloads.xml faq.xml 
+history.xml index.xml resources.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 23418
+Submitted by:	Sarah McNamara
+Reviewed by:	Brian Minchau
+Updates to java/xdocs so that new webpages point to Apache Mirrors for distribution.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer CharInfo.java ToHTMLStream.java ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 22623
+Submitted by:	Brian Minchau
+Reviewed by:	Henry Zongaro
+Tabs in HTML attribute values are now output as charater references.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemExtensionCall.java ElemLiteralResult.java 
+xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java xml-xalan/java/src/org/apache/xml/serializer 
+EmptySerializer.java SerializationHandler.java ToHTMLSAXHandler.java ToSAXHandler.java ToStream.java ToTextStream.java 
+ToUnknownStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 21471
+Submitted by:	Joanne Tong
+Reviewed by:	Brian Minchau
+Stop some SAXExceptions from being quietly caught by the serializer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/10/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Encodings.java SecuritySupport.java SecuritySupport12.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Propagated SecuritySupport and SecuritySupport12 classes to serializer package.
+Code in Encoding that uses Class.getResource should instead use
+SecuritySupport.getResourceAsStream.
+
+Reviewed by Christine Li (jycli@ca.ibm.com)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 22422
+Submitted by: Brian Minchau	
+Reviewed by:	Naeim Semsarilar (person reporting the problem)
+
+Get a system and public ID from the properties used to create a serializer
+and used them to call appropriate methods on the ToXMLSAXHandler.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTAttributeDef.java xml-xalan/java/src/org/apache/xalan/templates 
+OutputProperties.java Stylesheet.java xml-xalan/java/src/org/apache/xalan/xslt EnvironmentCheck.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler AttributeValueTemplate.java xml-xalan/java/src/org/apache/xml/serializer 
+CharInfo.java xml-xalan/java/src/org/apache/xml/utils Hashtree2Node.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 22342.
+Rename variables with name "enum". In JDK 1.5, enum is a keyword.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExpressionVisitor.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Apply the patch for bugzilla 14149 from Joanne Tong (joannet@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 23113
+Submitted by:	Brian Minchau
+Reviewed by:	Brian Minchau
+The reset() in ToStream did not reset a few fields to the original values
+that were obtained via " new ToStream() ".  The applied patch fixes that.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates OutputProperties.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 890
+Submitted by:	 Richard Cao
+Reviewed by:	Brian Minchau
+Make sure a non standard property has a key with only one '{' and only one '}'
+and that the '{' is first thing in the key.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Christine Li (jycli@ca.ibm.com) for Bugzilla bug report 22880.
+
+When input comes from DOMSource, a TreeWalker object walks the DOM input and
+fires events to the ContentHandler for the result object, unless the DOM
+consists of only an Attribute node.  In the case of an Attribute, the TreeWalker
+is not utilized, and just the character data is copied to the result.
+
+As part of the traversal of the DOM, the TreeWalker always fires startDocument
+and endDocument events.  The code in the transform(Source,Result) method was
+redundantly firing those same events if the Node specified by the DOMSource
+was not a Document node.  Instead, that should be left to the TreeWalker.  The
+startDocument and endDocument events should only be fired in the transform
+method itself to complete the entirely local processing of Attribute nodes.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 7408. Submitrd by  Richard Cao.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorDecimalFormat.java xml-xalan/java/src/org/apache/xalan/templates DecimalFormatProperties.java KeyDeclaration.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 5972. Submitrd by  Richard Cao.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTAttributeDef.java XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 788. Submitted by  Richard Cao.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java KEYS<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added the public key of "Brian James Minchau" to the xml-xalan/java/KEYS file.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 16512
+Submitted by:	Richard Cao
+Reviewed by:	Brian Minchau
+This bug has existed since the earth cooled (Mid 2000).
+Clearly 3 of 4 lines were commented out
+// if (x)
+//   diagnositcsWriter.print(...)/
+// else
+   diagnosticsWriter.print(...);
+And it was printing a message that we were done, not in the spirit of quiet
+success.  Richard Cao's patch is applied, the fourth line is now commented out as well.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/10/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates TemplateList.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 789. Submitted by  Richard Cao.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/10/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor StylesheetHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Richard Cao (richcao@ca.ibm.com) for Bugzilla bug 15700.
+Added additional check to prevent unrecognised elements from the XSLT namespace
+(or even recognized elements, other than xsl:stylesheet and xsl:transform)
+from appearing as the outermost element in a stylesheet.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xalan2jdoc.jar xalan2jtaglet.jar 
+xml-xalan/java build.xml xml-xalan/java/src/org/apache/xalan/templates AVT.java 
+AVTPart.java Constants.java ElemApplyImport.java ElemApplyTemplates.java ElemAttribute.java 
+ElemAttributeSet.java ElemCallTemplate.java ElemComment.java ElemCopy.java ElemCopyOf.java 
+ElemElement.java ElemExtensionCall.java ElemExtensionScript.java ElemFallback.java 
+ElemForEach.java ElemIf.java ElemLiteralResult.java ElemParam.java ElemSort.java 
+ElemTemplateElement.java ElemText.java ElemWhen.java ElemWithParam.java FuncDocument.java 
+KeyDeclaration.java StylesheetRoot.java AVTPartSimple.java AVTPartXPath.java 
+DecimalFormatProperties.java ElemChoose.java ElemEmpty.java ElemExsltFunction.java 
+ElemExtensionDecl.java ElemMessage.java ElemNumber.java ElemOtherwise.java ElemPI.java 
+ElemTemplate.java ElemTextLiteral.java ElemUnknown.java ElemUse.java ElemValueOf.java 
+ElemVariable.java FuncFormatNumb.java FuncKey.java TemplateList.java 
+xml-xalan/java/src/org/apache/xml/dtm/ref CoroutineManager.java DTMDefaultBase.java 
+DTMDocumentImpl.java DTMNamedNodeMap.java DTMNodeProxy.java DTMTreeWalker.java 
+xml-xalan/java/src/org/apache/xpath/axes AttributeIterator.java ChildIterator.java 
+ChildTestIterator.java LocPathIterator.java OneStepIteratorForward.java WalkingIterator.java 
+ContextNodeList.java DescendantIterator.java IteratorPool.java OneStepIterator.java 
+RTFIterator.java SelfIteratorNoPredicate.java SubContextList.java UnionPathIterator.java 
+WalkerFactory.java WalkingIteratorSorted.java xml-xalan/java/src/org/apache/xalan/res 
+XSLMessages.java XSLTErrorResources_en.java xml-xalan/java/src/org/apache/xalan/transformer 
+ClonerToResultTree.java Counter.java CountersTable.java DecimalToRoman.java KeyIterator.java 
+KeyRefIterator.java KeyTable.java MsgMgr.java NodeSorter.java NodeSortKey.java 
+NumeratorFormatter.java ResultNameSpace.java TransformerImpl.java TreeWalker2Result.java 
+XSLInfiniteLoopException.java xml-xalan/java/src/org/apache/xpath/axes AttributeIterator.java 
+ChildIterator.java ChildTestIterator.java LocPathIterator.java OneStepIteratorForward.java 
+WalkingIterator.java ContextNodeList.java DescendantIterator.java IteratorPool.java 
+OneStepIterator.java RTFIterator.java SelfIteratorNoPredicate.java SubContextList.java 
+UnionPathIterator.java WalkerFactory.java WalkingIteratorSorted.java 
+xml-xalan/java/src/org/apache/xalan/lib ExsltCommon.java ExsltDatetime.java ExsltDynamic.java 
+ExsltMath.java ExsltSets.java ExsltStrings.java Extensions.java 
+xml-xalan/java/src/org/apache/xpath Arg.java Expression.java FoundIndex.java NodeSet.java 
+NodeSetDTM.java SourceTree.java VariableStack.java XPath.java XPathContext.java 
+XPathException.java XPathFactory.java XPathProcessorException.java 
+xml-xalan/java/src/org/apache/xalan/trace EndSelectionEvent.java GenerateEvent.java 
+PrintTraceListener.java SelectionEvent.java TraceListener.java TraceListenerEx.java 
+TraceListenerEx2.java TraceListenerEx3.java TracerEvent.java 
+xml-xalan/java/src/org/apache/xpath/functions FuncBoolean.java FuncCeiling.java 
+FuncConcat.java FuncContains.java FuncCount.java FuncCurrent.java FuncDoclocation.java 
+FuncExtElementAvailable.java FuncExtFunction.java FuncExtFunctionAvailable.java 
+FuncFalse.java FuncFloor.java FuncGenerateId.java FuncId.java FuncLang.java FuncLast.java 
+FuncLocalPart.java FuncNamespace.java FuncNormalizeSpace.java FuncNot.java FuncNumber.java 
+FuncPosition.java FuncQname.java FuncRound.java FuncStartsWith.java FuncString.java 
+FuncStringLength.java FuncSubstring.java FuncSubstringAfter.java FuncSubstringBefore.java 
+FuncSum.java FuncSystemProperty.java Function.java Function2Args.java Function3Args.java 
+FunctionDef1Arg.java FunctionMultiArgs.java FunctionOneArg.java FuncTranslate.java 
+FuncTrue.java FuncUnparsedEntityURI.java WrongNumberArgsException.java 
+xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources_ca.java 
+XPATHErrorResources_cs.java XPATHErrorResources_de.java XPATHErrorResources_en.java 
+XPATHErrorResources_fr.java XPATHErrorResources_hu.java XPATHErrorResources_it.java 
+XPATHErrorResources_ja.java XPATHErrorResources_ko.java XPATHErrorResources_pl.java 
+XPATHErrorResources_pt_BR.java XPATHErrorResources_sk.java XPATHErrorResources_sv.java 
+XPATHErrorResources_zh_TW.java XPATHMessages.java XPATHErrorResources_es.java 
+XPATHErrorResources_ru.java XPATHErrorResources_tr.java XPATHErrorResources_zh_CN.java 
+XPATHErrorResources.java xml-xalan/java/src/org/apache/xml/utils AttList.java 
+BoolStack.java CharKey.java Constants.java DefaultErrorHandler.java DOM2Helper.java 
+DOMBuilder.java DOMHelper.java ElemDesc.java Hashtree2Node.java IntStack.java IntVector.java 
+ListingErrorHandler.java MutableAttrListImpl.java NameSpace.java NodeVector.java NSInfo.java 
+ObjectPool.java ObjectStack.java ObjectVector.java PrefixResolver.java 
+PrefixResolverDefault.java QName.java RawCharacterHandler.java StringBufferPool.java 
+StringToIntTable.java StringToStringTable.java StringToStringTableVector.java 
+StringVector.java SuballocatedByteVector.java SuballocatedIntVector.java SystemIDResolver.java 
+TreeWalker.java Trie.java UnImplNode.java WrongParserException.java 
+XMLCharacterRecognizer.java xml-xalan/java/src/org/apache/xpath/res 
+XPATHErrorResources_ca.java XPATHErrorResources_cs.java XPATHErrorResources_de.java 
+XPATHErrorResources_en.java XPATHErrorResources_fr.java XPATHErrorResources_hu.java 
+XPATHErrorResources_it.java XPATHErrorResources_ja.java XPATHErrorResources_ko.java 
+XPATHErrorResources_pl.java XPATHErrorResources_pt_BR.java XPATHErrorResources_sk.java 
+XPATHErrorResources_sv.java XPATHErrorResources_zh_TW.java XPATHMessages.java 
+XPATHErrorResources_es.java XPATHErrorResources_ru.java XPATHErrorResources_tr.java 
+XPATHErrorResources_zh_CN.java XPATHErrorResources.java 
+xml-xalan/java/src/org/apache/xpath/patterns FunctionPattern.java NodeTest.java 
+StepPattern.java UnionPattern.java xml-xalan/java/src/org/apache/xml/res 
+XMLErrorResources_en.java XMLMessages.java xml-xalan/java/src/org/apache/xml/utils/res 
+XResourceBundle.java XResourceBundleBase.java XResources_cy.java XResources_de.java 
+XResources_el.java XResources_en.java XResources_es.java XResources_fr.java XResources_he.java 
+XResources_hy.java XResources_it.java XResources_ja_JP_A.java XResources_ja_JP_HA.java 
+XResources_ja_JP_HI.java XResources_ja_JP_I.java XResources_ka.java XResources_ko.java 
+XResources_sv.java XResources_zh_CN.java XResources_zh_TW.java 
+xml-xalan/java/src/org/apache/xpath/domapi XPathEvaluatorImpl.java XPathExpressionImpl.java 
+XPathNamespaceImpl.java XPathNSResolverImpl.java XPathResultImpl.java 
+xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandler.java 
+ExtensionHandlerGeneral.java ExtensionHandlerJava.java ExtensionHandlerJavaClass.java 
+ExtensionHandlerJavaPackage.java ExtensionsTable.java XSLProcessorContext.java 
+xml-xalan/java/src/org/apache/xalan/serialize SerializerUtils.java 
+xml-xalan/java/src/org/apache/xml/utils/synthetic/reflection Constructor.java 
+EntryPoint.java Field.java Member.java Method.java xml-xalan/java/src/org/apache/xpath/objects 
+XBoolean.java XBooleanStatic.java XMLStringFactoryImpl.java XNodeSet.java XNull.java 
+XNumber.java XObject.java XRTreeFrag.java XString.java 
+xml-xalan/java/src/org/apache/xalan/processor ProcessorDecimalFormat.java 
+ProcessorExsltFuncResult.java ProcessorExsltFunction.java ProcessorLRE.java 
+ProcessorStylesheetDoc.java ProcessorUnknown.java StopParseException.java 
+StylesheetHandler.java XSLProcessorVersion.java xml-xalan/java/src/org/apache/xpath/compiler 
+Compiler.java FuncLoader.java Keywords.java OpCodes.java OpMapVector.java XPathParser.java 
+xml-xalan/java/src/org/apache/xpath/operations Variable.java 
+xml-xalan/java/src/org/apache/xalan Version.java xml-xalan/java/src/org/apache/xalan/client 
+XSLTProcessorApplet.java xml-xalan/java/src/org/apache/xalan/xslt Process.java 
+xml-xalan/java/src/org/apache/xml/dtm DTM.java DTMDOMException.java 
+xml-xalan/java/src/org/apache/xml/utils/synthetic Class.java JavaUtils.java 
+SynthesisException.java TestDriver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 20572 (javadoc generation failing under JDK 1.4)
+Submitted by:	Richard Cao
+Reviewed by:	Brian Minchau
+Did a further review and tested javadoc generation under JDK 1.4.1 and under 1.2.2
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/10/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/client XSLTProcessorApplet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Christine Li (jycli@ca.ibm.com) for Bugzilla bug report 19823.
+Added code to use a Hashtable to keep track of parameters set for an applet.
+The old implementation allowed just one parameter to be specified for the
+transformation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 20572
+Submitted by:	Richard Cao
+Reviewed by:	Brian Minchau
+Richard added extra -breakiterator option when building javadoc for SDK 1.4 or higher
+to get rid of warning messaes when doing the build.
+This is a compatibility option.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToSAXHandler.java 
+ToXMLSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 23812
+Submitted by:	Brian Minchau
+Reviewed by:	Henry Zongaro
+Fixes incorrect handling of CDATA by a ToXMLSAXHandler. 
+The CDATA was defined by calls to the LexicalHandler methods:
+startCDATA()
+endCDATA()
+Henry would rather have a new flushPending() method which does not
+flush a generated endCDATA() call, but I copied the contents of flushPending()
+to the top of ToXMLSAXHandler.character(char[] chars, int off, int len)
+anyways.  I didn't want to put a new flushPending() method on a SerializationHandler
+interface.   I'm not completely happy with either choice so I left it as-was  - bjm
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToSAXHandler.java 
+ToXMLSAXHandler.java
+xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 7205
+Submitted by:	Richard Cao
+Reviewed by:	Brian Minchau/Henry Zongaro
+Do NOT  have ToXMLSAXHandler always mirror namespaces given via
+startPrefixMapping("prefix1", "uri1")
+ as attribute values of the form xmlns:prefix1="uri1"
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExpressionVisitor.java
+xml-xalan/java/src/org/apache/xalan/lib PipeDocument.java ExsltCommon.java 
+ExsltDatetime.java xml-xalan/java/src/org/apache/xalan/lib/sql ConnectionPool.java 
+ConnectionPoolManager.java DefaultConnectionPool.java DTMDocument.java ObjectArray.java 
+PooledConnection.java QueryParameter.java XConnection.java 
+xml-xalan/java/src/org/apache/xalan/processor StylesheetHandler.java 
+xml-xalan/java/src/org/apache/xalan/templates ElemExsltFuncResult.java 
+ElemTemplateElement.java FuncDocument.java OutputProperties.java
+xml-xalan/java/src/org/apache/xml/serializer AttributesImplSerializer.java 
+EmptySerializer.java NamespaceMappings.java ToHTMLSAXHandler.java ToHTMLStream.java 
+ToStream.java ToTextSAXHandler.java ToUnknownStream.java ToXMLSAXHandler.java 
+ToXMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 23983
+Submitted by:	Brian Minchau
+javadoc cleanup
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes AttributeIterator.java 
+ChildIterator.java 
+ChildTestIterator.java DescendantIterator.java LocPathIterator.java NodeSequence.java 
+OneStepIterator.java OneStepIteratorForward.java SelfIteratorNoPredicate.java 
+UnionPathIterator.java WalkingIterator.java
+xml-xalan/java/src/org/apache/xalan/transformer package.html TransformerIdentityImpl.java 
+TransformerImpl.java XalanProperties.java XalanTransformState.java
+xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java
+xml-xalan/java/src/org/apache/xml/dtm/ref DTMManagerDefault.java DTMNodeIterator.java 
+DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 23983
+Submitted by:	Brian Minchau
+javadoc cleanup
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix to make SerializerFactory return a serializer even if the only
+property specified is method="xml"
+PR: bugzilla 22025
+Submitted by:	Brian Minchau
+Reviewed by:	John Meyer (bug originator)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/23<br />
+<b>
+<i>Modified: </i>
+</b> java/src/org/apache/xml/serializer Encodings.properties ToTextStream.java
+java/src/org/apache/xml/res XMLErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+patch to emit emit error message for method="text" when output character not valid in the 
+output encoding.   
+PR: bug 795
+Submitted by:		 Richard Cao
+Reviewed by:		 Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/23<br />
+<b>
+<i>Modified: </i>
+</b> java/src/org/apache/xalan/templates ElemLiteralResult.java
+ElemUse.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Error message for testcase attribseterr07
+PR: bug 782
+Submitted by:		 Richard Cao
+Reviewed by:		 Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/23<br />
+<b>
+<i>Modified: </i>
+</b> java/src/org/apache/xml/serializer CharInfo.java
+ToHTMLStream.java ToXMLStream.java ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bug 24025
+Submitted by:		 Brian Minchau
+Reviewed by:		 Henry Zongaro
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/23<br />
+<b>
+<i>Modified: </i>
+</b> java/src/org/apache/xml/utils QName.java
+java/src/org/apache/xml/res XMLErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Shouldn't be able to call a template with no prefix:
+PR: bug 3415
+Submitted by:		 Richard Cao
+Reviewed by:		 Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/23<br />
+<b>
+<i>Modified: </i>
+</b> ava/src/org/apache/xalan/lib PipeDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PipeDocument was not calling out.close() when done with the 
+FileOutputStream "out".
+PR: bug 24013
+Submitted by:		 Pierre Chardin (bug reporter)
+Reviewed by:		 Brian Minchau
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.5.1</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xslt EnvironmentCheck.java xml-xalan/java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying Sarah McNamara's (mcnamara@ca.ibm.com) patches to update
+version numbers in XalanJ.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan commandline_xsltc.xml commandline.xml history.xml index.xml readme.xml resources.xml samples.xml whatsnew.xml xsltc_history.xml xsltc_usage.xml xml-xalan/java/xdocs/sources entities.ent xalan-jlocal.xml xalan-jsite.xml xml-xalan/java commits.xml build.xml xml-xalan/java/xdocs/style/stylesheets done.xsl xml-xalan/java/xdocs xml-site-style.tar.gz<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Sarah McNamara's (mcnamara@ca.ibm.co) documentation patch.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added comments before a couple of messages to assist translators, and fixed a typo in the class name mentioned in a message.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java xml-xalan/java/src/org/apache/xml/dtm/ref DTMAxisIteratorBase.java EmptyIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patches from Igor Hersht (igorh@ca.ibm.com) for bug 15200 and
+bug 18585.
+
+Pulled EmptyIterator class out of SAXImpl to allow for more widespread use.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New FAQ from Christine Li (jycli@ca.ibm.com) for using Xalan in Tomcat
+with JDK 1.4.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2003/04/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for array out of bounds exception in findNamespaceContext, where the index was allowed to go to -1.  This is a blind fix, and someone who knows the code better should take a look to see what they think.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2003/04/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemCallTemplate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Made it a static error in compose(...) if a reference is made to a non-existent template.  Note this might cause some existing stylesheets to not work, since the error would never have been flagged if the code was not run.  Note the old code was marked for %REVIEW%, so I don't think this was ever resolved.  I think it's clear that this should be a static error.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/04/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Change in comments only. Deleted old commented out (and incorrect)
+double-checked locking code.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Duplicate trace was event being issued.  One from ElemElement and then 
+from its parent class: ElemUse.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Dropping properties files that contain English messages.
+xml-xalan/java/src/org/apache/xalan/res/XSLTErrorResources.properties has been
+replaced by xml-xalan/java/src/org/apache/xalan/res/XSLTErrorResources.java.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Dropping properties files that contain English messages.
+xml-xalan/java/src/org/apache/xpath/res/XPATHErrorResources.properties has been
+replaced by xml-xalan/java/src/org/apache/xpath/res/XPATHErrorResources.java.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/04/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltStrings.java Extensions.java xml-xalan/java/src/org/apache/xml/serializer CharInfo.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed incorrect double-check locking code with an inner class
+with a static field.  Synchronization is covered by the class loader.
+Loading happens when first referenced. A cool, efficient, safe 
+way to lazy load a static field.
+
+PR: bugzilla 19029
+Obtained from: Henry Zongaro
+Submitted by: Brian Minchau
+Reviewed by: Henry Zongaro
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java ToStream.java ToXMLSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Cleared two helper fields, m_elementURI and m_elementLocalName in endElement()
+Both of these fields are out of scope after the element is ended
+so it is correct to null them out at endElement()
+
+PR: bugzilla 19388
+Obtained from: bruno@outerthought.org (Bruno Dumon) and Brian Minchau
+Submitted by: bruno@outerthought.org (Bruno Dumon)
+Reviewed by: Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+endDTD() for ToHTMLStream now does nothing. It used to incorrectly
+write out some closing characters, but that was already hanled in startDocumentIntermal()
+
+PR: 19587
+Submitted by: bruno@outerthought.org (Bruno Dumon)
+Reviewed by: Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Performance fix for double buffering.  Don't use WriterToUTF8Buffered if the 
+writer class is "BufferedServletOutputStream".
+
+PR: bugzilla 19474
+Submitted by: Brian Minchau
+Reviewed by: Ilene Seelemann
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for flushing occuring in trace code even when tracing is not being done.
+
+PR: bugzilla 19471
+Submitted by: Brian Minchau
+Reviewed by: Ilene Seelemann
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/05/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan usagepatterns.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Serializer properties files have moved to the new org.apache.xml.serializer
+package.  Corrected part of documentation that didn't yet reflect that.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerBase.java ToHTMLSAXHandler.java ToHTMLStream.java ToSAXHandler.java ToStream.java ToTextSAXHandler.java ToTextStream.java ToXMLSAXHandler.java ToXMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Guarded the fireXXX(); calls to trace events with if (m_tracer != null),
+strictly for performance reasons. This should run faster than making the call and then checking.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Title of FAQ for Xerces version read, "Which version of Xerces-J 2.4.0 should I
+use?" answering it's own question.  Fixed that to make for a more suspenseful
+read.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorTemplateElem.java xml-xalan/java/src/org/apache/xalan/templates ElemAttributeSet.java ElemElement.java ElemLiteralResult.java ElemTemplateElement.java ElemUse.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Some Trace-related fixes: Two trace events were being fired for ElemCopy,
+and for templates elements derived from ElemUse the trace end event was
+being fired before child templates were executed. Also saved locator
+information for the end tag of stylesheet elements.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer SerializerBase.java ToHTMLStream.java ToStream.java ToXMLSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+See bugzilla # 19900 for a laundry list of small performance 
+enhancements.
+
+PR: bugzilla 19900
+Submitted by: Brian Minchau
+Reviewed by: Henry Zongaro
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer Encodings.java OutputPropertiesFactory.java SerializerFactory.java Utils.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Performance enhancement. Cache the loading of classes via Class.forName(classname)
+ in the serializer.  The same class is otherwise loaded over and over with each request
+to a server, e.g. in a servlet. 
+PR: bugzilla # 19960
+Submitted by: Brian Minchau
+Reviewed by: Morris Kwan
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/05/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemExsltFuncResult.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Adding missing trace events for the func:result element.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The HTML serializer should do nothing with the methods on the 
+DeclHandler interface, so they are now defined with empty
+bodies.  Also the comment() method does nothing when in a
+DTD.
+PR: bugzilla 19640
+Submitted by: Bruno Dumon (bruno@outerthought.org)
+Reviewed by: Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/05/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a new FAQ to describe a situation some users have encountered of late
+using XSLTC with JDK 1.4.
+Contributed by Christine Li (jycli@ca.ibm.com) with some editorial input from
+myself.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/05/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionNamespacesManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a compatibility problem when using the old "http://xml.apache.org/xslt"
+namespace with extension functions in org.apache.xalan.xslt.Extensions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/05/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml xml-xalan/java/xdocs/sources/xalan builds.xml downloads.xml resources.xml xml-xalan/java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Sarah McNamara (mcnamara@ca.ibm.com) which improves documentation
+about packaging and adds support for building and testing an alternate 
+binary distribution which provides xalan-interpretive and xsltc in separate jars.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+One line fix to get a lexical handler, was casting the wrong reference.
+PR: bugzilla 20237
+Submitted by: Bernard D'Have (bdhaveos@wanadoo.be)
+Reviewed by: Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/05/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/extensions/sql/basic-connection dbinfo.xml dbtest.xsl<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update to the SQL extension sample from Christine Li (jycli@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/05/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying Christine Li's (jycli@ca.ibm.com) fix for bug 19522.  When a
+SerializationHandler object is created for Xalan-J Interpretive, it needs to
+be informed which Transformer object is associated with the serialization.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer AttributesImplSerializer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+AttributesImplSerializer now uses the older (faster) org.xml.sax.helpers.AttributesImpl
+up until about 12 attributes and switches over to using a Hashtable for faster lookup
+of attributes, avoiding an order N*N performance problem for large
+number of attributes, but faster for lower number of attributes.
+PR: bugzilla 20273
+Submitted by: Brian Minchau
+Reviewed by: Henry Zongaro
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/05/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemExsltFunction.java xml-xalan/java/src/org/apache/xpath VariableStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Christine Li (jycli@ca.ibm.com) for bugzilla #18926.
+
+Variables weren't being cleared from stack between calls to func:function.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources_ca.java XSLTErrorResources_cs.java XSLTErrorResources_de.java XSLTErrorResources_es.java XSLTErrorResources_fr.java XSLTErrorResources_hu.java XSLTErrorResources_it.java XSLTErrorResources_ja.java XSLTErrorResources_ko.java XSLTErrorResources_pl.java XSLTErrorResources_pt_BR.java XSLTErrorResources_ru.java XSLTErrorResources_sk.java XSLTErrorResources_tr.java XSLTErrorResources_zh_CN.java XSLTErrorResources_zh_TW.java xml-xalan/java/src/org/apache/xalan/xslt Process.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages_ca.java ErrorMessages_cs.java ErrorMessages_de.java ErrorMessages_es.java ErrorMessages_fr.java ErrorMessages_hu.java ErrorMessages_it.java ErrorMessages_ja.java ErrorMessages_ko.java ErrorMessages_pl.java ErrorMessages_pt_BR.java ErrorMessages_ru.java ErrorMessages_sk.java ErrorMessages_tr.java ErrorMessages_zh_CN.java ErrorMessages_zh_TW.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime ErrorMessages_ca.java ErrorMessages_cs.java ErrorMessages_de.java ErrorMessages_es.java ErrorMessages_fr.java ErrorMessages_hu.java ErrorMessages_it.java ErrorMessages_ja.java ErrorMessages_ko.java ErrorMessages_pl.java ErrorMessages_pt_BR.java ErrorMessages_ru.java ErrorMessages_sk.java ErrorMessages_tr.java ErrorMessages_zh_CN.java ErrorMessages_zh_TW.java xml-xalan/java/src/org/apache/xml/res XMLErrorResources_ca.java XMLErrorResources_cs.java XMLErrorResources_de.java XMLErrorResources_es.java XMLErrorResources_fr.java XMLErrorResources_hu.java XMLErrorResources_it.java XMLErrorResources_ja.java XMLErrorResources_ko.java XMLErrorResources_pl.java XMLErrorResources_pt_BR.java XMLErrorResources_ru.java XMLErrorResources_sk.java XMLErrorResources_tr.java XMLErrorResources_zh_CN.java XMLErrorResources_zh_TW.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources_ca.java XPATHErrorResources_cs.java XPATHErrorResources_de.java XPATHErrorResources_es.java XPATHErrorResources_fr.java XPATHErrorResources_hu.java XPATHErrorResources_it.java XPATHErrorResources_ja.java XPATHErrorResources_ko.java XPATHErrorResources_pl.java XPATHErrorResources_pt_BR.java XPATHErrorResources_ru.java XPATHErrorResources_sk.java XPATHErrorResources_tr.java XPATHErrorResources_zh_CN.java XPATHErrorResources_zh_TW.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Checked in localized messages for Xalan and XSLTC contributed by IBM.
+New Locale support includes ca, cs, hu, pl, pt_BR, ru, sk and tr.
+The old messages are also updated with translations for newly added
+English messages.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils BoolStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a clear() method to clear a BoolStack, so that such a 
+stack can be re-used without the need to create a new one
+(for performance).
+Submitted by: Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer NamespaceMappings.java SerializerBase.java ToHTMLStream.java ToSAXHandler.java ToStream.java ToXMLSAXHandler.java ToXMLStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Support for reset() for the stream serializers and for ToXMLSAXHandler.
+These serializers can now be reset and re-used rather than creating a new one.
+A reset() takes about 1/2 the time of creating a new one.
+
+Submitted by: Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToHTMLSAXHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Support for a ToHTMLSAXHandler serializer to be reset() and re-used.
+Submitted by: Brian Minchau
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Contributed by Christine Li (jycli@ca.ibm.com).
+Modified FAQ entry regarding bootclasspath; the class path separator is not
+colon for all systems.
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.5.0</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Small improvement to SAXImpl.copyElement().
+Move the getStringValue() method from SAXImpl to SAX2DTM2.
+Remove the SAXImpl.stringValueAux() method.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/02/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src xml-commons-src.tar.gz xml-xalan/java/bin xml-apis.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update to latest version of xml-apis.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement to DescendantIterator. If _startNode is the root node, do
+not need to do the isDescendant() check.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Set the nextsib element of an attribute or namespace node to -1.
+This makes the logic in the iterators simpler and easier to
+maintain.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql DTMDocument.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime AttributeList.java xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java DTMStringPool.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java SAX2DTM2.java xml-xalan/java/src/org/apache/xml/utils SuballocatedIntVector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement for RTF. These changes improve the performance
+for stylesheets which create and throw away many small RTFs.
+
+Make the sizes of all internal storage units used by SAXImpl configurable.
+These include SuballocatedIntVector, DTMStringPool, IntStack and FastStringBuffer.
+The chain size of DTMStringPool and the number of blocks in SuballocatedIntVector
+can now be passed in the constructor. These sizes are set to smaller values in
+the RTF case.
+
+The default RTF size is changed to 32. There is also a change in the XSLTC
+AttributeList class to use on-demand memory allocation for the internal vectors.
+The vectors are only allocated when there is an attribute.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Small improvement to DescendantIterator and TypedDescendantIterator.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/02/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/extensions/sql/streamable cachedNodes.xsl pivot.xsl xml-xalan/java/xdocs/sources/xalan samples.xml xml-xalan/java/samples/CompiledApplet menu.html README.applet xml-xalan/java/samples/extensions/sql/basic-connection dbinfo.xml dbtest.xsl<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+More sample and documentation updates from Christine Li (jycli@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TrAXFilter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add a getTransformer() interface to TrAXFilter. This is a user requested
+feature. This interface can be used by the UseXMLFilters samples to
+set the output properties correctly.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java DTMDefaultBaseIterators.java DTMDefaultBaseTraversers.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Do not create the previous sibling array for XSLTC. This array is not used
+in XSLTC's SAXImpl. Creating it is a waste of time.
+
+We add a boolean flag to the constructors of DTMDefaultBase and its
+subclasses to indicate whether the previous sibling array should be created.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Correct an error. The DTMDefaultBase.getPreviousSibling() interface
+returns a node handle instead of a node identity.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/02/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/CompiledEJB bottom_frame.html index.html README.ejb top_frame.html xml-xalan/java/samples/CompiledServlet CompileServlet.java README.servlet<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patches for samples from Christine Li (jycli@ca.ibm.com)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TrAXFilter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Propagate the change from head branch to XSLTC_DTM.
+Add a new getTransformer() interface to TrAXFilter.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TrAXFilter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add a new getTransformer() interface to TrAXFilter.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java NameBase.java Stylesheet.java xpath.cup XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java DocumentCache.java LoadDocument.java SAXImpl.java XSLTCDTMManager.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java BasisLibrary.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java TransformerImpl.java XSLTCSource.java xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+
+Implement a feature for on-demand building of the ID index table.
+
+Before this change, the SAX2DTM2 class always builds an ID index
+hashtable by comparing the name of every attribute with "id". Now
+we maintain a flag _hasIdCall in AbstractTranslet to indicate
+whether the translet has id function calls. The value of this flag
+is compiled into the translet from the Stylesheet class. The Stylesheet
+class also has an _hasIdCall flag, which is set by the XPath parser.
+
+When a SAXImpl object is created, the _hasIdCall flag is passed in from the
+Translet. Now the id index table is only built when the stylesheet makes
+use of the id function.
+
+Also fix a bug in the NameBase class for using an incorrect class name
+(org.apache.xml.dtm.ref.DTMAxisIterator should be org.apache.xml.dtm.DTMAxisIterator).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom AnyNodeCounter.java DOMAdapter.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement for xsl:number. Introduce an optimized version of
+getExpandedTypeID() in SAX2DTM2.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMWSFilter.java NodeSortRecord.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement for xsl:strip-space by caching the DTM that is used last time.
+Better Collator handling in NodeSortRecord.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Save the values of attribute, namespace, comment and PI nodes
+in a plain Vector instead of in DTMStringPool. Saving a String
+in DTMStringPool involves a hash calculation. These values
+are unlikely to be equal. Saving them in a plain Vector has a
+lower cost than saving them in DTMStringPool. Only prefixed QNames
+are saved in DTMStringPool after this change.
+
+Need to make changes in a few interfaces to accommadate this change.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Small improvement in FastStringBuffer.sendSAXCharacters() when the whole
+piece of text is in one chunk.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Small improvement in SAX2DTM2.getStringValueX() and dispatchCharacterEvents()
+by saving one local variable.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom CollatorFactoryBase.java SAXImpl.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Save the offset and length of a Text node in a bitwise encoded value (10
+bits for length and 21 bits for offset) if they are within certain limits.
+Before this change, we need 3 SuballocatedIntVector calls to get the offset
+and length information. Now we only need one SuballocatedIntVector call,
+one bit AND &amp; one SHIFT. Bit AND and SHIFT are faster than accessing a
+SuballocatedIntVector.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a bug for testcase axes129.
+DTMDefaultBase.getFirstNamespaceNode() should return NULL when
+the given node is not an element. axes129 passed in both
+Xalan and XSLTC_DTM after this change.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2003/03/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBaseTraversers.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Oops! Old bug, just noticed -- we forgot to override RootTraverser's typed first().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom NthIterator.java xml-xalan/java/src/org/apache/xml/dtm DTMAxisIterator.java xml-xalan/java/src/org/apache/xml/dtm/ref DTMAxisIteratorBase.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement for step[n]. Introduce a new interface getNodeByPosition(int position)
+in DTMAxisIterator, which is used by the NthIterator. The default implementation
+is in DTMAxisIteratorBase. The subclasses can override this interface to provide
+a faster customized implementation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Introduce a copyAttribute() method in SAXImpl to speed up
+attribute copying.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement in DTM building. Make the code more efficient
+in a few expensive interfaces.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a bug in XSLTC_DTM.
+Change the name of the optimized getExpandedTypeID method to getgetExpandedTypeID2.
+The old one can be used during DTM building, while the new one is only
+used in document traversal.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/03/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java XSLTErrorResources.properties XSLTErrorResources.java XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/templates FuncDocument.java FuncDocument.java xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java XSLTErrorResources.properties XSLTErrorResources.java XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/templates FuncDocument.java FuncDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing Christine Li's (jycli@ca.ibm.com) patch for bugzilla #18210.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java SAX2DTM2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xml.dtm.ref.sax2dtm.
+Add new file SAX2DTM2.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xml.dtm.ref.dom2dtm.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm DTM.java DTMAxisIterator.java DTMManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xml.dtm.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMAxisIteratorBase.java DTMAxisIterNodeList.java DTMChildIterNodeList.java DTMDefaultBase.java DTMDefaultBaseIterators.java DTMDefaultBaseTraversers.java DTMDocumentImpl.java DTMManagerDefault.java DTMNamedNodeMap.java DTMNodeList.java DTMNodeListBase.java DTMNodeProxy.java DTMStringPool.java ExpandedNameTable.java ExtendedType.java IncrementalSAXSource_Xerces.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xml.dtm.ref.
+Add new files:
+DTMAxisIterNodeList.java
+DTMChildIterNodeList.java
+DTMNodeListBase.java
+ExtendedType.java
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/res XMLErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xml.res.
+Add new messages for common serializer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer AttributesImplSerializer.java CharInfo.java DOMSerializer.java ElemDesc.java EmptySerializer.java EncodingInfo.java Encodings.java Encodings.properties ExtendedContentHandler.java ExtendedLexicalHandler.java HTMLEntities.res Method.java NamespaceMappings.java output_html.properties output_text.properties output_unknown.properties output_xml.properties OutputPropertiesFactory.java OutputPropertyUtils.java package.html SerializationHandler.java Serializer.java SerializerBase.java SerializerConstants.java SerializerFactory.java SerializerTrace.java SerializerTraceWriter.java ToHTMLSAXHandler.java ToHTMLStream.java ToSAXHandler.java ToStream.java ToTextSAXHandler.java ToTextStream.java ToUnknownStream.java ToXMLSAXHandler.java ToXMLStream.java TransformStateSetter.java WriterToASCI.java WriterToUTF8.java WriterToUTF8Buffered.java XMLEntities.res XSLOutputAttributes.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Add new serializer classes under package org.apache.xml.serializer.
+Log from Brian Minchau (minchau@ca.ibm.com):
+
+In the past Xalan-J interpretive (Xalan) and XSLTC both implemented their own
+serialization stages.  Much of the code provides the same functionality.
+In order to improve the maintainability of the code, and to eliminate any
+functional differences, these two serializers are now merged in the
+org.apache.xml.serializer package.
+
+The best performing features of both have been used.  The class hierarchy
+of serializers used by XSLTC is re-used for this reason. At the highest
+level the serializer classes split based on whether the output of the
+serializer is a "Stream" or whether it is a "SAX" handler.  After that
+both major branches split based on the output type (e.g. XML, HTML or TEXT).
+
+The external user interface of the old Xalan serializer has been kept.
+Other classes and interfaces have been absorbed into the serializer
+package to keep it independent of both Xalan and XSLTC. The primary
+interface, SerializationHandler, accepts SAX and SAX-like calls, but
+it also absorbs other interfaces from the old Xalan serializer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils DOMHelper.java FastStringBuffer.java IntStack.java SuballocatedIntVector.java XMLStringDefault.java XMLStringFactoryDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xml.utils.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions XSLProcessorContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.extensions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDatetime.java PipeDocument.java Redirect.java xml-xalan/java/src/org/apache/xalan/lib/sql DTMDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.lib.
+
+1. Change the return types of some date-time extension functions
+for support in XSLTC.
+
+2. Changes for the new serializer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorOutputElem.java TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.processor.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize CharInfo.java DOMSerializer.java ElemDesc.java EncodingInfo.java Encodings.java Encodings.properties HTMLEntities.res Method.java package.html Serializer.java serializer.properties SerializerFactory.java SerializerToHTML.java SerializerToText.java SerializerToXML.java SerializerUtils.java WriterToASCI.java WriterToUTF8.java WriterToUTF8Buffered.java XMLEntities.res<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Remove old serializer classes under org.apache.xalan.serialize.
+The new serializer files are now in org.apache.xml.serializer.
+Add new file SerializerUtils.java.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemApplyTemplates.java ElemAttribute.java ElemCopy.java ElemCopyOf.java ElemElement.java ElemExtensionCall.java ElemForEach.java ElemLiteralResult.java ElemTemplateElement.java ElemTextLiteral.java ElemValueOf.java output_html.properties output_text.properties output_xml.properties OutputProperties.java StylesheetRoot.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.templates.
+Replace ResultTreeHandler with SerializationHandler.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/trace GenerateEvent.java PrintTraceListener.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.trace.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer ClonerToResultTree.java QueuedEvents.java ResultTreeHandler.java SerializerSwitcher.java TransformerHandlerImpl.java TransformerIdentityImpl.java TransformerImpl.java TransformSnapshot.java TransformSnapshotImpl.java TransformState.java TreeWalker2Result.java XalanTransformState.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.transformer for the new serializer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml xsltc_todo.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Update build.xml and xsltc_todo.xml.
+
+Now the default build target is a big xalan.jar which
+includes both Xalan-J Interpretive and XSLTC.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src MANIFEST.MF<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Update MANIFEST.MF to include information about
+xsltc and its support jars.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating to Xerces-J 2.4.0.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src MANIFEST.MF<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Update spec version for XSLTC in MANIFEST.MF
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/CompiledApplet menu.html README.applet TransformApplet.java xml-xalan/java/samples/CompiledBrazil README.brazil TransformHandler.java xml-xalan/java/samples/CompiledEJB README.ejb TransformBean.java xml-xalan/java/samples/CompiledJAXP Compile.java README.cjaxp Transform.java xml-xalan/java/samples/CompiledServlet README.servlet TransformServlet.java xml-xalan/java/samples/DOM2DOM DOM2DOM.java xml-xalan/java/samples/Pipe Pipe.java xml-xalan/java/samples/SAX2SAX SAX2SAX.java xml-xalan/java/samples/translets JAXPTransletMultipleTransformations.java JAXPTransletOneTransformation.java todo.xsl xml-xalan/java/samples/UseXMLFilters UseXMLFilters.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+
+Update in the samples
+1. Changes from Henry Zongaro (zongaro@ca.ibm.com) in the
+XSLTC samples. Use TrAX API instead of native API.
+2. Changes from Brian Minchau (minchau@ca.ibm.com) to use
+the new serializer classes.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/CompiledApplet singleTransform.html xml-xalan/java/samples/CompiledEJB bottom_frame.html index.html top_frame.html xml-xalan/java/samples/translets todo.xml todotoo.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Add new sample files.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources entities.ent xalan-jlocal.xml xalan-jsite.xml xml-xalan/java/xdocs/sources/xalan commandline_xsltc.xml commandline.xml dtm.xml history.xml readme.xml samples.xml usagepatterns.xml xsltc_history.xml xsltc_usage.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+
+Update in java/xdocs.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes FilterExprWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Commit patch for bug 12797 from Arun Yadav (arun.yadav@sun.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a new "fulldist" target.  It builds a distribution that includes Xalan-J
+components that depend upon non-standard components that aren't part of the
+Xalan-J repository.  In particular, xsltcbrazil.jar is built under the
+"fulldist" target, but not under the ordinary "dist" target.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer ToStream.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replace Vector.add() by Vector.addElement() because the first method
+is not in JDK 1.1.8.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xml/utils TreeWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Instead of setting a default baseURI in newTemplates, append a dummy string
+to the default used in the TreeWalker constructors.  This solves the problem
+of violating the SourceLocator.getSystemId API which should return null
+if if no systemId was set, while allowing relative URI's to be resolved when
+the source is a DOM and no systemID has been set.  Relative URI's are already 
+resolved correctly for other source types.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/CompiledApplet TransformApplet.java README.applet<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Christine Li (jycli@ca.ibm.com).  Reworked applet code so that the
+init method creates a thread to which it delegates all the work of creating
+Transformers and performing transformations.
+
+Xalan needs all of its classes to be loaded with respect to the same class
+loader.  The thread that's created will have the context class loader, if any,
+that is in effect when the applet's init method is called, but calls to other
+methods on the applet might not have the same context class loader.  Using a
+thread avoids any problems that might arise from such a situation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer CharInfo.java HTMLEntities.properties output_html.properties output_xml.properties XMLEntities.properties xml-xalan/java/xdocs/sources/xalan usagepatterns.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Christine Li (jycli@ca.ibm.com).  Changed CharInfo so that it allows
+descriptions of entities to be specified as a properties file in addition to a
+Xalan-specific resource file format.
+
+The code previously always assumed a Xalan-specific resource file format, for
+both user-supplied descriptions of entities, and for those supplied with
+Xalan-J.  The security restrictions of applets are such that an applet that
+relies on a copy of Xalan-J in the Java run-time would find that Xalan-J would
+be unable to read the default entities file that is packaged with the JRE on
+the applet's behalf - it can only do so with a properties, via ResourceBundle.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDatetime.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Commit an implementation of the date-time:format-date() extension function
+(bugzilla 18713) contributed by Helg Bredow (helg.bredow@kalido.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan commandline_xsltc.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Docs update
+Document the new "use-classpath" attribute
+which is supported in the XSLTC TrAX API.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/CompiledServlet README.servlet TransformServlet.java xml-xalan/java/samples/CompiledBrazil README.brazil<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Sample updates from Christine Li (jycli@ca.ibm.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize DOMSerializer.java Serializer.java SerializerFactory.java xml-xalan/java/src/org/apache/xml/serializer DOMSerializer.java SerializationHandler.java SerializerBase.java ToHTMLStream.java ToUnknownStream.java xml-xalan/java/src/org/apache/xalan/templates OutputProperties.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Brian Minchau (minchau@ca.ibm.com) for backward compatibility
+of new serializers.  Also a fix related to a failure in the DOM2DOM sample.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/serializer HTMLEntities.res XMLEntities.res<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Dropped descriptions of entities in the form of resource files in favour of
+those in the form of properties file.  The resource files are still supported,
+but Xalan-J's serializer only requires one.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Dropped descriptions of entities in the form of resource files in favour of
+those in the form of properties file.  The resource files are still supported,
+but Xalan-J's serializer only requires one.
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.4.1</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql DefaultConnectionPool.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed Class loader Problem. Default Connection now uses context Classloader
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem where a query that returned zero rows would incorrectly return a JDBC
+Exception. Note: This only occurs in streaming mode.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add a convenient interface getStringValue() which returns the
+string value of a node. It is used by the extension code
+to get a node value without hacking into the DTM.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates Constants.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add strings for new extension namespaces. This includes new EXSLT
+namespaces (dynamic and strings), namespaces for redirect, PipeDocument
+and SQL extensions and new namespace for the Java extension. For
+backward compatibility, the old Java namespace is still kept.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionNamespacesManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Register new extension namespaces, including two new EXSLT namespaces
+(dynamic and strings), namespaces for redirect, PipeDocument and SQL
+extensions and the new/old namespaces for Java extension.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib Extensions.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Reorganize the extension functions for new EXSLT extensions and
+XSLTC integration. The implementation of some extension functions
+(intersection, difference, distinct, evaluate and tokenize) are
+moved to the corresponding EXSLT extension classes. We also put
+a note to say that using these extension functions in the
+Xalan namespace is deprecated. The signature of some extension
+functions are changed to facilitate the XSLTC integration.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltMath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The EXSLT math extension was rewritten for XSLTC integration. The
+signatures of the existing functions (max, min, highest and lowest)
+are changed. We use NodeList instead of NodeSet and NodeIterator
+in arguments and return types, because it is the only node list type
+recognized by XSLTC. We also got rid of the ExpressionContext
+arguments in these functions. We implemented the toNumber() and toString()
+interfaces as a replacement.
+
+I also implemented all of the remaining math functions in the EXSLT spec,
+e.g. constant, sin, random.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltSets.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The signatures of the sets extension functions are changed for
+XSLTC integration. NodeList is used instead of NodeSet and NodeIterator
+in arguments and return types. The implementation of intersection,
+difference and distinct was moved from Extensions.java to this file.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib Redirect.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add comments for the new namespace (http://xml.apache.org/xalan/redirect).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib PipeDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add comments for the new namespace (http://xml.apache.org/xalan/PipeDocument).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add comments for the new namespace (http://xml.apache.org/xalan/sql).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDynamic.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add the ExsltDynamic class which implements the EXSLT dynamic
+extension functions (max, min, sum, map, evaluate and closure).
+
+The implementation of evaluate is taken from Extensions.java.
+The Javadoc is copied from the relevant EXSLT page.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltStrings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Implement the EXSLT strings extension functions (align,
+concat, padding, split and tokenize). The implementation
+of tokenize is taken from Extensions.java.
+
+The Javadoc is copied from the relevant EXSLT page. Three
+functions (decode-uri, encode-uri and replace) are missing
+due to ambiguous spec.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes SelfIteratorNoPredicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 11809 and 10643. Fix the nextNode() interface so that
+it returns DTM.NULL if the m_foundLast flag is true.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemExtensionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 11073. Fix an extension namespace problem.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/functions FuncExtFunction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 11743 and 12298. Fix argument handling in
+extension functions. Arguments now have non-null parents
+and they will be visited by the XPathVisitor.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java KEYS<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+I had to get a new key after a hard drive crash.  This time, I backed it up!
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Copy the LICENSE and README files to the bin directory for the source distribution.
+These files are needed by the xsltc.jar target.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerIdentityImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Throw an IllegalArgumentException in the setErrorListener() interface
+if the error listener is null.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions MethodResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 9731. Convert an empty NodeList to a null Node.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates OutputProperties.java xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 12379. Transformer.setOutputProperties() should throw
+IllegalArgumentException if the property is invalid.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTAttributeDef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 12127. Throw a TransformerException if a prefix cannot
+be resolved to a URI insteading of throwing a NullPointerException.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTAttributeDef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Correct a problem in the previous patch.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDatetime.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Javadoc correction.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib Extensions.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Make the tokenize extension function different from the one in the
+EXSLT strings extension. Reuse the Document object to reduce
+memory consumption.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltStrings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Make the tokenize function conformed with the EXSLT spec. Reuse
+the Document object to reduce memory usage.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes RTFIterator.java xml-xalan/java/src/org/apache/xpath/objects XRTreeFrag.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 11341. Let RTFIterator extend NodeSetDTM so that it is the kind
+of DTMIterator expected by DTMNodeList. This also fixes the problem in
+testcase JavaBugzilla3722.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorExsltFunction.java XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 12077. Fixed problem with func:function in included stylesheet.
+Add exsltFunction to the templateElements list so that we can detect the error where
+func:function is embedded in another (e.g. xsl:variable) element.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xml-apis.jar xml-xalan/java/src xml-commons-src.tar.gz<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New version of xml-apis.jar taken from xml-commons with tag:
+factoryfinder-build.  It contains the JAXP FactoryFinder patch and some
+SAX file updates.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC support - phase 1
+
+Add the -XSLTC option to enable transforming using XSLTC
+
+The following existing options do not work in XSLTC mode:
+-TT
+-TG
+-TS
+-TTC
+-QC
+-L
+-INCREMENTAL
+-NOOPTIMIZE
+-RL
+
+If any of these options is used with -XSLTC, a message is printed
+and the option is ignored. All other existing options (e.g. -flavor,
+-text, etc.) can be used with -XSLTC.
+
+In phase 2, we are going to migrate the XSLTC specific options in the
+XSLTC command lines (Compile and Transform) to the Process command line.
+One of the new features would be generating translet class files from
+the xsl.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDynamic.java ExsltMath.java ExsltStrings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Extension work. A few Javadoc correction. Fix problems in math:max and math:min.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/objects XRTreeFragSelectWrapper.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 6181. Change the execute() interface to return the result
+of executing the select expression.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating to latest xercesImpl.jar, which contains org.w3c.dom.xpath interfaces.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/domapi XPathEvaluatorImpl.java XPathExpressionImpl.java XPathNSResolverImpl.java XPathResultImpl.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Prototype implementation of DOM L3 XPath Specification.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing Gordon Chiu's (grchiu@ca.ibm.com) patch for bugzilla #6927.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan xsltc_constraints.xml xsltc_usage.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+compile -n option changed so inlining is now the default
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltBase.java ExsltDynamic.java ExsltMath.java ExsltSets.java ExsltStrings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Extension cleanup.
+Add an ExsltBase class as the super class for other EXSLT implementation
+classes, so that the toString() and toNumber() interfaces can be easily
+reused by all the subclasses without duplicating code.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath DOMHelper.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The isNodeTheSame(node1, node2) interface should return true if node1==node2.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemAttribute.java xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java XSLTErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #10384.  There's still a problem with attribseterr08 which
+is covered in bugzilla #3969.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/dom3/xpath XPathEvaluator.java XPathException.java XPathExpression.java XPathNamespace.java XPathNSResolver.java XPathResult.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Since Xerces has decided not to build the org.w3c.dom.xpath interfaces into
+XercesImpl I have created a temporary home for these interfaces, until
+the specification becomes a recommendation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/domapi XPathEvaluatorImpl.java XPathExpressionImpl.java XPathNSResolverImpl.java XPathResultImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating import statements to use the interfaces in the temporary org.apache.xalan.dom3.xpath package.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java XSLTErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added some new error message strings.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #4344.  The testcases, copyerr04-07 were already
+working correctly in that when an attempt was made to add an attribute
+after child elements, or before an element was produced, the attribute was 
+ignored.  However, Dave M.  said that a warning was also needed.  So,
+I have added a warning message for these cases.  Also, similar behaviour
+was being seen for testcases attribset19,35,36 and attribseterr08.  This
+was being handled in ElemAttribute.execute, but I've commented out the
+code there since it will get caught in  ResultTreeHandler.execute in the
+same place the copyerr tests get handled.
+
+The negative testcases, copyerr04-07, attribset08 should  be moved
+to the positive bucket (possibly with a few tweaks) since they all run to
+completion.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemAttribute.java xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #4344.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/09/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Gordon Chiu's (grchui@ca.ibm.com) patch for bugzilla #8473.  Thanks also
+to Brian Minchau (minchau@ca.ibm.com) for the analysis of this bug.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/functions FunctionMultiArgs.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 7161. Add a public accessor to return the argument array.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java xml-xalan/java/src/org/apache/xalan/extensions ExpressionContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 10414. Provide a getErrorListener() interface in the ExpressionContext.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/AppletXMLtoHTML client.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For bugzilla 13059. Fix typo width"0" to width="0".
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Messages for new options in the Process command line.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC support in the Process command line - phase 2
+Migrate the options from the XSLTC command line (Compile and Transform)
+to the Process command line. The following new options are added:
+
+-XO [translet_name]  (specify translate class name)
+-XD destination_directory (specify destination directory)
+-XJ jar_name (put translet into jar file)
+-XP package_prefix (specify package name prefix)
+-XN (enable template inlining)
+-XX (additional debug messages)
+-XT (use translet to transform if possible)
+
+The new options can only be used with the -XSLTC option. The options are
+passed to XSLTC via the standard TRAX API - TransformerFactory.setAttribute().
+Process does not directly communicate with XSLTC.
+
+The usage instructions are also re-organized. The options are divided into
+three categories (command options, Options for Xalan and Options for XSLTC). A
+pager is used when displaying the usage instructions so that you can see them
+page by page.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/10/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime ErrorMessages.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added and fixed up some additional translation guidelines.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/functions FuncExtFunction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use Vector.elementAt() instead of Vector.get(). The latter is not available
+in JDK 1.1.8. Add two argument accessor methods for Bugzilla 8939.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates Constants.java ElemTemplateElement.java output_html.properties output_text.properties output_xml.properties OutputProperties.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use one namespace for all extensions (Bugzilla 9959)
+Use the new namespace uri "http://xml.apache.org/xalan" instead of
+"http://xml.apache.org/xslt" for xsl:output extension attributes.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorLRE.java XSLTElementDef.java XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use one namespace for all extensions (Bugzilla 9959)
+Use the new namespace uri "http://xml.apache.org/xalan" for
+the component and script extension elements. We maintain
+backward compatibility so that using the old uri
+"http://xml.apache.org/xslt" still works.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerJavaPackage.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Minor Javadoc update to use the new namespace uri.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/samples/extensions 1-redir.xsl 2-basicJscript.xsl 3-java-namespace.xsl 4-numlistJava.xsl 5-numlistJscript.xsl 6-sqllib-instantdb.xsl<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update the extension samples to use the new namespace.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltMath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Minor fix for math:max().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor StylesheetHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 13106. Visit the XPath expressions created for match patterns.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes DescendantIterator.java UnionPathIterator.java WalkerFactory.java xml-xalan/java/src/org/apache/xpath/compiler Compiler.java Lexer.java OpMap.java XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #5046.
+
+The token queue and operations map can now grow to accomodate really
+large XPath expressions.   Starting sizes of the data structures remain set
+at the size in the current code.
+
+I created new classes org.apache.xml.utils.ObjectVector (based on org.apache.xml.utils.IntVector)
+and org.apache.xpath.compiler.OpMapVector to store the token queue
+and operations map.
+
+This patch is essentially a stop gap until the new parser (xslt20 branch) is integrated.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils ObjectVector.java xml-xalan/java/src/org/apache/xpath/compiler OpMapVector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #5046.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler OpMap.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Cleaning up import statements.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils IntStack.java IntVector.java ObjectStack.java ObjectVector.java xml-xalan/java/src/org/apache/xalan/templates ElemApplyTemplates.java ElemForEach.java xml-xalan/java/src/org/apache/xalan/transformer StackGuard.java TransformerImpl.java TransformSnapshotImpl.java xml-xalan/java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Commiting Gordon Chiu's (grchiu@ca.ibm.com) patch for bugzilla#8175.
+
+IntStack's and ObjectStack's are now used in place of fixed length arrays, so that users
+should not run into limitations based on array sizes.  The initial size of the arrays has
+been set to current array sizes, so the user's experience should not change much, except
+in the cases where they were running into the size limitation.
+
+No performance analysis has been done to determine an optimal initial
+size for the stacks.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing Igor Hersht's (igorh@ca.ibm.com) patch for bugzilla #10176.
+
+Also, removing testcase position102 from the excludes list for the smoketest
+since it now runs.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #13305.  Moved initalization code into a static initializer.
+
+TransformerFactory.newInstance() can now be called safely from multiple
+threads.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating to XercesJ 2.2.0.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref ExpandedNameTable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing Pavel Ausianik's (Pavel_Ausianik@epam.com) patch for bugzilla #12687.
+
+Reduce memory allocation on initialization of ExpandedNameTable.
+
+m_locNamesPool and m_namespaceNames and code that uses them has
+been commented out.  Some initialization now done in static initializer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing Gordon Chiu's (grchiu@ca.ibm.com) modified patch of Pavel Ausianik's (Pavel_Ausianik@epam.com) 
+patch for bugzilla #12486.
+
+Method XPathContext.reset()  was creating many new instances of java objects, 
+causing unnecessary memory allocations, instead of reusing previously created 
+objects. 
+
+
+m_locNamesPool and m_namespaceNames and code that uses them has
+been commented out.  Some initialization now done in static initializer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize Encodings.java Encodings.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing Gordon Chiu's (grchiu@ca.ibm.com) patch for bugzilla #13754.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/dom3/xpath COPYRIGHT.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Copying the copyright statement for the DOM L3 XPath API interfaces into
+the temporary package (org.apache.xalan.dom3.xpath) which contains
+the interfaces until they become a recommendation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorExsltFunction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For bugzilla 13711
+Fix the conditions for validating the child elements of func:function.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer KeyTable.java xml-xalan/java/src/org/apache/xpath/axes NodeSequence.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing urban.spielmann@swisslife.ch (Urban Spielmann)'s  patch for bugzilla #11661.  
+
+After the Redundant Expression Elimination merge, the key cache had
+not yet been replaced.  This patch puts back the key cache, which
+gives xsl:key much better performance.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemExtensionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For bugzilla 7357
+Fix problems in exception handling for extension elements.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #13863.
+
+Moved setting the namespaceContext from the TransformerImpl constructor to
+the transform method.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPath.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Move a hardcoded string into the properties file.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerJavaClass.java ExtensionHandlerJavaPackage.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For bugzilla 13944. Check for InvocationTargetException in Method.invoke().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 13303.
+Fix Memory leak in XPathContext.popRTFContext().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Backing out patch for bugzilla #13863.  It causes a bunch of failures in 
+the trax.sax flavour.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan extensions.xml extensionslib.xml samples.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update the extensions documentation.
+Use the new namespaces in documents and examples. Update EXSLT development
+status. Modify setup instructions for SQL samples.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs xml-site-style.tar.gz xml-xalan/java/xdocs/sources/xalan faq.xml resources.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 14022
+Commit Gordon Chiu's update to the FAQ.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/dom3/xpath COPYRIGHT.html XPathEvaluator.java XPathException.java XPathExpression.java XPathNamespace.java XPathNSResolver.java XPathResult.java xml-xalan/java/src/org/apache/xpath/domapi XPathEvaluatorImpl.java XPathExpressionImpl.java XPathNSResolverImpl.java XPathResultImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Removed the temporary org.apache.xalan.dom3.xpath package.
+
+Updated the org.w3c.dom.xpath interfaces.
+
+Changed dependencies to org.w3c.dom.xpath interfaces in the implementation
+classes in org.apache.xalan.xpath.domapi.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Build org.w3c.xpath.dom interfaces into xalan.jar.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Gordon Chiu.  Replace stack.clear() calls with stack.removeAllElements()
+to be compatible with JDK1.1.8.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Support compiling under JDK 1.2 - 1.4.  Also check for compatability with target JDK 1.1.x.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/10/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/domapi XPathNamespaceImpl.java XPathResultImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Somewhat rough implementation of XPathNamespace.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>2002/10/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin ant.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Upgrade to Ant 1.5.1.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltBase.java ExsltStrings.java xml-xalan/java/src/org/apache/xalan/lib/sql DefaultConnectionPool.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix JDK 1.1.8 compatibility problems.
+Replace methods calls that are only in Java2 by JDK 1.1 equivalents.
+For DefaultConnectionPool.java, use reflection mechanism to invoke
+Thread.getContextClassLoader() instead of hard-coded invocation.
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.4.0</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize SerializerToText.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 8358 -- bad method signature. I've created a new method
+with the correct signature. The old one may or may not be entirely
+superfluous, but I don't want to muck with it right now.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources entities.ent xalan-jsite.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated Xalan version to 2.3.2 and Xerces to 2.0.1.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan xsltc_usage.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added classpath information pertaining to xercesImpl.jar and xml-apis.jar.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources entities.ent<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added pointer to xml-apis.jar MANIFEST for version information.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan history.xml readme.xml xsltc_history.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updates for next version (release notes to history)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan extensionslib.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added info on Xalan implementation of EXSLT common, math,
+and set extensions, and ongoing work on the function and result
+elements and datetime extensions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan index.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added support for EXSLT extensions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla entries
+	6833
+	7023
+	7123
+	7410
+
+Basic summary of logic error: It is possible for multiple RTF DTMs
+to be pushed onto the stack between the start of a template and
+return from it. I hadn't anticipated that, so my pop logic was
+inadequate.
+
+I'm still not 110% sure I understand the case where this situation
+arises... I have a general intuition that it makes sense, but also a
+suspicion that there might be a way to avoid creating one of these
+DTMs. We should review that someday.
+
+Meanwhile, this fixes a whole batch of related bugs.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref ExpandedNameTable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Performance improvement. Instead of looping through the ExtendedType objects, use a hashtable and go directly to the correct object.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/05/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize Encodings.java Encodings.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 6356: Add support for "windows-1251" and use a properties file to store all the supported encodings. Patch from Sergey Ushakov.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/05/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref ExpandedNameTable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add basic DOM nodetypes to our hashtable of extended type IDs
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/05/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLMessages.java XSLTErrorResources.java XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/xslt Process.java xml-xalan/java/src/org/apache/xml/utils/res XResourceBundle.java XResourceBundleBase.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResourceBundle.java XPATHErrorResources_en.java XPATHErrorResources.java XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use PropertyResourceBundle instead of ListResourceBundle, and put error
+messages into property files, for easier localization.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes WalkerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+In mightBeProximate, there was a bug that assumed a variable would not be
+be a numeric result.  It is now fixed to assume a number may be a number, which
+may cause a small performance penalty.  In the future, it should be possible to
+chase this down a bit more to rule out more variables as non-numbers.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 7157. Updated Javadoc comment to note that the XPath.installFunction() method currently does not
+use the name parameter.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler Compiler.java xml-xalan/java/src/org/apache/xpath/functions FuncLast.java FuncPosition.java Function.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla6284: New function added to position() and last() that will help us determine whether we are executing a top-level expression and therefore, not inside a predicate
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLMessages.java XSLTErrorResources.java xml-xalan/java/src/org/apache/xalan/templates ElemTemplateElement.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add a null constructor for resource files and fix XSLMessages to use the correct error resource file
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/META-INF/services org.apache.xml.dtm.DTMManager xml-xalan/java/src/org/apache/xml/dtm DTMManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add meta file for DTMManager factory and make sure it is read as UTF-8
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/objects XNodeSetForDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+m_last was not being set correctly. See comments.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemVariable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 7118: Variable set via RTF may have
+local variables within it; need to push a new
+context.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemTemplateElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Missing safety net, mostly needed during stylesheet construction.
+
+We really should change TransformerImpl to set parent _before_
+starting to setPropertiesFromAttributes, so the error conditions
+which might cause this test to be needed don't arise. Among other
+things, that would produce more useful diagnostic messages.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/05/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBaseTraversers.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 8894: DescendantForRoot traversers needed to implement their own version of first(int, int) so that their context would be from the root.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/05/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes NodeSequence.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for NullPointerException in SQL extension stuff. Just check for a NULL iterator...
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBaseIterators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 8324. This should have been checked into the main branch.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemTemplateElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Dumb of me -- fixed one edge case and created another, because
+I forgot about subclassing Sigh. This version protects against both.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBase.java DTMDefaultBaseIterators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for new tests Variable71 and Variable72.
+
+When we went to the shared RTF DTMs, we forgot to update
+PreceedingIterator to reflect the fact that the root of a DTM tree
+may no longer have 0 as its internal Node Identifier. This change
+corrects that situation, and does so without imposing a lot of
+computational overhead since we need to scan the ancestors
+anyway.
+
+There appear to be similar hazards in some of the Traversers,
+still to be dealt with. Coming up with testcases which will provoke
+those bugs (and confirm that we've fixed them) is likely to be
+harder than writing the fix itself...
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>2002/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan xsltc_constraints.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+section on problems was way out of date. Also incorporated material from JAXP 1.2 release notes
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>2002/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan xsltc_usage.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+updated command option usuage. Some options have been added.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan xsltc_usage.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated first three sections.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemVariable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 7118 REVERT -- This fix was provoking bug 9195, which
+is more severe.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Obvious mistake, apparently in a corner our regression tests missed.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2RTFDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Root node is not always 0 in an RTFDTM
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/05/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLMessages.java XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/xslt Process.java xml-xalan/java/src/org/apache/xpath/functions FuncPosition.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed hard coded string for timing diagnostics.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Prevent an external DTD from being inlined when using the built-in
+identity transform.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorFuncResult.java ProcessorFunction.java ProcessorOutputElem.java ProcessorResultDocument.java XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLT 2.0: stylesheet function, result-document, and
+principal-result-document.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Xalan3 branch: Check in temporary version of Xerces. This predates
+the most recent changes to Xerces, and supports the older "light
+weight" PSVI APIs. Current Xerces has replaced those with a heavier
+version, but in the process lost the derivedFrom() method which
+we need; when they restore that functionality, we'll cut over.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDatetime.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Core EXSLT dates-and-times functions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemVariable.java XUnresolvedVariable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix bug 7118.  In XUnresolvedVariable, treat the RTF variable much more like
+a template that has to count it's variables at compose-time, and link and unlink
+when the lazy variable is resolved.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql DefaultConnectionPool.java xml-xalan/java/src/org/apache/xalan/processor TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xalan/res XSLMessages.java XSLTErrorResources.java XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/templates RedundentExprEliminator.java xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBaseTraversers.java xml-xalan/java/src/org/apache/xml/utils ListingErrorHandler.java xml-xalan/java/src/org/apache/xml/utils/synthetic JavaUtils.java xml-xalan/java/src/org/apache/xpath VariableStack.java xml-xalan/java/src/org/apache/xpath/functions FuncConcat.java Function.java Function2Args.java Function3Args.java FunctionOneArg.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Integrated some removal of hard-coded error messages.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add resets for m_contextNodeLists, etc.  It might be possible that these are
+redundent with the same thing being done somewhere else, but given
+http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6021 I suspect
+that this really does need to be done here.  It would explain any problems
+that might have been reported after an exception has been thrown, and
+the Transformer is being reused.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemApplyTemplates.java ElemTemplate.java xml-xalan/java/src/org/apache/xalan/transformer StackGuard.java TransformerImpl.java xml-xalan/java/src/org/apache/xml/utils URI.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add back a certain amount of StackGuard functionality.  Instead of checking
+counts where both the node and the xsl:template are the same... (we would
+really need also to check that parameters are the same), just check for recursion
+of templates.  We can make it fancier over time to also check for same params,
+but checking of the current node may be harder.  I was only able to set the
+recursion limit to about 475 before I would get stack overflow errors anyway.
+I also did some stuff where the error messages should be more consistent by
+making sure some of the arrays are reset in XPathContex, which may address
+some of the inconsistency problems that Christina reported.
+may address part of the problem that Christina was having.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/transformer StackGuard.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Moved hard coded strings for StackGuard error message to properties file.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix bug for optionV.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExpressionContext.java ExpressionVisitor.java ExtensionHandlerExsltFunction.java ExtensionNamespacesManager.java ExtensionNamespaceSupport.java ExtensionsTable.java xml-xalan/java/src/org/apache/xalan/processor ProcessorExsltFuncResult.java ProcessorExsltFunction.java StylesheetHandler.java XSLTSchema.java xml-xalan/java/src/org/apache/xalan/templates Constants.java ElemExsltFuncResult.java ElemExsltFunction.java ElemExtensionCall.java ElemExtensionDecl.java StylesheetRoot.java xml-xalan/java/src/org/apache/xalan/transformer TransformerImpl.java xml-xalan/java/src/org/apache/xpath ExtensionsProvider.java XPathContext.java xml-xalan/java/src/org/apache/xpath/functions FuncExtElementAvailable.java FuncExtFunction.java FuncExtFunctionAvailable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updates to Xalan extensions: (1) EXLST function and (2) architectural modifications.
+This is a merge of the ExtensionEnhancements branch into Main.
+
+1. EXSLT function
+We are well underway in our progress towards providing support for EXSLT extension functionss and elements. The EXSLT function and result elements (see http://www.exslt.org/func/func.html) require some fairly substantial additions.
+XSLTSchema includes new XSLTElementDefs for a top-level exslt:function element, which, along with other items, may contain an exslt:result element. These definitions specify a new element class and processor for both of these elements, and a new extension handler. I have tested the implementation with the 6 test cases that EXSLT provides (including recursive calls), and it passes these tests.
+Note: These additions/updates also provide the infrastructure for the XSLT 2.0 stylesheet function.
+2. Architectural changes
+During styesheet composition, Stylesheet Root assembles a vector of ExtensionNamespaceSupport objects. This object contains the information required during a transform to instantiate the required ExtensionHandler. If the stylesheet includes no extensions, this vector is null.  I.e.,  it does not include handlers for the default extension namespaces (of which there are currently 7, and which the Xalan currently loads for each transformation).
+The presence of an extension is detected as follows:
+Compilation of an expression that contains a FuncExtFunction. StylesheetHandler.createXPath()  uses an XPathVisitor to locate any FuncExtFunctions embedded in the expression.
+Final composition of a component element  -- ElemExtensionDecl.compose().
+Final composition of an extension component for which no component exsits -- ElemExtensionCall.compose().
+Final composition of an exslt:function element -- ElemFunction.compose().
+During StylesheetRoot.recompose(), any extension namespaces that are not predefined and for which no component or function element exists, are defined as java class (if a java class is found) or java package. In the current implementation, this last stab is made during the transformation, repeatedly if the element or function cannot be processed and is called more than once.
+At the beginning of each transformation -- transformNode() --  if any extensions exist, TransformerImpl instantiates an ExtensionsTable with a hashtable containing an ExtensionHandler for each of the ExtensionNamespaceSupport objects defined during stylesheet assembly. XPathContext  no longer creates or has any direct knowledge of the ExtensionsTable. The ExtensionsTable does not contain handlers for predefined namespaces that are not being used.
+TransformerImpl implements the org.apache.xpath.ExtensionsProvider interface. The relevant XPath functions (FuncExtFunction, FuncExtElememntAvailable, and FuncExtFunctionAvailable) call this interface, via XPathContext.getOwnerObject(). The implementation contains 3 methods that call through to the ExtensionsTable, which passes the call on to the appropriate ExtensionHandler..
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize Encodings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use ContextClassLoader - Use full Encoding file package name - Merge new patch from Sergey Ushakov
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates FuncDocument.java FuncFormatNumb.java xml-xalan/java/src/org/apache/xpath/functions FuncConcat.java FuncExtFunction.java FuncSubstring.java Function.java Function2Args.java Function3Args.java FunctionDef1Arg.java FunctionMultiArgs.java FunctionOneArg.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch submitted by Henry_Zongaro@us.ibm.com:
+
+To summarize what I did, the Function class and its subclasses have two
+methods that check the number of arguments:  setArg and
+checkNumberArgs.  The former checks whether too many arguments are
+specified, and the latter checks for too few (or too many, redundantly).
+
+In the case where there are optional arguments (as in substring), the class
+for the function (FuncSubstring, in this case) derives from a class that has a
+fixed number of arguments (Func3Arguments, in this case).  If too few
+arguments are specified, the FuncSubstring.checkNumberArgs method
+reports that the function only allows 2 or 3 arguments; if too many arguments
+are specified, the Function3Arguments.setArg method reports that the
+function only allows 3 arguments.
+
+To fix the problem, I added reportWrongNumberArgs() methods to the
+Function class and to its subclasses, as appropriate, and I added code to
+call that from checkNumberArgs and setArg - that way, the correct number
+of arguments is always reported in the error messages.
+
+Alternatively, I could have changed the setArg method in all the classes that
+have optional arguments to report correctly the number of arguments, but I
+didn't like the idea of having it redundantly perform the same check that the
+setArg method of its base class was going to perform just to get a better
+message out.  A third possibility would be to have setArg call the
+checkNumberArgs method when it detects too many arguments are
+specified; that would guarantee that setArg would report the same message,
+and avoid introducing a new method, as long as checkNumberArgs always
+checks for both too few and for too many arguments.  A fourth possibility
+would be to report two different errors:  the minimum number of arguments
+required in checkNumberArgs and the maximum permitted in setArg.
+
+I also noticed that the message produced for FuncSubstring when too few
+arguments are specified actually indicates that 0 or 1 arguments are required,
+ so I fixed the XPATHErrorResources.properties file.
+
+I don't see the NPE that Dave Marston mentions in Bugzilla, so I assume
+that's been fixed.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor StylesheetHandler.java xml-xalan/java/src/org/apache/xalan/templates ElemNumber.java ElemTemplateElement.java xml-xalan/java/src/org/apache/xml/utils PrefixResolver.java PrefixResolverDefault.java xml-xalan/java/src/org/apache/xpath/compiler Lexer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch submitted by Ilene_Seelemann@us.ibm.com for Bug 6798:
+
+Added a method (handlesNullPrefixes) to the PrefixResolver interface so
+that the resolver can indicate whether it supports null prefixes.  Then, in the
+tokenizer, if the prefix is null, and the resolver supports that, it continues
+processing as if the prefix had a value.  In Lexer.java, methods that have
+changed are: tokenize, mapNSTokens.
+
+In ElemNumber#getCountMatchPattern, pass MyPrefixResolver instance to default
+psuedo match patterns.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan history.xml readme.xml xsltc_constraints.xml xsltc_history.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Moved 2.3.2 core and xsltc updates into the history files.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xercesImpl.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+xercesImpl.jar from Xerces-J-bin.2.0.1.zip (for upcoming Xalan-J 2.4.D1)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src MANIFEST.MF<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update xerces.jar to be xercesImpl.jar; this should have been
+done quite a while ago.  Note the Class-Path: entry needs review
+in general at some point.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan builds.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Brief documentation about developer standards and official build processes
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources xalan-jlocal.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add builds.xml; perhaps should also be added to xalan-jsite.xml as well
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemNumber.java xml-xalan/java/src/org/apache/xpath/compiler Lexer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+From Ilene Seelemann:
+Added the following in blue to line 395 of Lexer.java
+
+     if ((-1 != posOfNSSep) ||
+         ((m_namespaceContext != null) &amp;&amp; (m_namespaceContext.handlesNullPrefixes())))
+
+I'm also including ElemNumber.java which really doesn't need to
+explicitly state that it implements PrefixResolver.
+Without these updates everything does run fine.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan readme.xml xsltc_constraints.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+updates for developer's release.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources entities.ent xalan-jsite.xml xml-xalan/java/xdocs/sources/xalan history.xml index.xml readme.xml resources.xml xml-xalan/java KEYS<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patches for developer's release from Sarah McNamara.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated version # for developer's release.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update .jar file sizes for 2.4.D1 release
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan resources.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Remove extraneous slash char on path
+Submitted by: mcnamara@ca.ibm.com
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix Bugzilla #9137; don't toLowerCase() the filename (not really needed anymore);
+remove line for xalan.jar for 2_4_D1 because .jar build size is not determinate
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan extensionslib.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add pointers to info on new EXSLT extensions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionNamespacesManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed Vector.get(int) to Vector.elementAt(int) to maintain
+compability with Java 1.1.8.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltDatetime.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Modified leap-year functions to use arithmetic logic rather than relying
+on a Calendar method that doesn't exist in Java 1.1.8.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes RTFIterator.java xml-xalan/java/src/org/apache/xpath/objects XRTreeFrag.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added RTFIterator (extends OneStepIteratorForward);
+created fromRTFFragment so EXSLT object-type function
+can identify an RTF with certainty.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltCommon.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Removed duplicate implementation of several EXSLT "Set"
+functions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>2002/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin jtidy.LICENSE.txt jtidy.README.txt Tidy.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+adding Jtidy for use with test harness to parse html
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils Hashtree2Node.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Simplistic static utility to convert a Hashtable of items (either
+Hashtables or anything else cast to (String)) into an Element tree
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib Extensions.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update checkEnvironment to attempt to call org.apache.env.Which first
+by using reflection; Which provides better output data than
+EnvironmentCheck.  If reflection doesn't work, then we
+fallback to EnvironmentCheck as before.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan faq.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add doc about calling checkEnvironment as a stylesheet extension
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix for bugzilla 9572, fix by Pavani.Mukthipudi@sun.com
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>2002/06/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update docs.class.path to include XSLTC-dependent jars
+Submitted by:	Henri Gomez hgomez@slib.fr
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/06/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add error resources pulled out from code
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/06/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java XSLTErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add error resources pulled out from code
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/06/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler Compiler.java OpMap.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Pull out hard coded messages
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/06/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/compiler XPathParser.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 5016: Patch from Henry Zongaro... Fix XPATHParser.java to prevent matching empty RelativeLocationPath and Step expressions, prevent a LocationPath from preceding a Predicate in a FilterExpr, check for valid NameTest in NodeTest()
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/06/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix typo.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>2002/06/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan xsltc_constraints.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fix typo in SmartTransormerFactoryImpl pointed out by Tobias McNulty
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/07/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemNumber.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bug6268. Patch from Ilene Seelemann. Fix Grouping separator. If no grouping separator is specified but a gouping size is, number is not formatted. If grouping separator is "", warning is issued and number is not formatted. If grouping separator is more than one character, warning is issued and number is not formatted.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/07/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor StylesheetHandler.java XSLTAttributeDef.java xml-xalan/java/src/org/apache/xml/utils DefaultErrorHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+resource error messages
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/07/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTAttributeDef.java XSLTElementProcessor.java XSLTSchema.java xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/templates AVT.java Constants.java ElemAttribute.java ElemElement.java ElemNumber.java ElemPI.java xml-xalan/java/src/org/apache/xml/utils QName.java StringToIntTable.java xml-xalan/java/src/org/apache/xpath/res XPATHErrorResources.java XPATHErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 5013: Validation of QName attribute values. The patch will also fix the missing validation described in bugs 792 and 793
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/07/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils XMLChar.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bugzilla 5013: Validation of QName attribute values. The patch will also fix the missing validation described in bugs 792 and 793
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>2002/07/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBaseIterators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bugzilla 9575: Fix AncestorIterator counting root node twice. Patch from Henry Zongaro.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/07/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils DOMBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+&lt;Blush&gt;
+
+This was still trying to switch between setAttribute() and
+setAttributeNS(). Correct usage of DOM Level 2 would be to
+always use setAttributeNS(), and simply set a null URI when the
+node is not namespaced. (Basically, the L1 versions of
+createElement, createAttribute, setAttribute and setAttributeNode
+should be considered deprecated with the sole exception of
+manipulating a DOM intended to be viewed *only* as Level 1.)
+
+I could swear we fixed this a VERY long time ago...
+Good catch, thanks for calling it to our attention.
+
+&lt;/Blush&gt;
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Morris Kwan's patch for bugzilla#10306
+
+The problem is that the namespace declaration is not added to the attributes if there are other leading attributes. There is a check for whether the namespace
+ has already been added. That check is commented out because multiple namespace declarations can exist in one element.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates RedundentExprEliminator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applied patch from Morris Kwan for bugzilla #9753.
+
+The bug addresses the problem that there is a build error with Xalan under JDK 1.4, because one of the classes uses assert() as method name.
+ And assert is a keyword in JDK 1.4. The patch just changes the word "assert" to "assertion".
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTSchema.java xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java XSLTErrorResources.properties xml-xalan/java/src/org/apache/xalan/templates ElemPI.java xml-xalan/java/src/org/apache/xml/utils QName.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Remaining updates for Bugzilla#5013.  
+
+Some attributes that should have been handled as errors were getting
+handled as warnings.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemApplyTemplates.java ElemForEach.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Check that recursionLimit is not negative before calling checkForInfinateLoop.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>2002/07/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan xsltc_constraints.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fix typo, java for Java in doc on xsltc and external java functions
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/serialize Encodings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for bug#10839.
+
+Try/catch block needed around System.getProperty call.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLTAttributeDef.java XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying Paul Brown's patch for bug#6972.
+
+xsl:output cdata-section-elements attribute was not handled correctly.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/07/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes SingletonIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+file SingletonIterator.java was initially added on branch XSLTC_DTM.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib ExsltCommon.java ExsltMath.java ExsltSets.java Extensions.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committed patch for bugzilla#10323 (incorrect Javadoc 
+in the extension code.)
+Submitted by Morris Kwan (mkwan@ca.ibm.com)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerJavaClass.java xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committed patch for bugzilla#10914
+( Need better error message for redirect select errors)
+Submitted by Morris Kwan (mkwan@ca.ibm.com)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/07/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils TreeWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #9146
+
+NullPointerException when attempting to build a stylesheet from 
+a DOM Element instead of a Document node.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/07/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patches for Morris Kwan for bug 10519.  Changed condition in absoluteURI method to handle the case where the URI is the root of a file system - e.g., / or c:\
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/07/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor ProcessorInclude.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patches for Morris Kwan for bug 10519.  In parse method, if SystemId of the returned DOMSource object is null, systemID is resolved using href.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>2002/08/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan xsltc_constraints.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+changed verbage to agree with new support of constructors and nonstatic external java functions
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/08/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/objects XRTreeFrag.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for Bug 9683 for Morris Kwan.  If XRTreeFrag is constructed
+without respect to an XPathContext, the object() method should defer to the
+parent class's object() method to convert the fragment to the appropriate
+representation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates ElemValueOf.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #6071.  Specifically, this patch allows line numbers to 
+be reported when errors are discovered at runtime in a value-of attribute.
+(See idkeyerr10.)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/08/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src MANIFEST.MF<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bug#6547. Remove reference to old jar files.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/templates FuncKey.java xml-xalan/java/src/org/apache/xalan/transformer KeyTable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bug: "The key() function throws an exception when called in the context of a 
+local variable." reported on xalan-dev.
+
+Modified FuncKey.execute to use getDocumentRoot instead of getDocument.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/08/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/axes BasicTestIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bug#11123. Fix infinite loop in union expression.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/08/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/extensions ExtensionHandlerJavaClass.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For bug#7776. Fix argument passing problem for Java extension.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/08/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/trace PrintTraceListener.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+See bug#10945. Test if a node is a DTMNodeProxy before casting.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xml/dtm/ref DTMDefaultBaseTraversers.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla#11834.  Replaced calls to DTM.getDocument with get 
+DTM.getDocumentRoot.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>2002/08/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer ClonerToResultTree.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+James Riordan's bug -- Attributes on elements returned from
+extensions were not being processed successfully. Turns out
+our copying logic had a minor sequencing error.
+
+I don't see anything similar listed in Bugzilla.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/bin xml-apis.jar<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replacing xml-apis.jar with the version from the RIVERCOURT1 branch 
+of xml-commons.   The xml-commons-1.0.b2 version does not pass
+the TCK 1.1 or the TCK 1.2.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan builds.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Small updates to the build documentation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating version numbers to 2.4.0 for new release.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java build.xml xml-xalan/java/src/org/apache/xalan/processor XSLProcessorVersion.java xml-xalan/java/xdocs/sources entities.ent xalan-jsite.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updating version numbers to 2.4.0 for new release.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java commits.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New commits.xml for upcoming Xalan 2.4.0 release.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan history.xml xsltc_history.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New history.xml, xsltc_history.xml for upcoming Xalan 2.4.0 release.
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.3.1</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Make synchronized to address potential reentrancy issue in
+ XRTreeFrag.finalize(), as discussed in the Javadoc. This may
+ solve several outstanding bug reports regarding reuse of
+ Transformers and cache suppression in for-each.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Well, _that_ was dumb... Forgot one "don't dereference if null" test.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XRTreeFrag.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Just comment<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>We weren't handling the case where no default-value handling was specified.
+ This didn't generally bother us because XSLT never produces an element
+ declaration as output... but it did affect TransformerIdentityImpl when the
+ source document had an internal subset.
+
+ See xalan-j-users archives, under subject
+ "Differences between explicit and implicit parsing for docs with DTDs?"<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor StylesheetHandler.java
+ java/src/org/apache/xalan/templates ElemVariable.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xml/dtm/ref DTMManagerDefault.java
+ java/src/org/apache/xpath VariableStack.java
+ XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Variable64-66 and a number of variable-related Bugzilla reports: Global
+ variables may have their resolution deferred. This was causing their
+ content to be placed on the normal variable stack, where it could be
+ popped off (arggh) and later overwritten (double arggh). This change
+ gives them an independent storage space which is not subject to
+ those risks.
+
+ While I was at it, I've also made the VariableStack class a trifle more
+ self-documenting by giving some of the fields more meaningful names.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils IntStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 6854: Return the stack exception, as documented.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/12/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 6156 reopened: Same symptom, different disease -- rather than
+ a late finalizer, we simply forgot to reset one field between invocations.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/19/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref TestDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Replace old version, which was specific to particular implentations of
+ DTM, with one which is specific only to DTMManagerDefault and which
+ can be generalized more easily to conduct other tests.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/19/2002<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xml/dtm/ref TestDTMNodes.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>No longer in service.
+
+ This supported the old version of TestDTM. New version has
+ a node-dumper as an internal subroutine. (If we're going to do
+ a display method for other debugging purposes, it should be
+ both applicable to all DTMs and -- probably -- built into the
+ DTM system.)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/20/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref TestDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add Apache header, remove import of discarded TestDTMNode.
+ At some point, we should consider moving this class to the tests
+ directory.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/21/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Properly catch exception from CharInfo constructor, and try again.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/21/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Put extra check for getAbsoluteURI(String urlString, String base) for absolute
+ file paths with no protocol... I think one of the last check-in's wiped this 
+out.
+ So now, if the path is the form of "x:/x" or "/x" then "file:///" is added to 
+it.
+ I don't see how this can screw anything up... but I'm sure it will.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/21/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Merge from redundent expression elemination branch.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/21/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan Version.java
+ java/src/org/apache/xalan/lib/sql DTMDocument.java
+ java/src/org/apache/xalan/processor ProcessorKey.java
+ ProcessorPreserveSpace.java
+ ProcessorStripSpace.java StylesheetHandler.java
+ XSLTAttributeDef.java XSLTElementProcessor.java
+ java/src/org/apache/xalan/templates AVT.java AVTPart.java
+ AVTPartSimple.java AVTPartXPath.java
+ ElemApplyTemplates.java ElemAttribute.java
+ ElemCallTemplate.java ElemChoose.java
+ ElemCopyOf.java ElemElement.java
+ ElemExtensionCall.java ElemForEach.java ElemIf.java
+ ElemLiteralResult.java ElemNumber.java
+ ElemTemplateElement.java ElemValueOf.java
+ ElemVariable.java ElemWhen.java ElemWithParam.java
+ FuncDocument.java FuncKey.java Stylesheet.java
+ WhiteSpaceInfo.java
+ java/src/org/apache/xalan/trace TraceManager.java
+ java/src/org/apache/xalan/transformer KeyIterator.java
+ KeyManager.java KeyRefIterator.java KeyTable.java
+ NodeSorter.java ResultTreeHandler.java
+ TransformerHandlerImpl.java
+ java/src/org/apache/xml/utils NodeVector.java
+ java/src/org/apache/xpath Expression.java VariableStack.java
+ XPath.java
+ java/src/org/apache/xpath/axes AttributeIterator.java
+ AxesWalker.java ChildIterator.java
+ ChildTestIterator.java DescendantIterator.java
+ FilterExprWalker.java IteratorPool.java
+ LocPathIterator.java MatchPatternIterator.java
+ OneStepIterator.java OneStepIteratorForward.java
+ PredicatedNodeTest.java ReverseAxesWalker.java
+ SelfIteratorNoPredicate.java UnionPathIterator.java
+ WalkerFactory.java WalkingIterator.java
+ WalkingIteratorSorted.java
+ java/src/org/apache/xpath/compiler Compiler.java
+ java/src/org/apache/xpath/functions FuncBoolean.java
+ FuncCount.java FuncExtFunction.java Function.java
+ Function2Args.java Function3Args.java
+ FunctionMultiArgs.java FunctionOneArg.java
+ java/src/org/apache/xpath/objects XBoolean.java
+ XNodeSet.java XNodeSetForDOM.java XNumber.java
+ XObject.java XRTreeFrag.java
+ XRTreeFragSelectWrapper.java XString.java
+ XStringForFSB.java
+ java/src/org/apache/xpath/operations Bool.java Equals.java
+ Operation.java UnaryOperation.java Variable.java
+ java/src/org/apache/xpath/patterns FunctionPattern.java
+ NodeTest.java StepPattern.java UnionPattern.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/processor WhitespaceInfoPaths.java
+ java/src/org/apache/xalan/templates AbsPathChecker.java
+ ElemVariablePsuedo.java
+ RedundentExprEliminator.java VarNameCollector.java
+ XSLTVisitable.java XSLTVisitor.java
+ XUnresolvedVariableSimple.java
+ java/src/org/apache/xpath ExpressionNode.java
+ ExpressionOwner.java XPathVisitable.java
+ XPathVisitor.java
+ java/src/org/apache/xpath/axes BasicTestIterator.java
+ FilterExprIterator.java
+ FilterExprIteratorSimple.java
+ HasPositionalPredChecker.java NodeSequence.java
+ PathComponent.java UnionChildIterator.java
+ java/src/org/apache/xpath/operations VariableSafeAbsRef.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/transformer KeyWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Redundent Expression Elimination branch merge.
+
+ Major architectural changes
+ 1) Rip out cacheing in all iterators, and move the caching into XNodeSet 
+(actually NodeSequence where the caching is done derives from XObject and 
+XNodeSet derives from NodeSequence).Lots of other changes went into this, 
+including rewriting of some of the xsl:key stuff.
+
+ 2) Implementation of a Visitor mechanism for the stylesheet and xpath 
+components.Each component for an XPath event is passed an ExpressionOwner, 
+which just has a getExpression and setExpression method, which allows us to 
+create a list of these, and then be able to do rewrites.This should be a 
+generally useful mechanism for all sorts of stuff, and should be considered a 
+public API.
+
+ 3) Implementation of deepEquality methods for all XPath components, which 
+allows us to see if two components are equal.
+
+ 4) Implementation of RedundentExprEliminator, which is a derivative from the 
+new XSLTVisitor class, which runs over the stylesheet collecting xpaths within 
+the same scope, and absolute xpaths that are not context dependent.These are 
+then each reduced by walking the list and checking for deep equality (though 
+global paths are always reduced).Reduction takes place by creating variables 
+that have a special namespace and a non-legal local name.Both full and partial 
+path reduction done.
+
+ Not done yet: Add back in the xsl:key caching that I ripped out (not a big 
+deal).Could be skipped, with some risk.
+
+ Not done yet: Implement isLast function.With the new stuff, the last() 
+function will be slower, so, since most cases are just checking to see if an 
+item is the last, I want to rewrite foo[last()] patterns to 
+foo[xalan:isLast()].Could be skipped, with some risk.
+
+ Davanum performance test result: 4x increase in performance.
+
+ Datapower performance suite results: very slight decrease in overall 
+performance.:-(
+
+ Smoke test results: All clear when run with Xerces 1.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>03/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath DOMHelper.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>The Node identity test in isNodeAfter()
+ (ie., node1 == node2) does not work in some cases,
+ so I added a routine to use DTMNodeProxy equals()
+ if that test fails.
+ This was required to support the new EXSLT
+ leading() and trailing() extension functions.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>03/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions ExtensionsTable.java
+ MethodResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>1. Registered the EXSLT 'common', 'sets', and 'math'
+ namespaces ExtensionsTable.
+
+ 2. To handle extension functions (e.g., some EXSLT
+ functions) that include a dash in their name, added
+ a routine in MethodResolver that maps abc_xyz to
+ abcXyz.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>03/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib package.html<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/lib ExsltCommon.java
+ ExsltMath.java ExsltSets.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Preliminary set of EXSLT extension implementations.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>03/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib ExsltCommon.java
+ ExsltMath.java ExsltSets.java Extensions.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added Apache license.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/23/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemApplyImport.java
+ ElemApplyTemplates.java ElemAttribute.java
+ ElemCallTemplate.java ElemChoose.java
+ ElemComment.java ElemCopy.java ElemCopyOf.java
+ ElemFallback.java ElemForEach.java ElemIf.java
+ ElemMessage.java ElemNumber.java ElemPI.java
+ ElemParam.java ElemTemplate.java
+ ElemTextLiteral.java ElemUse.java ElemValueOf.java
+ ElemVariable.java
+ java/src/org/apache/xalan/trace TraceListenerEx.java
+ TraceManager.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/trace TraceListenerEx2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implemented TraceListenerEx2, which extends TraceListenerEx to add
+ the traceEnd event.
+
+ Modified all existing templates that call fireTraceEvent to also call
+ fireTraceEndEvent at the appropriate time.
+
+ Note that there was a bad incompatibility between xsl:for-each and
+ xsl:if, which was called whether the test was successful or not.
+ With the current logic of xsl:for-each,
+ if the node-set is empty trace will not be called at all.
+ So I've changed xsl:if to match the xsl:for-each behavior.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/24/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Set the DEVELOPMENT number to 1, in prep for a developer's release.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/24/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemForEach.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Make sure the current element is nulled out if debug mode so that
+ TransformerImpl#getElementCallstack works correctly.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/24/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added fire trace events, which seemed to be missing.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/24/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added getElementCallstack() and getTemplateCallstack() methods, for support
+ of xsl debuggers.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/24/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the release number to 4, since new functionality has been added.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemApplyTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix Frank Weiss bug, which has to do with the currentFrameBottom not being
+ restored properly when inside a with-param.
+
+ Fix Cristina bug where the traceEnd event was being passed the wrong template.
+
+ Fix problem with RTF pruning where push/popRTFContext wasn't being called
+ for xsl:apply-templates.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/trace TraceListenerEx2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix JavaDoc comment.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/trace PrintTraceListener.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Handle TraceListenerEx2, even though we don't do anything with the extra 
+methods.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem with the SAXSourceLocator not getting the line number info.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SAXSourceLocator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add a constructor that takes a SourceLocator.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/28/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemTemplateElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added getOwnerXSLTemplate method, a convenience function.
+ Implemented getLocalName().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/28/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor StylesheetHandler.java
+ ProcessorTemplateElem.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Addressing http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6752.
+ Make the processor more robust against multiple failures during compilation.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/28/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XNull.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Change derivation to XNodeSet.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPathProcessorException.java
+ XPathException.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Pass in the parent ExpressionNode, so that more context information can be
+ set. For the moment, I've added methods that are dependent on the
+ XSLT module, to set the source stylesheet node. I'll deal with this more when
+ I deal with the proper breakup and packaging of the XPath package, in a
+ few days.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XObject.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Pass this as ExpressionNode to the XPathException object on error, which
+ helps us to establish context information for the exception object.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XRTreeFrag.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add constructor that lets us set the owning ExpressionNode.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>For getCurrentElement, add some protection for access when there is no
+ current element.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemVariable.java
+ ElemWithParam.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Pass the template to the XRTreeFrag constructor, so we can establish
+ better context.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPathException.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Set the "StylesheetNode" to the ElemTemplateElement instead of the
+ DOM backpointer.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>04/02/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Wrap runtime exception in TransformerException, so we'll get line number info
+ when NPE and the like.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>04/02/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XRTreeFrag.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7622.
+ 1) Transform#1 creates an XRTreeFrag. This has a reference to a DTM, that in 
+turn is registered with a DTMManager. The DTM will need to be deleted from the 
+DTMManager when the XRTreeFrag is deleted. The XRTreeFrag also contains a 
+reference to the XPathContext.
+ 2) Transform#1 completes. The XPathContext is reset... namely the a bunch of 
+structures are reset or rebuilt, including DTMManagerDefault#m_dtms. BUT, the 
+XRTreeFrags are still hanging around, waiting to unregister themselves.
+ 3) Transform#2 starts humming along. It builds a XRTreeFrag and installs 
+that RTF DTM into DTMManagerDefault#m_dtms[2].
+ 4) The finalizer thread wakes and decides to delete some of those old 
+XRTreeFrags from Transform#1.
+ 5) The XRTreeFrag#finalize() method references through the XPathContext, and 
+deletes what it thinks is it's DTM from DTMManagerDefault#m_dtms[2] (via 
+getDTMIdentity(dtm)).
+ 6) Transform#2 tries to reference DTMManagerDefault#m_dtms[2], finds it is 
+null, and chaos results.
+
+ ...so, before calling xctxt.release, etc., check to make sure the DTM is 
+actually
+ entered in the current DTMManager.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>04/04/2002<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/w3c/dom/xpath COPYRIGHT.html
+ XPathEvaluator.java XPathException.java
+ XPathExpression.java XPathNSResolver.java
+ XPathNamespace.java XPathResult.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add Document Object Model (DOM) Level 3 XPath Specification.
+ (Temp until it's added to xml-commons.)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>04/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>On entry, set the document base URI in the DTM. Fixes bug reported
+ by Christine.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/09/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix inconsistancy in handling returned DTM IDs. (There's room for
+ debate about whether the current value -- expressed as the
+ NodeHandle for Node 0 in that DTM -- is the best possible
+ representation, but this is what we're currently using...)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/09/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Clean-up of dumpDTM method, some code clarity changes.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/09/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Yeowch. Didn't mean to check in the XNI experiment.
+ Disabled, probably belongs on a branch. (And probably
+ needs to be rewritten fairly intensively, since the current
+ hook is something of a kluge!)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/09/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>(nitpicking)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>pauldick@apache.org<b>
+<i> on </i>
+</b>04/10/2002<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xml/dtm/ref TestDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Moved into Test directory<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/10/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Cleaner disabling of experimental code. Sorry 'bout that.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/10/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm DTM.java
+ java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMDefaultBaseIterators.java
+ DTMDefaultBaseTraversers.java
+ ExpandedNameTable.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Change extended types to be an integer and use a structure with a localname, 
+a namespace and a nodetype to represent the node extended type. We no longer 
+need to do the shifting left and right that we did for the previous extended 
+types.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/10/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/operations Variable.java
+ java/src/org/apache/xpath/patterns NodeTest.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Change extended types to be an integer and use a structure with a localname, 
+a namespace and a nodetype to represent the node extended type. We no longer 
+need to do the shifting left and right that we did for the previous extended 
+types.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/10/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemApplyTemplates.java
+ ElemForEach.java TemplateList.java
+ VarNameCollector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Change extended types to be an integer and use a structure with a localname, 
+a namespace and a nodetype to represent the node extended type. We no longer 
+need to do the shifting left and right that we did for the previous extended 
+types.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/12/2002<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/dtm XSequence.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Creating a new branch, Xalan3, for experimentation with XPath2 support.
+
+ Currently the changes are limited to org.apache.xml.dtm -- enabling
+ datatype support by tying into Xerces' low-level XNI layer, which
+ includes experimental support for post-schema-validation Infoset
+ (PSVI) information. Eventually we'll be patching other portions of
+ Xalan to actually retrieve and use this data.
+
+ The code I'm now checking in is NOT in final form. Known issues:
+
+ 1) The logic in DTMManager which enables this behavior is
+ something of a kluge -- it only kicks in if you parse incrementally
+ from a StreamSource. The getDTM() method really wants to be
+ rationalized somewhat, which will make adding XNI easier.
+
+ 2) The storage for datatype information currently adds another
+ column to the DTM table. We really want to switch to associating
+ the datatype with the Expanded Type table, and using some form
+ of sparse array to record local overrides.
+
+ 3) The XNI code won't compile without Xerces2. We need to think
+ about whether we want to accept that as a dependency, or use
+ reflection to bind at run time rather than compile time.
+
+ Note that typed values are currently computed on demand, with the
+ DTM storing only the sting values. An argument could be made for
+ precomputing some or all of this information and instead generating
+ strings on demand (see the XPath2 Data Model spec for discussion
+ of that alternative). But that's a considerably larger change, and
+ would affect non-type-based users of XSLT as well since it would
+ present values in their normalized form rather than as entered; I'd
+ rather not go that route until we have a string-based alternative
+ fully functional.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/12/2002<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/dtm/ref/xni2dtm DTM_XSequence.java
+ XNI2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Creating a new branch, Xalan3, for experimentation with XPath2 support.
+
+ Currently the changes are limited to org.apache.xml.dtm -- enabling
+ datatype support by tying into Xerces' low-level XNI layer, which
+ includes experimental support for post-schema-validation Infoset
+ (PSVI) information. Eventually we'll be patching other portions of
+ Xalan to actually retrieve and use this data.
+
+ The code I'm now checking in is NOT in final form. Known issues:
+
+ 1) The logic in DTMManager which enables this behavior is
+ something of a kluge -- it only kicks in if you parse incrementally
+ from a StreamSource. The getDTM() method really wants to be
+ rationalized somewhat, which will make adding XNI easier.
+
+ 2) The storage for datatype information currently adds another
+ column to the DTM table. We really want to switch to associating
+ the datatype with the Expanded Type table, and using some form
+ of sparse array to record local overrides.
+
+ 3) The XNI code won't compile without Xerces2. We need to think
+ about whether we want to accept that as a dependency, or use
+ reflection to bind at run time rather than compile time.
+
+ Note that typed values are currently computed on demand, with the
+ DTM storing only the sting values. An argument could be made for
+ precomputing some or all of this information and instead generating
+ strings on demand (see the XPath2 Data Model spec for discussion
+ of that alternative). But that's a considerably larger change, and
+ would affect non-type-based users of XSLT as well since it would
+ present values in their normalized form rather than as entered; I'd
+ rather not go that route until we have a string-based alternative
+ fully functional.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/12/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm Tag: Xalan3 DTM.java
+ java/src/org/apache/xml/dtm/ref Tag: Xalan3
+ DTMDefaultBase.java DTMDocumentImpl.java
+ DTMManagerDefault.java
+ IncrementalSAXSource_Xerces.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm Tag: Xalan3
+ SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Creating a new branch, Xalan3, for experimentation with XPath2 support.
+
+ Currently the changes are limited to org.apache.xml.dtm -- enabling
+ datatype support by tying into Xerces' low-level XNI layer, which
+ includes experimental support for post-schema-validation Infoset
+ (PSVI) information. Eventually we'll be patching other portions of
+ Xalan to actually retrieve and use this data.
+
+ The code I'm now checking in is NOT in final form. Known issues:
+
+ 1) The logic in DTMManager which enables this behavior is
+ something of a kluge -- it only kicks in if you parse incrementally
+ from a StreamSource. The getDTM() method really wants to be
+ rationalized somewhat, which will make adding XNI easier.
+
+ 2) The storage for datatype information currently adds another
+ column to the DTM table. We really want to switch to associating
+ the datatype with the Expanded Type table, and using some form
+ of sparse array to record local overrides.
+
+ 3) The XNI code won't compile without Xerces2. We need to think
+ about whether we want to accept that as a dependency, or use
+ reflection to bind at run time rather than compile time.
+
+ Note that typed values are currently computed on demand, with the
+ DTM storing only the sting values. An argument could be made for
+ precomputing some or all of this information and instead generating
+ strings on demand (see the XPath2 Data Model spec for discussion
+ of that alternative). But that's a considerably larger change, and
+ would affect non-type-based users of XSLT as well since it would
+ present values in their normalized form rather than as entered; I'd
+ rather not go that route until we have a string-based alternative
+ fully functional.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/12/2002<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xml/dtm XSequence.java
+ java/src/org/apache/xml/dtm/ref/xni2dtm DTM_XSequence.java
+ XNI2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>These should only be on the Xalan3 branch, not the main branch.
+ I _hope_ I can split this successfully...<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/12/2002<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/dtm Tag: Xalan3 XSequence.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>These should only be on the Xalan3 branch, not the main branch.
+ I _hope_ I can split this successfully...<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/12/2002<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/dtm/ref/xni2dtm Tag: Xalan3
+ DTM_XSequence.java XNI2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>These should only be on the Xalan3 branch, not the main branch.
+ I _hope_ I can split this successfully...<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/15/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc Tag:
+ jaxp-ri-1_2_0-fcs-branch DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>New implementation of xsl:element<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Improve recovery if user's error handler insists on trying to
+ continue past a fatal error in the XPath syntax. Ideally, this
+ mechanism should be cleaned up and applied across the
+ entire XPath grammar. But for now, I'm addressing the one
+ specific complaint in a way that can be expanded later, and
+ doing so in a way that minimizes costs.
+
+ (In fact, one can argue that since this is a rare event, we
+ shouldn't be minimizing the cost quite so much, and should
+ be throwing new exception objects rather than reusing a
+ preconstructed one.)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Decided I _was_ overoptimizing.
+
+ Saving memory in tne non-error case trumps saving it in the error case.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates Tag: XSLTC_DTM
+ ElemApplyTemplates.java
+ java/src/org/apache/xalan/xsltc Tag: XSLTC_DTM DOM.java
+ DOMCache.java NodeIterator.java Translet.java
+ java/src/org/apache/xalan/xsltc/cmdline Tag: XSLTC_DTM
+ Transform.java
+ java/src/org/apache/xalan/xsltc/compiler Tag: XSLTC_DTM
+ AbsolutePathPattern.java AncestorPattern.java
+ Constants.java CopyOf.java DocumentCall.java
+ ForEach.java IdKeyPattern.java Import.java Key.java
+ KeyCall.java LastCall.java Mode.java NameBase.java
+ NodeTest.java ParentLocationPath.java Parser.java
+ ProcessingInstructionPattern.java Step.java
+ StepPattern.java Stylesheet.java
+ SyntaxTreeNode.java UnionPathExpr.java XSLTC.java
+ java/src/org/apache/xalan/xsltc/compiler/util Tag: XSLTC_DTM
+ MethodGenerator.java NodeSetType.java
+ ResultTreeType.java
+ java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
+ AbsoluteIterator.java AnyNodeCounter.java Axis.java
+ BitArray.java CurrentNodeListFilter.java
+ CurrentNodeListIterator.java DOMAdapter.java
+ DOMImpl.java DTDMonitor.java DocumentCache.java
+ DupFilterIterator.java FilterIterator.java
+ FilteredStepIterator.java KeyIndex.java
+ LoadDocument.java MatchingIterator.java
+ MultiDOM.java MultipleNodeCounter.java
+ NodeCounter.java NthIterator.java
+ ReverseIterator.java SingleNodeCounter.java
+ SingletonIterator.java SortingIterator.java
+ StepIterator.java UnionIterator.java
+ java/src/org/apache/xalan/xsltc/runtime Tag: XSLTC_DTM
+ AbstractTranslet.java BasisLibrary.java
+ Constants.java DefaultRun.java SAXAdapter.java
+ java/src/org/apache/xalan/xsltc/trax Tag: XSLTC_DTM
+ TransformerHandlerImpl.java TransformerImpl.java
+ XSLTCSource.java
+ java/src/org/apache/xml/dtm Tag: XSLTC_DTM DTM.java
+ DTMAxisIterator.java DTMManager.java
+ java/src/org/apache/xml/dtm/ref Tag: XSLTC_DTM
+ DTMAxisIteratorBase.java DTMDefaultBase.java
+ DTMDefaultBaseIterators.java DTMNamedNodeMap.java
+ DTMNodeList.java DTMNodeProxy.java
+ ExpandedNameTable.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm Tag: XSLTC_DTM
+ DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm Tag: XSLTC_DTM
+ SAX2DTM.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
+ SAXImpl.java XSLTCDTMManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Checking in a branch of xalan where XSLTC is using the DTM interface. This 
+branch is very unstable, please do not use yet!!!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm Tag: XSLTC_DTM
+ DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Make getNumberOfNodes() public<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/18/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref Tag: Xalan3
+ DTMManagerDefault.java
+ IncrementalSAXSource_Xerces.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>XNI support now always used if available, with SAX as fallback.
+
+ Issues: DTMDefaultManager is still a bit more aware of Xerces2
+ than I want it to be. And the kluge of creating an Incremental Xerces
+ source and then running it non-incrementally, while producing
+ straightforward code, is a slightly ugly mixed metaphor.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/18/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref Tag: Xalan3
+ DTMManagerDefault.java
+ java/src/org/apache/xml/dtm/ref/xni2dtm Tag: Xalan3
+ XNI2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor polishing, disabling debugging dump.
+
+ We currently pass most of Smoketest with the new XNI code enabled.
+ Some suspicious stuff in the API tests; my attempts to disentangle
+ the XNI and SAX support may not have been 100% succesful.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/18/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
+ SAXImpl.java
+ java/src/org/apache/xml/dtm/ref Tag: XSLTC_DTM
+ DTMDefaultBaseIterators.java
+ java/src/org/apache/xpath/compiler Tag: XSLTC_DTM
+ XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Misc fixes<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 4546 -- thanks to Wolfram Eisert for tracking this down and
+ proposing the patch.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref Tag: Xalan3
+ DTMManagerDefault.java
+ IncrementalSAXSource_Xerces.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Easy enable/disable of XNI support for testing purposes,
+ and some error-reporting cleanup. We still fail a few API tests
+ in XNI mode, mostly related to error handling.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm Tag: Xalan3 DTM.java
+ java/src/org/apache/xml/dtm/ref Tag: Xalan3
+ DTMDefaultBase.java DTMDefaultBaseIterators.java
+ DTMDefaultBaseTraversers.java
+ ExpandedNameTable.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm Tag: Xalan3
+ DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm Tag: Xalan3
+ SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Merge ExtendedType changes from main branch<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>05/02/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref Tag: Xalan3
+ ExpandedNameTable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Oops. Typo.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>05/02/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref Tag: Xalan3
+ ExpandedNameTable.java
+ IncrementalSAXSource_Xerces.java
+ java/src/org/apache/xml/dtm/ref/xni2dtm Tag: Xalan3
+ XNI2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Make sure current version checked in before I start experimenting with 
+alternatives.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>05/02/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/xni2dtm Tag: Xalan3
+ XNI2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>It helps if we actually remember to store the schema info...<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>05/03/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref Tag: Xalan3
+ ExpandedNameTable.java
+ java/src/org/apache/xml/dtm/ref/xni2dtm Tag: Xalan3
+ XNI2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Xalan3 PSVI changes: Lighter-weight storage for PSVI datatype. Schema
+ type first seen is now stored as part of the ExpandedName. In many cases
+ all instances of the same node have the same type and this should suffice.
+ In some cases tthe actual type may be locally overridden (schema
+ derived types), and XNI2DTM will record an exception into a simple
+ "sparse vector".
+
+ Storage improved. DTM construction speed improved. Schema type
+ retrieval speed adversely impacted but -- one hopes -- not significantly.
+
+ Of course right now Xerces' schema-validator burns so many cycles
+ that our own efficiency or lack thereof is completely moot... but we
+ assume they'll be improving that over time.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>05/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Remove the duplicated ;;
+
+ ( which broke the JDK1.4 compilation which in turn broke all the gump
+ deps ).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>05/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes PredicatedNodeTest.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 7159 -- Just an access-permission change, for improved
+ toolability.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>05/09/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToText.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 8358 -- bad method signature. I've created a new method
+ with the correct signature. The old one may or may not be entirely
+ superfluous, but I don't want to muck with it right now.<br />
+<br />
+</li>
+</ul>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.3 and 2.3.1</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>01/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed second connection problem<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>01/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update for new DTM Model<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>01/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql DTMDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update for new DTM Model<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>01/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java
+ DTMDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed Debug<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>01/18/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Whups. There's a possible reentrancy problem when data
+ is being serialized from an FSB, thru Sax, back into a new
+ chunk of the same FSB; if the append causes a rechunking,
+ the serialize loop may break.
+
+ TEMPORARY PATCH; permanant fix to follow. See comments.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>01/18/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SuballocatedIntVector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>&lt;blush&gt;Wrong side of the fencepost...&lt;/blush&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>01/23/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemTemplate.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xml/dtm DTMManager.java
+ java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMManagerDefault.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java
+ java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2RTFDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>These changes allow us to store multiple Result Tree Fragment (RTF)
+ document trees (used when an XSLT variable contains a constructed
+ set of nodes) into a single DTM object rather than using a new DTM
+ for each RTF. They also permit "tail-pruning" this shared DTM to
+ reuse that space as the variables go out of scope.
+
+ The result is a slight performance improvement, and a much more
+ significant improvement in storage efficiency. Stylesheets which
+ use RTFs heavily should now run in much less memory; in
+ one testcase, our "working set" heap size (storage actually in
+ use, not counting objects released but not yet GC'd) dropped
+ from 12-15MB down to 3-6MB, and heap churn (how quickly
+ storage was being allocated and discarded) also reduced
+ substantially.
+
+ The code changes needed to support this new scheme are
+ surprisingly small. And I believe it may be possible to reduce them
+ further, if we're willing to merge the SAX2RTFDTM subclass back
+ into its SAX2DTM superclass. I believe that could be done with
+ very little adverse impact on other uses of SAX2DTM... but I felt it
+ was safer to defer that decision for now.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>01/25/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 5982 and 6022. The variable stack was not being cleared accross 
+transforms so that when the transformer is reused, we were using nodesets from 
+the previous transform which were using a different DTM. Note that we want keep 
+any variables that have been set externally by the user (using 
+Transformer.setParameter()).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>01/28/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/res XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 4762: Fixed the duplicate error message in XPATH.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>01/28/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4054: Retain previously set output properties when adding new ones.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>01/28/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 5872. We were using a constructor of TranformerException without the 
+locator information. Changed to code to use a locator if info is available.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>01/30/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib NodeInfo.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed "system id" to "public identifier" in javadoc
+ comments for publicId() methods.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>01/30/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 2617, part 1: Construct the data structures and access them 
+correctly.
+ Ignore too-late-to-be-safe requests to enable this feature.
+
+ This doesn't resolve how to rewrite higher-level code so it makes the
+ request early enough to be useful.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>01/30/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates StylesheetComposed.java
+ StylesheetRoot.java TemplateList.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 4987: Changed Apply-imports logic to only apply imports to stylesheets 
+that are direct imports. The logic for includes has not changed, we will 
+apply-imports to any stylesheet that is imported as a result of an inclusion. 
+Note: had to change the order when includes and imports are recomposed!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>01/31/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib NodeInfo.java
+ java/src/org/apache/xalan/processor
+ TransformerFactoryImpl.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xalan/xslt Process.java
+ java/src/org/apache/xml/dtm/ref DTMManagerDefault.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java
+ SAX2RTFDTM.java
+ java/src/org/apache/xml/utils DefaultErrorHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 2617: Recreated missing code, changed controls to ensure
+ that this mode gets set early enough to be useful and can't be broken
+ by being turned on and off during execution.
+
+ NOTE: Current implementation relies on a global static flag in
+ TransformerFactoryImpl. We need to rearchitect our APIs slightly
+ so configuration hints of this kind can be passed down from top-level
+ objects to the back-end code more elegantly. Revisit in future
+ releases.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>01/31/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemApplyTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 5505: Need to resolve params before we do anything else, so move code 
+that does that above the code that sets up the different node stacks.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 6182. Darned fence posts; always either too many or not enough... 
+&lt;grin/&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xpath VariableStack.java
+ XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 6156: Change variable stack reset to just get a new object. Also make 
+sure that the stack of result tree fragments is also cleaned ot during a reset.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XBoolean.java
+ XNodeSet.java XNumber.java XObject.java
+ XRTreeFrag.java XString.java
+ java/src/org/apache/xpath/operations Equals.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 5851: Make sure that the equal operation is evaluated by order of 
+precedence of the operands, as defined by XSLT.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 5346: Prevent mantissa overflow when converting string to double.
+ There is still a possible edge-case, since I detect overflow on decimal digit
+ bounds rather than on bit bounds; I'm not sure what the IEEE spec calls for.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 5346: My first-cut messed up fractional values. This one is
+ somewhat better.
+
+ There's an open issue w/r/t numbers with many digits after the
+ decimal point, regarding limits on how large a power of 10 can
+ be contained in a long. In that one case I'm falling back on successive
+ divisions (though as few as possible), and some loss of precision
+ may result.
+
+ Need to find a better algorithm...<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 5346: Oops. Forgot to take out a debugging printout.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 5346: Responding to the re-open; more direct and reliable
+ edge-case test. This does lose a few low bits on many-digit values,
+ so it is not the best long-term solution.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 5346: One more (last, I hope) edge case.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 5346: Gaaah. This regressions was just plain foolish flailing. "Less 
+haste, more speed."<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize CharInfo.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 5857: Reusing objects that reuse objects has threading concerns.
+ Three possible solutions: Don't reuse, synchronize reuse, or rewrite
+ to avoid using the objects in the first place. See comments in code.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java
+ IncrementalSAXSource.java
+ IncrementalSAXSource_Filter.java
+ IncrementalSAXSource_Xerces.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 4244: Incremental wasn't setting up correctly for the
+ DTDHandler stream. It never occurred to me that XSLT would
+ ever have a use for unparsed entities...<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>02/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan Version.java
+ java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Whoops! Never updated release number to 2.3 in these version files!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>02/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated version number to 2.3<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/07/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath SourceTreeManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 6304: Remove print stacktrace<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/08/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions
+ XSLProcessorContext.java
+ java/src/org/apache/xalan/lib/sql DTMDocument.java
+ java/src/org/apache/xalan/templates ElemForEach.java
+ FuncDocument.java FuncKey.java
+ java/src/org/apache/xalan/transformer KeyIterator.java
+ TransformerHandlerImpl.java TransformerImpl.java
+ java/src/org/apache/xml/dtm DTM.java
+ java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMDefaultBaseIterators.java DTMDocumentImpl.java
+ DTMNodeProxy.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2RTFDTM.java
+ java/src/org/apache/xpath/axes IteratorPool.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 6314: Additional support changes for multiple RTFs per DTM.
+ Many files affected, but the basic change is that dtm.getDocument()
+ with no arguments is meaningless when there are multiple docs in
+ a single DTM object; instead, folks should use the new getRootNode()
+ method or getOwnerDocument(), both of which take a node as input
+ and thus more clearly identify which document we're referring to.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>02/12/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 6328, whitespace normalization. Late fix, but it was a genuine 
+regresion.
+ This code could still do with a rationalization pass; I think it can be made 
+slightly
+ a touch faster.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>02/14/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update various .jar sizes for recent builds and 2.3.0<br />
+<br />
+</li>
+</ul>
+   
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2</h3>
+<p>Following a series of Developer releases, Xalan-Java 2.2 represents a stable, production-quality release with 
+the <a href="dtm.html">DTM (Document Table Model)</a>. Xalan-Java uses the DTM to represent the XML source document 
+to be transformed. Please send your feedback to the <a href="mailto:dev@xalan.apache.org">Xalan Development Mailing List</a>.</p>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>11/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated version number to 2.2.D14<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>11/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated version number to 2.2.D14<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBaseIterators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 5242: Special-case initializing iteration from Document node -- 
+one-liner wasn't safe.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/04/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc ProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new class to version xsltc software<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Additional debugging printouts, added while analysing Bugzilla 5272 but 
+generally useful.
+ No functional change, and should be optimized away when DEBUG is set false.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed the "magic" default which causes us to switch into incremental
+ processing mode whenever we were writing to Standard Output (ie,
+ -OUT had not been specified). If you want incremental processing,
+ please use the (relatively new) -INCREMENTAL switch to explicitly
+ request it.
+
+ (The automatic switchover was causing some confusion
+ when testing against Xerces2. )<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Efficiency improvement to the new DTM "overflow addressing" scheme.
+ In some tests, this one alteration shaved about 30% off the runtime.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath CachedXPathAPI.java
+ XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changes requested by the xml-security group:
+
+ 1) Provide something a constructor that allows sharing the
+ XPathContext object between CachedXPathAPI objects
+
+ 2) Add getXPathContext(). I'm just a bit nervious about this
+ method, but they assure us they need it and the field isn't
+ private. We may need to discus this one further.
+
+ 3) Make the XPathContext's m_dtmManager member
+ protected rather than private, so their subclass can get to it.
+ We may want to work with them to understand why they're
+ accessing this directly and whether there's a better solution.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref
+ IncrementalSAXSource_Xerces.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla5272 patch suggested by Sandy Gao.
+
+ This startup sequence for incremental SAX parsing under Xerces2
+ really is excessively complicated and excessively fragile as a result.
+ Not to mention being underdocumented. We really need to push the
+ Xerces folks to provide a simple incremental SAX API, similar to that
+ in the Xerces1incremental prototype.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Part 1 of 2: Reducing initial space requirements of a DTM. This may
+ involve a slight performance hit, but should help stylesheets which
+ generate a lot of Result Tree Fragment. Part 2 of this change will be
+ checked in after I resolve a bug in whitespace normalization.
+
+ Note that a better long-term answer will be to reduce the number of
+ DTMs tied up as RTFs, by doing a better job of discarding or reusing
+ them when we're done with them. There are some issues regarding
+ exactly what their lifetimes will be when assigned to variables,
+ especially when one variable is used to build another, which we
+ need to address before we can make that change.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Part 2a of 2: Reducing initial space requirements of a DTM. This may
+ involve a slight performance hit in some circumstances due to
+ smaller and more complex subdivision of FastStringBuffers,, but
+ should help stylesheets which generate a lot of Result Tree
+ Fragments.
+
+ Note that a better long-term answer will be to reduce the number of
+ DTMs tied up as RTFs<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Part 2b of 2: Reducing initial space requirements of a DTM. This may
+ involve a slight performance hit in some circumstances due to
+ smaller and more complex subdivision of FastStringBuffers,, but
+ should help stylesheets which generate a lot of Result Tree
+ Fragments.
+
+ (Leveraging FSB's features more strongly exposed a bug in
+ whitespace normalization, which I've fixed.)
+
+ Note that a better long-term answer will be to reduce the number of
+ DTMs tied up as RTFs<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils AttList.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Two goofs: Forgetting to use the namespace-aware DOM call, and
+ forgetting to check for a returned null before dereferencing.
+
+ How long has _that_ been lurking in the undergrowth?!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SuballocatedIntVector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Finally following up on an old hunch, I switched from /% addressing
+ to shift-and-mask. Big improvement!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Performance improvements; Some changes to better leverage the
+ DOM's existing code, others to avoid some call-and-return overhead.
+
+ Combined with other recent changes, we've now got a significant
+ speedup over D14 on some tests. We may want to drop the scheduled
+ December 17th 2.2 release and instead bring 2.2 out on 1/14 (which is
+ when we'd planned 2.3) with performance gains and Xerces2 support.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ DOM2DTMdefaultNamespaceDeclarationNode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A few more subtle performance tweaks, and an actual bug.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>12/20/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/utils ListingErrorHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Alternate ErrorHandler/ErrorListener implementation that allows
+ configuration and prints errors out similarly to javac<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>12/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils AttList.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 5496; previously unimplemented functions.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>01/03/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils DOMBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>[Bug 5528] DOMBuilder mixed DOM Level 1 and 2<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>01/11/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated release number to 2.2.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>01/11/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated release number to 2.2.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>01/13/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix Bugzilla#5701: incorrect resolution of certain kinds of absolute file: 
+URIs
+ Note: This definitely seems to be more correct in terms of resolving URIs
+ vis-a-vis RFC 2396 than it used to be. The only user case which might now
+ fail where it used to work is a user that supplies an incorrect
+ 'file:subdir/blah' that they intended to be a relative URI (technically
+ it is an absolute URI no matter which way you look at it); this might
+ lead to a change in behavior in this particular case, although the behavior
+ before was incorrect.
+ The major risk factor could be if there are other parts of Xalan code that 
+rely
+ on the previously incorrect behavior, but I can't find any, and the whole test
+ suite runs and passes normally.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>01/14/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix Bugzilla#4678 and Bugzilla#5533: call setSystemId on StreamResult
+ in Process command line class; ignored if using System.out
+ This should enable the redirect extension to properly put it's redirected
+ output in a location relative to the output if possible; previously it
+ always put redirected output relative to the input since it
+ never had the systemId of where the output should be<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code (now deprecated).</td>
+</tr>
+</table>
+   
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D14</h3>
+<p>Xalan-Java 2.2.D14 is intended to be the final release in the current series of Developer releases incorporating
+     the <a href="dtm.html">DTM</a>. We believe Xalan with the DTM has reached a level of stability that warrants a                                                          
+     standard "User" release. Accordingly, we plan to release Xalan-Java 2.2 soon.</p>
+     <p>Xalan-Java 2.2.D14 also includes a new <a href="apidocs/org/apache/xpath/CachedXPathAPI.html">CachedXPathAPI</a> class that
+     provides an enhanced alternative to the XPath convenience methods in <a href="apidocs/org/apache/xpath/XPathAPI.html">XPathAPI</a>.</p>
+     <p>Beginning with 2.2.D12, xalan.jar contains just the Xalan-Java implementation. The source files for the SAX level 2, DOM 2, 
+     and JAXP 1.1 interfaces are pulled from the xml-commons repository (<a href="http://svn.apache.org/viewvc/xml/commons/trunk/java/external/src/">xml-commons/java/external/src</a>), and are built as
+     xml-apis.jar. These interfaces are shared by a number of tools, so placing them in their own jar simplifies coordination and reduces 
+     the risk of duplication. <b>To run Xalan-Java, you must add xml-apis.jar to your classpath.</b> See <a href="getstarted.html#classpath">Setting up the system class path</a>.</p>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Reorder slightly and add test to not synthesize xmlns:xsl declaration
+ if one was already present on the DOM's root element.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan Version.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>D13 internal version number update<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>D13 internal version number update<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMNodeList.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla4842, secondary complaint (glitch in getChildren)... &lt;blush/&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla4842: Expand the proxy layer to support more of the DOM API.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Namespace decls are themselves not namespace-aware, in the
+ Namespaces 1.0 REC. Use the qname.Grumble.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>"Tupograflica eror". Sorry 'bout that!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Sigh. The XML Namespaces spec it itself imperfectly
+ namespace-aware. While there's a plan to fix that, it's
+ safer for now if we test the QName when looking for
+ explicit instances of xmlns:xml in the source document.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql DTMDocument.java
+ java/src/org/apache/xalan/templates ElemApplyTemplates.java
+ java/src/org/apache/xalan/xslt Process.java
+ java/src/org/apache/xml/dtm DTMManager.java
+ java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMDefaultBaseIterators.java
+ DTMDefaultBaseTraversers.java
+ DTMManagerDefault.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Another fairly large change in the DTM architexture (sic)....
+
+ We've changed DTM's internal behavior so it can now assign
+ more than one "DTM ID" to a single document, cascading from
+ one ID to the next. This means that the size of a single DTM is
+ no longer limited by the bits available in the low part of the DTM
+ Node Handle. This means we can support larger documents.
+
+ That has allowed us to reduce the number of bits reserved
+ for that portion of the node addresing scheme... which in turn has
+ increased the number of bits available for use in the DTM ID. This
+ means we can now have many more documents active at once.
+
+ The trade-off is that huge documents will require more than one
+ DTM ID and thus cut into the number of documents, But since we
+ now have 16 bits of DTM ID space, I don't think we're really likely
+ to run into both limits at once. And the changes are essentially
+ limited to the DTM layer; the rest of Xalan should be unaffected.
+
+ In the process of making this change, I've also encapsulated the
+ conversions between DTM API node handles and DTMDefaultBase's
+ internal node indices. That should be safer all 'round.
+
+ NOTE: One side effect of this change is that the strings
+ generated by the key() function have changed again.
+ I've updated the IDKEY testcases to reflect this.
+
+ Smoketest is currently passing everything except
+ axes109 and the API's TraceListenerTest . But I believe
+ those failures are due to a glitch in my test directory
+ since they also happen when I run the D13 code there,
+ whereas D13 runs fine in the directory where I built it.
+ I'm going to assume that "same result is no new bug"
+ for now.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref
+ DTMDefaultBaseTraversers.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Found the glitch causing the axes108 bug -- exptype/type.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added option to set the recursion limit (which we're having trouble with
+ right now; the code that supported it seems to be disabled...) and
+ selfdoc for this and a few other newer options.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>11/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Catch exceptions from the output content handler in flush(), and throw a
+ SAXParseException with line numbers filled in.
+ If we don't do this, and the exception is a RuntimeException,
+ good line numbers of where the exception occured in the stylesheet
+ won't get reported. I tried just catching RuntimeException, but
+ for whatever reason it didn't seem to catch.
+ Fix for Christina's DOMException error problem.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm
+ DOM2DTMdefaultNamespaceDeclarationNode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Moved default namespace declaration node object out of its "inner
+ class" status, since I think I want to perform an instanceof test on it.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMManagerDefault.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xpath XPathAPI.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xpath CachedXPathAPI.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4336 -- fix for presenting symptom (since the implicit
+ xml: declaration pseudo-DOM node is resynthesized in each
+ DTM, find the _corresponding_ node), and a first draft of
+ CachedXPathAPI which should be a fix for the larger symptom
+ (XPathAPI creates a new DTM every time, which is potentially
+ very ugly for applications that want to run XPaths repeatedly
+ on a single document).
+
+ Also caught and fixed another node-handle/node-identity confusion.
+ The fact that DTM.get...() allowed us to be sloppy about that
+ distinction in the past means there may still be a few others lurking
+ in the code. Ye gods, I _wish_ Java had typedef!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor tweaks<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib Redirect.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Patch to enable optional 'append' attribute on redirect:open and
+ redirect:write elements to append to file; note that behavior may
+ not be what you expect when using xml output, since the xml decl
+ will currently be output *each* time you newly write to the file
+ Submitted by: jpvdm@iafrica.com<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implement getDocumentElement. If the DTM doesn't represent a
+ wellformed Document, this call is undefined and throws an exception...
+ which isn't DOMlike but that's a non-DOMlike situation.<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code (now deprecated).</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D12 and 2.2.D13</h3>
+<p>Xalan-Java 2.2.D13 is intended to be the final release in the current series of Developer releases incorporating
+     the <a href="dtm.html">DTM</a>. We believe Xalan with the DTM has reached a level of stability that warrants a                                                          
+     standard "User" release. Accordingly, we plan to release Xalan-Java 2.2 soon.</p>
+     <p>Beginning with this release, xalan.jar contains just the Xalan-Java implementation. The source files for the SAX level 2, DOM 2, 
+     and JAXP 1.1 interfaces are pulled from the xml-commons repository (<a href="http://svn.apache.org/viewvc/xml/commons/trunk/java/external/src/">xml-commons/java/external/src</a>), and are built as
+     xml-apis.jar. These interfaces are shared by a number of tools, so placing them in their own jar simplifies coordination and reduces 
+     the risk of duplication. <b>To run Xalan-Java, you must add xml-apis.jar to your classpath.</b> See <a href="getstarted.html#classpath">Setting up the system class path</a>.</p>
+     <p>Beginning with this release, we are shipping two distribution files; a binary
+     distribution file, which includes everything needed to run Xalan-Java and build applications, and a source distribution. For
+     more information, see <a href="downloads.html">Downloading what you need</a>.</p>
+     <p>This release also includes <a href="samples.html#validatexmlinput">ValidateXMLInput</a>, a sample that illustrates 
+     how you can verify that the XML input you are transforming adheres to its document type. It is in the samples/validate subdirectory
+     along with a Validate utility that you can use to validate XML files without performing a transformation.</p>     
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath VariableStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla3995: Removed "final" keywords. That doesn't by itself
+ provide the requested enhancement, but it makes prototyping one
+ a bit easier.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 3384. See comments in the toDouble method; I suspect this may be 
+wasted micro-optimization.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Is " 12 34 . 56 78 " really considered acceptable?
+ Or should whitespace within the value be treated as NAN?<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated build number to 2.2.D12.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated build number to 2.2.D12.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemLiteralResult.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for Bugzilla1133, LRE21: xsl:extension-element-prefixes should be 
+considered an exclusion<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemLiteralResult.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for Bugzilla 3464. Exposes errors in conformance tests namespace93 and 94.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize CharInfo.java
+ HTMLEntities.res XMLEntities.res<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix Bugzilla#4000, force reading of *Entites.res to be in UTF-8; added 
+comments
+ PR: Bugzilla#4000<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Avoid overgenerality of isDigits
+ Combine most character tests into a single switch for performance
+ Reject values with embedded (as opposed to leading/trailing) whitespace.
+
+ Note that this is "more correct:" than the old solution of calling Java's
+ toDouble, since (I think) XSLT doesn't officially accept leading + or
+ scientific notation. If folks want to accept those notations, an
+ extension function specifically for that purpose seems the
+ simplest/safest/most-portable solution.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Gaaah. Typo.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java
+ java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan Version.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added new org.apache.xalan.Version class for better versioning info;
+ Deprecated org.apache.xalan.processor.XSLProcessorVersion;
+ Updated EnvironmentCheck with this info<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan Version.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Be careful with parentheses when using ?: operator.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java
+ IncrementalSAXSource_Xerces.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xml/dtm/ref CoroutineSAXParser.java
+ CoroutineSAXParser_Xerces.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>CoroutineParser API was replaced by IncrementalSAXSource; dropping obsolete 
+code.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xml/dtm/ref CoroutineSAXFilterTest.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>CoroutineParser API was replaced by IncrementalSAXSource; dropping obsolete 
+code.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan Version.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Whups; sloppy: Actually, problem was that the latter two arguments to ?:
+ must agree in datatype. Dropped in a quick-and-dirty int-to-string hint.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Preliminary Xerces-2 support. Doesn't leverage Xerces-2 incremental features
+ yet, but should at least compile and run under the new parser without
+ breaking support for the old one. Still working on improving this.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemApplyTemplates.java
+ ElemCallTemplate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4218: Make sure that the stack frame gets restored to the frame that 
+was previously set. Just calling unlink() may restore to the wrong frame, and 
+get us out of synch.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/xml/sax/helpers ParserAdapter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Java 1.1.8 back-compatability requires not using Java 1.2 collection calls.
+ (Still waiting for community consensus before abandoning 1.1)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath VariableStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4218: Make sure that the stack frame gets restored to the frame that 
+was previously set. Just calling unlink() may restore to the wrong frame, and 
+get us out of synch.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref
+ IncrementalSAXSource_Xerces.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In Xerces2, SAXParser no longer seems to inherit from
+ XMLReader; explicit casts needed to work around that.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>10/23/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/javax/xml/parsers SAXParserFactory.java
+ SAXParser.java ParserConfigurationException.java
+ package.html FactoryFinder.java
+ FactoryConfigurationError.java
+ DocumentBuilderFactory.java DocumentBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Remove javax.xml.parsers package from xalan sources since we no longer ship 
+with these files<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize CharInfo.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Microsoft VJ++ workaround. Should never arise in any reasonably
+ standards-compliant Java environment, but VJ++ isn't...<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize CharInfo.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Additional "big scary" docs for Microsoft VJ++ workaround.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>10/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added fix for bug reported by Myriam for match="//x/a" patterns. On the
+ second "/" on "//", the parser wasn't swallowing the token, which caused
+ the "x" pattern to be ancestor instead of parent. If you don't have this fix,
+ it will cause 'a' to be matched when it has any ancestor that is 'x'.
+ This fix should be localized to only match patterns. The reason this probably
+ wasn't reported before, is because "//" at the head of a match pattern is
+ pretty useless, "x/a" being equivelent.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>10/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToHTML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>By longstanding request, don't URL-escape spaces. This is consistent with the
+ specification, and the opinion of the right thing to do by several people on 
+the
+ XSL working group, including Mike Kay, and by the LotusXSLTeam.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLTElementDef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Improved safety net: When running with Xerces2, the "uri" field may be null.
+ (Also reordered tests to encourage optimization of code.)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add command-line switches for the options introduced at same time as DTM, to 
+make testing those features easier.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>11/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor StylesheetPIHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4575: Add the EOL character to the list of token delimiters.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java
+ IncrementalSAXSource_Xerces.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Leverage Xerces-2 incremental parsing feature, when possible,
+
+ Making this compile _and_ run under both the old and new versions of
+ the parser involves a lot of reflection... especially since Xerces-2
+ no longer provides a way to directly request incremental delivery
+ of SAX events; we now have to assemble that concept ourselves,
+ using XNI components.
+
+ Note that if you pass an existing Xerces-2 SAXParser into the
+ IncrementalSAXSource_Xerces wrapper, there is currently no way
+ for us to access its incremental controls. In that case, we are
+ forced to fall back on the _Filter solution and coroutines.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>11/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForFSB.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4396: Defaulting to the super hashCode(). This causes us to create 
+a string, but at this point this only seems to get called in key processing. 
+Maybe we can live with it?<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>11/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Use appropriate context class loader as done in JAXP's FactoryFinder;
+ Added various new jars; added checkAntVersion()<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>11/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize HTMLEntities.res<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Commented out mainly greek entities that Netscape seems not to handle.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>11/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize Encodings.java
+ SerializerToHTML.java SerializerToText.java
+ SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Progress on Bugzilla Bug 1639 : Xalan escaping characters for ISO encodings 
+other than ISO-8859-1.
+
+ The problem is that you can't tell from the Java Writers if they can encode
+ a character, and you can't tell which character they are going to encode to.
+ So...
+
+ Do a one-time-only reflection to see if a sun.io.CharToByteConverter for the
+ specific encoding is available. I'm hoping this will work for most or all
+ platforms... but only some extensive testing will tell for sure. If the
+ CharToByteConverter is not available, it falls back to the old behavior.
+ If it is available, use the canConvert method to see if the UTF-16 character
+ can be encoded. If it can be, just send it to the writer, otherwise escape 
+it.
+ This doesn't need to be done for &lt; 128, so I'm suspecting the performance
+ hit won't be too bad.
+
+ The alternative is to create lookups for all the encodings that tell which
+ blocks of characters can't be encoded. Too much work for me this
+ weekend, though it remains a possibility. I want to try the use of
+ CharToByteConverter.canConvert first.
+
+ One problem I've encountered is that CharToByteConverter.canConvert
+ returns true for (utf-16 code points) 127-159. And so they go unescaped.
+ How bad of a problem is this? This seems like a bug in the Java
+ CharToByteConverter for ISO-8859-7.
+
+ It remains to be seen if this problem exists with other encodings, or if this 
+is
+ the best approach.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>11/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Check for control characters for canConvert, and return false if it is a 
+control
+ character, so that it will be escaped.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>11/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Don't set the ErrorHandler if it is already set.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>11/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor fix to JavaDoc for setRecursionLimit.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/operations Operation.java
+ UnaryOperation.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4679: Accessors for left and right operands<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>11/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToHTML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Do not escape the percent '%' character anymore.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>11/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes LocPathIterator.java
+ OneStepIterator.java PredicatedNodeTest.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4638: When we are in a subcontext we need to clip off the predicate 
+when evaluating. If not, we end up with the wrong nodeset. This also relates to 
+test position68.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ ClonerToResultTree.java ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4607; allow explicitly cloning namespace nodes rather than
+ throwing exception.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>11/07/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/META-INF/services
+ javax.xml.parsers.SAXParserFactory
+ javax.xml.parsers.DocumentBuilderFactory<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Remove services/javax.xml.parsers.* references; we assume parsers have their 
+own<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>11/07/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/javax/xml/transform ErrorListener.java
+ FactoryFinder.java OutputKeys.java Result.java
+ Source.java SourceLocator.java Templates.java
+ Transformer.java
+ TransformerConfigurationException.java
+ TransformerException.java TransformerFactory.java
+ TransformerFactoryConfigurationError.java
+ URIResolver.java overview.html package.html
+ java/src/javax/xml/transform/dom DOMLocator.java
+ DOMResult.java DOMSource.java package.html
+ java/src/javax/xml/transform/sax SAXResult.java
+ SAXSource.java SAXTransformerFactory.java
+ TemplatesHandler.java TransformerHandler.java
+ package.html
+ java/src/javax/xml/transform/stream StreamResult.java
+ StreamSource.java package.html
+ java/src/org/w3c/dom Attr.java CDATASection.java
+ CharacterData.java Comment.java DOMException.java
+ DOMImplementation.java Document.java
+ DocumentFragment.java DocumentType.java
+ Element.java Entity.java EntityReference.java
+ NamedNodeMap.java Node.java NodeList.java
+ Notation.java ProcessingInstruction.java Text.java
+ package.html
+ java/src/org/w3c/dom/ranges DocumentRange.java Range.java
+ RangeException.java package.html
+ java/src/org/w3c/dom/traversal DocumentTraversal.java
+ NodeFilter.java NodeIterator.java TreeWalker.java
+ package.html
+ java/src/org/xml/sax AttributeList.java Attributes.java
+ ContentHandler.java DTDHandler.java
+ DocumentHandler.java EntityResolver.java
+ ErrorHandler.java HandlerBase.java InputSource.java
+ Locator.java Parser.java SAXException.java
+ SAXNotRecognizedException.java
+ SAXNotSupportedException.java
+ SAXParseException.java XMLFilter.java
+ XMLReader.java package.html
+ java/src/org/xml/sax/ext DeclHandler.java
+ LexicalHandler.java package.html
+ java/src/org/xml/sax/helpers AttributeListImpl.java
+ AttributesImpl.java DefaultHandler.java
+ LocatorImpl.java NamespaceSupport.java
+ ParserAdapter.java ParserFactory.java
+ XMLFilterImpl.java XMLReaderAdapter.java
+ XMLReaderFactory.java package.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Use a condensed copy of xml-commons sources instead of individual sources;
+ remove xalan-specific copies of commons files<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTErrorResources.java
+ java/src/org/apache/xalan/templates ElemNumber.java
+ java/src/org/apache/xml/utils/res XResources_cy.java
+ XResources_el.java XResources_ja_JP_A.java
+ XResources_ja_JP_HA.java XResources_ja_JP_HI.java
+ XResources_ja_JP_I.java XResources_zh_CN.java
+ XResources_zh_TW.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4601: Change ElemNumber to use a long integer for the value of the 
+number. This will allow us to format bigger numbers. As far as japanese 
+multipliers, we decided to document as a xalan limitation the fact that the 
+last 2 japanese multipliers will not be supported. If anyone has a strong and 
+valid user case for this, we will reconsider. For now, we could not justify the 
+expense of moving to BigInteger to support these multipliers.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4735: We should at least report an error when we overflow DTM 
+addressing...<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor ProcessorInclude.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4355: Make sure that when finding out if a stylesheet imports 
+itself, we use the resolved href.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath NodeSetDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4158: Make sure we get the current, not the node pointed to by 
+m_next, which has been already incremented.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4344: discard attrs which don't have an element to belong to<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 4344: more efficient.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Reorder slightly and add test to not synthesize xmlns:xsl declaration
+ if one was already present on the DOM's root element.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan Version.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>D13 internal version number update<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>D13 internal version number update<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code (now deprecated).</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D11</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>09/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed the code which precalculated node levels
+ (depth in tree). This has been IFed out for some time, but
+ was retained in case we wanted to go back to it. Since it
+ seems we're happy with this choice, zapping it entirely
+ saves a few more cycles.
+
+ It's simple enough to recreate if we change our minds later.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>09/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor cleanup and updates in preparation for extension function;
+ note SAX portion isn't complete yet<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>09/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib Extensions.java
+ java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update EnvironmentCheck service with SAX checking; better method organization;
+ Add checkEnvironment to xalan: built-in Extensions class<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler Lexer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 2140: Catch index out of bounds exception<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 2130: Check for null data to avoid NPE<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTErrorResources.java
+ java/src/org/apache/xalan/templates ElemElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 3421: Issue an error if namespace attribute is used with an empty string 
+in xsl:element<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Backing out this change. Some conformance tests need to be updated first<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 3421: Issue an error if namespace
+ attribute is used with an empty string in xsl:element<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemTemplateElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 3442: when building the prefix table for an element, just override 
+prefixes defined in parent element with uris that have been redefined by the 
+element instead of keeping both uris in the table.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>09/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix Bugzilla 3491: updated error message text; also updated Javadoc to
+ reflect @throws; note that the Javadoc is still somewhat contradictory
+ about returning a null on error (it appears to throw exceptions instead)
+ PR:3491
+ Submitted by:Julian.Birch@ranplc.co.uk<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>09/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/javax/xml/transform TransformerFactory.java
+ java/src/org/apache/xml/dtm DTMManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix Bugzilla 3423: documentation updates for proper class, property names
+ (one of two checkins)
+ PR:3423
+ Submitted by:gthb@dimon.is<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>09/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix Bugzilla 2637: documentation updates for constructor functionality
+ PR:2637
+ Submitted by:gthb@dimon.is<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemUse.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 2548: Combine attribute sets with the same name but process them in order 
+of precedence.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes UnionPathIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug 3533: Check for null m_iterators before trying to use it.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer KeyRefIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 3618: Check cache before anything else when getting the next node in 
+the iterator.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc TransletException.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the TransletException class so that it inherits from SAXException
+ and not from Exception. This should make it possible for us to avoid
+ testing for both SAXExceptions and TransletExceptions. Exception handling
+ is one of the things that JVM takes its time with, and we should try to
+ avoid using them when we can, and use as few of them as possible otherwise.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 2332: Implement getAttribute() method to return the values for 
+incremental and optimize<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Enable Attr.getOwnerElement()<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor StylesheetHandler.java
+ java/src/org/apache/xalan/templates ElemLiteralResult.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 1803: Handle version attribute on a litteral element.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>release 2.2.D11<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>release 2.2.D11<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Mark xsl:template as containing ordered elements. Fix for no error when 
+xsl:param not first child of xsl:template<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemLiteralResult.java
+ ElemTemplateElement.java Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 3800: Make sure that when looking for excluded prefixes, we check 
+the URI associated with the prefix, not the prefix in the excluded list.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>09/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath NodeSetDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Do not reorder or strip duplicate nodes when converting a DOM nodelist into a 
+DTM nodelist<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref
+ IncrementalSAXSource_Filter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Catch for unwrappered StopException (apparently not all parsers generate
+ a SAXException wrapper).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>10/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMDefaultBaseIterators.java
+ DTMDefaultBaseTraversers.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Creating the implied Namespace Node for xml:<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code (now deprecated).</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D10</h3>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The SQL Extension library has been updated to work with DTM.</td>
+</tr>
+</table>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>08/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bugzilla bug 3056 
+(http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3056). SAX2DTM now keeps 
+track if it is receiving events inside a DTD and ignores comment events when 
+inside the DTD.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update version for 2.2.D9 build<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>08/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ConnectionPool.java
+ DefaultConnectionPool.java SQLDocument.java
+ XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed bug in connect method where User and Password were not
+ correctly being passed to the JDBC Driver. Requires chnage in
+ ConnectionPool Interface
+ Submitted by: John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/15o2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Use defined constant DTMManager.IDENT_DTM_NODE_BITS for shifting DTM nodes, 
+not hard coded value.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem with resolving a relative URI from a processing instruction<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Make sure base is not null before checking for its contents.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates FuncDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix document function so that if only one argument is passed and it is a 
+nodetest, the base to be used to resolve relative URIs is the base of the each 
+node in the nodeset.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Allow multiple iterations of xsl:with-param within an xsl:call-template or 
+xsl:apply-template<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added getCurrentNodeList() for getting the current node list as defined
+ by http://www.w3.org/TR/xslt#dt-current-node-list.
+ This looks up the stack of the SubContextLists to find the top-level
+ LocPathIterator. I'm fairly unhappy with this fix, and hope to restructure
+ the context list stuff a bit to avoid the casts in the getCurrentNodeList(),
+ and to fix getCurrentNode() so that it properly defines the current
+ node as defined by the XSLT spec. As a matter of fact, I would
+ like to break up XPathContext into an XSLTContext.
+ Part of the http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3031
+ fix.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/functions FuncCurrent.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Call new XPathContext#getCurrentNodeList. Fixes
+ http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3031.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer KeyRefIterator.java
+ java/src/org/apache/xpath/axes ChildIterator.java
+ ChildTestIterator.java DescendantIterator.java
+ MatchPatternIterator.java
+ SelfIteratorNoPredicate.java UnionPathIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for problem reported by Mike Starr &lt;mike.starr@air2web.com&gt;,
+ where the transformation hangs for "foo[2] | bang"
+ patters, i.e. unions with positional predicates. The fix
+ is to have the iterators#nextNode() set m_lastFetched to DTM.NULL
+ when m_foundLast is found to be true on function entry
+ (after the cache check). This allows getCurrentNode() to
+ fullfill it's contract of returning null if the last fetch was
+ null. The bug occured after an optimization for positional
+ predicates to have them not continue searching once
+ the positional node was found, by setting m_foundLast
+ to true.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>08/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed debug flag
+ Submitted by:John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>08/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java
+ XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed Streaming Mode
+ Submitted by: John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>08/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm DTM.java
+ java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMDocumentImpl.java DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added document registration and release events to the DTM interface
+ Submitted by: John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>08/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib Extensions.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bug 3112 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3112). Fix 
+tokenize to work with DTM by obtaining a new DocumentBuilder and not using the 
+document from the context node.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>08/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath VariableStack.java
+ java/src/org/apache/xpath/operations Variable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bug 3265 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3265). Using 
+an expression in the evaluate extension function that contains a top-level 
+variable was cause an NPE.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XStringForChars.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed two bugs, one in getChars and one in charAt where the m_start
+ offset wasn't being used correctly. This manifested itself in some
+ stuff I was doing with the startsWith function, but likely caused
+ many other bugs with other functionality.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/27/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc StripFilter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Forgot to add this file in my last putback.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added dumpNode method, convenience for debugging.
+
+ We might want to move this function up to DTMDefaultBase, or
+ perhaps to the DTM API itself.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToText.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3131 by
+ overriding writeNormalizedChars and writeUTF16Surrogate to
+ not do any XML escaping.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>The index was being stored as opposed to the node handle when we were 
+replacing namespace nodes. Store the actual node handle.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by</i>
+</b> mmidy@apache.org<b>
+<i> on </i>
+</b>08/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>
+java/src/org/apache/xpath/compiler Lexer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for Bugzilla 2684 StringIndexOutOfBounds Exception. Check if we are at the end of the pattern string.<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code (now deprecated).</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D9</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>2.2.D8<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>2.2.D8<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer NodeSortKey.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Submitted fix for http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2851.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Just added some stuff to diagnose bugs for flavor th.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes WalkerFactory.java
+ java/src/org/apache/xpath/compiler Compiler.java
+ java/src/org/apache/xpath/patterns
+ ContextMatchStepPattern.java StepPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>These are changes submitted (offline) by Mukund Raghavachari/Watson/IBM@IBMUS.
+
+ This fixes a bug with match="chapter//footnote[1]" patterns.
+
+ The main change here is minor to remove the automatic attachment of parent::* 
+to simple step patterns.
+
+ He has re-implemented executePredicates to be
+ more efficient. Given a pattern such as row[6], it
+ does not iterate over the entire axis until it reaches
+ the node to see if it is the sixth node. Rather,
+ starting from the current node, it works backwards
+ (preceding siblings) until it either runs out of nodes
+ or finds more than six nodes that match the
+ predicate [I can explain it better if desired].
+ This optimization improves performance slightly
+ overall. It helps decoy and patterns most (by
+ about 10%).
+
+ The other optimization that I implemented was the
+ following. For a pattern foo[][3][][4] ..., where more
+ than one predicate is a number (position check),
+ in checking the predicate [4], the fact that the
+ current node has passed foo[][3] implies that it is
+ the only node that is the third node among its
+ siblings that passes foo[]. Therefore, any
+ subsequent position checks can be true if and
+ only if the position is [1]. This optimization is not
+ used by the xsltmark benchmarks and so does
+ not offer any performance benefits.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes DescendantIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1336<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler Lexer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resize the m_patternMap if m_patternMapSize exceeds the bounds.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions
+ ExtensionHandlerGeneral.java
+ ExtensionHandlerJavaPackage.java
+ ExtensionsTable.java MethodResolver.java
+ java/src/org/apache/xalan/lib Extensions.java
+ java/src/org/apache/xalan/lib/sql ConnectionPoolManager.java
+ java/src/org/apache/xalan/processor ProcessorLRE.java
+ ProcessorTemplateElem.java StylesheetHandler.java
+ TransformerFactoryImpl.java XSLTAttributeDef.java
+ XSLTElementProcessor.java
+ java/src/org/apache/xalan/res XSLTErrorResources.java
+ java/src/org/apache/xalan/serialize CharInfo.java
+ WriterToUTF8Buffered.java
+ java/src/org/apache/xalan/templates ElemExtensionCall.java
+ ElemExtensionDecl.java ElemMessage.java
+ FuncDocument.java FuncFormatNumb.java
+ OutputProperties.java StylesheetRoot.java
+ java/src/org/apache/xalan/transformer TrAXFilter.java
+ TransformerHandlerImpl.java
+ TransformerIdentityImpl.java TransformerImpl.java
+ java/src/org/apache/xalan/xslt Process.java
+ java/src/org/apache/xml/dtm DTMException.java
+ DTMManager.java
+ java/src/org/apache/xml/dtm/ref ChunkedIntArray.java
+ CoroutineManager.java CoroutineSAXParser.java
+ CoroutineSAXParser_Xerces.java DTMBuilder.java
+ DTMDefaultBase.java DTMDefaultBaseIterators.java
+ DTMDefaultBaseTraversers.java
+ DTMManagerDefault.java
+ IncrementalSAXSource_Filter.java
+ IncrementalSAXSource_Xerces.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java
+ java/src/org/apache/xml/utils ObjectPool.java QName.java
+ URI.java
+ java/src/org/apache/xpath NodeSet.java NodeSetDTM.java
+ VariableStack.java XPath.java XPathContext.java
+ java/src/org/apache/xpath/axes WalkerFactory.java
+ java/src/org/apache/xpath/functions FuncSubstring.java
+ FunctionDef1Arg.java
+ java/src/org/apache/xpath/objects
+ XRTreeFragSelectWrapper.java XStringForChars.java
+ java/src/org/apache/xpath/operations Variable.java
+ java/src/org/apache/xpath/res XPATHErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Getting all (almost all) error message strings into the resource bundle<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Accidentally added. Now deleting.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath Expression.java
+ java/src/org/apache/xpath/axes AxesWalker.java
+ LocPathIterator.java PredicatedNodeTest.java
+ ReverseAxesWalker.java
+ java/src/org/apache/xpath/objects XNumber.java
+ java/src/org/apache/xpath/operations Variable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>If a proximity predicate is a stable number (variable or number literal) then,
+ once the node is found, don't keep searching! (since only one
+ node is possible).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In getNextNamespaceNode and getFirstNamespaceNode, was
+ sometimes returning a node without the DTM identity bits.
+ Fix for http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2878.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler OpMap.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Throw real error instead of runtime error in getFirstPredicateOpPos
+ for better error reporting.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes PredicatedNodeTest.java
+ java/src/org/apache/xpath/compiler OpMap.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bit of a hack to make /descendant-or-self::north with getFirstPredicateOpPos
+ where getFirstPredicateOpPos was always throwing an error if
+ there was not a predicate (!! Should have been discovered before
+ now?!?!). If -2 return -2 (instead of throwing an error), and
+ handle this case in PredicatedNodeTest#initPredicateInfo.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ObjectArray.java
+ SQLDocument.java SQLErrorDocument.java
+ XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added the original pquery and streaming mode functionality
+ Submitted by: John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/30/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/lib/sql DTMDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added DTM Document, a common impl between SQLDocument and SQLErrorDocument
+ Submitted by: John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes DescendantIterator.java
+ WalkerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix addresses http://nagoya.apache.org/bugzilla/enter_bug.cgi?product=XalanJ2,
+ and a whole class of related problems.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XNodeSet.java XObject.java
+ java/src/org/apache/xpath/patterns StepPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Detach expressions in match patterns. Also, defined
+ numWithSideEffects and boolWithSideEffects (for lack of
+ better names) that will increment the iterator, and call these
+ for predicates. The combination of these results in about an
+ 18% performance improvement for decoy.xsl.
+ Credits to Mukund Raghavachari/Watson/IBM@IBMUS.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions
+ ExtensionHandlerGeneral.java
+ java/src/org/apache/xalan/res XSLTErrorResources.java
+ java/src/org/apache/xalan/templates ElemExtensionDecl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add support for external scripts (ie, the src attribute on a script element)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPathContext.java
+ java/src/org/apache/xpath/axes ChildTestIterator.java
+ OneStepIteratorForward.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In XPathContext#createDTMIterator(int node), call 
+OneStepIteratorForward(Axis.SELF)
+ instead of DescendantIterator. This addresses one of the bugs
+ in http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2925
+ (i.e. &lt;xsl:copy-of select="xalan:nodeset($stylesheets)"/&gt;...
+ The DescendantIterator was enumerating all of the nodes in the RTF
+ rather than just the one.)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ConnectionPool.java
+ ConnectionPoolManager.java DTMDocument.java
+ DefaultConnectionPool.java ObjectArray.java
+ PooledConnection.java SQLDocument.java
+ SQLErrorDocument.java XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added Error Managment and javadocs
+ Submitted by: John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/patterns StepPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed some major problems with position() and last() in secondary
+ predicates for match patterns. Credit goes to
+ Mukund Raghavachari/Watson/IBM@IBMUS for flagging these.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>08/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update after building Unit Test's
+ Submitted by: John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLTAttributeDef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for Bugzilla 2930. Fix from Alexander Rudnev. Handle namespaced elements.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm DTMAxisIterator.java
+ java/src/org/apache/xml/dtm/ref DTMAxisIteratorBase.java
+ DTMDefaultBaseIterators.java
+ java/src/org/apache/xpath/axes OneStepIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Addresses http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2945
+
+ Bug was caused by (redundent) cloneWithReset being called from
+ the UnionPathIterator, and the iterator in OneStepIterator not being
+ reset. (Need to review: check other iterators for this.)
+
+ Call reset on the iterator in OneStepIterator#reset. Reset the position
+ value in the ancestor iterator reset. Define DTMAxisIterator#cloneIterator
+ to not reset the iterator position, and fix the implementations of
+ this to not call clone.reset().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xpath NodeSetDTM.java
+ java/src/org/apache/xpath/functions FuncExtFunction.java
+ java/src/org/apache/xpath/objects XBoolean.java
+ XNodeSet.java XNumber.java XObject.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xpath/objects XNodeSetForDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Address http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2925
+
+ Create new XObject, XNodeSetForDOM, which is constructed
+ from a Node, NodeList, or NodeIterator, and acts the same as
+ XNodeSet, except it returns the original object for object(),
+ nodeset(), and nodelist().
+
+ Add XObject#create(Object val, XPathContext xctxt), which is
+ called from TransformerImpl#setParameter(s), and
+ FuncExtFunction#execute (for the return values of the
+ extension).
+
+ XBoolean and XNumber now also have Boolean and Number
+ constructors, in which case the original object will also be
+ returned from the object() method.
+
+ This should make the conversion from java object to XObject
+ consistent between function returns and setParameter. These
+ changes should also fix a bug where NodeLists weren't being converted.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/utils NamespaceSupport2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Replacement for org.xml.sax.helpers.NamespaceSupport; extends
+ that API so it can be easily swapped in.
+
+ Current changes;
+
+ Minor code reorg. I'm sorry, but I find classes easier to read
+ if fields are defined before methods reference them rather than
+ at end, especially when inner classes are present.
+
+ Punt stack vector in favor of doubly-linked list. (It was already
+ singly-linked in parallel with the vector!)
+
+ The whole dirty-tables concept was broken, because Context's
+ ctor always called copyTables and thus always marked tables
+ dirty. It also wasted some time setting itself only to be reset by
+ setParent. I've fixed both by parameterizing the ctor and making
+ copyTables specific to prep-for-new-declaration. (Could be
+ moved back into the declaration method, for that matter.)
+
+ I'm dubious about the caches in processName. As far as I can
+ tell, Xalan per se never actually uses that method...
+
+ The use of Hashtables is questionable. Hashtable is
+ known to be inefficient and oversynchronized in older JVMs, and
+ the fact that this is a bidirectional mapping suggests that an
+ approach similar to our own String Pool -- lighter-weight, more
+ targeted, hashing without reduplicating the two column tables --
+ would be a win. Since these are typically short sets, even
+ simple linear search is worth considering!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor StylesheetHandler.java
+ java/src/org/apache/xalan/templates ElemTemplateElement.java
+ java/src/org/apache/xalan/transformer ResultTreeHandler.java
+ TransformSnapshotImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Cutover to NamespaceSupport2, q.v.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils NamespaceSupport2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Continuing code review.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils NamespaceSupport2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>More efficient prefixes-for-specific-URI. This may wind up being
+ redone yet again if/when the underlying storage representation
+ changes.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/lib PipeDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>PipeDocument extension element (the pipeDocument method).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xpath NodeSet.java NodeSetDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug fixed regarding the current() function in the root template
+ (related to bug#1269). Bug was reported by David Marston
+ offline. The test for this is conf/copy/copy29.
+
+ In TransformerImpl#applyTemplateToNode, create a NodeSetDTM and pass it to 
+m_xcontext.pushContextNodeList(cnl);.
+ In NodeSetDTM fix getCurrentNode so that it doesn't use m_next-1
+ (which simply appears to be completely wrong). Do the same for
+ NodeSet... though I don't think this will be called anywhere in
+ Xalan.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm DTMAxisIterator.java
+ java/src/org/apache/xml/dtm/ref DTMAxisIteratorBase.java
+ DTMDefaultBaseIterators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Provide method for DTMAxisIterator to get the current root node
+ of the iteration.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XObject.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In response to regression posted on xalan-dev by John Gentilin 
+&lt;johnglinux@eyecatching.com&gt;
+ on 08/03/2001 06:49 PM. When the XNodeSet taks a DTMIterator, it
+ will call val.getDTMManager();, which will call LocPathIterator#getDTMManager,
+ which will call m_execContext..getDTMManager(), which means
+ that setRoot has to be called on the iterator before it is added to
+ XNodeSet. Thus, call setRoot on the OneStepIterator in
+ create(Object, XPathContext) before it is added to the XNodeSet.
+ The regression was related to fix for 
+http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2925.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes OneStepIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>For the OneStepIterator(DTMAxisIterator iterator) constructor,
+ initialize the node tests to DTMFilter.SHOW_ALL (duh).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XObject.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xpath/objects XObjectFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Move create methods from XObject to XObjectFactory, in response
+ to cyclic build problems encountered with javac 1.1.8.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils NamespaceSupport2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Moved anonomous class to PrefixEnumerator, in response
+ to problems encountered with 1.1.8 build.
+ Joe may want to fix this in another way, as
+ I'm sure the anon class is probably a bit
+ cheaper?<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath VariableStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Address http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2972,
+ where it was throwing a NPE instead of reporting that the variable
+ was being accessed before it was bound (i.e. the variable was being
+ accessed inside an RTF for that same variable).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformerHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Remove m_hasStarted variable and associated assertion.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBaseIterators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Addresses bug http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3001.
+ In the cloneIterator function of PrecedingIterator, the cloned array
+ was being sized for _maxAncestors, which defaults to 8. But if the
+ _stack was resized, it will copy more into the new stack than is
+ allocated. The solution is to allocate the new clone._stack array to
+ _stack.length.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils NamespaceSupport2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Don't create caches unless used (which I don't think they are, in Xalan).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBaseIterators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Made _maxAncestors not static, as this is
+ not compatible with 1.1.8 (reported by
+ Gary Peskin).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils NamespaceSupport2.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Playing a hunch, I moved the Context objects out of NamespaceSupport2.
+ They're now a second class in the same file rather than being an inner class.
+ That reduces the size of the Context2 object, and its initialization time, by
+ removing the need for it to carry a reference to the NamespaceSupport2
+ object that created it.
+
+ Performance seems significantly improved... even (surprisingly!) on the
+ getDeclaredPrefixes operation. Memory usage also seems better, as
+ expected.
+
+ NamespaceSupport2 is still acounting for about 5%
+ of the time spent in the ResultTreeHandler, according
+ to my latest trace. Apparently we are calling
+ getDeclaredPrefixes an obscenely large number of
+ times, and the Vector.elements call is adding up. We
+ may want to look at where this is being called from
+ and whether we can reduce the number of invocations.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Performance improvement; avoid scanning the same list twice.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformerHandlerImpl.java TransformerImpl.java
+ java/src/org/apache/xalan/xslt Process.java
+ java/src/org/apache/xml/dtm/ref
+ IncrementalSAXSource_Filter.java
+ java/src/org/apache/xml/utils DefaultErrorHandler.java
+ java/src/org/apache/xpath/operations Variable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>This checkin hopefully fixes many problems with bad diagnostics lately, but
+ at the expense of a slight change in behavior. The rule now is, the
+ DefaultErrorHandler never outputs location info for error and fatalError... 
+this has to be done
+ by the catcher of the exception. Convenience methods for this are
+ in DefaultErrorHandler#printLocation. This method will unwrap the
+ exception as close to the originating source as possible.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions
+ XSLProcessorContext.java
+ java/src/org/apache/xml/dtm DTMIterator.java
+ java/src/org/apache/xml/dtm/ref DTMAxisIteratorBase.java
+ java/src/org/apache/xpath NodeSetDTM.java
+ java/src/org/apache/xpath/axes AttributeIterator.java
+ AxesWalker.java ChildIterator.java
+ ChildTestIterator.java DescendantIterator.java
+ FilterExprWalker.java LocPathIterator.java
+ OneStepIterator.java OneStepIteratorForward.java
+ ReverseAxesWalker.java UnionPathIterator.java
+ WalkingIteratorSorted.java
+ java/src/org/apache/xpath/objects XObjectFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changes to allow some dynamic determination in WalkerIteratorSorted to
+ see if the nodes really need to be sorted. Added isDocOrdered() and
+ getAxis() to both DTMIterator and AxesWalker, and implemented
+ appropriate overloads in derived or implementing classes. In FilterExprWalker
+ return the contained DTMIterator's getAxis(). In WalkerIteratorSorted,
+ implement canBeWalkedInNaturalDocOrder() function that is called
+ from setRoot(...). If this function returns true, than don't sort the nodes
+ in setRoot, and in all other respects treat this as if it is a simple
+ WalkingIterator.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bugzilla 1251. Make sure exceptions are thrown when we're on the main 
+thread.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes AxesWalker.java
+ WalkerFactory.java WalkingIteratorSorted.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Eliminate do/while check for duplicates in AxesWalker#nextNode()
+ by using WalkingIteratorSorted for cases where both the preceding[-sibling]
+ and following[-sibling] axes are being walked, and for "@*/foo" patterns
+ ("@attr/foo" patterns still use WalkingIterator).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>08/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates FuncFormatNumb.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bugzilla bug 3036 
+(http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3036). When no 
+xsl:decimal-format element is supplied in the composed stylesheet, the defaults 
+specified in the Recommendation section 12.3 should be used for the attribute 
+values, not locale-specific defaults.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>08/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bugzilla 3060 
+(http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3060). Prefixes and
+ namespaceURIs are kept in the same Vector, m_prefixMappings. The entries are 
+stored as pairs of vector elements. The even elements contain the prefix and 
+the odd elements contain the URI. In two routines, getPrefix and endElement, 
+the appropriate prefix or URI was being located in the Vector using an 
+indexOf. However, in this case where the prefix and the URI were the same, the 
+routine was looking for the URI but finding the prefix instead of the URI. It 
+tried tried to back up one to get the prefix and underflowed the Vector size.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer ResultTreeHandler.java
+ TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implement ErrorHandler in ResultTreeHandler so that fatal errors can get 
+passed in to the SAXHandler. Also change the code in TransformerImpl to call 
+fatalError in case of an error instead of endDocument. (overlaps with URI 
+handling fix...)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ TransformerFactoryImpl.java
+ java/src/org/apache/xalan/transformer
+ TransformerIdentityImpl.java
+ java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix code to handle absolute paths from unix systems. This fix is part of an 
+ongoing process and is just meant to fix a few pending bugs. More changes are 
+expected in this area.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Change version for xalan2.2.D9 build<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>08/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemElement.java
+ java/src/org/apache/xalan/transformer ResultTreeHandler.java
+ java/src/org/apache/xml/utils DefaultErrorHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>ResultTreeHandler was pushing a new namespace context but failing to note 
+that result in more pushes than pops. Cleaned up the execute() method of 
+ElemElement to make it more understandable (to me) and added a few comments. 
+The DefaultErrorHandler was not flushing Writers that it created. Since the 
+Writers are never closed (and cannot be as there is no close method), error 
+messages were failing to appear.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm DTMManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Increasing the number of bits used to identify DTM nodes, at the expense of 
+decreasing the number of DTMs that a DTMManager can track simultaneously. Some 
+other code has been updated to track this change (and to better track posible 
+future changes), as have the IDKEY testcases.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMDocumentImpl.java DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Increasing the number of bits used to identify DTM nodes, at the expense of 
+decreasing the number of DTMs that a DTMManager can track simultaneously. Some 
+other code has been updated to track this change (and to better track posible 
+future changes), as have the IDKEY testcases.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>08/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/functions FuncGenerateId.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Increasing the number of bits used to identify DTM nodes, at the expense of 
+decreasing the number of DTMs that a DTMManager can track simultaneously. Some 
+other code has been updated to track this change (and to better track posible 
+future changes), as have the IDKEY testcases.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>08/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath NodeSetDTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Try to support getRoot. Fixes problem with TransformStateTest.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>08/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes WalkerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem with duplicate nodes produced from a walking iterator<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code (now deprecated).</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D8</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Code Update
+ Submitted by:John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed DTM.NULL compile error<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TreeWalker2Result.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Redundant test removed, possibly redundant code flagged for %REVIEW%<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java
+ java/src/org/apache/xalan/transformer
+ TransformerHandlerImpl.java
+ java/src/org/apache/xml/dtm/ref DTMDefaultBase.java
+ DTMDocumentImpl.java DTMManagerDefault.java
+ IncrementalSAXSource.java
+ IncrementalSAXSource_Filter.java
+ IncrementalSAXSource_Xerces.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java
+ java/src/org/apache/xml/utils SuballocatedIntVector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>IncrementalSAXSource replaces CoroutineSAXParser -- simpler API,
+ hence less risk of programming errors introducing timing windows. I hope.
+ A few performance-related tweaks are also included in this check-in.
+ Only very minor gains are expected.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ObjectArray.java
+ SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Project Update<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Oops.Should have been checked in as part of the IncrementalSAXSource cutover. 
+Sorry!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>07/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java build.xml
+ java/src/org/apache/xml/dtm/ref
+ IncrementalSAXSource_Filter.java
+ java/src/org/apache/xml/utils/synthetic JavaUtils.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>3 small fixes to the build process ( to make it work with jdk1.4 and crimson)
+
+ - exclude IncrementalSAXSource_Xerces if xerces is not detected
+ - comment-out the "main" in IncrementalSAXSource_Filter.java ( it is a
+ test, but has deps on xerces )
+ - don't try to load the compiler in syntetic/JavaUtils. This is a mess,
+ it was debated on tomcat-dev and ant-dev, as you may know some people
+ decided to remove the internal compiler class ( sun.tools.javac.Main ),
+ and that brakes jasper, ant and now xalan.
+
+ It seems right now the only portable way to run the compiler is via command
+ line call in a separate process ( jikes can easily make up for the
+ overhead of creating a new process and doesn't leave garbage ).
+
+ Question: is synthetic used ? Seems like a very usefull package, but if
+ xalan is not using it it might be better to move it to xml-commons or
+ jakarta-commons or some other place.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Don't set m_level anymore, as it looks like Joe commented out it's
+ initialization. m_level is no longer called by Xalan, and the implementation
+ can calculate it when it is called.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformerIdentityImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed bug 2758 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2758). The 
+flag indicating that a call to startDocument() in the resultContentHandler was 
+necessary was not being reset for multiple transforms.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bug 2727 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2727). 
+Attributes which contain a namespace prefix are indicated by placing a negative 
+number in the appropriate entry in the m_dataOrQName array. The absolute value 
+of this number is an entry in m_data. However, in this example, there were no 
+text nodes before the first namespaced attribute so the entry in m_data had an 
+array index of 0. This resulted in an entry of zero, not a negative number, in 
+m_dataOrQName. This situation got several routines which tested for &lt; 0 
+confused. I looked at several ways of fixing this but decided to just always 
+allocate m_data.elementAt(0) entry to a dummy entry. The other solutions 
+involved runtime checking which could slow down this piece of code and I felt 
+that wasting one entry was worth it to not slow down the run time.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize
+ WriterToUTF8Buffered.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bugzilla bug 2639 
+(http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2639) where buffer was 
+overflowing because the expansion of the Unicode characters into multiple UTF8 
+characters was not being properly taken into account. Many thanks to 
+Gunnlaugur Thor Briem for his "multiply by three" trick.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer NodeSorter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Commented out NumberFormat m_formatter = NumberFormat.getNumberInstance();.
+
+ Mukund reported:
+
+ a minor improvement for alphabetize.xsl is to comment out the line
+
+ //NumberFormat m_formatter = NumberFormat.getNumberInstance();
+
+ in NodeSorter.java. The variable m_formatter does not seem to be used 
+anywhere, and the performance difference is:
+
+ Before: alphabetize 10 90 5108 196 156 34.58 
+OK
+ After : alphabetize 10 70 4316 196 156 
+40.93 OK<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>2.2.D8<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>2.2.D8<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer NodeSortKey.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Submitted fix for http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2851.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Just added some stuff to diagnose bugs for flavor th.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes WalkerFactory.java
+ java/src/org/apache/xpath/compiler Compiler.java
+ java/src/org/apache/xpath/patterns
+ ContextMatchStepPattern.java StepPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>These are changes submitted (offline) by Mukund Raghavachari/Watson/IBM@IBMUS.
+
+ This fixes a bug with match="chapter//footnote[1]" patterns.
+
+ The main change here is minor to remove the automatic attachment of parent::* 
+to simple step patterns.
+
+ He has re-implemented executePredicates to be
+ more efficient. Given a pattern such as row[6], it
+ does not iterate over the entire axis until it reaches
+ the node to see if it is the sixth node. Rather,
+ starting from the current node, it works backwards
+ (preceding siblings) until it either runs out of nodes
+ or finds more than six nodes that match the
+ predicate [I can explain it better if desired].
+ This optimization improves performance slightly
+ overall. It helps decoy and patterns most (by
+ about 10%).
+
+ The other optimization that I implemented was the
+ following. For a pattern foo[][3][][4] ..., where more
+ than one predicate is a number (position check),
+ in checking the predicate [4], the fact that the
+ current node has passed foo[][3] implies that it is
+ the only node that is the third node among its
+ siblings that passes foo[]. Therefore, any
+ subsequent position checks can be true if and
+ only if the position is [1]. This optimization is not
+ used by the xsltmark benchmarks and so does
+ not offer any performance benefits.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes DescendantIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1336<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code (now deprecated).</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D7</h3>
+<p> Core (Non-XSLTC) source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMManagerDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Since the real root of our tree may be a DocumentFragment, we need to
+ use getParent to find the root, instead of getOwnerDocument. Otherwise
+ DOM2DTM#getHandleOfNode will be very unhappy.
+ Result of report via private mail by Carsten Ziegeler of breakage
+ in Cocoon.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToHTML.java
+ SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Made m_maxCharacter, accumDefaultEscape,
+ accumDefaultEntity, and m_isRawStack
+ protected by request from Johannes Farrenkopf
+ and Frank Nestel.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/functions FuncNormalizeSpace.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In executeCharsToContentHandler check first for
+ DTM.NULL before trying to get the DTM.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bug reported by "Carsten Ziegeler" &lt;cziegeler@sundn.de&gt;.
+ Test for this is whitespace23.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SuballocatedIntVector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Drop some bounds tests for cases which shouldn't arise in the first place, 
+since this is an inner-loop method.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SuballocatedByteVector.java
+ SuballocatedIntVector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Synch SuballocatedByteVector with changed SuballocatedIntVector<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref CoroutineSAXParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Revert back to throwing a shutdownException if (arg == null) in co_yield. I 
+see this
+ occur if the parser is Crimson with output\output01, and it causes
+ a hang if the shutdownException is not thrown.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Make accumDefaultEntity and accumDefaultEscape non-final.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes ChildTestIterator.java
+ OneStepIterator.java
+ java/src/org/apache/xpath/functions FuncExtFunction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for John G. for the SQL extension: handle return types of
+ DTM and DTMAxisIterator.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In executeChildTemplates, somehow there was a popMode without
+ a corresponding pushMode. The pushMode was added.
+ Addresses bug posted by Stephane Bailliez &lt;sbailliez@imediation.com&gt;
+ on the xalan-dev list on 07/09/2001 07:28 AM.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions ExpressionContext.java
+ java/src/org/apache/xalan/templates StylesheetRoot.java
+ java/src/org/apache/xpath VariableStack.java
+ XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bugzilla 2355 
+&lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2355&gt;. To make the 
+functionality clearer, I've changed the method name from getVariable to 
+getVariableOrParam since the routine will pick up either one. Also fixed a 
+bug where top level variables and parameters were not getting marked as such.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib Extensions.java
+ java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bugzilla 2523 
+&lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2523&gt;. evaluate extension 
+function was not refactored with DTM. Also need to add function to 
+XPathContext.XPathExpressionContext to allow an extension to obtain the 
+associated XPathContext.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>07/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes DescendantIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem with descendant-or-self and from root pattern. When from root, 
+descedant or self was not recognized.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Quick patch to handle case where someone wants to build a DTM from
+ an Element rather than from a Document. The Attr handling might want to
+ move down into addNode.
+
+ This opens several cans of worms -- what if the next user wants the
+ root of their DTM to be an EntityReference node, which has no DTM
+ node equivalent -- but we'll eat those when we get to them.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib Extensions.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modify distinct() extension so that it no longer relies on DOMHelper which is 
+deprecated but uses ExpressionContext.toString().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTErrorResources.java
+ java/src/org/apache/xalan/trace PrintTraceListener.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xalan/xslt Process.java
+ java/src/org/apache/xml/dtm DTM.java
+ java/src/org/apache/xml/dtm/ref DTMDocumentImpl.java
+ ExpandedNameTable.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/lib NodeInfo.java
+ java/src/org/apache/xalan/transformer XalanProperties.java
+ java/src/org/apache/xml/dtm/ref NodeLocator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Application of patch submitted by Ovidiu Predescu &lt;ovidiu@cup.hp.com&gt;
+ for file, line, column number information for XML source document.
+
+ [A made one change: m_sourceSystemId, m_sourceLine, and
+ m_sourceColumn are not created with the member variable
+ initializer, since they are initialized in setProperty.]
+
+ The following patch is a rework of a previous patch I've submitted on
+ May 24 against the Stree model, current at that time. This time the
+ patch is against the DTM model, and makes use of DTM features to
+ optimize the lookup time and storage requirements. I hope this time
+ the patch gets incorporated in the CVS repository, before any major
+ rework happens again ;-).
+
+ As with the previous patch, there is no overhead in space or time if
+ source information is not needed.
+
+ From a user perspective, this feature can be turned on by passing the
+ -L flag to Xalan when invoking it from the command
+ line. Programmatically you can also enable it by invoking the
+ setProperty method on the TransformerImpl:
+
+ TransformerImpl impl = ((TransformerImpl) transformer);
+ 
+impl.setProperty(org.apache.xalan.transformer.XalanProperties.SOURCE_LOCATION,
+ Boolean.TRUE);
+
+ A Transformer "property" is different from a "feature": while a
+ feature is specific to all the transformer instances and usually
+ refers to an implementation aspect, a property is a runtime capability
+ that is set per Transformer instance. Currently the only property
+ added by this patch is the source location in the XML source document.
+
+ The patch adds two methods to the DTM interface:
+
+ public void setProperty(String property, Object value);
+ public SourceLocator getSourceLocatorFor(int node);
+
+ The second method is used to obtain the source location given a node
+ handle.
+
+ There are two ways you can make use of the source location. The first
+ one is from within a stylesheet, where you can have something like
+ this:
+
+ &lt;xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:nodeinfo="xalan://org.apache.xalan.lib.NodeInfo"
+ version="1.0"&gt;
+
+ &lt;xsl:template match="*"&gt;
+ //node &lt;xsl:value-of select="name()"/&gt;
+ //file &lt;xsl:value-of select="nodeinfo:systemId()"/&gt;
+ //line &lt;xsl:value-of select="nodeinfo:lineNumber()"/&gt;
+ //column &lt;xsl:value-of select="nodeinfo:columnNumber()"/&gt;
+ &lt;xsl:apply-templates/&gt;
+ &lt;/xsl:template&gt;
+
+ &lt;/xsl:stylesheet&gt;
+
+ If no arguments are passed to the systemId(), lineNumber() or
+ columnNumber() functions, the corresponding information of the current
+ context node is returned. A node can be passed as argument to the
+ above functions, in which case the corresponding information about
+ that node is returned. If a node set containing multiple nodes is
+ passed as argument, only the information of the first node in the set
+ is returned.
+
+ The second way of obtaining the source location is
+ programmatically. Given a Node instance, one can obtain the owner DTM
+ and the node handle (an integer) that represents the
+ node. Unfortunately I didn't see any way of hiding this: if you find
+ one please let me know and I'll fix it.
+
+ The following example is extracted from PrintTraceListener and
+ illustrates the API:
+
+ Node sourceNode = ev.m_sourceNode;
+ int nodeHandler = ((DTMNodeProxy)sourceNode).getDTMNodeNumber();
+ SourceLocator locator = ((DTMNodeProxy)sourceNode).getDTM()
+ .getSourceLocatorFor(nodeHandler);
+
+ m_pw.println("Selected source node '" + sourceNode.getNodeName()
+ + "', at " + locator);<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler Compiler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bug 2175 &lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2175&gt; by 
+adding the current time to the method key to ensure method key uniqueness. 
+Multiple Compilers were getting the same hashCode, particularly in Visual Age 
+for Java, due to aggressive garbage collection. Added the current time in 
+mills to distinguish between the different functions being compiled.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemVariable.java
+ StylesheetRoot.java
+ java/src/org/apache/xpath VariableStack.java
+ java/src/org/apache/xpath/operations Variable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bugzilla 2355 
+&lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2355&gt;. Added code to 
+populate m_index for global variables and parameters. If the backward search 
+for templates reaches the top level, use the list of composed top-level 
+variables and parameters from StylesheetRoot.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Now implements DocumentFragment.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>07/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated version to 2.2.0.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>07/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated version to 2.2.0.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMNodeProxy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed very ugly bug, left-over from DTM1, in getValue, where +1 was being 
+added per the old attribute structure of DTM1.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ConnectionPool.java
+ DefaultConnectionPool.java PooledConnection.java
+ QueryParameter.java XConnection.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/lib/sql ConnectionPoolManager.java
+ ObjectArray.java SQLDocument.java
+ SQLErrorDocument.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/lib/sql Column.java
+ ColumnAttribute.java ColumnData.java
+ ColumnHeader.java ExtensionError.java Row.java
+ RowSet.java SQLExtensionError.java
+ StreamableNode.java XConnectionPoolManager.java
+ XStatement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>First round of changes to port DOM mode to DTM Mode
+ Submitted by: John Gentilin mailto://johng@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Check if locator property is set before trying to use locator fields<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/trace PrintTraceListener.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Don't print locator message if locator is null<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformerHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In startDocument, run m_contentHandler.startDocument before you start the 
+thread.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Call wait for initial events before the the transform is started.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref CoroutineSAXParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Allow co_yield to be called after the parse has finished.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java
+ SQLErrorDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added setProperty and getSourceLocatorFor empty methods.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>07/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem reported by Carsten Ziegeler &lt;cziegeler@sundn.de&gt;. Using 
+ApplyXPath (or doing a transformation) with DOM input was resulting in an NPE 
+due to declareNamespaceInContext() being called before setting m_exptype which 
+is needed by declareNamespaceInContext().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformerHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add pauseForTransformThreadStartup. Call this in startDocument just
+ after starting the transform thread. This should get rid of any variability
+ with racing threads.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions
+ XSLProcessorContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem reported by jason heddings &lt;Jason.Heddings@Sun.COM&gt;.
+
+ "In v2.0.1, I was able to pass a Node to this function and have the node
+ be copied to the result tree (as expected). In the source code for
+ XSLProcessorContext, it appears that the only objects that can be sent
+ to the result tree are XObjects. Everything else is converted to a
+ String. So for instance, I can no longer create a ProcessingInstruction
+ and pass it to the result tree via this method since the PI is simply
+ converted to a String."<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToHTML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Application of patch submitted by Benjamin Riefenstahl 
+&lt;Benjamin.Riefenstahl@ision.net&gt;
+
+ Motivation: We are using Xalan to generate HTML pages. We have the
+ requirement to integrate code for ad banners. The ad server provider
+ has written the code to use with compatibility to NetScape 4 in mind.
+ The code uses the NetScape proprietory &lt;LAYER&gt; element and &lt;IFRAME&gt;
+ elements for other browsers. The SRC attributes of these elements
+ contain URLs with several URL parameters separated by '&amp;', as is the
+ common convention.
+
+ Problem: The code is integrated in our XSL stylesheets. In the
+ stylesheet the '&amp;' has to be written as the entity '&amp;amp;'. That's
+ ok. The problem is that in the output the '&amp;' is also written as
+ '&amp;amp;' which is not ok, because NetScape doesn't understand that.
+ OTOH the same URL is written with '&amp;' when used in an &lt;A&gt; element.
+
+ Solution: This goes down to a different handling of attribute values
+ in the class SerializeToHTML, depending on whether the attribute in
+ question is known to contain a URI or not. Xalan knows this for &lt;A&gt;
+ but not for &lt;LAYER&gt; and &lt;IFRAME&gt;. When I compare the list in
+ SerializeToHTML.java with the HTML specs, I find a couple of other
+ missing URI attributes in SerializeToHTML.java. When I add the
+ missing pieces, the generation works fine.
+
+ Patch: Here is the patch (diff -c) for xalan-j_2_2_D6. I also have
+ one for xalan-j_2_0_1 which is the version I actually tested this
+ with. Please let me know if this is insufficient or the patch is
+ wrong or if there is something else I can do to fix this problem.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>On code review of previous checkin from Gary P., we determined there
+ was a problem with the point at which type was declared a
+ DTM.NAMESPACE_NODE. So that part was moved back up (actuall
+ a bit higher than where it was before),
+ and the call to declareNamespaceInContext was moved a bit
+ further down.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Project Update
+ Submitted by: John Gentilin mailto://johng@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Project Update
+ Submitted by: John gentilin mailto://johng@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixup from previous check-in, defined new
+ functions.
+ Submitted by: John Gentilin mailto://johng@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Project Update<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>reduced Attribute's for testing<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>07/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor hack to catch an attribute value being null.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>07/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemNumber.java
+ java/src/org/apache/xalan/transformer Counter.java
+ CountersTable.java KeyRefIterator.java
+ java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
+ java/src/org/apache/xpath NodeSetDTM.java
+ java/src/org/apache/xpath/axes LocPathIterator.java
+ UnionPathIterator.java WalkingIteratorSorted.java
+ java/src/org/apache/xpath/objects XNodeSet.java
+ XRTreeFrag.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add new parameter to NodeSetDTM constructor. We need to have a DTMManager on 
+hand. Change code to use the new constructors.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>07/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>OOps! Back out this last change. Old code on my machine!!!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>07/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql SQLDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed a few bugs, almost there
+ Submitted by: John Gentilin mailto://johng@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref CoroutineManager.java
+ CoroutineSAXParser.java
+ CoroutineSAXParser_Xerces.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xml/dtm/ref IncrementalSAXSource.java
+ IncrementalSAXSource_Filter.java
+ IncrementalSAXSource_Xerces.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Starting to phase out Coroutine*Parser* in favor of IncrementalSAXSource*.
+ The latter simplifies the code, and should help us avoid some of the
+ confusion that can arise in using the older tools.
+
+ Most importantly, it greatly simplifies the calling sequences, by discarding
+ the "which file do you want to parse" and "do you want to parse any more
+ files" transactions. These now operate _only_ as filters, and only as single
+ -use (though in fact the Xerces-specific version is reusable, and we may
+ reintroduce that feature in the generic filtering version at a later date).
+
+ Note too that we have swept the CoroutineManager completely
+ under the covers of the filter's API. There's no particular reason to expose
+ that implementation detal to the outside world.
+
+ Still to be done: Rework the rest of Xalan to use the new code.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref CoroutineParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Starting to phase out Coroutine*Parser* in favor of IncrementalSAXSource*.
+ See comment in previous check-in; I just missed this one....<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMStringPool.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>doc.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>07/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>2.2.D7<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>07/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>2.2.D7<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>07/18/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xml/dtm/ref DTMBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Obsolete<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code (now deprecated).</td>
+</tr>
+</table>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D6</h3>
+     <p>
+<b>Important: Xerces has added a number of DOM level-3 methods to its DOM interfaces. The DOM level-3 proposal
+is currently a working draft (it is not yet a W3C recommendation), and Xalan does not support these new methods. 
+To run Xalan in the JDK 1.1.8 platform, you must put xalan.jar (with its DOM level-2 interfaces) in front of 
+xerces.jar on the system class path. If you want to rebuild Xalan (on JDK 1.1.8 or higher), you must put Xalan 
+in front of xerces.jar the system class path.</b>
+</p>
+
+     <p>This beta release includes the following non-XSLTC code changes:</p>     
+     <ul>
+       <li>Costin Manolache has slightly modified the CoRoutine stuff so that a you can compile and run everything but the CoRoutineXercesParser without having Xerces on the classpath.<br />
+<br />
+</li>
+       <li>Joseph Kesselman added chunked int array stuff to address our scaling problems that Mukund &amp; co. uncovered.  This was a fairly mechanical, but still substantial, change.  No bugs have yet been discovered that relate to this.  This is probably the most controversial change.<br />
+<br />
+</li>       
+       <li>The Process class now outputs incrementally if the output is standard out.  This is mostly for testing purposes, but it makes general sense.<br />
+<br />
+</li>
+       <li>Bug was fixed with setting the incremental flag in TransformerFactoryImpl.  Clearly the change was made but never tested.  Simply a missing 'else'.<br />
+<br />
+</li>
+       <li>Fix for Bugzilla Bug 2275, Xalan did not fire the right templates.  This was substantial and somewhat risky.  Xalan had several problems related to the last() function.  Fixes cover four axes files.<br />
+<br />
+</li>                     
+       <li>Change PrintTraceListener to output the file, as well as the line numbers.  This is really a feature change, but simple, and aids diagnosing problems with multi-part stylesheets.<br />
+<br />
+</li>       
+       <li>XPath fix: the XPath API wasn't working correctly due to a problem with with NodeSet/NodeIterator adapters.  This fix ended up interacting quite a bit with the #2275 fix.<br />
+<br />
+</li>
+       <li>Fix for the Norm Walsh bug posted 06/20/2001: iterators weren't always being cloned correctly from the variable value stack.  This fix is not without some risk, though we haven't seen any problems since Scott Boag made it.<br />
+<br />
+</li>
+       <li>David Bertoni added missing html element properties to SerializerToHTML.java.<br />
+<br />
+</li>
+       <li>Shance Curcuru modified TransformerFactoryImpl.setAttribute() to accept a String ("true" or "false") as well as a Boolean object to set the value of a Boolean attribute.<br />
+<br />
+</li>
+       <li>TransformerHandlerImpl was threading when incrementality is turned off. Scott Boag has fixed this bug.</li>       
+     </ul>
+     
+   <a name="dtm">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D2</h3>
+     <p>This release includes the following changes:</p>
+     <ul>
+       <li>Deprecation of the <a href="usagepatterns.html#compat">Xalan-Java 1 compatiblity API</a>
+</li>
+       <li>The DTM</li>
+       <li>Other optimization work</li>
+     </ul>
+     <p>The primary focus of the 2.2 Developer releases is incorporation of all our work over the past several months on the Document Table
+      Model (<a href="dtm.html">DTM</a>).</p>
+
+<p>As a result of the changes in *internal* api, you may encounter problems with extensions. We have done some bug fixing in support
+for extensions since 2.2.D1.  John Gentilin is working on fixing the SQL library extension,which currently is broken. Please report 
+any problems you find (see <a href="jira.html">bugs</a>).</p>
+
+<p>The DTM and related work provides faster performance and less accumulation of garbage... though it is an
+ongoing battle.  Brief summary:</p>
+<ul>
+<li>The DTM identifies nodes with 32-bit integer handles.
+The DTM has many features, including direct character dispatch to SAX2,
+native DTM iterators and "traversers", multiple document management, etc.<br />
+<br />
+</li>
+<li>Joe Kesselman's CoRoutine parsers, which are in a threaded SAX flavor
+and in a Xerces parseMore() flavor (no threads).  These do away with the
+"race" conditions that occured in the original code, and should make Xalan
+much more robust.<br />
+<br />
+</li>
+<li>*Much* more robust XPath itteration.  The "waiting" iterators of old are
+no more, and good riddance.  There is stil lots more we want to do with
+this mechanism.  (There is something here called MatchIterators, but it's
+not being used yet for various reasons.  We will be taking advantage of
+these down the line.)<br />
+<br />
+</li>
+<li>A fair amount of XObject creation reduction.  You can now get boolean,
+number, nodeset, and string values directly from an Expression, instead of
+going through an XObject.<br />
+<br />
+</li>
+<li>XMLString, which allows us to work with string objects that don't wrap
+Java's String object. These objects get their character data from an array or
+Fast String Buffer.<br />
+<br />
+</li>
+<li>Serializers now only do internal buffering if they know they are writing
+to a FileStream.<br />
+<br />
+</li>
+<li>The variable stack mechanism has been redisigned, so that it is no
+longer so interpretive, and we believe it is much more robust.<br />
+<br />
+</li>
+<li> Some small amount of stylesheet rewriting (but not yet redundent
+expression elimination), in particular to reduce full RTF creation and
+interpretation.</li>
+</ul>
+<p>Xalan-Java implements two DTM performance features that you can control with the TransformerFactory
+<a href="apidocs/javax/xml/transform/TransformerFactory.html#setAttribute(java.lang.String, java.lang.Object)">setAttribute()</a>
+method. See <a href="dtm.html#settings">DTM performance settings</a>
+</p>
+     
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.1.0</h3>
+     <p>This release includes a number of bug fixes to Xalan-Java and TrAX. 
+     We have also enhanced the ApplyXSLT servlet. It can now be set up to use a compiled Templates object to respond to multiple
+     client transformation requests involving the same stylesheet.</p>
+<p>Core source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>03/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor StylesheetHandler.java
+ java/src/org/apache/xpath Expression.java XPath.java
+ XPathContext.java
+ java/src/org/apache/xpath/compiler Compiler.java
+ XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Renamed "assert()" to "assertion()".
+
+ Assert can be a keyword, and brake the compilation.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>03/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer KeyWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Throw an error message if the key name in a key function was not defined<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Reworked "chunk growth" algorithm again. Growing mode not
+ yet adequately tested, but fixed-size mode (which is what Xalan
+ is currently using) is simpler code and shows improved performance.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>03/20/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Utility class to check your JVM environment for common problems<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>03/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added more .jar sizes to jarVersions listing<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>We've reworked the algorithm again. The fixed-chunk-size mode (initial
+ and max. chunk sizes equal) runs essentially unchanged, though with a
+ few cycles less overhead. The variable-chunk-size mode now uses a
+ recursive-encapsulation scheme, where the first chunk may itself be a
+ FastStringBuffer whose total length equals one chunk; every so often
+ we push the existing data down one level and restart with a larger
+ chunk size. The new scheme has been stress-tested and is apparently
+ working. At this writing, however, Xalan uses only the fixed-size
+ mode (initial size equals max size), and no effort has been made to
+ find the optimial values for the tuning parameters. It does appear
+ likely that the best values will vary with usage patterns, but we hope
+ to find a good compromise.
+
+ I'll probably be putting this aside for a while to work on other things.
+ If someone wants to experiment with varying the block sizes and
+ how frequently they grow, and suggest good performance/memory
+ tradeoff points, go for it!<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor tweak to the javadoc.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>reset() versus setLength(0).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemForEach.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bug# 1116, getMatchedTemplate throws ClassCastException.
+ Don't push template unless it is a xsl:template.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates OutputProperties.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Patches submitted by Patrick Moore &lt;patrickm@rioport.com&gt;
+ on 03/15/2001 01:25 PM:
+
+ This proposed change does a number of things:
+
+ 1. Problem: HTML output method does not uses XML output properties as
+ default.
+
+ In both org/apache/xalan/templates/output_html.properties and in the java
+ doc for
+ org/apache/xalan/templates/OutputProperties#getDefaultMethodProperties(Strin
+ g) It specifically states that all OutputProperties use the
+ output_xml.properties as a base. In the code this is not true for html. This
+ is now changed to match the comments
+
+ 2. Problem: unclear IOException.
+
+ If there was a problem loading the XML properties file. The wrapped
+ exception now will say which file was trying to be loaded. If the file did
+ not exist I was getting a very strange "Stream closed" IOException message.
+
+ 3. Problem: the streams were not closed after reading the property file.
+
+ Fixed.
+
+ 4. Problem: the double-check locking mechanism does not work in Java (see
+ bug #919)
+
+ &lt;http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-toolbox.html&gt;
+
+ 5. QUESTION: now if there is a default properties (i.e.
+ output_xml.properties has been loaded) but the expected properties file does
+ not exist a error message will be printed to System.err and the processing
+ will continuing using just the default properties (output_xml.properties) I
+ felt that this is the best behavior.
+
+ (comment by sboag: I think it's better to
+ throw a runtime exception in this case.
+ but we can discuss this over time. For now
+ the patch was modified to do the runtime exception).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLTSchema.java
+ java/src/org/apache/xalan/stree SourceTreeHandler.java
+ java/src/org/apache/xalan/templates ElemForEach.java
+ ElemLiteralResult.java
+ java/src/org/apache/xalan/transformer QueuedSAXEvent.java
+ ResultTreeHandler.java TransformerImpl.java
+ java/src/org/apache/xml/utils BoolStack.java
+ java/src/org/apache/xpath XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>This check-in contains a couple things that overlapped on my
+ system, so I'm checking them in together.
+ 1) Unfinished (in progress) implementation of TransformSnapshot mechanism,
+ which will hopefully allow a result ContentHandler to take a snapshot
+ at a given point, and the restart execution from that point at some
+ later time. For tooling support.
+ 2) Check to make sure SourceTreeHandler isn't being entered twice,
+ which is related to the cocoon bug from a couple of weeks ago. This
+ will just help diagnose such a problem in the future.
+ 3) Removed the error stack trace print from postExceptionFromThread.
+ 4) Report exception in SourceTreeHandler#endDocument after
+ the join, if we can determine that the posted exception won't be
+ caught elsewhere.
+ 5) removed some catches that simply rethrew the exception
+ (thanks to Patrick Moore &lt;patrickm@rioport.com&gt;).
+ See my note on 3/27/2001 to Patrick for more info
+ on the last two.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/27/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/transformer TransformSnapshot.java
+ TransformSnapshotImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Unfinished (in progress) implementation of TransformSnapshot mechanism,
+ which will hopefully allow a result ContentHandler to take a snapshot
+ at a given point, and the restart execution from that point at some
+ later time. For tooling support.on the last two.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>03/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ ProcessorStylesheetElement.java
+ ProcessorTemplateElem.java StylesheetHandler.java
+ XSLTElementDef.java XSLTElementProcessor.java
+ XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Try to catch element order and required element errors during stylesheet 
+object creation. This new code adds an order and a required field to 
+XSLElementDef objects where it is applicable.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>04/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bugzilla bug 1170. If we're trying an xsl:apply-imports at the top level 
+(ie there are no
+ imported stylesheets), we need to indicate that there is no matching template 
+and prevent and infinite recursion by using the built-in template.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>04/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions MethodResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Code cleanup submitted by Art Welch &lt;art_w@EASTPOINT.COM&gt;.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils TreeWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add locator support to TreeWalker<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>04/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ QueuedStartElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Small fix made for getCurrentNode.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>04/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils TreeWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Commented out extra call to getData()... this could be a big performance
+ improvement for some stylesheets.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformSnapshotImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Additional support for tooling. Allow tools to take a snapshot of context and 
+restart execution at that point.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ XSLTElementProcessor.java
+ java/src/org/apache/xalan/res XSLTErrorResources.java
+ java/src/org/apache/xalan/transformer
+ TransformSnapshotImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Misc stuff left out from previous check in<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/functions FuncCurrent.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Don't assume that the object returned by getSubContextList() is a 
+PredicatedNodeTest object.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor ProcessorInclude.java
+ TransformerFactoryImpl.java
+ java/src/org/apache/xalan/transformer
+ TransformerIdentityImpl.java
+ java/src/org/apache/xml/utils TreeWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Create new TreeWalker constructor that takes a systemId parameter. Change 
+TreeWalker to change fields in the locator and not set it for each node.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>04/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix Bugzilla bug:
+ PR: 1106
+ Submitted by: elharo@metalab.unc.edu<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>04/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql QueryParameter.java
+ SQLExtensionError.java XConnection.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor Javadoc updates (add @author name, remove declared but unthrown @throws)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>04/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql Column.java
+ ColumnAttribute.java ColumnData.java
+ ColumnHeader.java Row.java RowSet.java
+ StreamableNode.java XConnection.java
+ XStatement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Support for Streamable Mode- John Gentilin<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>04/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/objects XObject.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bugzilla bug 1015 
+&lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1015&gt;.
+ Fix prevents null pointer exceptions when null non-XSLT arguments are
+ passed to an extension function.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>04/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions MethodResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bugzilla bug 1015 
+&lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1015&gt;.
+ Fix prevents null pointer exceptions when null non-XSLT arguments are
+ passed to an extension function.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix copy/paste error. Want to use TransformerFactoryImpl's class loader.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformSnapshotImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Keep a copy of current contextNodeList is there is one<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>04/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt EnvironmentCheck.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added checkDirForJars() which checks java.ext.dirs as well now<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>04/26/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/javax/xml/transform package.html
+ java/src/javax/xml/transform/dom package.html
+ java/src/javax/xml/transform/sax package.html
+ java/src/javax/xml/transform/stream package.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add package.html for each package in javax.xml.transform.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>04/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bug 1496 &lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1496&gt; 
+where xsl:param statements were not being reset properly if the TransformerImpl 
+was reused.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>04/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/stree DocImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for #1561<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>04/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/functions FuncExtFunction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bugzilla bug 1373 
+&lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1373&gt;.
+ Added code to support return of Integer or Long by an external function.
+ Code was contributed by Patrick Moore &lt;patmoore@ieee.org&gt;.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>05/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/javax/xml/transform/stream StreamResult.java
+ StreamSource.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Small fix to avoid file:////path that may fail on some JDK.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>05/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql package.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Preliminary updates for John G's work.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>05/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Check for a null contextNodeList before returning its clone<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>05/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/stree StreeDOMBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Set the element's level correctly, before we process attributes.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformerIdentityImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bugzilla 1648 
+(http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1648).
+ TransformerIdentityImpl was improperly using an old LexicalHandler when 
+invoked for a second transform.
+ This bug only affects identity transforms with StreamResults.
+ Many thanks to John Keyes &lt;johnkeyes@yahoo.com&gt; for reporting this bug.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>05/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated version number to 2.1.0<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>05/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated version number to 2.1.0<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/functions FuncExtFunction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Change submitted by Patrick Moore &lt;patmoore@ieee.org&gt; as part of bugzilla 
+1373 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1373).
+ Return value from extension function is now generalized so that all 
+derivatives of Number are now properly handled.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>05/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLTSchema.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Set the correct order of xsl:include elements<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>johng@apache.org<b>
+<i> on </i>
+</b>05/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql Column.java
+ ColumnAttribute.java ColumnData.java
+ ColumnHeader.java ConnectionPool.java
+ DefaultConnectionPool.java ExtensionError.java
+ PooledConnection.java QueryParameter.java Row.java
+ RowSet.java SQLExtensionError.java
+ StreamableNode.java XConnection.java
+ XConnectionPoolManager.java XStatement.java
+ package.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updates Javadocs
+ Submitted by:John Gentilin mailto://johnglinux@eyecatching.com<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Correct typo introduced in revision 1.30 causing problems with transforms on 
+Unix platforms.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemChoose.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Correct bugzilla bug 1748 
+&lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1748&gt;.
+ When evaluating xsl:when, the xsl:choose element was used to resolve 
+namespace prefixes instead of
+ the xsl:when element itself. This caused namespace prefixes defined on the 
+xsl:when to be ignored.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>05/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/javax/xml/parsers DocumentBuilderFactory.java
+ SAXParserFactory.java
+ java/src/javax/xml/transform TransformerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Use the context class loader if available.
+
+ The implementation is based on ExtensionHandler, and it's needed in order
+ to work in certain environments ( like tomcat ).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>05/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions ExtensionHandler.java
+ ExtensionHandlerGeneral.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Make getClassForName a public method. There are few other places in xalan
+ where Class.forName is used, and this can create problems in some cases
+ where the Thread.getContextClassLoader should be used.
+
+ getClassForName uses introspection to call getContextClassLoader
+ ( so it works in JDK1.1 ).
+
+ In ExtensionHandlerGeneral, use the thread loader to find BSF ( it may be
+ possible that xalan is installed in CLASSPATH, but BSF is in a webapp ).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>05/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ CompilingStylesheetHandler.java
+ java/src/org/apache/xalan/serialize SerializerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>2 more instances where Class.forName was used.
+
+ Use the method in ExtensionHandler for consistency ( we could move it in
+ org.apache.xml.utils, but for now it's easier to just use it as it is )<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>05/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/stree SourceTreeHandler.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>This is the "thread pooling hook".
+
+ It slightly changes the API used to create and wait for the transform thread.
+ Instead of using threadCreate() and Thread.start() that creates a new thread
+ and thread.join() that waits for a thread to end, we now use a 
+ThreadControler
+ class that has the equivalent methods:
+ - run( Runnable ) - executes a task in a thread. The default implementation
+ is identical with what we had, using new Thread() and start()
+ - waitTread() - waits for a task to end. The default impl. is identical with
+ the previous code, using thread.join().
+
+ Someone wanting to use a thread pool for xalan will have to extend
+ the ThreadControler and override the 2 methods, then call setThreadController.
+
+ Xalan itself doesn't implement a thread pool right now ( for mosts uses it's
+ not even needed - if you just do few transforms for example ), instead
+ a server that runs xalan could plug it's own thread pool.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>Gary L Peskin &lt;garyp@firstech.com&gt;<b>
+<i> on </i>
+</b>05/15/2001<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+&gt; Use the context class loader if available.
+&gt;
+&gt; The implementation is based on ExtensionHandler, and it's needed in order
+&gt; to work in certain environments ( like tomcat ).
+&gt;
+&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>05/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ExtensionError.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed "conflict" in javadoc comments.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>05/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql package.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Editing pass.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>05/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc TransletOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug # 1406 fixed, omit xml header implemented<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>05/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update Javadoc and remove commented out reference to properties file
+ PR:Bugzilla1627<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bug 1330 &lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1330&gt;.
+ setContentHandler failed to also reset m_lexicalHandler if the ContentHandler
+ was also a LexicalHandler. This caused the old LexicalHandler to be used 
+which
+ was pointing to a previous result tree.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Resolve bug 1762 &lt;http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1762&gt;.
+ TransformerFactoryImpl's URIResolver was not propagated to created 
+Transformers.
+ Modified code to propagate.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>05/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils TreeWalker.java
+ SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Catch SecurityException whenever accessing System.getProperty("user.dir");
+ minor javadoc update<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>05/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemCopy.java
+ ElemValueOf.java
+ java/src/org/apache/xalan/transformer TreeWalker2Result.java
+ java/src/org/apache/xpath/functions FuncLast.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bugs reported by the Eclipse folks for TransformState, where
+ some operations (xsl:value-of, xsl-copy) were not pushing the
+ current node on the current node stack. Addresses
+ http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1524.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>05/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates OutputProperties.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Catch SecurityException as needed
+ PR: Bugzilla1258<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates OutputProperties.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to the following bug reported by dims@yahoo.com:
+
+ loadPropertiesFile method in org\apache\xalan\templates\OutputProperties.java 
+does not fall back
+ to the Thread Context Class Loader to load properties files like 
+output_xml.properties etc. This
+ is causing problems in ServletExec_3_1+C2.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates OutputProperties.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Correct implementation of ContextClassLoader to support case where properties 
+file is to be loaded by a different ClassLoader than the OutputProperties 
+class. Thanks to Davanum Srinivas &lt;dims@yahoo.com&gt; for this code and for 
+reporting this bug.
+ loadPropertiesFile should eventually be moved into a thread-specific class.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>05/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ TransformerFactoryImpl.java
+ java/src/org/apache/xalan/serialize CharInfo.java
+ java/src/org/apache/xpath/functions FuncSystemProperty.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modify getResourceAsStream calls to use the contextClassLoader, if available.
+ This is a temporary fix until we can centralize this function.<br />
+<br />
+</li>
+</ul>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">This release includes no updates of the compatibility source code.</td>
+</tr>
+</table>
+ 
+ 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.0.1</h3>
+<p>This release includes a number of bug fixes to the Xalan-Java and TrAX core and Xalan-Java 1 compability API. We have also</p>
+<ul>
+  <li>Entered all known Xalan-Java 2 <a href="jira.html">bugs</a> in the Apache Bugzilla database<br />
+<br />
+</li>
+  <li>Added support for using custom URIResolver, EntityResolver, and ContentHandler implementations with the <a href="commandline.html">command-line utility</a>
+<br />
+<br />
+</li> 
+  <li>Upgraded from Ant 1.2 to Ant 1.3 for our <a href="builds.html">builds</a> (the new ant.jar is in the bin directory).</li>
+</ul>
+<p>Core source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes ChildWalkerMultiStep.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bug reported by "Chris P. McCabe" &lt;chris_mccabe@choicehotels.com&gt;
+ 02/06/2001 06:55 PM.
+ Defensive fix for if the last used walker is null, then don't check to
+ see if it is a fast walker! Without this, a null pointer exception is
+ very possible.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixes for exceptions being thrown that weren't being passed through
+ the error listener.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes FollowingWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bug reported by Dave Haffner &lt;dave.haffner@xmls.com&gt;
+ 02/06/2001 04:03 AM
+ In parentNode(), don't screen out nextAncestor, since the parent
+ is never actually returned. This sets things up correctly for firstChild
+ and nextSibling.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes PrecedingWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bug reported by Dave Haffner &lt;dave.haffner@xmls.com&gt;
+ 02/06/2001 04:03 AM
+ In nextSibling(), don't return null if isAncestorOfRootContext, instead
+ do next.getFirstChild().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath SourceTreeManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bug reported by anders.domeij@uc.se
+ 02/07/2001 09:35 AM
+ removed extra bogus TransformerException decl in resolveURI<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/stree SourceTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix bug reported by Jason Harrop &lt;jharrop@bigpond.net.au&gt;
+ 02/07/2001 08:12 PM
+ Don't process comment or whitespace events if inside a startDTD/endDTD
+ event.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/axes WalkerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In indirect response to bug posted by "Thee Boon Hoo" &lt;theebh@newstakes.com&gt;
+ 02/07/2001 09:37 PM
+
+ "//table[1]" patterns would give one node
+ when they should have given 2, when applied to Boon Hoo's
+ source.
+ "//table[1]" is equivelent to
+ "/descendant-or-self::node()/table[1]",
+ and so must return the first table child
+ of each table-inst element.
+
+ An optimization was optimizing this to
+ "/descendant-or-self::table, which is
+ fine as long as indexing isn't used. Since
+ we can not tell until runtime if indexing
+ is being used, we have to turn of this
+ optimization for all predicated "//foo[xx]"
+ patterns.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor StylesheetPIHandler.java
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Patch for Dmitri IIyin to use the specified URIResolver.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemNumber.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Number Expression should be evaluated then rounded up.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Create a document fragment for the output node, for -flavor d2d.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler Compiler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Better error message when quo is used.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemCallTemplate.java
+ ElemChoose.java ElemCopy.java ElemFallback.java
+ ElemIf.java ElemLiteralResult.java
+ ElemTemplate.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Remove extra method/call to TransformerImpl.executeChildTemplates()<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/patterns NodeTest.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Return an empty string instead of null from getLocalName() when the
+ nodetest does not have a name. Encountered with the SQL extension,
+ in response to bug reported by "Michael Kay" &lt;mhkay@iclway.co.uk&gt;,
+ 02/08/2001 08:57 AM.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ColumnData.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>In getData() return an empty string instead of null if there is
+ no data to be obtained.
+ In response to bug reported by "Michael Kay" &lt;mhkay@iclway.co.uk&gt;,
+ 02/08/2001 08:57 AM.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>02/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/extensions MethodResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Correct ConversionInfo array for Node-Set and RTF. Remove DocumentFragment 
+from RTF and replace with NodeList. Remove duplicate Boolean from both. Fix 
+Boolean conversion to make java.lang.Boolean higher than string.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ColumnHeader.java
+ RowSet.java XStatement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Use null nodetest to mean the same as "node()". This fixes a bug reported
+ by "Voytenko, Dimitry" &lt;DVoytenko@SECTORBASE.COM&gt;
+ where &lt;xsl:copy-of select="sql:query(...)"/&gt;
+ crashes with NullPointerException, i.e.
+ there are cases where we really don't want
+ to set the NodeTest.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/compiler XPathParser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Check for null token before checking if it is a letter<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformerIdentityImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix made for bug reported by "Glencross, Christian" 
+&lt;Christian.Glencross@gs.com&gt;
+ on 02/16/2001 10:18 AM.
+ Xerces 1.2.3 SAX parser calls
+ handler.setDocumentLocator() before handler.startDocument().
+ TransformerIdentityImpl.m_resultContentHandler isn't initialised until
+ TransformerIdentityImpl.startDocument() is called.
+ Added lazy construction of result handler
+ in setDocumentLocator, in addition to
+ startDocument.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>02/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib Extensions.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Correct implementation of string value of a node.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>02/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql Column.java
+ ColumnAttribute.java ColumnData.java
+ ColumnHeader.java Row.java RowSet.java
+ StreamableNode.java XConnection.java
+ XStatement.java package.html<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added experimental usage metatag to all classes in this package,
+ and an explanatory note to package.html.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/stree ElementImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bug fix attributed to Norman Walsh &lt;ndw@nwalsh.com&gt;, on
+ 02/20/2001 09:50 AM. if the attribute 'name' doesn't occur in the AttList, 
+the
+ result of getIndex(name) is -1, but
+ getChildAttribute() would incorrectly
+ return the first attribute. Fix returns
+ null if index &lt; 0.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToXML.java
+ java/src/org/apache/xalan/transformer
+ TransformerIdentityImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implement DeclHandler for identity transforms<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>02/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bug originally reported by Daryl Beattie &lt;DarylB@screamingmedia.com&gt;
+ on 02/14/2001 04:16 PM. A hang was occuring inside the use
+ of a Result Tree Fragment. When the result tree fragement was
+ being created, the Redirect extension was being called, which
+ called createResultContentHandler which set the ContentHandler
+ in the Transformer, but not in the ResultTreeHandler. Then, Redirect
+ called Transformer#executeChildTemplates(
+ ElemTemplateElement elem, Node sourceNode, QName mode, 
+ContentHandler handler)
+ which saves the reference to the original content handler in
+ the transformer, and then sets the new one by calling setContentHandler,
+ which sets the ContentHandler in the ResultTreeHandler as well
+ as the Transformer. When it tried to restore the old ContentHandler,
+ it restored the value in the ResultTreeHandler to a Serializer, instead
+ of the correct ContentHandler. When transformToRTF then called
+ endDocument on it's resultTreeFragment, the event was sent
+ to the Serializer instead of the SourceTreeHandler, and thus the
+ isComplete flag was not set, and thus the hang. (whew!)
+ The fix is in executeChildTemplates save the value of the
+ resultTreeHandler's contentHandler as well as Transformer's
+ content handler, and restore them both. A more architectual fix
+ could be made, but not without high risk, so I think this is the best
+ and safest way to fix it.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>02/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTInfo.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed version to 2.0.1<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>02/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor XSLProcessorVersion.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed version to 2.0.1<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>02/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update text of error messages
+ Submitted by: Andreas Zehnpfund<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>02/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update printArgOptions() with better text and to better reflect actual
+ options that are currently supported; catch missing -IN argument<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>jkesselm@apache.org<b>
+<i> on </i>
+</b>03/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/client XSLTProcessorApplet.java
+ java/src/org/apache/xalan/processor StylesheetHandler.java
+ TransformerFactoryImpl.java
+ java/src/org/apache/xalan/stree DocImpl.java
+ StreeDOMBuilder.java TextImpl.java
+ java/src/org/apache/xalan/templates OutputProperties.java
+ java/src/org/apache/xalan/xslt Process.java
+ java/src/org/apache/xml/utils FastStringBuffer.java
+ java/src/trax trax.properties<br />
+<b>
+<i>Committer's log entry: </i>
+</b>New approach to FastStringBuffer, and changes needed to support it.
+ We still need to do some serious work on both the initial values of the
+ tuning parameters and the heuristics driving the "chunk growth" algorithms.
+ Currently set for fixed-sized chunks of 8Kch in main tree, .5Kch in RTF.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemElement.java
+ ElemForEach.java ElemLiteralResult.java
+ java/src/org/apache/xalan/transformer
+ ClonerToResultTree.java QueuedSAXEvent.java
+ QueuedStartDocument.java QueuedStartElement.java
+ ResultTreeHandler.java TransformerImpl.java
+ TreeWalker2Result.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for http://nagoya.apache.org/bugzilla/show_bug.cgi?id=741.
+
+ 1) ResultTreeHandler now implements the TransformState interface.
+ 2) Queued state such as the current node and the current template is stored 
+as part of QueuedStartElement. Storage will only occur if the ContentHandler 
+implements TransformClient.
+ 3) When state is requested (for instance TransformState#getCurrentElement()), 
+if the queued element is null or not pending (for instance, in a characters 
+event), it will get the state from the transformer, otherwise it will get the 
+state from the queued element.
+
+ Other fixes were attempted for this problem, including trying to
+ get rid of queueing altogether, and flushing a bit earlier before
+ the state was pushed on the various stacks, but both of
+ these had show-stopping issues (see discussions
+ on xalan-dev).
+
+ Note that for the moment the ContextNodeList is node
+ cloned as it needs to be in order for
+ TransformState#getContextNodeList.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>03/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemParam.java
+ java/src/org/apache/xpath Arg.java VariableStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>The field Arg.isParamVar was attempting to serve two functions: to indicate 
+variable Frame entries which are not currently activated and to indicate Frames 
+containing parameters passed with xsl:with-param. When processing was finished 
+for a node in a node-set, the isParamVar flag was turned on to indicate the 
+Frame slot was available. Unfortunately, this also indicated that the item was 
+passed as a parameter which it wasn't. This fix changes isParamVar into to 
+fields, isAvailable which indicates that the slot is available and 
+isFromWithParam indicating the Frame slot came from an xsl:with-param or a 
+top-level parameter passed in via the tranformerImpl.setParameter() API.
+ I have tested this change against the conformance suite and had no 
+regression. I've also submitted a test case which fails on the existing 
+codebase but works okay after this fix.
+ It is possible that I've missed something with regard to the API setParameter 
+calls but we can fix those if problems are reported.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>03/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils FastStringBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Correct operation when length of content to be appended is zero.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>03/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToXML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix closing out doctype declaration<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>03/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Change SystemIdResolver to default to user.dir if the base URI is null<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>03/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xpath VariableStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Parameters set with setParameter were available to stylesheet as variable 
+references ($myParam) even though there was no xsl:param element to receive it.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>03/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer
+ TransformerIdentityImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Check if there is a DeclHandler before calling it.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils WrappedRuntimeException.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Patch attributed to Patrick Moore &lt;patrickm@rioport.com&gt; on 03/09/2001.
+ Adds another constructor to pass in the error message.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemAttribute.java
+ ElemElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Checkin addresses http://nagoya.apache.org/bugzilla/show_bug.cgi?id=923.
+ elemAttribute now derives from elemElement so the basic name resolution
+ code can be shared. Breaks attribset24 test, but I think the newer
+ behavior is better. New virtual methods overloaded by elemAttribute are
+ constructNode, resolvePrefix, and validateNodeName. Also, in the
+ elemAttribute#execute method, checks are made to make sure an
+ element is pending.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils SystemIDResolver.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added getAbsoluteURI(String url), and merge
+ with Myriam's changes.
+ Part of fix for problem found when
+ investigating http://nagoya.apache.org/bugzilla/show_bug.cgi?id=906.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Call getAbsoluteURI(String url) for the source URL.
+ Fix for problem found when
+ investigating http://nagoya.apache.org/bugzilla/show_bug.cgi?id=906.
+ This tries to force us always having an absolute URL in the processing
+ stack as the base URL, which should be OK, I hope.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Call getAbsoluteURI(String url) for the source URL.
+ Fix for problem found when
+ investigating http://nagoya.apache.org/bugzilla/show_bug.cgi?id=906.
+ This tries to force us always having an absolute URL in the processing
+ stack as the base URL, which should be OK, I hope.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/transformer QueuedEvents.java
+ QueuedStartElement.java ResultTreeHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>The user for http://nagoya.apache.org/bugzilla/show_bug.cgi?id=741 reported
+ problems on testing, so these changes are a re-fix. He tested and
+ everything seems OK now. There actually may be a slight performance
+ improvement involved here.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize SerializerToHTML.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Applied patches from dmitri.ilyin@memiq.com (Dmitri Ilyin)
+ from http://nagoya.apache.org/bugzilla/show_bug.cgi?id=705.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath XPathAPI.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Applied patch submitted by nboyd@atg.com (Norris Boyd)
+ at http://nagoya.apache.org/bugzilla/show_bug.cgi?id=702.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/serialize Encodings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Applied patch submitted by havardw@underdusken.no (H嶡rd Wigtil).
+ Also added "XXX-X" variants for all "XXX_X" java encoding names.
+ I'm not totally confident that this is the right thing to do, but I can't
+ see that it will hurt, except to make the table a bit larger. I
+ would prefer to be safe and make sure we handle the encoding.
+ See my comments in http://nagoya.apache.org/bugzilla/show_bug.cgi?id=718.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates ElemTemplateElement.java
+ StylesheetRoot.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor changes to better bottleneck throwing of Runtime exceptions
+ during processing.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Catch all exceptions thrown when processing stylesheet, and send
+ them to the error listener. There's probably some danger of having
+ the same error sent to the error listener multiple times, but better too
+ many reports, than none, I guess.
+ This addresses http://nagoya.apache.org/bugzilla/show_bug.cgi?id=906.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql XConnection.java
+ XStatement.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/lib/sql ConnectionPool.java
+ DefaultConnectionPool.java ExtensionError.java
+ PooledConnection.java QueryParameter.java
+ SQLExtensionError.java XConnectionPoolManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>These are John Gentilin &lt;johnglinux@eyecatching.com&gt;
+ patches for connection pooling and parameterized
+ queries. These should be considered to be unstable
+ right now, as we are still working on some things.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor ProcessorInclude.java
+ TransformerFactoryImpl.java
+ java/src/org/apache/xalan/serialize SerializerToXML.java
+ java/src/org/apache/xalan/stree StreeDOMHelper.java
+ java/src/org/apache/xalan/transformer ResultTreeHandler.java
+ TransformerIdentityImpl.java TreeWalker2Result.java
+ java/src/org/apache/xml/utils AttList.java TreeWalker.java
+ java/src/org/apache/xpath DOM2Helper.java XPathContext.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>The DOM2Helper#isNodeAfter(Node node1, Node node2) method
+ has been fixed so that it no longer does the try/catch thing if one
+ of the nodes doesn't implement DOMOrder, but instead does an
+ instanceof test. In StreeDOMHelper, it overloads this method and
+ *does* do the try/catch business, since almost always both nodes
+ will implement DOMOrder in this case, and this will be faster than
+ an instanceof test. Also, in various classes, I did some stuff to try
+ and make sure that a DOM2Helper wasn't being created and used
+ when a StreeDOMHelper is needed.
+
+ This addresses http://nagoya.apache.org/bugzilla/show_bug.cgi?id=800
+ and should give a good performance fix for foreign DOM processing.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath/patterns NodeTest.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Xerces at some point decided to use "" instead
+ of null for null namespaces. There has been a
+ discussion between Gary Peskin in
+ Joe Kessleman on xalan-dev about this,
+ but I hadn't been fully keeping up the the
+ thread that well, and missed it's relation to
+ this problem. I include some of the discussion
+ at the end of this note. I made Xalan be able to
+ compare a "" namespace to null for now, until
+ we get this resolved.
+
+ The gist of the discussion on xalan-dev regarding this is:
+
+ &gt;&gt;1. Declare the Xerces-J support of schemas to have a bug and ask that
+ &gt;&gt;Xerces be corrected to always use a null namespace URI to indicate that
+ &gt;&gt;there is no default namespace. Even if the Xerces people change this
+ &gt;&gt;behavior, is this correct?
+ &gt;
+ &gt; Yes. If your description of the problem is accurate (you should probably
+ &gt; submit a more detailed case so it can be reproduced in the lab), this is a
+ &gt; parser/DOM-builder bug.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>03/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ExtensionError.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed ( commented out ) dump() method and the imports in ExtensionError.
+
+ So far the method doesn't seem to be used ( no warning in the compile ).
+
+ The problem is that this method is breaking the build with crimson ( since
+ it uses xerces-specific classes ). It is possible to implement it on top
+ of the serialization classes that are part of xalan - if someone needs the
+ method I'll try to port it.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils TreeWalker.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added back in the TreeWalker(ContentHandler contentHandler)
+ constructor, because I'm worried I'll break more dependent code.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>03/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/res XSLTErrorResources.java
+ java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implement new arguments for the command line interface: URIResolver, 
+EntityResolver and ContentHandler<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>03/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/templates FuncFormatNumb.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix error message to say that 2 or 3 arguments are required.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>03/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/processor ProcessorLRE.java
+ java/src/org/apache/xalan/res XSLTErrorResources.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Better error message for missing or incorrect XSLT namespace declaration in a 
+stylesheet<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>garyp@apache.org<b>
+<i> on </i>
+</b>03/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib Redirect.java
+ java/src/org/apache/xalan/transformer TransformerImpl.java
+ java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Remember the Result that was used to trigger the transform. Access that 
+result from the Redirect extension to make file references in Redirect relative 
+to the original result URI.
+ If this is not available, references are relative to the source URI.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xpath VariableStack.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added protection for null pointer exception that I discovered when
+ running some Cocoon tests. Since I've never seen this before,
+ I assume this is related to the changes that Gary made, but am
+ unsure as it's 4:00 in the morning and I'm too tired to look into it deeply.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>03/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Remove check for missing -IN arg; there are a number of use
+ cases for calling Process.main without an XML document<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>costin@apache.org<b>
+<i> on </i>
+</b>03/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xslt Process.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A (last ? ) place where XMLReaderFactory was used without
+ trying jaxp first. I used the same code that is used in all other
+ places in xalan.
+
+ With this change, the parser defined in XSLTInfo.properties will be used
+ only if jaxp is not available.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>03/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xml/utils StringVector.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added missing @serial Javadoc tags.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/lib/sql ConnectionPool.java
+                        DefaultConnectionPool.java ExtensionError.java
+                        SQLExtensionError.java XConnection.java
+                        XConnectionPoolManager.java XStatement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Update from John Gentilin &lt;johnglinux@eyecatching.com&gt; to
+  fix connection cleanup.<br />
+<br />
+</li>
+</ul>
+<p>Compatibility source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt XSLTInputSource.java
+ XSLTResultTarget.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implement some more methods for compatibility<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>02/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt XSLTInputSource.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed javadoc for api that was just added back.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>02/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt XSLTResultTarget.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed javadoc for api that was just added back.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt XSLTEngineImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem with calling the processor with a liaison<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt XSLTEngineImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem where source file was being parsed more than once and if using an 
+input stream, we would get a read error<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt XSLTEngineImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Set system id in stylesheet handler<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt XSLTInputSource.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Call local setSystemId.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt XSLTEngineImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix problem with processing an input source created from a reader with no 
+systemId
+ Fix problem with reading an input source file twice if it has a PI<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>02/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xslt StylesheetRoot.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add getOutputMethod API.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>dleslie@apache.org<b>
+<i> on </i>
+</b>03/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xpath/xml
+ XMLParserLiaisonDefault.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Put in Apache copyright.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>sboag@apache.org<b>
+<i> on </i>
+</b>03/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/compat_src/org/apache/xalan/xpath/xml TreeWalker.java
+ java/compat_src/org/apache/xalan/xslt XSLTEngineImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Made changes for change to API for XalanJ2 TreeWalker, which
+ now requires that the DOM helper be created by the caller.</li>
+ </ul>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java version 2.0.0</h3>
+<p>Release 2.0 includes several bug fixes to the Xalan-Java and TrAX core and to the Xalan-Java 1 compatibility API. We also updated bsf.jar to the <a href="http://jakarta.apache.org/bsf/index.html">Bean Scripting Framework (BSF)</a> release candidate 2.2, which fixes a bug running JPython extensions.</p>
+<p>
+<b>Core bug fixes:</b>
+</p>
+<ul>
+  <li>A threading problem showed up when using multiple processors. We fixed it by using a separate XPathContext object to do whitespace node
+   matches (xsl:strip-space).<br />
+<br />
+</li>
+  <li>Fixed a bug running Norm Walsh's DocBook stylesheets by not setting the variable stack position if the FilterExprWalker is not owned by a
+  top-level NodeIterator.<br />
+<br />
+</li>
+  <li>Fixed a problem with null namespace being passed from xsl:element. This bug also surfaced while processing DocBook
+   stylesheets.<br />
+<br />
+</li>
+  <li>In the interest of stability, we now treat "unknown error in XPath" as a fatal error.<br />
+<br />
+</li>
+  <li>Added support in stylesheet processing instructions for "text/xml" and "application/xml+xslt" mime types.<br />
+<br />
+</li>
+  <li>Fixed tokenizing of stylesheet processing instructions to allow parameters to be passed to server in href attributes.<br />
+<br />
+</li>
+  <li>Fixed a bug passing Transformer creation error messages to ErrorListener when an ErrorListener has been set on
+   TransformerFactory.<br />
+<br />
+</li>
+  <li>When using an Exception to instantiate a FactoryConfigurationError (extends Error), we now propagate the Exception message to 
+  super().<br />
+<br />
+</li>
+  <li>Added defensive code to ElemTemplateElement for handling a null URI.<br />
+<br />
+</li>
+  <li>When using an Exception to instantiate a TransformerException (extends Exception), we now propagate the Exception message to super() 
+  rather than a generic message.<br />
+<br />
+</li>
+  <li>Fixed a bug (the generation of an unwanted entity reference) performing the identity transformation 
+  (see <a href="usagepatterns.html#serialize">Serializing output</a>) with an XML document containing a DOCTYPE
+   declaration.<br />
+<br />
+</li>
+   <li>Message manager modified so that the SourceLocator must always be passed in,
+  which will make a major difference in getting line number information.<br />
+<br />
+</li> 
+  <li>xsl:element's handling of namespace attribute and prefix in
+  name attribute changed so that it no longer manufactures prefixes...
+  it always tries its best to match the prefix entered.<br />
+<br />
+</li>  
+  <li>Bug fixed with namespace contexts in the stylesheet processor.
+  The bug could cause &lt;a xmlns:a="x"&gt;&lt;b&gt; to produce &lt;a xmlns:a="x"&gt;&lt;b xmlns:a="x"&gt;.<br />
+<br />
+</li>  
+  <li>Modified processing of xsl:message to enhance it as a debugging aid. Line numbers are now output with each
+  message. If the terminate attribute is true (the default is false) the message is sent to the console, and an exception is thrown with the
+  message "Stylesheet directed termination".<br />
+<br />
+</li>
+  <li>In TransformerException, check that the cause != null when checking for a contained exception.<br />
+<br />
+</li>
+  <li>Fixed a problem validating non-namespaced attributes and a problem allowing non-namespaced attributes to be children of the
+   stylesheet element.<br />
+<br />
+</li>
+   <li>Fixed checking of number of arguments in document() function.<br />
+<br />
+</li>
+   <li>Fixed problem with mutation of templates at run time. Templates resolution now takes place during the compose() method.<br />
+<br />
+</li>
+   <li>Fixed some minor threading issues in org.apache.xalan.stree (Child, Parent, ElementImpl, SourceTreeHandler).<br />
+<br />
+</li>
+   <li>Synchronized TrAX API functions subject to mutation to prevent mutation during a transformation.<br />
+<br />
+</li>
+   <li>Fixed bug reported by Jano Elovirta: substring() was returning an error if the start index is larger than the string.<br />
+<br />
+</li>   
+   <li>Set StringKey.toString() to return the underlying String (m_str), thus avoiding a potential symmetry problem with the equals() method
+   reported by Ito Kazumitsu.<br />
+<br />
+</li>
+   <li>In response to note from Ito Kazumitsu, changed Java encoding name "EUCJIS" in FormatterToXML to "EUC_JP".<br />
+<br />
+</li>
+   <li>When Xalan creates a FileOutputStream, it now closes the stream before exiting.<br />
+<br />
+</li>
+   <li>Fixed handling of an exception that can be thrown while building a DOM.<br />
+<br />
+</li>
+   <li>Fixed a problem reported by Dimitry Voytenko serializing compiled stylesheets.<br />
+<br />
+</li>
+   <li>For support of applets, modified TransformerFactory System.getProperty() calls to catch SecurityExceptions.<br />
+<br />
+</li>
+   <li>Fixed a bug reported by Krishna Mohan Meduri setting output properties.<br />
+<br />
+</li>
+   <li>Fixed error recovery when xsl:element encounters a bad name or unresolvable prefix.<br />
+<br />
+</li>
+   <li>Added AbstractMethodError handling to existing NoSuchMethodError handling as a fallback to the XMLReaderFactory for XML parsers that do
+       not implement the JAXP parsers interface for creating an XMLReader<br />
+<br />
+</li>
+   <li>Fixed bug with cloned iterators reported by Tim Sean.<br />
+<br />
+</li>
+   <li>Fixed null pointer exception that could occur with getValue("xxx").<br />
+<br />
+</li>
+   <li>Fixed bug reported by Tim Sean handling the xml:space attribute.</li>
+</ul>
+<p>
+<b>Bug fixes in the Xalan-Java 1 compatibility API:</b>
+</p>
+<ul>
+  <li>Fixed ProblemListener (for processing error messages) to derive from Xalan-Java 2 ErrorHandler.<br />
+<br />
+</li>
+  <li>Fixed evaluation of stylesheet string parameters to conform to Xalan-Java 1 behavior (expressions for Xalan-Java 1 vs. String objects 
+  for Xalan-Java 2).<br />
+<br />
+</li>    
+  <li>Added XPathSupport and XPathSupportDefault, and fixed the derivation of XObject sub-types (XString, etc.).<br />
+<br />
+</li>
+  <li>Fixed bug with XSLTProcessor process(xmlIn, null, out) method so that it uses the StylesheetRoot (if one exists) that has been created
+   with the processStylesheet() method.</li>
+</ul>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java version 2.0.D07</h3>
+<p>Xalan-Java 2.0.D07 incorporates a <a href="usagepatterns.html#compat">Xalan-Java 1 compatibility jar</a>, some performance enhancements, and a number of bug fixes for bugs found in version 2.0.D06.</p>
+<ul>
+<li>Fixed handling of disable-output-escaping="no".  Previously, once it was turned on, it could not be turned off.<br />
+<br />
+</li>
+<li>Fixed a bug with whitespace handling where Xalan was incorrectly checking for whitespace 
+    stripping before collation of multiple whitespace events into a single text node.<br />
+<br />
+</li>
+<li>Whitespace stripping wasn't working with input DOMs before.  This is now fixed.<br />
+<br />
+</li>
+<li>Fixed many exception handling problems and problems with error reporting.<br />
+<br />
+</li>
+<li>Fixed a bug resetting parameters in Transformer clearParameters().<br />
+<br />
+</li>
+<li>Fixed a bug where CDATA sections were not matching the text() node test.<br />
+<br />
+</li>
+<li>Made better memory allocation problem with result tree fragments.<br />
+<br />
+</li>
+<li>Made result tree fragment parsing of numbers consistent with strings.<br />
+<br />
+</li>
+<li>Exceptions thrown from extensions should now be properly reported via the error listener.<br />
+<br />
+</li>
+<li>Fixed hard-coded stack dump set off by m_reportInPostExceptionFromThread variable.<br />
+<br />
+</li>
+<li>Fixed intermittent threading problem with text nodes being dropped.<br />
+<br />
+</li>
+<li>Fixed problem with variable evaluation inside of union expressions.</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java version 2.0.D06</h3>
+<p>We have fixed the bugs reported in Xalan-Java 2.0.D05. Along with several other enhancements, 
+we have also fixed a number of bugs found by testing and our users:</p>
+<ul>
+<li>Fixed some threading problems and improved support for handling Exceptions thrown in a secondary thread.<br />
+<br />
+Note: To support incremental output, Xalan-Java performs the transformation in a second thread while building the source tree in the main thread.<br />
+<br />
+</li>
+<li>Fixed problems encountered in piping (utilizing transformation output as input for another transformation).<br />
+<br />
+</li>
+<li>Fixed problems handling attributes and adding attributes to result tree.<br />
+<br />
+</li>
+<li>Added defensive checking for null entities, null namespaces, and empty strings passed in for URIs and local names.<br />
+<br />
+</li>
+<li>We now conform to the SAX convention of representing null namespaces with empty strings.<br />
+<br />
+</li>
+<li>Fixed a bug encountered evaluating a variable in a predicate expression applied to child nodes.<br />
+<br />
+</li>
+<li>Changed names of serializers from FormatterTo<b>
+<i>Xxx</i>
+</b> to SerializerTo<b>
+<i>Xxx</i>
+</b>. See 
+<a href="apidocs/org/apache/xalan/serialize/package-summary.html">Package org.apache.xalan.serialize</a>.<br />
+<br />
+</li>
+<li>Improved debugging support in a number of areas.</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java version 2.0.D05</h3>
+<p>All of the bugs reported in Xalan-Java 2.0.D01 have been fixed. The remainder of this section discusses two changes that we believe are of particular importance:</p>
+<p>
+<b>TrAX</b>
+</p>
+<p>The Transformation API for XML (TrAX) that Xalan-Java 2 implements has undergone substantial revisions since the release of Xalan-Java 2.0.D01. TrAX has joined the Java API for XML Parsing (JAXP) as part of the Sun® <a href="http://jcp.org/aboutJava/communityprocess/review/jsr063/">Java Specification Request 63</a>. Accordingly, the TrAX package names have changed. The conceptual organization has also changed somewhat: The primary transformation interfaces are defined in javax.xml.transform, with concrete classes for managing stream input/output, SAX parsers and ContentHandler, and DOM parsers and DOM trees in javax.xml.transform.stream, javax.xml.transform.sax, and javax.xml.transform.dom. For more information, see <a href="trax.html">TrAX (Transformation API for XML)</a>, and review <a href="usagepatterns.html">Usage Patterns</a>.</p>
+<a name="outputprops">‌</a>
+<p>
+<b>Output properties</b>
+</p>
+<p>The handling of xsl:output properties has changed: org.apache.xalan.serialize.OutputFormat and apache.xalan.templates.OutputFormatExtended were removed and replaced with org.apache.xalan.templates.OutputProperties. The SerializerFactory getSerializer() method now takes Properties rather than a String indicating the output method. You can replace <code>getSerializer("xml")</code>, for example, with <code>getSerializer(OutputProperties.getDefaultMethodProperties("xml"))</code>.</p>
+<p>HTML, XML, and text xsl:output properties are specified in property files in org.apache.xalan.templates: output_html.properties, output_xml.properties, and output_text.properties.</p>
+<p>You can start using the output properties defined in these files in your stylesheets. For example, you can turn URL escaping off in HTML output with<br />
+<code>{http\u003a//xml.apache.org/xslt}use-url-escaping=no</code>
+<br />
+and you can control indenting with<br />
+<code>{http\u003a//xml.apache.org/xslt}indent-amount=<b>
+<i>n</i>
+</b>
+</code>
+</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The colon after the "http" protocol must be escaped.</td>
+</tr>
+</table>
+<p>Character-to-entity mapping is specified in org.apache.xalan.serialize: HTMLEntities.res and XMLEntities.res. You can override entity ref 
+mapping from a stylesheet. For example:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+         xmlns:xalan="http://xml.apache.org/xslt" version="1.0"&gt;
+
+  &lt;xsl:output xalan:entities="myentities.ent"/&gt;
+
+  &lt;xsl:template match="/"&gt;
+    &lt;out&gt;&amp;#125;&lt;/out&gt;
+  &lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;</pre>
+</blockquote>
+<p>=== myentities.ent ===</p>
+<blockquote class="source">
+<pre>quot 34
+amp 38
+lt 60
+gt 62
+lala 125</pre>
+</blockquote>
+<p>The output is:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;out&gt;&amp;lala;&lt;/out&gt;</pre>
+</blockquote>
+<p>See also <a href="usagepatterns.html#outputprops">Setting output properties in your stylesheets</a>.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/index.html b/xalan-j/index.html
new file mode 100644
index 0000000..b74ba7c
--- /dev/null
+++ b/xalan-j/index.html
@@ -0,0 +1,563 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Xalan-Java Version 2.7.2</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Xalan-Java Version 2.7.2</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>Xalan-J 2.7.2<br />
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Xalan-Java Version 2.7.2</h2>
+<ul>
+  <li>
+<a href="#whatisit">What is it?</a>
+</li>
+  <li>
+<a href="#current">How about this release?</a>
+</li>
+  <li>
+<a href="#moreinfo">For more information...</a>
+</li>      
+  <li>
+<a href="#license">Apache License Version 2.0</a>
+</li>  
+  <li>
+<a href="#notice">Notice file</a>
+</li>        
+  <li>
+<a href="#license1.1">Apache License Version 1.1</a>
+</li>
+</ul>
+         
+<a name="whatisit">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>What is it?</h3>
+    <p>Xalan-Java is an XSLT processor for transforming XML documents into 
+       HTML, text, or other XML document types. It implements <a href="http://www.w3.org/TR/xslt">XSL Transformations (XSLT) Version 1.0</a> and 
+       <a href="http://www.w3.org/TR/xpath">XML Path Language (XPath) Version 1.0</a> and can be used from the command line, in an applet or a 
+       servlet, or as a module in other program.</p>
+    <p>Xalan-Java implements the javax.xml.transform interface in 
+       <a href="https://jaxp.java.net/">Java API for XML Processing (JAXP) 1.3</a>.  This interface provides a modular
+       framework and a standard API for performing XML transformations, and utilizes system 
+       properties to determine which Transformer and which XML parser to use.</p>
+    <p>Xalan-Java also implements the javax.xml.xpath interface in JAXP 1.3, which provides an 
+       object-model neutral API for evaluation of XPath expressions and access to the evaluation 
+       environment.</p>
+    <p>Xalan-Java also builds on <a href="http://sax.sourceforge.net/">SAX 2</a> and <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/">DOM level 3</a>.</p>
+  
+    <p>For more information, see <a href="readme.html">the release notes</a>.</p>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Xalan-Java version 1 is no longer supported and no longer available from xml.apache.org.</td>
+</tr>
+</table>
+
+
+<a name="current">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>How about this release?</h3>
+  <p>This release includes new features as well as a number of bug fixes. See the 
+  <a href="whatsnew.html">What's New</a> and <a href="readme.html#done">Release 
+  Notes</a> for more details.</p>
+  <p>Xalan-Java Version 2.7.2 works with Xerces-Java, and the distribution includes xercesImpl.jar from Xerces-Java 2.11.0.</p>
+  <p>The Xalan-Java implementation is in xalan.jar and serializer.jar. 
+  The SAX, DOM, and JAXP 1.3 interfaces are in xml-apis.jar.</p>
+
+
+<a name="moreinfo">‌</a>  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>For more information...</h3>
+  <p>For more information, go to <a href="overview.html">Xalan-Java Overview</a>, 
+   <a href="downloads.html">Xalan-Java Downloads</a>, <a href="getstarted.html">Getting Started
+   with Interpretive Processing</a> and <a href="xsltc_usage.html">Getting Started with XSLTC</a>.
+   All of the Xalan-Java documentation on this website is included in the Xalan-Java download, as are a number of
+   <a href="samples.html">Samples</a> to help you start using Xalan-Java to transform XML documents.</p>
+
+
+<a name="license">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Apache License Version 2.0</h3>
+<p>The Apache Software License Version 2.0 applies to all releases of Xalan-Java starting with 
+Version 2.6.0.  A copy of this license is included in the distribution.</p>
+<blockquote class="source">
+<pre>
+    
+    
+                                Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+</pre>
+</blockquote>    
+
+
+<a name="notice">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>NOTICE file</h3>
+<p>A NOTICE file that accompanies The Apache Software License Version 2.0 is also included
+in the Xalan-Java distribution..</p>
+<blockquote class="source">
+<pre>
+   ======================================================================================
+   ==  NOTICE file corresponding to the section 4d of the Apache License, Version 2.0, ==
+   ==  in this case for the Apache Xalan distribution.                                 ==
+   ======================================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Portions of this software was originally based on the following:
+   
+     - software copyright (c) 1999-2002, Lotus Development Corporation., http://www.lotus.com.
+     - software copyright (c) 2001-2002, Sun Microsystems., http://www.sun.com.
+     - software copyright (c) 2003, IBM Corporation., http://www.ibm.com.
+     - voluntary contributions made by Ovidiu Predescu (ovidiu@cup.hp.com) on behalf of the 
+       Apache Software Foundation and was originally developed at Hewlett Packard Company. 
+</pre>
+</blockquote>
+
+
+<a name="license1.1">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Apache License Version 1.1</h3>
+<p>The Apache Software License, Version 1.1, applies to all versions up to and including Xalan Java 2.5.2.</p>
+<blockquote class="source">
+<pre>
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 1999, Lotus
+ * Development Corporation., http://www.lotus.com.  For more
+ * information on the Apache Software Foundation, please see
+ * http://www.apache.org/.
+ */
+
+</pre>
+</blockquote>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Other licenses</h3> 
+ <p>For the licences that apply to the JARs other than xalan.jar, see the licenses and 
+    associated readme files in the root directory of this distribution.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/overview.html b/xalan-j/overview.html
new file mode 100644
index 0000000..caa6cc4
--- /dev/null
+++ b/xalan-j/overview.html
@@ -0,0 +1,447 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Xalan-Java Overview</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Xalan-Java Overview</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>Overview<br />
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Xalan-Java Overview</h2>
+<ul>
+<li>
+<a href="#intro">Introduction</a>
+</li>
+<li>
+<a href="#features">Xalan-Java Features</a>
+</li>
+<li>
+<a href="#towork">Getting to work with Xalan-Java</a>
+</li>
+<li>
+<a href="#uptospeed">Getting up to speed with XSLT</a>
+</li>
+<li>
+<a href="#glossary">Glossary</a>
+</li>
+</ul>
+<a name="intro">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>
+<p>Xalan-Java fully implements <a href="http://www.w3.org/TR/xslt">XSL Transformations (XSLT) Version 1.0</a> 
+   and the <a href="http://www.w3.org/TR/xpath">XML Path Language (XPath) Version 1.0</a>. XSLT is the first part of the XSL stylesheet language for 
+   XML. It includes the XSL Transformation vocabulary and XPath, a language for addressing parts of 
+   XML documents. For links to background materials, discussion groups, frequently asked questions, 
+   and tutorials on XSLT, see <a href="#uptospeed">Getting up to speed with XSLT</a>.</p> 
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">XSL also includes a vocabulary for formatting documents, which is not part of Xalan-Java. 
+      For more information, see <a href="http://www.w3.org/TR/xsl">Extensible Stylesheet Language (XSL) Version 1.0</a> and the <a href="http://xmlgraphics.apache.org/fop">Apache XmlGraphics FOP (Formatting Objects Project)</a>.</td>
+</tr>
+</table>
+<p>XSL stylesheets are written in the XSLT language. An XSL stylesheet contains instructions 
+   for transforming XML documents into XML, HTML, XHTML or plain text. In structural terms, an XSL
+   stylesheet specifies the transformation of one tree of 
+   nodes (the XML input) into another tree of nodes (the output or transformation result).</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The XSL stylesheet may generate and refer to cascading style sheets (<a href="http://www.w3.org/Style/CSS/">CSS</a>) as part of its output.</td>
+</tr>
+</table> 
+<p>In the following example, the foo.xsl stylesheet is used to transform foo.xml into foo.out:</p>
+<p>foo.xml:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;doc&gt;Hello&lt;/doc&gt;</pre>
+</blockquote>
+        <p>foo.xsl:</p>
+        <blockquote class="source">
+<pre>&lt;?xml version="1.0"?&gt; 
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;
+&lt;xsl:template match="doc"&gt;
+&lt;out&gt;&lt;xsl:value-of select="."/&gt;&lt;/out&gt;
+&lt;/xsl:template&gt;
+&lt;/xsl:stylesheet&gt;</pre>
+</blockquote>
+<p>foo.out:</p>
+<blockquote class="source">
+<pre>&lt;out&gt;Hello&lt;/out&gt;</pre>
+</blockquote>
+<p>By default, Xalan-Java uses Xerces-Java, but it may be configured with system properties to work with 
+   other XML parsers (see <a href="usagepatterns.html#plug">Plugging in a Transformer and 
+   XML parser</a>). The input may be submitted in the form of a stream of XML markup (from a URI, 
+   a character or byte stream, or another transformation), a SAX InputStream, or a DOM Node.</p>
+<p>Xalan-Java performs the transformations specified in the XSL stylesheet and packages a sequence of 
+   SAX events that may be serialized to an output stream or writer, used to build a DOM tree, or 
+   forwarded as input to another transformation.</p>
+
+
+<a name="features">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Xalan-Java Features</h3>
+<ul> 
+  <li>Includes an Interpretive processor for use in a tooling and debugging environment and 
+      a Compiling processor (XSLTC) for use in a high performance runtime environment.<br />
+<br />
+</li>
+  <li>Implements the relevant W3C specifications: <a href="http://www.w3.org/TR/xslt">XSL Transformations (XSLT) Version 1.0</a> and 
+      <a href="http://www.w3.org/TR/xpath">XML Path Language (XPath) Version 1.0</a>.<br />
+<br />
+</li>
+  <li>Implements <a href="https://jaxp.java.net/">Java API for XML Processing (JAXP) 1.3</a>, and builds on 
+      <a href="http://sax.sourceforge.net/">SAX 2</a> and <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/">DOM level 3</a>.<br />
+<br />
+</li>
+  <li>Implements the XPath API in <a href="https://jaxp.java.net/">JAXP 1.3</a>.<br />
+<br />
+</li>
+  <li>May be configured to work with any XML parser, such as
+      <a href="http://xml.apache.org/xerces-j/index.html">Xerces-Java</a>, that implements 
+      <a href="https://jaxp.java.net/">JAXP 1.3</a> (see <a href="usagepatterns.html#plug">Plugging in an XML
+      parser</a>).<br />
+<br />
+</li>
+  <li>Can process Stream, SAX or DOM input, and output to a Stream, SAX or DOM.<br />
+<br />
+</li>
+  <li>Transformations may be chained (the output of one transformation may be the input for
+      another).<br />
+<br />
+</li>
+  <li>May be run from the <a href="commandline.html">command line</a> for convenient file-to-file
+      transformations.<br />
+<br />
+</li>
+  <li>Includes an <a href="usagepatterns.html#applet">applet wrapper</a>.<br />
+<br />
+</li>
+  <li>May be used in a <a href="samples.html#servlet">servlet</a> to transform XML documents 
+      into HTML and serve the results to clients.<br />
+<br />
+</li>
+  <li>Supports the creation of <a href="extensions.html">Java and scripting language extensions</a>. 
+      and provides a growing library of extension elements and functions.</li>
+</ul> 
+
+
+<a name="towork">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Getting to work with Xalan-Java</h3>
+<p>For instructions and some suggestions about how to get started using the XSLT Interpretive
+   processor, see <a href="getstarted.html">Getting Started with Interpretive Processing</a>.</p>
+<p>For instructions and some suggestions about how to get started using the XSLT Compiling
+   processor, see <a href="xsltc_usage.html">Getting Started with XSLTC</a>.</p>   
+
+
+<a name="uptospeed">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Getting up to speed with XSLT</h3>
+<p>If you are still working through the details of the XSLT spec (the W3C 1.0 Recommendation), you 
+   may want to consult one or more of the following:</p>
+<ul>
+  <li>XSLT - XSL Transformations in 
+      <a href="http://www.brics.dk/~amoeller/XML/">
+      The XML Revolution: Technologies for the future Web</a> by Anders Møller and Michael 
+      I. Schwartzbach (Web pages, but designed for sequential reading)<br />
+<br />
+</li>
+  <li>Crane Softwright's <a href="http://www.CraneSoftwrights.com/training/">Free preview of 
+      Practical Transformation Using XSLT and XPath</a>
+<br />
+<br />
+</li>
+  <li>Doug Tidwell's <a href="http://www.oreilly.com/catalog/xslt/">XSLT</a>, O'Reilly, 2001
+      <br />
+<br />
+</li>                 
+  <li>Bob Ducharme's <a href="http://www.manning.com/ducharme/index.html">XSLT Quickly</a>, 
+      Manning Publications, 2001<br />
+<br />
+</li>                 
+  <li>John Robert Gardner and Zarella Rendon's 
+      <a href="http://vig.prenhall.com/catalog/academic/product/1,4096,0130404462,00.html">XSLT 
+      and XPath: A Guide to Transformations</a>, Prentice-Hall, 2001<br />
+<br />
+</li>                 
+  <li>Michael Kay's <a href="http://www.wrox.com/books/0764543814.shtml">XSLT 
+      Programmer's Reference</a>, 2nd ed., Wrox Press, 2001<br />
+<br />
+</li>               
+
+  <li>Dave Pawson's <a href="http://www.dpawson.co.uk/xsl/">XSL Frequently Asked Questions</a> to search out particular answers and 
+      techniques<br />
+<br />
+</li>
+  <li>Miloslav Nic's <a href="http://zvon.vscht.cz/HTMLonly/XSLTutorial/Books/Book1/index.html">XSL 
+      Tutorial</a>, a collection of stylesheet examples<br />
+<br />
+</li>
+  <li>Elliotte Rusty Harold's <a href="http://www.ibiblio.org/xml/books/bible2/chapters/ch17.html">
+      Chapter 17 of the XML Bible: XSL Transformations</a>
+<br />
+<br />
+</li>
+  <li>The Mulberry <a href="http://www.mulberrytech.com/xsl/xsl-list/">XSL-List -- Open Forum on 
+      XSL</a> (of interest to XSL users at all levels)<br />
+<br />
+</li>
+  <li>Objects by Design's <a href="http://www.objectsbydesign.com/projects/xmi_to_html.html">
+      Transforming XMI to HTML</a> (oriented towards XMI, "an XML-based, stream representation 
+      of a UML model," but also covers "generic" XML transformations) and their related 
+      <a href="http://objectsbydesign.com/projects/xslt/xslt_by_example.html">XSLT by Example</a>
+      <br />
+<br />
+</li>         
+  <li>OASIS (the Organization for the Advancement of Structured Information Standards): 
+      <a href="http://www.oasis-open.org/cover/xsl.html">Extensible Stylesheet Language (XSL)</a> 
+      by Robin Cover<br />
+<br />
+</li>       
+</ul>
+<p>When you come across other useful introductory or background materials, please email 
+   <a href="mailto:dev@xalan.apache.org">Xalan Development Mailing List</a>, so we can add them to this list.</p>
+    
+<a name="glossary">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Glossary</h3>
+<div class="glossary">
+  <p class="label">
+<em>XSLT Namespace</em>
+</p>
+  <blockquote class="item">The <a href="http://www.w3.org/TR/REC-xml-names/">XML namespace</a> for XSLT. An XML 
+        namespace is a collection of element and attribute names, identified by a Unique Resource 
+        Identifier (URI), which often takes the form of a URL, but is really just a unique string, 
+        not a pointer to a web page. The XSLT namespace URI is http://www.w3.org/1999/XSL/Transform. 
+        In each XSLT stylesheet, you must declare this namespace in the stylesheet element tag and 
+        bind it to a local prefix. Like the XSLT specification, we always use xsl as the XSLT 
+        namespace prefix in our descriptions and examples, although you are free to bind any prefix 
+        to this namespace.<br />
+<br />
+</blockquote>
+        
+  <p class="label">
+<em>XSL Instruction</em>
+</p>
+  <blockquote class="item">Any tag associated with the XSLT namespace.<br />
+<br />
+</blockquote>
+        
+  <p class="label">
+<em>Template</em>
+</p>
+  <blockquote class="item">An element, usually with child elements, that specifies a "rule" or set of 
+        instructions to perform when a particular kind of node is encountered in the source 
+        tree.<br />
+<br />
+</blockquote>
+                
+  <p class="label">
+<em>XSL Template Instruction</em>
+</p>
+  <blockquote class="item">Any tag that occurs inside an xsl:template element and is associated with the XSLT 
+        namespace.<br />
+<br />
+</blockquote>
+                   
+  <p class="label">
+<em>Source Tree</em>
+</p>
+  <blockquote class="item">The XML tree input to the XSL process.<br />
+<br />
+</blockquote>
+        
+  <p class="label">
+<em>Result Tree</em>
+</p>
+  <blockquote class="item">The tree that is output by the XSL process.<br />
+<br />
+</blockquote>
+                
+  <p class="label">
+<em>Match Pattern</em>
+</p>
+  <blockquote class="item">The part of a template that defines the kind(s) of nodes to which the template 
+        applies.<br />
+<br />
+</blockquote>
+
+</div>
+<p>For more definitions of XSLT terminology, see Dave Pawson's 
+   <a href="http://www.dpawson.co.uk/xsl/xslvocab.html">XSLT Terminology
+   Clarification</a> and the Glossary in Michael Kay's 
+   <a href="http://www.wrox.com/books/0764543814.shtml">XSLT Programmer's Reference</a>.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/public_apis.html b/xalan-j/public_apis.html
new file mode 100644
index 0000000..9036c12
--- /dev/null
+++ b/xalan-j/public_apis.html
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Supported Interfaces in Xalan-Java</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Supported Interfaces in Xalan-Java</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>Public APIs<br />
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Supported Interfaces in Xalan-Java</h2>
+  <ul>
+    <li>
+<a href="#public">Public interfaces</a>
+</li>
+    <li>
+<a href="#experimental">Experimental interfaces</a>
+</li>
+    <li>
+<a href="#internal">Internal interfaces</a>
+</li>
+  </ul>
+<a name="public">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Public interfaces</h3>
+  <p>A public interface of Xalan-Java 2 is an API that a typical client developer
+     should code against.  Such interfaces are usually based upon
+     World-Wide Web Consortium (W3C) recommendations, such as XSLT 1.0 and
+     XPath 1.0, or Java Specification Requests (JSR's) with a status of
+     "Final Release", such as JAXP.</p>
+  <p>The Xalan-Java 2 team will support use of public interfaces, and will
+     attempt to fix severe bugs in such interfaces.</p>
+  <p>A particular version of a public interface will be supported for all
+     the maintenance drops of a particular version and release of Xalan-Java 2
+     (that is, for a release that changes just the third digit of the
+     version number).  At the point a new version of Xalan-Java 2 is made
+     available, (that is, a release that changes the first or second digit
+     of the version number) such interfaces could change to reflect the
+     latest standard specifications.</p>
+  <p>The public interfaces of Xalan-Java 2 are:</p>
+  <ul>
+    <li>
+<a href="http://java.sun.com/xml/jaxp/">JAXP 1.3</a>
+        interfaces found in the
+        <a href="apidocs/javax/xml/parsers/package-summary.html">
+           <code>javax.xml.parsers</code>
+</a>,
+        <a href="apidocs/javax/xml/transform/package-summary.html">
+           <code>javax.xml.transform</code>
+</a>,
+        <a href="apidocs/org/xml/sax/package-summary.html">
+           <code>org.xml.sax</code>
+</a>,
+        <a href="apidocs/org/w3c/dom/package-summary.html">
+           <code>org.w3c.dom</code>
+</a> and
+        <a href="apidocs/javax/xml/xpath/package-summary.html">
+           <code>javax.xml.xpath</code>
+</a> packages. </li>
+    <li>The Xalan-Java 2 specific XPath API, defined by the classes
+      <ul>
+        <li>
+<a href="apidocs/org/apache/xpath/XPathAPI.html">
+          <code>org.apache.xpath.XPathAPI</code>
+</a>
+</li>
+        <li>
+<a href="apidocs/org/apache/xpath/CachedXPathAPI.html">
+          <code>org.apache.xpath.CachedXPathAPI</code>
+</a>
+</li>
+      </ul>
+    </li>
+    <li>API's for using, configuring or defining a serializer, from the
+        <code>org.apache.xml.serializer</code> package:
+      <ul>
+        <li>
+<a href="apidocs/org/apache/xml/serializer/OutputPropertiesFactory.html">
+                <code>OutputPropertiesFactory</code>
+</a>
+</li>
+        <li>
+<a href="apidocs/org/apache/xml/serializer/SerializerFactory.html">
+                <code>SerializerFactory</code>
+</a>
+</li>
+        <li>
+<a href="apidocs/org/apache/xml/serializer/Serializer.html">
+                <code>Serializer</code>
+</a>
+</li>
+      </ul>
+    </li>
+    <li>Properties files for configuring a serializer.  (See
+        <a href="usagepatterns.html#outputprops">Setting output
+        properties in your stylesheets</a> for more information.)
+      <ul>
+        <li>
+<code>org/apache/xml/serializer/output_xml.properties</code>
+</li>
+        <li>
+<code>org/apache/xml/serializer/output_html.properties</code>
+</li>
+        <li>
+<code>org/apache/xml/serializer/output_text.properties</code>
+</li>
+      </ul>
+    </li>
+    <li>Command-line interfaces for performing transformations:
+      <ul>
+        <li>
+<a href="commandline.html">Xalan-Java Command-line utility</a>
+</li>
+        <li>
+<a href="xsltc_usage.html#compile">Compiling translets
+              from the command line</a>
+</li>
+        <li>
+<a href="xsltc_usage.html#run">Running translets
+              from the command line</a>
+</li>
+      </ul>
+    </li>
+  </ul>
+  <a name="experimental">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Experimental interfaces</h3>
+  <p>Interfaces and classes that are designated experimental reflect recent
+     World-Wide Web Consortium (W3C) draft recommendations or draft
+     Java Specification Requests (JSR's).  Such an API is based upon
+     a specification that is subject to change, and so is itself subject
+     to change as the relevant standards body makes changes to the
+     specification.</p>
+  <p>If and when the specification upon which the API is based reaches its
+     final published form, the API could become a Public interface in
+     a subsequent release of Xalan-Java 2, although the Xalan-Java 2 team could
+     decide to simply withdraw the API, if it decided that making the API
+     a public interface would not be appropriate.</p>
+  <p>As the name suggests, experimental interfaces are provided in order to
+     give users the opportunity to experiment with new features so that they
+     can provide feed-back on those features.  They should not be used in
+     production-level code.  The Xalan-Java 2 team may fix severe bugs in
+     experimental interfaces.</p>
+  <p>The experimental interfaces of Xalan-Java 2 are:</p>
+  <ul>
+    <li>The
+        <a href="http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226">
+           DOM Level 3 XPath API</a> found in the
+        <a href="apidocs/org/apache/xpath/domapi/package-summary.html">
+           <code>org.apache.xpath.domapi</code>
+</a> package.</li>
+  </ul>
+  <a name="internal">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Internal interfaces</h3>
+  <p>All other classes are considered to be part of the internal interface of
+     Xalan-Java 2.  Some such classes or members of such classes may themselves
+     be designated as <code>public</code> using the Java keyword, but that is
+     a consequence of the internal organization of Xalan-Java 2.</p>
+  <p>Users who have complex and specific needs, such as the need to build
+     their own XSLT or XPath processors, might use these internal interfaces,
+     but their use is not supported.  In addition these interfaces are subject
+     to change without notice.</p>
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/readme.html b/xalan-j/readme.html
new file mode 100644
index 0000000..9415456
--- /dev/null
+++ b/xalan-j/readme.html
@@ -0,0 +1,1185 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Release Notes</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Release Notes</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>Release Notes<br />
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Release Notes</h2>
+ <ul>
+  <li>
+<a href="#notes_latest">Release notes for  version 2.7.2</a>
+</li>
+  <li>
+<a href="#notes_271">Release notes for version 2.7.1</a>
+</li>
+  <li>
+<a href="#notes_270">Release notes for version 2.7.0</a>
+</li>
+  <li>
+<a href="#notes_260">Release notes for version 2.6.0</a>
+</li>
+  <li>
+<a href="#notes_252">Release notes for version 2.5.2</a>
+</li>
+  <li>
+<a href="#notes_251">Release notes for version 2.5.1</a>
+</li>
+  <li>
+<a href="#notes_250">Release notes for version 2.5.0</a>
+</li>
+  <li>
+<a href="#notes_25D1">Release notes for version 2.5.D1</a>
+</li>
+  <li>
+<a href="#notes_241">Release notes for version 2.4.1</a>
+</li>
+  <li>
+<a href="#notes_240">Release notes for version 2.4.0</a>
+</li>
+  <li>
+<a href="#other">Other points of interest</a>
+</li>
+ </ul>
+  
+  <a name="notes_latest">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.7.2</h3>
+    <p>
+      Xalan-Java 2.7.2 was released in April 2014.
+    </p>
+     
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Fix for CVE-2014-0107 insufficient secure processing</h4>
+      <p>
+        When using FEATURE_SECURE_PROCESSING ("http://javax.xml.XMLConstants/feature/secure-processing") on a TransformerFactory, the output properties:
+      </p>
+      <ul>
+        <li>{http://xml.apache.org/xalan}content-handler</li>
+        <li>{http://xml.apache.org/xalan}entities</li>
+        <li>{http://xml.apache.org/xslt}content-handler</li>
+        <li>{http://xml.apache.org/xslt}entities</li>
+      </ul>
+      <p>
+        should be ignored (see http://xml.apache.org/xalan-j/usagepatterns.html#outputprops)
+      </p>
+      <p>
+        These properties can be used to load an arbitrary class or access an arbitrary URL/resource so are problematic when secure processing is desired.
+      </p>
+      <p>      
+        <code>  
+          &lt;xsl:output xalan:content-handler="org.example.BadClass" ...
+        </code>   
+      </p>
+      <p>      
+        <code>  
+          &lt;xsl:output xalan:entities="http://example.org/reallyLargeFile.bin" ...
+        </code>   
+      </p>
+      <p>
+        These features could be used to load a class that had undesirable side-effects or to load a large file and exhaust memory, etc. 
+      </p>
+      <p>
+        See <a href="#https://issues.apache.org/jira/browse/XALANJ-2435">XALANJ-2435</a>. 
+      </p>
+    
+    
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Upgrade to Xerces-J 2.11.0 and XML Commons External 1.4.01</h4>
+      The distributions contain upgraded versions of <code>xercesImpl.jar</code>
+      (Xerces-J 2.11.0) and <code>xml-apis.jar</code> (XML Commons External 1.4.01).
+    
+    
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>XALANJ Jira bug fixes</h4>
+      <p>XALANJ Jira bug fixes:
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2435">2435</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2580">2580</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2546">2546</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2581">2581</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2581">2582</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2581">2583</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2473">2473</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2495">2495</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2493">2493</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2424">2424</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2446">2446</a>,
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2447">2447</a>
+      </p>
+      <p>You can also view the list in 
+        <a href="https://issues.apache.org/jira/browse/XALANJ-2424?jql=project%20%3D%20XALANJ%20AND%20fixVersion%20%3D%202.7.2%20ORDER%20BY%20due%20ASC%2C%20priority%20DESC%2C%20created%20ASC">Jira</a>
+      </p>
+     
+        
+      
+   
+   <a name="notes_271">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.7.1</h3>
+     <p>Xalan-Java 2.7.1 was released in August 2007.
+     </p>
+      <p>
+      The serializer now has support for DOM Level 3 serialization
+      (<a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/load-save.html#LS-LSSerializer">LSSerializer</a>)
+      for an XML parser. These changes are seen in the new class
+      <a href="apidocs/org/apache/xml/serializer/DOM3Serializer.html">
+      <code>org.apache.xml.serializer.DOM3Serializer</code>
+</a> 
+      and the new package
+      <code>org.apache.xml.serializer.dom3</code>
+      as well as a new method,       
+      <code>asDOM3Serializer()</code> on the older 
+      <a href="apidocs/org/apache/xml/serializer/Serializer.html">
+      <code>org.apache.xml.serializer.Serializer</code>
+</a> interface.
+      </p>
+      <p>
+      More details are in the javadoc of those classes and interfaces.
+      </p>
+
+    <p>    
+    The distributions contain upgraded versions of <code>xercesImpl.jar</code> 
+    (Xerces-J 2.9.0) and  <code>xml-apis.jar</code> (XML Commons External 1.3.04).
+    The distributions were tested with these versions of Xerces-J
+    and XML Commons External and are the recommended versions to use with
+    the release.
+    </p>
+    <p>
+      <b>Important:</b> You may experience unpredictable anomalies
+      if your Xalan-Java and Xerces-Java builds are not in synch.
+    </p>
+
+   
+     <p>
+       Xalan-Java 2.7.1 contains the following functional enhancements, 
+       performance enhancements and bug fixes since 2.7.0:
+     </p>
+     <ul>
+     <li>XALANJ Jira bug fixes:
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-611">611</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1243">1243</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1324">1324</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1434">1434</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1497">1497</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1706">1706</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1753">1753</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1774">1774</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2061">2061</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2091">2091</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2108">2108</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2159">2159</a>,       
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2184">2184</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2196">2196</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2199">2199</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2204">2204</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2205">2205</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2206">2206</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2208">2208</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2209">2209</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2210">2210</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2217">2217</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2218">2218</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2219">2219</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2220">2220</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2221">2221</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2220">2222</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2224">2224</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2219">2219</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2230">2230</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2236">2236</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2240">2240</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2249">2249</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2268">2268</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2269">2269</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2271">2271</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2275">2275</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2276">2276</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2277">2277</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2278">2278</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2279">2279</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2271">2281</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2283">2283</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2284">2284</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2285">2285</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2286">2286</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2290">2290</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2292">2292</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2293">2293</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2294">2294</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2295">2295</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2297">2297</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2298">2298</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2307">2307</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2312">2312</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2316">2316</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2317">2317</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2318">2318</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2319">2319</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2321">2321</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2323">2323</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2324">2324</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2329">2329</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2336">2336</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2337">2337</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2339">2339</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2341">2341</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2342">2342</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2343">2343</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2375">2375</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2377">2377</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2384">2384</a>,
+       <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2395">2395</a>
+     </li>
+     </ul>
+   
+   
+   <a name="notes_270">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.7.0</h3>
+     <p>Xalan-Java 2.7.0 was released on August 8, 2005.
+     </p>
+     <p>Xalan-Java 2.7.0 contains the following functional enhancements, performance enhancements and 
+        bug fixes since 2.6.0.
+     </p>
+
+  <h5>Support for JAXP 1.3</h5>
+  <p>Support for JAXP 1.3 has been introduced in this release of Xalan-Java. JAXP 1.3
+  includes a new javax.xml.xpath package, which provides an object-model neutral
+  API for the evaluation of XPath expressions and access to the evaluation environment. 
+  Please refer to <a href="xpath_apis.html">Using the JAXP 1.3 XPath API</a> for details on how to 
+  use the new XPath API. You can also look at the code in the samples 
+  <a href="samples.html#applyxpathjaxp">ApplyXPathJAXP</a> , 
+  <a href="samples.html#xpathresolver">XPathResolver</a> and 
+  <a href="samples.html#extensionresolver">ExtensionFunctionResolver</a>.</p>
+  
+  <p>There are also a few new transformer features
+  in JAXP 1.3, as described in the following list:<br />
+<br />
+    <li>A new method 
+    <a href="apidocs/javax/xml/transform/TransformerFactory.html#setFeature(java.lang.String, boolean)">
+    TransformerFactory.setFeature(String name, boolean value)</a>
+</li>
+    <li>A new method <a href="apidocs/javax/xml/transform/Transformer.html#reset()">
+    Transformer.reset()</a>
+</li>
+    <li>A new nextSibling attribute is introduced for 
+    <a href="apidocs/javax/xml/transform/dom/DOMResult.html">DOMResult</a>, accessible 
+    by the constructors, getter and setter methods.</li>
+    <li>Support for the <a href="features.html#secureprocessing">secure processing feature</a>
+</li>
+</p>
+  
+  <h5>New default error handling behavior</h5>
+  The behavior of the default <a href="apidocs/javax/xml/transform/ErrorListener.html">ErrorListener</a>
+  was changed in this release of Xalan-Java, 
+  in order to conform with a clarification of the required behavior described by JAXP 1.3. 
+  If an application does not register its own ErrorListener, the default ErrorListener is 
+  used which reports all warnings and errors to System.err and does not throw any Exceptions. Applications 
+  are strongly encouraged to register and use ErrorListeners that insure proper behavior for warnings and errors. 
+  The default ErrorListener of the old Xalan-Java Interpretive processor throws exceptions on errors and fatal errors. If your
+  code expects exceptions to be thrown on errors and fatal errors, you have to set a customized ErrorListener on
+  TransformerFactory and/or Transformer. You can use 
+  <a href="apidocs/org/apache/xml/utils/DefaultErrorHandler.html">org.apache.xml.utils.DefaultErrorHandler</a>
+  as a sample ErrorListener implementation.
+  
+  <h5>Support for XML 1.1</h5>
+  <p>This release of Xalan-Java adds support for Namespaces in XML 1.1 and XML 1.1 output documents.
+     The processors: <br />
+<br />
+      <li> support C0 control characters </li>
+      <li> handle C1 control characters in a way that is consistent with the requirements of XML 1.1 </li>
+      <li> treat NEL (U+0085) and LSEP (U+2028) as end-of-line markers </li> 
+      <li> support <a href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> </li>
+      <li> support the additional characters in NCNames and QNames permitted by XML 1.1 and Namespaces in XML 1.1 </li>
+</p>
+
+  <p>The processors do not undeclare namespaces other than the default namespace in serialized documents  Also, Full 
+     normalization is not supported.</p>
+  <p>An input document can be either XML 1.0 or XML 1.1.  Also, a stylesheet document can be either XML 1.0 or XML 1.1.  
+     A stylesheet document must conform to the XSLT 1.0 specifications.</p>
+  <p>Note that it is possible for a stylesheet module that is an XML 1.1 document to use constructs that cannot be 
+     serialized as part of a valid XML 1.0 document, and for a stylesheet module that is an XML 1.0 document to use 
+     constructs that cannot be serialized as part of a valid XML 1.1 document. For example, a stylesheet module that 
+     is an XML 1.1 document might contain a literal result element whose name contains characters that are not permitted 
+     as part of a QName in a document that conforms to Namespaces for XML 1.0. The user needs to ensure that the nodes 
+     created by the stylesheet can be serialized as part of a well-formed document of the required version of XML.</p>  
+  
+  <h5>Support for Alternative BSF Implementations</h5>
+  <p>Extensions written in Java are directly supported by Xalan-Java. For extensions written in languages other than 
+     Java, Xalan-Java uses the Bean Scripting Framework (BSF), an architecture for incorporating scripting into Java 
+     applications and applets, and an implementation of BSF must be available on the classpath.  In previous
+     releases, IBM's BSF implementation (<code>bsf.jar</code> from 2001) has been included in the Xalan-Java distribution.  
+     Some time ago IBM donated their BSF implementation to the <a href="http://jakarta.apache.org/bsf/index.html">
+     Apache Jakarta BSF</a> project. As of this release, 
+     the IBM <code>bsf.jar</code> is no longer included in the Xalan-Java distribution.  To use extensions written in 
+     languages other than Java, please download a version of Jakarta BSF and put it on your classpath. To use
+     a different BSF implementation, please refer to <a href="extensions.html#BSFManager">setting the BSFManager</a>.</p>
+  
+  <h5>New serializer.jar</h5>
+  <p>In this release of Xalan-Java the code related to serialization of output result trees has been pulled out of 
+     <code>xalan.jar</code> and moved into a new jar file, named <code>serializer.jar</code>.</p>
+  <p>The code in <code>serializer.jar</code> has been modified to have no build or runtime dependencies on the rest of the 
+     code in Xalan-Java, therefore, <code>serializer.jar</code> can be used in a stand-alone fashion through its public APIs. 
+     Although the code has been modified to create a stand-alone jar, the serializer public APIs have not changed
+     and the package names and classnames are the same as they were last release.</p>
+   
+
+   <p>Also the following:</p>
+
+     <ul>
+     <li>Updates to the SQL extension and SQL samples to support the Apache Derby database.</li>
+     <li>Minor restructuring of the source and binary distributions.</li>
+     <li>Various performance fixes.</li>
+     <li>Various memory leak fixes.</li>
+     <li>Upgrade to Xerces-J (2.7.1) and a new version of xml-commons (xml-commons-external-1.3.02).</li>
+
+     <li>Bugzilla fixes:
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15333">15333</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27417">27417</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27516">27516</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27522">27522</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27539">27539</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27932">27932</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=28082">28082</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=28435">28435</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=28622">28622</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=28796">28796</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=28879">28879</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=29120">29120</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=29234">29234</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=29372">29372</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=29411">29411</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=29655">29655</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=29706">29706</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=30056">30056</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=30142">30142</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=30262">30262</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=30301">30301</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=30658">30658</a>
+     </li>
+     <li>XALANJ Jira bug fixes:
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-936">936</a>,     
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1186">1186</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1368">1368</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1417">1417</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1427">1427</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1431">1431</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1478">1478</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1526">1526</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1550">1550</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1556">1556</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1592">1592</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1640">1640</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1662">1662</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1705">1705</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1708">1708</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1761">1761</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1810">1810</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1811">1811</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1812">1812</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1822">1822</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1824">1824</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1852">1852</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1853">1853</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1886">1886</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1887">1887</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1888">1888</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1891">1891</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1908">1908</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1912">1912</a>,      
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1924">1924</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1925">1925</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1937">1937</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1938">1938</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1942">1942</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1955">1955</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1966">1966</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1967">1967</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1977">1977</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1978">1978</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1979">1979</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1985">1985</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1990">1990</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1994">1994</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1999">1999</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2003">2003</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2008">2008</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2013">2013</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2015">2015</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2021">2021</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2023">2023</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2026">2026</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2037">2037</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2051">2051</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2054">2054</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2058">2058</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2059">2059</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2068">2068</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2070">2070</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2074">2074</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2076">2076</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2077">2077</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2079">2079</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2081">2081</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2085">2085</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2086">2086</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2087">2087</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2089">2089</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2093">2093</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2095">2095</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2097">2097</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2099">2099</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2103">2103</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2105">2105</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2109">2109</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2113">2113</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2114">2114</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2116">2116</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2121">2121</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2123">2123</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2124">2124</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2126">2126</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2134">2134</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2136">2136</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2140">2140</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2142">2142</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2143">2143</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2144">2144</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2146">2146</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2154">2154</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2161">2161</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2167">2167</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2170">2170</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2176">2176</a>,
+      <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2183">2183</a>
+     </li>
+     <li>For a list of Xalan-Java commits, see xalan-cvs@xml.apache.org in the
+      <a href="http://mail-archives.apache.org/mod_mbox/">Apache mail archives</a>.
+     </li>        
+     </ul>
+   
+     
+   <a name="notes_260">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.6.0</h3>
+     <p>Xalan-Java 2.6.0 was released on February 29, 2004 (a leap year!).
+     </p>
+     <p>Xalan-Java 2.6.0 contains the following functional enhancements, performance enhancements and 
+        bug fixes since 2.5.2:</p>
+     <ul>
+     <li>Improvement in translet initialization time.</li>
+     <li>Addition of a translet versioning mechanism.  If the translet version
+         detected by the XSLTC runtime is more recent than any supported by the
+         XSLTC runtime, an error will be reported.</li>
+     <li>Changes that allow XSLTC to use other DTM implementations.</li>
+     <li>Release notes for the XML Serializer.  The serializer will no longer put a newline after
+         the xml header tag unless indent="yes". See bugzilla 
+         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24304">24304</a>.</li>     
+     <li>Rename of Xalan Java's xalan:doc-cache-off processing instruction to 
+         xalan-doc-cache-off.  This change was necessary due to a recent
+         change in Xerces.  Xerces has started detecting the Namespace 
+         well-formedness rule that a processing instruction's PITarget must not contain 
+         a colon. The old-style PI (xalan:doc-cache-off) will be accepted provided that
+         the XML parser does not report it as an error.  See bugzilla 
+         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26217">26217</a>.</li>
+     <li>Enhancement to XSLTC's URIResolvers and the general mechanism to resolve relative URIs.
+         XSLTC is now compatible with Xalan Intepretive.</li>
+     <li>Addition of a TransformThread sample that demonstrates how to use different transformers
+         on different threads and in different modes.</li>
+     <li>Upgrade to Xerces-J (2.6.2) and a new version of xml-commons (xml-commons-external-1.2.01)</li>
+     <li>Elimination of "enum" as a name to allow compilation under JDK 1.5</li>   
+        
+     <li>Bugzilla fixes:     
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=797">797</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=1396">1396</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5761">5761</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15140">15140</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16889">16889</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=18351">18351</a>, 
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19194">19194</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19464">19464</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22376">22376</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23046">23046</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23591">23591</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24278">24278</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24111">24111</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24187">24187</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24188">24188</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24302">24302</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24304">24304</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24365">24365</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24414">24414</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24518">24518</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24695">24695</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24728">24728</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24788">24788</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24793">24793</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24958">24958</a>, 
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24979">24979</a>,           
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24985">24985</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24988">24988</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25368">25368</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25416">25416</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25442">25442</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25449">25449</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25816">25816</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25924">25924</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26019">26019</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26030">26030</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26075">26075</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26169">26169</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26217">26217</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26697">26697</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26742">26742</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26829">26829</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26842">26842</a>                                                                       
+     </li>
+     <li>For a list of Xalan-Java commits, see xalan-cvs@xml.apache.org in the
+      <a href="http://mail-archives.apache.org/mod_mbox/">Apache mail archives</a>.
+     </li>         
+     </ul>
+      
+   
+   <a name="notes_252">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.5.2</h3>
+     <p>Xalan-Java 2.5.2 was released on October 30, 2003.
+     </p>
+     <p>Xalan-Java 2.5.2 contains bug fixes and performance enhancements since 2.5.1.</p>
+      <p>Fixes in this release include the following: </p>
+     <ul>
+     <li>
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=782">782</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=788">788</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=789">789</a>, 
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=795">795</a>,                
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=890">890</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3415">3415</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5133">5133</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5972">5972</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6155">6155</a>, 
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7205">7205</a>,           
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7408">7408</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10900">10900</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11414">11414</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12441">12441</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13082">13082</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14149">14149</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14607">14607</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15090">15090</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15327">15327</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15700">15700</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15828">15828</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15901">15901</a>,            
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16311">16311</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16512">16512</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16675">16675</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=17630">17630</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=18821">18821</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=18907">18907</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19297">19297</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19591">19591</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19770">19770</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19823">19823</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19890">19890</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19918">19918</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19972">19972</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19973">19973</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20074">20074</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20114">20114</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20256">20256</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20537">20537</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20572">20572</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20625">20625</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20685">20685</a>,            
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20795">20795</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20819">20819</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20832">20832</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20841">20841</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20909">20909</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20913">20913</a>, 
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20920">20920</a>,     
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21039">21039</a>,   
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21048">21048</a>,         
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21087">21087</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21300">21300</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21309">21309</a>,   
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21449">21449</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21452">21452</a>,               
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21471">21471</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21478">21478</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21491">21491</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21697">21697</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21713">21713</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21805">21805</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21893">21893</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22025">22025</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22115">22115</a>,   
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22167">22167</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22342">22342</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22422">22422</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22438">22438</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22623">22623</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22769">22769</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22777">22777</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22808">22808</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22880">22880</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23200">23200</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23113">23113</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23115">23115</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23271">23271</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23418">23418</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23706">23706</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23812">23812</a>,   
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23896">23896</a>,   
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=23983">23983</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24013">24013</a>,      
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24025">24025</a>      
+     </li>
+     <li>For a list of Xalan-Java commits, see xalan-cvs@xml.apache.org in the
+      <a href="http://mail-archives.apache.org/mod_mbox/">Apache mail archives</a>.
+     </li>         
+     </ul>
+     
+   
+   <a name="notes_251">‌</a>     
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.5.1</h3>
+     <p>Xalan-Java 2.5.1 was released on June 3, 2003.
+     </p>
+     <p>Xalan-Java 2.5.1 contains bug fixes and performance enhancements since 2.5.0.</p>
+      <p>Fixes in this release include the following: </p>
+     <ul>
+     <li>
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15200">15200</a>,     
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=18585">18585</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=18926">18926</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19029">19029</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19388">19388</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19471">19471</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19474">19474</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19522">19522</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19640">19640</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19900">19900</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19960">19960</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20237">20237</a>,
+      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20273">20273</a>
+     </li>
+     <li>For a list of Xalan-Java commits, see xalan-cvs@xml.apache.org in the
+      <a href="http://mail-archives.apache.org/mod_mbox/">Apache mail archives</a>.
+     </li>         
+     </ul>
+   
+   
+    <a name="notes_250">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.5.0</h3>
+     <p>Xalan-Java 2.5.0 was released on April 16,2003.
+     </p>
+     <p>Xalan-Java 2.5.0 contains a variety of features, bug fixes and 
+        performance enhancements since 2.5.D1.</p>
+     <p>New features in Xalan-Java 2.5.0 include:
+        <ul>
+        <li>integration of the Document Table Model (DTM) with the XSLTC 
+            processor [Henry Zongaro, Morris Kwan] and </li>
+        <li>integration of the Xalan Interpretive and Xalan Compiled 
+            serializers into a common serializer [Brian Minchau].</li>  
+        </ul>    
+        These features have been driven by a need to get common behavior, 
+        improve maintainability, reduce duplication of effort for future work, 
+        and in some cases improve performance and conformance.</p>
+     <p>Refer to <a href="whatsnew.html">What's New</a> for a description of the new function 
+        and <a href="history.html">History of software changes</a> for a list of the various 
+        bug fixes and other enhancements in this release.</p>
+     
+     
+     <a name="notes_25D1">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.5.D1</h3>
+     <p>Xalan-Java 2.5.D1 was released on March 3, 2003.
+     </p>
+     <p>This developer's release, Xalan-Java 2.5.D1, has changes since 2.4.1 and
+        is primarily for the purpose of releasing 
+        various bug fixes to the community.  These will eventually be released officially in 
+        a future Xalan-Java 2.5 version, along with some new function.</p>
+     <p>Fixes in this release include the following: </p>
+     <ul>
+     <li>
+<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=4858">4858</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5140">5140</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6075">6075</a>,        
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6157">6157</a>,   
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10053">10053</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10626">10626</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12481">12481</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13414">13414</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13651">13651</a>,          
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13774">13774</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13775">13775</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13977">13977</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14112">14112</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14148">14148</a>,               
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14157">14157</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14178">14178</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14229">14229</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14236">14236</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14237">14237</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14241">14241</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14244">14244</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14300">14300</a>,          
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14322">14322</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14324">14324</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14365">14365</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14368">14368</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14406">14406</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14578">14578</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14753">14753</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14856">14856</a>,               
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14862">14862</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14965">14965</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15074">15074</a>,               
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15094">15094</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15218">15218</a>,          
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15254">15254</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15373">15373</a>,          
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15586">15586</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16745">16745</a>,          
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=17030">17030</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=17136">17136</a>
+</li>
+     <li>Support for and bundling of Xerces Java 2.3.</li>     
+     <li>Support for and bundling of <code>xml-apis.jar</code> from the tck-jaxp-1_2_0 branch of xml-commons.
+         This version of the Java APIs for XML Processing successfully passes the JAXP 1.1 and 
+         JAXP 1.2 TCKs.</li>     
+     <li>For a list of Xalan-Java commits, see xalan-cvs@xml.apache.org in the
+     <a href="http://mail-archives.apache.org/mod_mbox/">Apache mail archives</a>.</li>         
+     </ul>     
+       
+     
+     <a name="notes_241">‌</a>   
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.4.1</h3>
+     <p>Xalan-Java 2.4.1 was released on October 31, 2002 (Halloween!).
+     </p>
+     <ul>
+      <li>Performance fixes and enhancements to address the degradation of performance between Xalan-Java
+      version 2.3.1 and Xalan-Java 2.4.0.</li>
+      <li>A prototype implementation of the <a href="http://www.w3.org/TR/2002/WD-DOM-Level-3-XPath-20020328/">DOM Level 3 XPath Specification</a>. 
+          The implementation is considered 'experimental' at this time due to the status of the specification.
+          See the new sample, <a href="samples.html#applyxpathdom">ApplyXPathDOM</a> for an
+          example of how to use this API.</li>
+     <li>Extension changes and enhancements:</li>
+      <ul>
+        <li>Implement canonical namespaces for all Xalan extensions. All extensions
+        now use namespaces starting with <code>http://xml.apache.org/xalan</code>. The old namespaces are
+        still supported for backward compatibility. See the updated 
+        <a href="extensionslib.html#intro">extensions</a> documentation for details.</li>
+        <li>Added new EXSLT extension functions, including the EXSLT dynamic extension functions 
+        max, min, sum, map, evaluate and closure, the EXSLT strings extension functions align, 
+        concat, padding, split and tokenize, and some new extension functions in the math module.</li>
+        <li>Reorganized the extension functions for new EXSLT extensions.
+     The implementation of some extension functions (intersection, difference, distinct, 
+     evaluate and tokenize) are moved from the main Extensions class to the corresponding EXSLT modules.</li>
+        <li>Enable the EXSLT extensions for XSLTC. The EXSLT common, math, sets, dates-and-times and strings
+        modules can be used in XSLTC.</li>
+        <li>Integration of the nodeset and redirect extension for XSLTC. You can now use Xalan namespaces for
+        these extensions in XSLTC.</li>
+        <li>Enhancement in Java extenion for XSLTC. Three namespace formats (Java, package and class) can all
+        be used in XSLTC. More type conversion rules are added as well.</li>
+      </ul>
+      <li>Enable support for invoking transformations using the Xalan compiler (XSLTC) via the 
+     Xalan interpretive Process command line.  Specifically, the -XSLTC option was added.  The 
+     -TT, -TG, -TS, -TTC, -QC, -L, -INCREMENTAL, -NOOPTIMIZE and -RL option do not work in XSLTC mode.  All
+     other existing options can be used with -XSLTC.  Additional options were added to enable XSLTC compile
+     and transform modes: -XO, -XD, -XJ, -XP, -XN, -XX, -XT.  See the Process usage statement for more
+     information on these options.</li>
+     <li>Fixed SQL Extension problem where a query that returned zero rows would incorrectly
+      return a JDBC exception.</li>
+     <li>Fixed a limitation for XPath expressions. The token queue and operations map can now grow
+      to accomodate really large XPath expressions.</li>
+     <li>Fixes for the following bugzilla defects: 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=4344">4344</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5046">5046</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6181">6181</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6927">6927</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7161">7161</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7357">7357</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8175">8175</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8473">8473</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8939">8939</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9731">9731</a>,                              
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9959">9959</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10176">10176</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10384">10384</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10414">10414</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10643">10643</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11073">11073</a>,                         
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11341">11341</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11661">11661</a>,     
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11743">11743</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11809">11809</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12077">12077</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12127">12127</a>,                         
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12298">12298</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12687">12687</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13059">13059</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13303">13303</a>,               
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13305">13305</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13106">13106</a>,   
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13501">13501</a>,            
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13711">13711</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13754">13754</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13863">13863</a>,          
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13944">13944</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14022">14022</a>
+</li> 
+     <li>Support for and bundling of Xerces Java 2.2.</li>
+     <li>Support for and bundling of <code>xml-apis.jar</code> from the factoryfinder-build of the RIVERCOURT1 branch of xml-commons.  This version of the Java
+     APIs for XML Processing successfully passes the JAXP 1.1 and JAXP 1.2 TCKs.</li>
+     <li>For a list of Xalan-Java commits, see xalan-cvs@xml.apache.org in the
+     <a href="http://mail-archives.apache.org/mod_mbox/">Apache mail archives</a>.</li>
+     <li>Support building Xalan with JDK 1.4.</li>
+     </ul>
+     
+     
+     <a name="notes_240">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Release notes for Xalan-Java 2.4.0</h3>
+     <p>Xalan-Java 2.4.0 was released on September 3, 2002.
+     </p>
+     <ul>
+     <li>Fixes for the following bugzilla defects : 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3238">3238</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=4603">4603</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5013">5013</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5016">5016</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=5941">5941</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6071">6071</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6268">6268</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6284">6284</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6356">6356</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6547">6547</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6798">6798</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6833">6833</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6925">6925</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=6972">6972</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7023">7023</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7118">7118</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7123">7123</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7157">7157</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7410">7410</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=7776">7776</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8324">8324</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8358">8358</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8551">8551</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8894">8894</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9068">9068</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9137">9137</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9146">9146</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9171">9171</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9174">9174</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9179">9179</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9572">9572</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9575">9575</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9683">9683</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9753">9753</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10137">10137</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10306">10306</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10323">10323</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10625">10625</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10715">10715</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10832">10832</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10837">10837</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10839">10839</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10914">10914</a>, 
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10945">10945</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11123">11123</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11166">11166</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11221">11221</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11345">11345</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11704">11704</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11987">11987</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=11828">11828</a>,
+     <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12075">12075</a>
+</li>. 
+     <li>Xalan-Java now uses a list of supported encodings in a properties file 
+     (org.apache.xml.serializer.Encodings.properties). Fixes Bugzilla 6356. Patch from Sergey Ushakov. </li>     
+     <li>Support for the <a href="http://www.exslt.org/">EXSLT</a> function and result elements, and EXSLT 
+     date-and-time functions.</li>
+     <li>Improvements to the extensions mechanism to more efficiently handle the detection and analysis of extensions 
+     during the stylesheet "composition" process, and the generation of the required extension handlers during 
+     initialization of the transformation process.</li>
+     <li>Performance improvement.  Instead of looping through the ExtendedType objects, use a hashtable and go
+     directly to the correct object.</li>
+     <li>Separation of source and messages.  Messages have been moved into property files for easier localization.</li>
+     <li>XSLTC version upgraded from 1.0 to 1.2.</li>
+     <li>Support for and bundling of Xerces Java 2.1.</li>
+     <li>Support for and bundling of <code>xml-apis.jar</code> from the RIVERCOURT1 branch of xml-commons.  This version of the Java
+     APIs for XML Processing successfully passes the JAXP 1.1 and JAXP 1.2 TCKs.</li>
+     <li>For a list of Xalan-Java commits, see xalan-cvs@xml.apache.org in the
+     <a href="http://mail-archives.apache.org/mod_mbox/">Apache mail archives</a>.</li>
+     </ul>
+     
+     <a name="other">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Other points of interest</h3>
+     <ul>
+     <li>Xalan Java 2 is integrated with release 2 of Xerces-Java. Xalan-Java Version 2.7.2 does not include support for the deprecated Xalan-Java 1 compatability API. 
+     The Xalan-Java 1 compatability code does NOT compile with Xerces-Java 2.<br />
+<br />
+</li>
+     <li>The <a href="samples.html#sql">SQL extension samples</a> continue to use InstantDB, but based on our realization of changes 
+     that have occurred in the licensing of InstantDB, we no longer include InstantDB and the associated sample database with our distibution.
+     We do, however, provide information on how to <a href="samples.html#instantdbsetup">set up InstantDB</a> to support our SQL 
+     extension samples.<br />
+<br />
+</li>
+     <li>Documentation updates: We have subdivided the release notes into multiple files to accelerate HTML document loading, and we have added a
+     document on <a href="features.html">Transform features</a>.<br />
+<br />
+</li>
+     <li>If an attempt is made to coerce a different namespace onto a prefix already in use in xsl:attribute, the attribute will come out 
+     in the wrong namespace. Workaround: either provide an NCName instead of a QName for the attribute, or provide a QName with a prefix not
+     used elsewhere.<br />
+<br />
+</li>
+     <li>Handling xsl:namespace-alias declarations: In release 2.0.D01, we reported the need to do some research concerning exactly how Xalan
+     should handle xsl:namespace-alias declarations. As a result of discussions among members of the W3C Working Group on XSL, we have reached a
+     more precise consensus on how namespaces should be represented when an xsl:namespace-alias declaration is in effect.<br />
+<br />
+     If a literal result element has a namespace prefix, the prefix will be preserved and the namespace URI of the element will be as
+     specified in the xsl:namespace-alias element, but the result-prefix is not required to appear in the result. This also applies to the
+     two other cases of "Literal namespace URI" mentioned in the XSLT Recommendation on 
+     <a href="http://www.w3.org/TR/xslt#literal-result-element">Literal Result Elements</a>. More simply, if the stylesheet calls for
+     &lt;axsl:foo&gt; to be output as a literal result element, then it will be output as &lt;axsl:foo&gt; in the result, but the namespace
+     associated with this "axsl" prefix will be as designated in the xsl:namespace-alias declaration.<br />
+<br />
+</li>
+     <li>For HTML output, Xalan-Java 2 outputs character entity references (&amp;copy; etc.) for the special characters designated in  
+     <a href="http://www.w3.org/TR/xhtml1/#dtds">Appendix A. DTDs of the XHTML 1.0: The Extensible HyperText Markup
+     Language</a>. Xalan-Java 1.x, on the other hand, outputs literal characters for some of these special characters.<br />
+<br />
+</li>
+     <li>In conformance with the <a href="http://www.w3.org/TR/xslt#section-HTML-Output-Method">XSLT Recommendation on the HTML 
+     Output Method</a> and <a href="http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.2.1">Section B.2.1 of the HTML 4.0
+     Recommendation</a>, Xalan-Java 2 uses %hh encoding for each byte of the UTF-8 representation of non-ASCII characters in HTML URI
+     attributes.<br />
+<br />
+</li>
+     <li>When your stylesheet asks for an explicit carriage-return character (&amp;#13;) to be inserted into the output, it is output during
+     the serialization process in escaped form unless escaping has been disabled.  When your stylesheet asks for an explicit line-feed character
+     (&amp;#10;) to be output, the system-default line-break character(s) is/are output during the serialization process.  Also keep in mind that
+     the XML parser normalizes line-breaks to line-feeds when it sends character events to the processor.<br />
+<br />
+</li>
+     <li>If your XML input is a DOM, use the javax.xml.parsers.DocumentBuilderFactory setCoalescing() method to set coalescing to true (it is
+     false by default), if you want to append CDATA sections to adjacent text sections to form a single text node (as the XPath standard calls
+      for), and if the XML parser supports this feature (Xerces-Java 2.11.0 does not).<br />
+<br />
+</li>
+     <li>When you traverse the namespace axis for a collection of element nodes, Xalan-Java includes <b>one</b> namespace node for each namespace in scope 
+     for one or more of the nodes in that collection. The XPath expression does not return additional (redundant) namespace nodes for each element
+     for which the namespace nodes are in scope.<br />
+<br />
+</li>
+     <li>See <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=2291">Bugzilla bug 2291</a> for a discussion of issues surrounding
+     use of the default character encoding to read META-INF/Services.<br />
+<br />
+</li>
+     <li>As <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=1800">Bugzilla bug 1800</a> reports, the Transformer does not get the 
+     setTransformState event until after the startDocument event. This could present a problem for tools developers, and we do intend to fix this 
+     bug.</li> 
+     </ul>
+     
+
+
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/resources.html b/xalan-j/resources.html
new file mode 100644
index 0000000..67d14f1
--- /dev/null
+++ b/xalan-j/resources.html
@@ -0,0 +1,527 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Resources</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Resources</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>Resources<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h4 class="resourcetitle">
+<strong>Xalan-Java</strong>
+</h4>
+<p>id = [xslt4j]<br />
+<a href="http://xalan.apache.org/xalan-j">http://xalan.apache.org/xalan-j</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Xalan-Java Version 2.7.2</strong>
+</h4>
+<p>id = [xslt4j-current]<br />
+<a href="http://xalan.apache.org/xalan-j">http://xalan.apache.org/xalan-j</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>xalan-j distribution directory</strong>
+</h4>
+<p>id = [xslt4j-distdir]<br />
+<a href="http://www.apache.org/dyn/closer.cgi/xalan/xalan-j">http://www.apache.org/dyn/closer.cgi/xalan/xalan-j</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>xalan-j archive directory</strong>
+</h4>
+<p>id = [xslt4j-distdir-previous]<br />
+<a href="http://archive.apache.org/dist/xalan/xalan-j/">http://archive.apache.org/dist/xalan/xalan-j/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Xerces-Java 2.11.0</strong>
+</h4>
+<p>id = [xml4j-used]<br />
+<a href="http://xerces.apache.org/xerces2-j/index.html">http://xerces.apache.org/xerces2-j/index.html</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>xerces-j distribution directory</strong>
+</h4>
+<p>id = [xml4j-distdir]<br />
+<a href="http://www.apache.org/dyn/closer.cgi/xerces/j/">http://www.apache.org/dyn/closer.cgi/xerces/j/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Ant</strong>
+</h4>
+<p>id = [ant]<br />
+<a href="http://jakarta.apache.org/ant/index.html">http://jakarta.apache.org/ant/index.html</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>The Apache Software License, Version 1.1</strong>
+</h4>
+<p>id = [ApacheLicense]<br />
+<a href="http://xml.apache.org/dist/LICENSE.txt">http://xml.apache.org/dist/LICENSE.txt</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>JIRA (the Apache issue tracker)</strong>
+</h4>
+<p>id = [jira]<br />
+<a href="http://issues.apache.org/jira/browse/XALANJ">http://issues.apache.org/jira/browse/XALANJ</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>XalanJ2 open bugs</strong>
+</h4>
+<p>id = [buglist]<br />
+<a href="http://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;mode=hide&amp;pid=10584&amp;resolutionIds=-1&amp;sorter/field=issuekey&amp;sorter/order=DESC">http://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;mode=hide&amp;pid=10584&amp;resolutionIds=-1&amp;sorter/field=issuekey&amp;sorter/order=DESC</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Bean Scripting Framework (BSF)</strong>
+</h4>
+<p>id = [bsf]<br />
+<a href="http://jakarta.apache.org/bsf/index.html">http://jakarta.apache.org/bsf/index.html</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Xalan Repository Release Notes</strong>
+</h4>
+<p>id = [Readme]<br />
+<a href="http://www.apache.org/websrc/cvsweb.cgi/xml-xalan/README">http://www.apache.org/websrc/cvsweb.cgi/xml-xalan/README</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Mulberry XSL Mailing List</strong>
+</h4>
+<p>id = [mulberryxsl-list]<br />
+<a href="http://mulberrytech.com/xsl/xsl-list/index.html">http://mulberrytech.com/xsl/xsl-list/index.html</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>XSL Frequently Asked Questions</strong>
+</h4>
+<p>id = [dpawsonxslfaq]<br />
+<a href="http://www.dpawson.co.uk/xsl/">http://www.dpawson.co.uk/xsl/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Extensible Stylesheet Language (XSL) Version 1.0</strong>
+</h4>
+<p>id = [xsl]<br />
+<a href="http://www.w3.org/TR/xsl">http://www.w3.org/TR/xsl</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>XSL Transformations (XSLT) Version 1.0</strong>
+</h4>
+<p>id = [xslt]<br />
+<a href="http://www.w3.org/TR/xslt">http://www.w3.org/TR/xslt</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>XML Path Language (XPath) Version 1.0</strong>
+</h4>
+<p>id = [xpath]<br />
+<a href="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>DOM</strong>
+</h4>
+<p>id = [dom]<br />
+<a href="http://www.w3.org/DOM">http://www.w3.org/DOM</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>DOM level 2</strong>
+</h4>
+<p>id = [dom2]<br />
+<a href="http://www.w3.org/TR/DOM-Level-2/">http://www.w3.org/TR/DOM-Level-2/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>DOM level 3</strong>
+</h4>
+<p>id = [dom3]<br />
+<a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/">http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>SAX</strong>
+</h4>
+<p>id = [sax]<br />
+<a href="http://www.megginson.com/SAX/sax.html">http://www.megginson.com/SAX/sax.html</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>SAX 2</strong>
+</h4>
+<p>id = [sax2]<br />
+<a href="http://sax.sourceforge.net/">http://sax.sourceforge.net/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Java API for XML Parsing 1.0</strong>
+</h4>
+<p>id = [jaxp]<br />
+<a href="http://java.sun.com/webservices/jaxp/dist/1.1/docs/api/index.html">http://java.sun.com/webservices/jaxp/dist/1.1/docs/api/index.html</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Java API for XML Processing 1.1</strong>
+</h4>
+<p>id = [jaxp11]<br />
+<a href="http://java.sun.com/webservices/jaxp/dist/1.1/jaxp-1_1-spec.pdf">http://java.sun.com/webservices/jaxp/dist/1.1/jaxp-1_1-spec.pdf</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Java API for XML Processing 1.2</strong>
+</h4>
+<p>id = [jaxp12]<br />
+<a href="http://java.sun.com/webservices/jaxp/index.jsp">http://java.sun.com/webservices/jaxp/index.jsp</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Java API for XML Processing (JAXP) 1.3</strong>
+</h4>
+<p>id = [jaxp13-longname-withacronym]<br />
+<a href="https://jaxp.java.net/">https://jaxp.java.net/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>JAXP 1.3</strong>
+</h4>
+<p>id = [jaxp13]<br />
+<a href="https://jaxp.java.net/">https://jaxp.java.net/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Java Specification Request 63</strong>
+</h4>
+<p>id = [jsr063]<br />
+<a href="http://jcp.org/aboutJava/communityprocess/review/jsr063/">http://jcp.org/aboutJava/communityprocess/review/jsr063/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>The Jakarta Site - Apache Tomcat</strong>
+</h4>
+<p>id = [tomcat]<br />
+<a href="http://tomcat.apache.org/">http://tomcat.apache.org/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>xml-commons/java/external/src</strong>
+</h4>
+<p>id = [xmlapirepository]<br />
+<a href="http://svn.apache.org/viewvc/xml/commons/trunk/java/external/src/">http://svn.apache.org/viewvc/xml/commons/trunk/java/external/src/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Endorsed Standards Override Mechanism</strong>
+</h4>
+<p>id = [endorsed]<br />
+<a href="http://java.sun.com/j2se/1.4.2/docs/guide/standards/">http://java.sun.com/j2se/1.4.2/docs/guide/standards/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Apache mail archives</strong>
+</h4>
+<p>id = [apache-mail-archives]<br />
+<a href="http://mail-archives.apache.org/mod_mbox/">http://mail-archives.apache.org/mod_mbox/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Apache bugzilla</strong>
+</h4>
+<p>id = [old-bugzilla]<br />
+<a href="http://issues.apache.org/bugzilla/">http://issues.apache.org/bugzilla/</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Xalan Development Mailing List</strong>
+</h4>
+<p>id = [xalandev]<br />
+<a href="mailto:dev@xalan.apache.org">mailto:dev@xalan.apache.org</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Steven J. Hathaway</strong>
+</h4>
+<p>id = [shathaway]<br />
+<a href="mailto:shathaway@apache.org">mailto:shathaway@apache.org</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Scott Boag</strong>
+</h4>
+<p>id = [sboag]<br />
+<a href="mailto:scott_boag@us.ibm.com">mailto:scott_boag@us.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Shane Curcuru</strong>
+</h4>
+<p>id = [scurcuru]<br />
+<a href="mailto:Shane_Curcuru@us.ibm.com">mailto:Shane_Curcuru@us.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Paul Dick</strong>
+</h4>
+<p>id = [pdick]<br />
+<a href="mailto:Paul_Dick@us.ibm.com">mailto:Paul_Dick@us.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Joseph Kesselman</strong>
+</h4>
+<p>id = [jkesselman]<br />
+<a href="mailto:keshlam@us.ibm.com">mailto:keshlam@us.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Donald Leslie</strong>
+</h4>
+<p>id = [dleslie]<br />
+<a href="mailto:donald_leslie@us.ibm.com">mailto:donald_leslie@us.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Costin Manolache</strong>
+</h4>
+<p>id = [cmanolache]<br />
+<a href="mailto:cmanolache@yahoo.com">mailto:cmanolache@yahoo.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>David Marston</strong>
+</h4>
+<p>id = [dmarston]<br />
+<a href="mailto:David_Marston@us.ibm.com">mailto:David_Marston@us.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Myriam Midy</strong>
+</h4>
+<p>id = [mmidy]<br />
+<a href="mailto:myriam_midy@us.ibm.com">mailto:myriam_midy@us.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Gary L Peskin</strong>
+</h4>
+<p>id = [gpeskin]<br />
+<a href="mailto:garyp@firstech.com">mailto:garyp@firstech.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>John Gentilin</strong>
+</h4>
+<p>id = [jgentilin]<br />
+<a href="mailto:johng@apache.org">mailto:johng@apache.org</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Morris Kwan</strong>
+</h4>
+<p>id = [mkwan]<br />
+<a href="mailto:mkwan@ca.ibm.com">mailto:mkwan@ca.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Ilene Seelemann</strong>
+</h4>
+<p>id = [ilene]<br />
+<a href="mailto:ilene@ca.ibm.com">mailto:ilene@ca.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Henry Zongaro</strong>
+</h4>
+<p>id = [zongaro]<br />
+<a href="mailto:zongaro@ca.ibm.com">mailto:zongaro@ca.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Brian Minchau</strong>
+</h4>
+<p>id = [minchau]<br />
+<a href="mailto:minchau@ca.ibm.com">mailto:minchau@ca.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Igor Hersht</strong>
+</h4>
+<p>id = [igor]<br />
+<a href="mailto:igorh@ca.ibm.com">mailto:igorh@ca.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Christine Li</strong>
+</h4>
+<p>id = [jycli]<br />
+<a href="mailto:jycli@ca.ibm.com">mailto:jycli@ca.ibm.com</a>
+<br />
+</p>
+<h4 class="resourcetitle">
+<strong>Joanne Tong</strong>
+</h4>
+<p>id = [jtong]<br />
+<a href="mailto:joannet@ca.ibm.com">mailto:joannet@ca.ibm.com</a>
+<br />
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/resources/Xalan-Logo-tm.png b/xalan-j/resources/Xalan-Logo-tm.png
new file mode 100644
index 0000000..9a08808
--- /dev/null
+++ b/xalan-j/resources/Xalan-Logo-tm.png
Binary files differ
diff --git a/xalan-j/resources/Xalan-Logo.txt b/xalan-j/resources/Xalan-Logo.txt
new file mode 100644
index 0000000..7886950
--- /dev/null
+++ b/xalan-j/resources/Xalan-Logo.txt
@@ -0,0 +1,85 @@
+
+The XALAN Logo
+
+Graphic: A stylized version of the African Xalam instrument.
+
+
+
+TEXT FONTS SIZE AND STYLE:
+
+TM (trademark)
+
+	Font: Arial
+	Size: 14pt
+	Style: Bold)
+
+XSLT
+
+	Font: Arial
+	Size: 22pt
+	Style: Bold
+
+Apache Software Foundation
+
+	Font: Arial
+	Size: 18pt
+	Style: Bold
+	Note: 2 space characters between words
+
+Xalan	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-C	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-J	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+
+INSTRUMENT GRAPHIC (vector equations)
+
+	Vertical Width:		0.75 inch (3/4)
+	HorizontalLength:	3.667 inch (3 2/3)
+
+	Oval on the left,
+	neck and butt on the right.
+
+	Oval Width:		0.75 inch (3/4)
+	Oval Length:		1.583 inch (1 7/12)
+
+	Neck Width:		0.167 inch (1/6)
+
+	Butt Width:		0.25 inch (1/4)
+	Butt Length:		0.417 inch (5/12)
+
+
+Description of instrument logo
+
+	Oval: simulation of a gourd sound chamber
+	With orange gradation hues
+
+	Neck: rectangle simulating a round fingerboard
+	With yellow-green gradation hues
+
+	Butt: rounded rectangle simulating end of neck
+	With olive-green hue
+
+	String Anchor:  rounded rectangle on the gourd
+	With olive-green hue
+
+	2 strings: the full length from Anchor to Butt
+
+	2 strings: tied to neck, at 1/2 length from Anchor to Butt
+
+	3 Loose Tie Strings on the Butt, simulating tuning anchors
+
+	
\ No newline at end of file
diff --git a/xalan-j/resources/Xalan-Trademark.txt b/xalan-j/resources/Xalan-Trademark.txt
new file mode 100644
index 0000000..0bd3704
--- /dev/null
+++ b/xalan-j/resources/Xalan-Trademark.txt
@@ -0,0 +1,106 @@
+
+The XALAN Logo - Trademark Description
+--------------------------------------
+
+Prepared By:  
+
+	Steven J. Hathaway
+
+	(shathaway@apache.org)
+
+	September 3, 2011
+
+
+
+Prepared for:
+
+	The Apache Software Foundation
+
+--------------------------------------
+
+Graphic: A stylized version of the African Xalam instrument.
+
+Note: the difference in spelling.
+
+	Xalam is the African Musical Instrument
+	Xalan is the Apache Xalan Software Project
+
+
+TEXT FONTS SIZE AND STYLE:
+
+TM (trademark symbol)
+
+	Font: Arial
+	Size: 14pt
+	Style: Bold)
+
+XSLT
+
+	Font: Arial
+	Size: 22pt
+	Style: Bold
+
+Apache Software Foundation (trademark name)
+
+	Font: Arial
+	Size: 18pt
+	Style: Bold
+	Note: 2 space characters between words
+
+Xalan	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-C	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-J	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+
+INSTRUMENT GRAPHIC (vector equations)
+
+	Vertical Width:		0.75 inch (3/4)
+	HorizontalLength:	3.667 inch (3 2/3)
+
+	Oval on the left,
+	neck and butt on the right.
+
+	Oval Width:		0.75 inch (3/4)
+	Oval Length:		1.583 inch (1 7/12)
+
+	Neck Width:		0.167 inch (1/6)
+
+	Butt Width:		0.25 inch (1/4)
+	Butt Length:		0.417 inch (5/12)
+
+
+Description of instrument logo
+
+	Oval: simulation of a gourd sound chamber
+	With orange gradation hues
+
+	Neck: rectangle simulating a round fingerboard
+	With yellow-green gradation hues
+
+	Butt: rounded rectangle simulating end of neck
+	With olive-green hue
+
+	String Anchor:  rounded rectangle on the gourd
+	With olive-green hue
+
+	2 strings: the full length from Anchor to Butt
+
+	2 strings: tied to neck, at 1/2 length from Anchor to Butt
+
+	3 Loose Tie Strings on the Butt, simulating tuning anchors
+
+	
\ No newline at end of file
diff --git a/xalan-j/resources/XalanJ-Logo-tm.png b/xalan-j/resources/XalanJ-Logo-tm.png
new file mode 100644
index 0000000..cab93a7
--- /dev/null
+++ b/xalan-j/resources/XalanJ-Logo-tm.png
Binary files differ
diff --git a/xalan-j/resources/apache-xalan.css b/xalan-j/resources/apache-xalan.css
new file mode 100644
index 0000000..fc2fa1a
--- /dev/null
+++ b/xalan-j/resources/apache-xalan.css
@@ -0,0 +1,414 @@
+/* Xalan-C/C++ Project Web Pages (css) Stylesheet */
+
+/*
+ * 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.
+*/
+
+/* This (css) stylesheet renders the xhtml web pages that were generated
+ * from StyleBook XML markup using the "xalan-book.xslt" transformation.
+*/
+
+html > bod  {left:0;}
+body {
+/*  background-color: white; */
+  background-color: #f8f8f0;
+  color: black;
+  padding: 0;
+  margin: 0;
+  font-family: arial, "lucida console", san-serif;
+}
+
+/* Emulate table align=center */
+div.centered, td.centered {
+  text-align: center;
+}
+
+div.centered table {
+  margin: 0 auto;
+  text-align: left;
+}
+
+/*
+ * ID Sections
+ */
+
+#content {
+  width: 80%;
+  float: left;
+  font-size: 12pt;
+  padding-top: 1em;
+  padding-left: 5px;
+  margin-left: 10px;
+  border-left: 1px solid #aaa;
+}
+
+#navLeft {
+  clear: left;
+  width: 15%;
+  float: left;
+  padding: 2px;
+  margin-left: 1%;
+  color: red;
+  position: relative;
+  left: 1px;
+  background-color: #eee;
+}
+
+.navGroup {
+  color: Black;
+  font-size: 14pt;
+}
+
+
+#title {
+  color: black;
+  background-color: #eee;
+  text-align: center;
+  border-bottom: 1px solid #aaa;
+  padding: 0;
+  vertical-align: middle;
+}
+
+table.HdrTitle {
+  font-size: 18pt;
+}
+
+table.HdrButtons {
+  font-size: 8pt;
+  background-color: #ccf;
+  align: "center";
+  border: "1";
+
+}
+
+#footer {
+    clear: both;
+    margin: 0 2em;
+    color: #444;
+    background-color: #ddd;
+    text-align: center;
+    padding: .5em 0;
+    font-size: 75%;
+    border-top: 1px solid #aaa;
+}
+
+/*
+ * Anchors
+ */
+
+a {
+  color: blue;
+  text-decoration: undedrline;
+}
+
+a img {
+  border: 0;
+}
+
+a:hover {
+  text-decoration: none;
+  background-color: #d7c9c9;
+}
+
+/*
+ * Headers
+ */
+
+h1 {}
+
+#title h1 {
+  padding: 1px 0;
+  margin: 0;
+  float: right;
+  width: 60%;
+  font-size: 20pt;
+  text-align: center;
+}
+
+#content h1 { background-color: #8af }
+
+h2 {}
+
+#title h2 {
+  font-size: 14pt;
+  width: 60%;
+  text-alignment: center;
+  padding: 1px 0;
+  margin: 0;
+}
+
+#content h2 { background-color: #9bf }
+
+#content h2.year {
+  background-color: #ddd;
+  text-align: center;
+}
+
+h3 {}
+
+#content h3.monthName {
+  background-color: #333;
+  text-align: center;
+}
+
+#content h3 { background-color: #acf }
+
+h4{}
+
+#content h4.eventTitle {
+  margin-left: 1%;
+  border-bottom: 1px solid blue;
+}
+
+#content h4 { background-color: #cdf }
+
+/*
+ * Tables
+ */
+
+th {}
+
+td {}
+
+th.content {background-color: #4BD }
+td.content {background-color: #AEF }
+
+/*
+ * Lists and navLeft
+ */
+
+ul {}
+
+#navLeft ul {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+#navLeft ul li {
+  margin: 0;
+}
+
+#navLeft ul li p {
+  margin: 0;
+}
+
+#navLeft ul li ul {
+  list-style-type: none;
+  font-size: 90%;
+  margin: 0 2em;
+}
+
+#navLeft ul li ul li {
+  margin: 0;
+}
+
+/*
+ * Paragraphs
+ */
+
+p {}
+
+#navLeft p {
+  text-align: center;
+  padding: 0 auto;
+  margin: 0;
+}
+
+#footer p {
+  padding: 0;
+}
+
+#content p.topalign {
+  vertical-align: middle;
+  height: 2em;
+  text-align: center;
+  width: 100%;
+  padding: .5em;
+  border: 1px solid #ddd;
+}
+
+#content p.topalign img {
+  vertical-align: middle;
+  text-align: text-middle;
+}
+
+#content p.quote {
+  color:black;
+  font-style: italic;
+  font-size: 110%;
+  margin-left: 10%;
+  margin-right: 10%;
+  padding 1em;
+  border: 1px solid #ddd;
+  text-align: center;
+}
+
+#content p.navbar {
+  font-size: 90%;
+  text-align: center;
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #ddd;
+}
+
+blockquote {}
+
+blockquote.note {
+  font-size: 80%;
+  border: 1px solid #ddd;
+  background-color: #eee;
+}
+
+td.noteImg {
+  background-color: white;
+  border: 0;
+}
+
+td.noteTxt {
+  background-color: white;
+  font-size: 120%;
+  border: 2px solid #ddd;
+  background-color: #eee;
+}
+
+/**
+ ** UNSPECIFIED IN APACHE STYLEBOOK DTD
+ ** <caution>..</caution> and <warning>..</warning>
+ **
+ * 
+ * td.cautionImg {
+ *   background-color: white;
+ *   border: 0;
+ * }
+ * 
+ * td.cautionTxt {
+ *   background-color: white;
+ *   font-size: 120%;
+ *   border: 2px solid #ddd;
+ *   background-color: #eee;
+ * }
+ * 
+ * 
+ * td.warningImg {
+ *   background-color: white;
+ *   border: 0;
+ * }
+ * 
+ * td.warningTxt {
+ *   background-color: white;
+ *   font-size: 120%;
+ *   border: 2px solid #ddd;
+ *   background-color: #eee;
+ * }
+ * 
+**/
+
+
+blockquote.source {
+  font-size: 75%;
+}
+
+code {
+  font-size: 75%;
+}
+
+
+/*
+ * Special Table (note)
+ */
+
+#notediv div { background-color: white }
+
+table.note {
+  width: 90%;
+}
+
+td.noteImg {
+  background-color: white;
+  vertical-align: top;
+  border: 0;
+  width: 24;
+}
+
+td.noteTxt {
+  color: black;
+  background-color: #eee;
+  font-size: 90%;
+  border: 2px solid;
+  border-color: #ccc;
+}
+
+
+/*
+ * Images
+ */
+
+img {}
+
+
+#footer img {
+  border: 0;
+}
+
+
+/*
+ * Document Divisions
+ */
+
+div {}
+
+/*
+ * Pre
+ */
+
+pre {}
+
+
+/*
+ * Generic Classes
+ */
+
+.indented {
+  margin-left: 3%;
+}
+
+.topBanner {
+  float: right;
+  margin: 0;
+  border: 0;
+  vertical-align: middle;
+}
+
+.noborder {
+  border: 0;
+  margin: 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xalan-j/resources/asf_logo.png b/xalan-j/resources/asf_logo.png
new file mode 100644
index 0000000..66c34f0
--- /dev/null
+++ b/xalan-j/resources/asf_logo.png
Binary files differ
diff --git a/xalan-j/resources/note.gif b/xalan-j/resources/note.gif
new file mode 100644
index 0000000..3394222
--- /dev/null
+++ b/xalan-j/resources/note.gif
Binary files differ
diff --git a/xalan-j/samples.html b/xalan-j/samples.html
new file mode 100644
index 0000000..3e53c79
--- /dev/null
+++ b/xalan-j/samples.html
@@ -0,0 +1,1410 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Xalan-Java Samples</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Xalan-Java Samples</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>Sample Apps<br />
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Xalan-Java Samples</h2>
+
+<p>Xalan-Java Interpretive samples:</p>
+<ul>
+<li>
+<a href="#simpletransform">SimpleTransform</a>
+</li>
+<li>
+<a href="#usestylesheetpi">UseStylesheetPI</a>
+</li>
+<li>
+<a href="#usestylesheetparam">UseStylesheetParam</a>
+</li>
+<li>
+<a href="#sax2sax">SAX2SAX</a>
+</li>
+<li>
+<a href="#dom2dom">DOM2DOM</a>
+</li>
+<li>
+<a href="#pipe">Pipe</a>
+</li>
+<li>
+<a href="#usexmlfilters">UseXMLFilters</a>
+</li>
+<li>
+<a href="#appletxmltohtml">AppletXMLtoHTML</a>
+</li>
+<li>
+<a href="#extensions">Extensions</a>
+</li>
+<li>
+<a href="#trace">Trace</a>
+</li>
+<li>
+<a href="#validate">Validate</a>
+</li>
+<li>
+<a href="#trax">trax (JAXP transform samples)</a>
+</li>
+<li>
+<a href="#transformthread">TransformThread</a>
+</li>
+<li>
+<a href="#applyxpath">ApplyXPath</a>
+</li>
+<li>
+<a href="#applyxpathdom">ApplyXPathDOM</a>
+</li>
+<li>
+<a href="#applyxpathjaxp">ApplyXPathJAXP</a>
+</li>
+<li>
+<a href="#xpathresolver">XPathResolver</a>
+</li>
+<li>
+<a href="#extensionresolver">ExtensionFunctionResolver</a>
+</li>
+</ul>
+<p>Xalan-Java Interpretive servlet samples:</p>
+<ul>
+<li>
+<a href="#servlet">servlet</a>
+</li>
+</ul>
+<p>Xalan-Java Compiled samples:</p>
+<ul>
+<li>
+<a href="#translets">translets</a>
+</li>
+</ul>  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Samples to help you get started</h3>
+<p>Each of the subdirectories in the Xalan-Java java/samples directory
+   contains the source files for one or more sample applications.  The class
+   files for the samples are in the following jar files:</p>
+<table border="1">
+<tr>
+  <th class="content" rowspan="1" colspan="1">JAR file</th>
+  <th class="content" rowspan="1" colspan="1">Content</th>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">xalansamples.jar</td>
+  <td class="content" rowspan="1" colspan="1">Everything except the Xalan-Java Interpretive servlet sample and some
+      XSLTC samples</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">xalanservlet.jar</td>
+  <td class="content" rowspan="1" colspan="1">Xalan-Java Interpretive servlet sample</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">xsltcapplet.jar</td>
+  <td class="content" rowspan="1" colspan="1">XSLTC applet sample</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">xsltcbrazil.jar</td>
+  <td class="content" rowspan="1" colspan="1">XSLTC Brazil server sample</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">xsltcejb.jar</td>
+  <td class="content" rowspan="1" colspan="1">XSLTC EJB sample</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">xsltcservlet.jar</td>
+  <td class="content" rowspan="1" colspan="1">XSLTC servlet sample</td>
+</tr>
+</table>
+<p>With most of the samples, you can use the following procedure:</p>
+ <ol>
+   <li>Be sure <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, the appropriate samples JAR file, 
+       and <code>xercesImpl.jar</code> are on the system class path. For the extension examples, <code>bsf.jar</code> 
+       and (for the JavaScript extensions) <code>js.jar</code> must also be on the class path.</li>
+   <li>Be sure the java executable is on your path.</li>
+   <li>Go to the samples subdirectory containing the sample (use the DOS shell if you are running Windows).</li>
+   <li>Run the sample from the command line (as indicated below).</li>
+   <li>Examine the application source files. You may also want to modify the source files. Remember that if you
+       modify a java file, you must recompile the class and place it on the classpath before you can run the
+       modified application.</li>
+ </ol>      
+<p>The basic command line for running most of the samples is </p> 
+    <p>
+<code>java <b>
+<i>classname args</i>
+</b>
+</code>
+</p>
+    <p>where <b>
+<i>classname</i>
+</b> is the sample class and <b>
+<i>args</i>
+</b> are the arguments, if any. As described in
+     the following sections, some samples take no arguments. The UseStylesheetParam sample takes an
+     additional argument. Several samples in extensions use the Xalan-Java 
+     <a href="commandline.html">command-line utility</a>, so they take arguments for the XML source
+     file and the XSL stylesheet.</p>
+  
+   
+   <a name="simpletransform">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>SimpleTransform</h3>
+   <p>What it does: The SimpleTransform class uses the birds.xsl stylesheet to transform birds.xml, and prints the
+   output to birds.out.</p>
+   <p>You can run it from the SimpleTransform subdirectory with</p>
+   <p>
+<code>java SimpleTransform</code>
+</p>
+   
+   
+   <a name="usestylesheetpi">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>UseStylesheetPI</h3>
+   <p>What it does: The UseStylesheetPI class uses the stylesheet processing instruction in the XML source document to determine
+   which stylesheet to use to perform the transformation.</p>
+   <p>You can run it from the UseStylesheetPI subdirectory with</p>
+   <p>
+<code>java UseStylesheetPI</code>
+</p>
+   <p>For more information, see <a href="usagepatterns.html#embed">Working with embedded stylesheets</a>.</p>
+   
+   
+   <a name="usestylesheetparam">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>UseStylesheetParam</h3>
+   <p>What it does: The UseStyleSheetParam class uses foo.xsl and a stylesheet parameter to transform foo.xml,
+   and prints the output to System.out. The stylesheet parameter appears as a text node in the output.</p>
+   <p>Run this sample from the UseStylesheetParam subdirectory with</p> 
+   <p>
+<code>java UseStylesheetParam <b>
+<i>param</i>
+</b>
+</code>
+</p>
+   <p>where <b>
+<i>param</i>
+</b> is the stylesheet parameter value (a string of your choice).</p>  
+   
+   
+   <a name="sax2sax">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>SAX2SAX</h3>
+   <p>What it does: Explicitly sets the SAX XMLReader and SAX ContentHandler for processing the stylesheet (birds.xsl), processing the XML input (birds.xml), and producing the output (birds.out).</p>
+   <p>Run this sample from the SAX2SAX subdirectory with</p>
+   <p>
+<code>java SAX2SAX</code>
+</p>
+   
+   
+   <a name="dom2dom">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>DOM2DOM</h3>
+   <p>What it does: the DOM2DOM class uses the birds.xsl stylesheet to transform a DOM Document generated from birds.xml,
+   produces an output DOM, and traverses the DOM, printing the traversal to System.out. In contrast to SimpleTransform,
+   DOM2DOM illustrates the procedure for processing an input DOM and creating an output DOM that is available for
+   further processing.</p>
+   <p>You can run it from the DOM2DOM subdirectory with</p>
+   <p>
+<code>java DOM2DOM</code>
+</p>
+   
+   
+   <a name="pipe">‌</a>
+   <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Pipe</h3>
+   <p>What it does: Pipes the output from one transformation to a second transformation, then from the second
+    transformation to the third transformation. Transformer1 is the ContentHandler for the XMLReader (which parses the
+    input document). Transformer2 provides the ContentHandler for Transformer1, and Transformer3 for Transformer2.</p>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Pipe and UseXMLFilters illustrate two strategies for using the output of one transformation as the input for
+    another transformation. The Pipe sample incorporates a "push" model -- Transformer1 "pushes" its output to
+    Transformer2, and so on -- whereas in the UseXMLFilters sample, Transformer3 "pulls" its input from Transformer2,
+    and so on.</td>
+</tr>
+</table>
+    <p>Run this sample from the Pipe subdirectory with</p> 
+    <p>
+<code>java Pipe</code>
+</p>
+    
+    
+    <a name="usexmlfilters">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>UseXMLFilters</h3>
+    <p>What it does: Chains together the same transformations as the preceding Pipe sample. Using each Transformer
+    object as an extension of the SAX XMLFilter interface, sets the XMLReader as the parent of filter1,
+    filter1 as the parent of filter2, and filter2 as the parent of of filter3.</p>
+    <p>
+<img src="xmlfilters.gif" alt="xmlfilters.gif" />
+</p>
+    <p>Run this sample from the UseXMLFilters subdirectory with</p>
+    <p>
+<code>java UseXMLFilters</code>
+</p>
+    
+    
+    <a name="appletxmltohtml">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>AppletXMLtoHTML</h3>
+    <p>This applet uses a stylesheet to transform an XML document into HTML. It displays the XML document, the
+     stylesheet, and the HTML output.</p>
+    <p>How to run it: Open appletXMLtoHTML.html in the Internet Explorer 5 browser.</p>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">For information about running Xalan-Java applets in Netscape Communicator, see <a href="usagepatterns.html#netscape">Problems
+    with Netscape</a>.<br />
+<br />
+    This applet looks for <code>xalan.jar</code> and <code>serializer.jar</code> in the build directory, or the top level directory, and <code>xml-apis.jar</code> and 
+    <code>xercesImpl.jar</code> in the lib subdirectory. If you have placed these JAR files elsewhere, adjust the applet archive setting in 
+    client.html accordingly.</td>
+</tr>
+</table>
+    
+
+    <a name="servlet">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>servlet</h3>
+    <p>For a general introduction, see <a href="usagepatterns.html#servlet">Using Xalan-Java in a servlet</a>.</p>
+    <p>The servlet subdirectory contains four sample servlets and one JSP that use Xalan-Java to perform transformations. The sample 
+    code is compiled and packed in xalanservlet.war. To run these samples, you must place 
+    xalanservlet.war on a web server with a servlet engine. For example, using <a href="http://tomcat.apache.org/index.html">jakarta-tomcat 4.1.*</a>. 
+    Copy the xalanservlet.war to %Tomcat_Home%/webapps. For more details about deploying
+    servlets on Tomcat, please refer to <a href="http://tomcat.apache.org/tomcat-4.1-doc/appdev/deployment.html">Deployment Organization</a>.</p>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Dependency on Tomcat version. If encountering "java.lang.VerifyError: Cannot inherit from final class" error, 
+    replace <code>xercesImpl.jar</code> under %Tomcat_Home%/common/endorsed with the one included with Xalan-Java .</td>
+</tr>
+</table>
+    <p>
+<a href="#simplexsltservlet">servlet.SimpleXSLTServlet</a> applies a particular stylesheet to a particular 
+    XML document.</p> 
+    <p>
+<a href="#usestylesheetparamservlet">servlet.UseStylesheetParamServlet</a> sets a stylesheet parameter 
+    (the parameter name is hardwired into the servlet), and requires the user to supply parameters for the 
+    XML document and XSL stylesheet.</p>
+    <p>
+<a href="#jspsample">jspSample.jsp</a> is a Java ServerPage that sets a stylesheet parameter and applies the
+     stylesheet to the XML document.</p>
+    <p>
+<a href="#xsltservletwithparams">servlet.XSLTServletWithParams</a> accepts parameters for the XML document, 
+    the XSL stylesheet, and any number of stylesheet parameters.</p>
+    <p>
+<a href="#applyxslt">servlet.ApplyXSLT</a> (and associated classes) is closer to a production level servlet. It accepts parameters, provides a 
+    listener for capturing and reporting debugger messages, and supports  use of a property file to determine which 
+    stylesheet to apply based on the identity of the client browser/device.</p>
+    <a name="simplexsltservlet">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>servlet.SimpleXSLTServlet</h4>
+    <p>What it does: servlet.SimpleXSLTServlet applies the birds.xsl stylesheet to birds.xml 
+    and returns the transformation result to the HTTP client.</p>
+    <p>To run this servlet: set up an HTML page to call the servlet as
+    follows:</p>
+    <div class="glossary">
+<p class="label">
+<em>http://localhost:port/xalanservlet/SimpleXSLTServlet</em>
+</p>
+</div>
+    <a name="usestylesheetparamservlet">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>servlet.UseStylesheetParamServlet</h4>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Paul Campbell &lt;seapwc@halcyon.com&gt; wrote this servlet and the following explanatory text.
+    Thank you, Paul!</td>
+</tr>
+</table>
+    <p>What it does: The client (perhaps an HTML form) specifies an XML document, a stylesheet, and a value to be passed
+    to the stylesheet for a stylesheet parameter named "param1". The servlet performs the transformation and returns
+    the output to the client. The client must specify which stylesheet (containing a "param1" stylesheet parameter") 
+    and XML file are to be used or use sample files fooparam.xml and fooparam.xsl.</p>
+    <p>How to run it: set up an HTML client to call the servlet with arguments along the lines of</p>
+    <div class="glossary">
+<p class="label">
+<em>http://localhost:port/xalanservlet/UseStylesheetParamServlet?
+    XML=fooparam.xml&amp;XSL=fooparam.xsl&amp;PVAL=GoodBye</em>
+</p>
+</div>
+    <p>In the doGet() method, the servlet obtains the PVAL value "GoodBye" from the servlet request and passes it to the 
+    stylesheet as the paramValue argument in a Transformer setParameter() call:</p>
+    <p>
+<code>String paramValue = httpServletRequest.getParameter("PVAL");</code>
+<br />
+    <code>...</code>
+<br />
+    <code>transformer.setParameter("param1", paramValue);</code>
+</p>
+    <p>The result is returned to the client:</p>
+    <p>
+<code>&lt;html&gt;&lt;body&gt;&lt;p&gt;GoodBye&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</code>
+</p>
+    <a name="jspsample">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>jspSample.jsp</h4>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Paul Campbell &lt;seapwc@halcyon.com&gt; wrote this Java Server Page.</td>
+</tr>
+</table>
+    <p>This Java Server Page performs essentially the same operation as 
+    <a href="#usestylesheetparamservlet">servlet.UseStylesheetParamServlet</a>. It applies a stylesheet parameter 
+    to a stylesheet (fooparam.xsl), applies the stylesheet to an XML source document (fooparam.xml), and returns the
+    result.</p>
+    <p>Call JSP as follows:</p>
+    <div class="glossary">
+<p class="label">
+<em>http://localhost:port/xalanservlet/jspSample.jsp?
+    XML=fooparam.xml&amp;XSL=fooparam.xsl&amp;PMA=GoodBye</em>
+</p>
+</div>
+    <p>The JSP obtains the PMA value "GoodBye" from the http request and passes it to the stylesheet as the 
+    paramValue argument in a Transformer setParameter() call.</p>    
+    <a name="xsltservletwithparams">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>servlet.XSLTServletWithParams</h4>
+    <p>What it does: servlet.XSLTServletWithParams takes parameters in the request -- a URL parameter for
+    the XML input document URL and an xslURL parameter for the stylesheet URL.</p>
+    <p>To use XSLTServletWithParams to perform the same transformation as SimplestServlet: 
+    use birds.xsl and birds.xml as examples. Set up an HTML page to call the servlet as follows:</p>
+    <div class="glossary">
+<p class="label">
+<em>http://localhost:port/xalanservlet/XSLTServletWithParams?URL=birds.xml&amp;
+    xslURL=birds.xsl</em>
+</p>
+</div>
+    <p>If the XML document contains an associated stylesheet (a stylesheet Processing Instruction) that you want to use, simply omit the
+    xslURL parameter.</p>
+    <p>If the stylesheet takes stylesheet parameters, you can include them in the URL. For example to set the param1
+    stylesheet parameter to foo, include param1=foo in the URL.</p>
+    <a name="applyxslt">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>servlet.ApplyXSLT</h4>
+    <p>What it does: The client (which you must set up) specifies an XML document and a stylesheet. The servlet
+    performs the transformation and returns the output to the client. You can use media.properties to specify 
+    which stylesheet is to be used depending on the client browser/device.</p>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The source files for this servlet, including ApplyXSLT.java, ApplyXSLTProperties.java, DefaultApplyXSLTProperties.java,
+    ApplyXSLTListener.java, ApplyXSLTException.java. booklist1.xsl, booklist2.xsl and catalog.xml,
+    are provided for testing.</td>
+</tr>
+</table>
+    <p>To run the servlet:  set system property server.root=server root. Set up an HTML page to call
+    servlet.ApplyXSLT with arguments as illustrated below.</p>
+    <p>The files catalog.xml,  booklist1.xsl and booklist2.xsl are used in the following example.
+    In the deployment descriptor, booklist1.xsl is set as the default xsl file. If you create these 
+    files yourself, make sure that you set the output method to "xml" in the stylesheet.</p>
+    <p>Examples:</p>
+    <div class="glossary">
+    <p class="label">
+<em>http://localhost:port/xalanservlet/ApplyXSLT?URL=/xalanservlet/catalog.xml&amp;xslURL=
+    /xalanservlet/booklist2.xsl</em>
+</p>
+    <blockquote class="item">...applies the booklist2.xsl stylesheet to the catalog.xml data. Both files are<br />
+    served from the Web server's HTTP document root.<br />
+<br />
+</blockquote>
+    <p class="label">
+<em>http://localhost:port/xalanservlet/ApplyXSLT?URL=/xalanservlet/catalog.xml&amp;xslURL=
+    /xalanservlet/booklist2.xsl&amp;debug=true</em>
+</p>
+    <blockquote class="item">...ensures that XML and XSL processor messages are returned in the event of problems
+    applying booklist2.xsl to catalog.xml<br />
+<br />
+</blockquote>
+    <p class="label">
+<em>http://localhost:port/xalanservlet/ApplyXSLT/xalanservlet/catalog.xml?xslURL=/xalanservlet/booklist2.xsl</em>
+</p>
+    <blockquote class="item">...applies the booklist2.xsl stylesheet to the catalog.xml data, just like the first example.
+    This is an alternative way of specifying the XML XSLTInputSource by utilizing the HTTP request's path
+    information.<br />
+<br />
+</blockquote>
+    <p class="label">
+<em>http://localhost:port/xalanservlet/ApplyXSLT/xalanservlet/catalog.xml</em>
+</p>
+    <blockquote class="item">...examines catalog.xml for an associated XSL stylesheet booklist1.xsl (a stylesheet Processing Instruction). If multiple XSLs are associated with the data, the stylesheet whose media attribute maps to your browser type will be chosen.  If no mapping is successful, the primary associated stylesheet is used.<br />
+<br />
+</blockquote>
+    </div>     
+    
+    
+   
+    <a name="extensions">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Extensions</h3>
+    <p>For an introduction to the creation and use of extension elements and extension functions, and
+    for information about the extensions library distributed with the Xalan-Java Interpretive processor, 
+    see <a href="extensions.html">Extensions</a>. Extensions are also supported for the Xalan-Java 
+    Compiling processor (XSLTC), however no samples exist at this time.  See 
+    <a href="extensions_xsltc.html">Extensions for XSLTC</a>.</p>
+    <ul>
+      <li>
+<a href="#ext1">1-redir</a>
+</li>
+      <li>
+<a href="#ext2">2-basicJscript</a>
+</li>
+      <li>
+<a href="#ext3">3-java-namespace</a>
+</li>
+      <li>
+<a href="#ext4">4-numlistJava</a>
+</li>
+      <li>
+<a href="#ext5">5-numlistJScript</a>
+</li>
+      <li>
+<a href="#sql">SQL library extensions</a>
+</li>
+    </ul>
+    <p>The extensions subdirectory contains six samples with Xalan-Java Interpretive extensions. Two of the samples use
+     extensions implemented in JavaScript, and four of the samples use extensions implemented in Java.</p>
+    <p>To run these examples, you must place <code>bsf.jar</code> and <code>js.jar</code> (version 1.5, available from 
+     <a href="http://www.mozilla.org/rhino">http://www.mozilla.org/rhino</a>) on the classpath. 
+     You do not need <code>js.jar</code> on the classpath for the samples that use Java extensions. <a href="faq.html">
+     Problems related to JDK 1.4 or higher</a>.</p>
+    <p>Use java.org.apache.xalan.xslt.Process, the Xalan-Java command-line utility, to run most of these samples from
+     the <a href="commandline.html">command line</a>. The command line must include an -in flag with the 
+     XML source and an -xsl flag with the XSL stylesheet. If you want the output to be written to a file, rather
+     than to the screen, add an -out flag with the output file name.</p>
+    <p>Run these samples from the extensions directory as follows (each of the following is a single command
+     line):</p> 
+
+    <a name="ext1">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>1-redir</h4>
+    <p>What it does: Uses the Redirect extension elements shipped with Xalan-Java to direct output to two output
+     files.</p>
+    <p>Run this sample from the extensions subdirectory with</p> 
+    <p>
+<code>java org.apache.xalan.xslt.Process -in 1-redir.xml</code>
+<br />
+       <code>-xsl 1-redir.xsl</code>
+</p>
+    <p>The standard (non-redirected) output is written to the screen. The redirected output is written to 1-redir-out, or
+     whatever filename you assign to the doc/foo @file attribute in 1-redir.xml. The stylesheet gets the file name for
+     redirected output from the XML input file.</p>
+    
+    
+    <a name="ext2">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>2-basicJscript</h4>
+    <p>What it does: Uses an extension element and extension function implemented in JavaScript to compute a
+      deadline for responding to a customer inquiry.</p>
+     <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">
+<code>js.jar</code> must be on the classpath.</td>
+</tr>
+</table>
+    <p>Run this sample from the extensions subdirectory with</p>
+    <p>
+<code>java org.apache.xalan.xslt.Process -in 2-basicJscript.xml</code>
+     <br />  <code>-xsl 2-basicJscript.xsl</code>
+</p>     
+    
+    
+    <a name="ext3">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>3-java-namespace</h4>
+    <p>What it does: Uses extension functions to format dates. This sample illustrates use of the predefined java
+     extension namespace to provide ready access to extensions implemented in Java.</p>
+    <p>Run this sample from the extensions subdirectory with</p> 
+    <p>
+<code>java org.apache.xalan.xslt.Process -in 3-java-namespace.xml</code>
+     <br />  <code>-xsl 3-java-namespace.xsl</code>
+</p>    
+    
+    
+    <a name="ext4">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>4-numlistJava</h4>
+    <p>What it does: Uses a Java extension to transform a set of name elements into a numbered and alphabetized
+     list.</p>
+    <p>Run this sample from the extensions subdirectory with</p> 
+    <p>
+<code>java org.apache.xalan.xslt.Process -in numlist.xml</code> 
+     <br />  <code>-xsl 4-numlistJava.xsl</code>
+</p>    
+    
+    
+    <a name="ext5">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>5-numlistJscript</h4>
+    <p>What it does: Uses a JavaScript  extension to transform a set of name elements into a numbered and
+     alphabetized list. This sample performs the same operations as the preceding Java extension.</p>
+     <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">
+<code>js.jar</code> must be on the classpath.</td>
+</tr>
+</table>
+    <p>Run this sample from the extensions subdirectory with</p>
+    <p>
+<code> java org.apache.xalan.xslt.Process -in numlist.xml</code>
+     <br />  <code>-xsl 5-numlistJscript.xsl</code>
+</p>
+    
+    
+   
+    <a name="sql">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>SQL library extensions</h3>
+    <p>The <a href="extensionslib.html#sql">SQL library </a> 
+     extension enables you to execute SQL queries from within a stylesheet, 
+     and to incorporate query result sets in the XML output. 
+     To use the SQL library, you need a JDBC driver, the underlying DBMS, 
+     and a database.</p>
+    <p>Our samples use Apache Derby DBMS, but the SQL Extensions and sample code
+     can be configured to query data from any DBMS that can be accessed through
+     JDBC.</p>
+
+    <a name="dbsetup">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Setting up the SQL extension samples</h4>   
+    <p>To run the SQL library extension samples, do the following:</p>
+    <p>The SQL Extension examples require the Apache Derby jars.
+     The Derby jars are available from <a href="http://db.apache.org/derby/">
+     http://db.apache.org/derby/</a>.</p>
+    <p>The sample batch/script files are configured to look for the 
+     derby jars in the xml-xalan/java/samples/extensions/sql directory by default.</p>
+    <p>If you already have derby installed and want to use that implementation.
+      You can do one of the following.</p>
+    <ol>
+      <li>set the environment variable DERBY_JAR_DIR to point to the location of <code>derby.jar</code> and <code>derbytools.jar</code>
+</li>
+      <li>have the <code>derby.jar</code> and <code>derbytools.jar</code> in your classpath.</li>
+    </ol>
+    <p>First create the sample database using Derby.  To do this, </p>
+    <ul>
+<li>on Windows, execute the command<br /> <code>runDerby.bat createdb.sql</code>
+</li>
+        <li>on Unix, execute the command<br /> <code>sh runDerby.sh createdb.sql</code>
+</li>
+    </ul>
+    <p>You can use the Derby tools to examine the raw database. To do this, </p>
+      <ul>
+      <li>on Windows execute the command<br />
+      <code>runDerby.bat</code>
+<br />
+      At the lj&gt; prompt type the following commands:<br />
+      <code>lj&gt; connect 'sampleDB';</code>
+<br />
+      <code>lj&gt; select * from import1;</code>
+<br />
+<br />
+      <code>To quit the lj session type</code>
+<br />
+      <code>lj&gt; quit;</code>
+<br />
+      <br />
+</li>
+      <li>To Start lj on Unix type<br />
+      <code>sh runDerby.sh</code>
+<br />
+<br />
+</li>
+      </ul>
+    <p>Once the sample database has been created, you can run the sample
+      stylesheets using the runXalan script.</p>
+    
+
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>SQL Library samples</h4>   
+    <ul>
+    <li>
+<a href="#Dump-SQL">The Details - Dump SQL</a>
+</li>
+    <li>
+<a href="#basic-conn">Basic Connections</a>
+</li>
+    <li>
+<a href="#ext-conn">ExternalConnection</a>
+</li>
+    <li>
+<a href="#pquery">Parameterized query</a>
+</li>
+    <li>
+<a href="#streamable">Streamable</a>
+</li>
+    <li>
+<a href="#showerror">Show-error</a>
+</li>
+    </ul>
+    
+
+    <a name="Dump-SQL">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Dump-SQL</h4>
+    <p>The Dump SQL example is used to show what data is available to the XSLT process.</p>
+    <p>To run the DumpSQL Example, execute the following command<br />
+         <code>runXalan.bat -XSL basic-connection/DumpSQL.xsl</code>
+</p>
+    <p>Dump SQL should produce the following output:</p>
+    <blockquote class="source">
+<pre>
+    &lt;sql&gt;
+      &lt;metadata&gt;
+        &lt;column-header searchable="true" writable="false" signed="true" 
+    nullable="true" definitely-writable="false" case-sensitive="false" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
+    column-typename="INTEGER" column-type="4" column-display-size="11" 
+    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;&lt;/column-header&gt;
+        &lt;column-header searchable="true" writable="false" signed="false" 
+    nullable="true" definitely-writable="false" case-sensitive="true" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
+    column-typename="VARCHAR" column-type="12" column-display-size="40" 
+    catalogue-name="" column-label="NAME" column-name="NAME"&gt;&lt;/column-header&gt;
+      &lt;/metadata&gt;
+      &lt;row-set&gt;
+       &lt;row&gt;
+        &lt;col searchable="true" writable="false" signed="true" 
+    nullable="true" definitely-writable="false" case-sensitive="false" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
+    column-typename="INTEGER" column-type="4" column-display-size="11" 
+    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;1&lt;/col&gt;
+        &lt;col searchable="true" writable="false" signed="false" 
+    nullable="true" definitely-writable="false" case-sensitive="true" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
+    column-typename="VARCHAR" column-type="12" column-display-size="40" 
+    catalogue-name="" column-label="NAME" column-name="NAME"&gt;toothpaste&lt;/col&gt;
+       &lt;/row&gt;
+       &lt;row&gt;
+        &lt;col searchable="true" writable="false" signed="true" 
+    nullable="true" definitely-writable="false" case-sensitive="false" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
+    column-typename="INTEGER" column-type="4" column-display-size="11" 
+    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;2&lt;/col&gt;
+        &lt;col searchable="true" writable="false" signed="false" 
+    nullable="true" definitely-writable="false" case-sensitive="true" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
+    column-typename="VARCHAR" column-type="12" column-display-size="40" 
+    catalogue-name="" column-label="NAME" column-name="NAME"&gt;milk&lt;/col&gt;
+       &lt;/row&gt;
+       &lt;row&gt;
+        &lt;col searchable="true" writable="false" signed="true" 
+    nullable="true" definitely-writable="false" case-sensitive="false" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
+    column-typename="INTEGER" column-type="4" column-display-size="11" 
+    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;3&lt;/col&gt;
+        &lt;col searchable="true" writable="false" signed="false" 
+    nullable="true" definitely-writable="false" case-sensitive="true" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
+    column-typename="VARCHAR" column-type="12" column-display-size="40" 
+    catalogue-name="" column-label="NAME" column-name="NAME"&gt;bread&lt;/col&gt;
+       &lt;/row&gt;
+       &lt;row&gt;
+        &lt;col searchable="true" writable="false" signed="true" 
+    nullable="true" definitely-writable="false" case-sensitive="false" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="10" 
+    column-typename="INTEGER" column-type="4" column-display-size="11" 
+    catalogue-name="" column-label="PRODUCTID" column-name="PRODUCTID"&gt;4&lt;/col&gt;
+        &lt;col searchable="true" writable="false" signed="false" 
+    nullable="true" definitely-writable="false" case-sensitive="true" 
+    table-name="IMPORT1" schema-name="" scale="0" precision="40" 
+    column-typename="VARCHAR" column-type="12" column-display-size="40" 
+    catalogue-name="" column-label="NAME" column-name="NAME"&gt;cereal&lt;/col&gt;
+       &lt;/row&gt;
+      &lt;/row-set&gt;
+    &lt;/sql&gt;
+    </pre>
+</blockquote>
+    
+    
+    
+    <a name="basic-conn">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Basic-Connection</h4>
+    <p>
+<b>Contributed by John Gentilin (johnglinux@eyecatching.com).</b>
+</p>
+    <p>What it does: illustrates two strategies for connecting to a database, executing a 
+      static query, and returning the query result.</p>
+    <p>The first strategy is to get connection information along with the static query from 
+      the stylesheet (dbtest.xsl)\ in the form of stylesheet parameters.</p>
+    <p>The second strategy is to get connection information from a nodeset in an XML source 
+      document (dbInfo.xml).</p>
+    <p>
+<a href="#dbsetup">Set up the database</a>, and run this sample from the 
+      extensions/sql/ directory.</p>
+    <p>1. To get connection information from the stylesheet:</p>
+     <code>runXalan -xsl basic-connection/dbtest.xsl -out import1.html</code>
+    <p>2. To get connection information in the form of a nodeset from the XML source document:</p>
+     <code>runXalan -in dbinfo.xml -xsl dbtest-cinfo.xsl -out import1.html</code>
+    
+    
+    <a name="ext-conn">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>ExternalConnection</h4>
+    <p>
+<b>Contributed by John Gentilin (johnglinux@eyecatching.com).</b>
+</p>
+    <p>What it does: The ExternalConnection classes uses the default implementation of the 
+     ConnectionPool interface to create a pool of connections. A stylesheet in turn uses a 
+     connection from this pool to instantiate an XConnection object and connect to a datasource.</p>
+    <p>The stylesheet uses this named connection pool to instantiate an XConnection object and 
+     connect to the datasource. The ExternalConnection class is in <code>xalansamples.jar</code>.</p>
+    <p>
+<a href="#dbsetup">Set up the database</a>, be sure <code>xalanxamples.jar</code> is on the 
+     class path, and run this sample from the extensions/sql directory:</p>
+    <code>runExtConnection ext-connection/dbtest.xsl</code>
+    <p>ExternalConnection creates the ConnectionPool, and performs a transformation with dbtest.xsl, 
+     which draws from the pool to instantiate an XConnection object, connect to the datasource, 
+     execute a static query, and return the query result.</p>
+    
+  
+    <a name="pquery">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Parameterized query</h4>
+    <p>
+<b>Contributed by John Gentilin (johnglinux@eyecatching.com).</b>
+</p>
+    <p>What it does: connects to a datasource, executes a parameterized query, and returns 
+     the result. The XML source document provides the parameter value as well as the connection 
+     information. The parameter value is in a node in the XML source.</p>
+    <p>The stylesheet gets the required connection and parameter information from the XML source, 
+     sets up and executes the parameterized query, and retuns the query result set.</p>
+    <p>
+<a href="#dbsetup">Set up the database</a>, and run this sample from the sql subdirectory:</p>
+     <code>runXalan -in pquery/dbinfo.xml -xsl pquery/dbtest.xsl -out import1.html</code>
+    
+  
+    <a name="streamable">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Streamable</h4>
+    <p>
+<b>Contributed by John Gentilin (johnglinux@eyecatching.com).</b>
+</p>
+    <p>What it does: Illustrates enabling and disabling of a streamable result set returned by a query.</p>
+    <p>With a streamable result set, you can create a query that will return many rows but the
+     result will only consume the amount of memory to represent a single row. As a benefit,
+     you can perform transformations on large amounts of data while maintaining a low memory profile. 
+     On the down side, when you use streaming, you can NOT, visit previous nodes because the SQL
+     extension only supports unidirectional cursors. If you requires that the whole query be available
+     so that you can apply templates to previous rows, just disable caching.</p>
+    <p>
+<a href="#dbsetup">Set up the database</a>, and run these samples from the sql subdirectory.</p>
+    <p>1. An example where streaming is disabled:</p>
+     <code>runXalan -in streamable/dbinfo.xml -xsl streamable/cachedNodes.xsl -out import1.html</code>
+    <p>2. An example where streaming is enabled</p>
+     <code>runXalan -in streamable/dbinfo.xml -xsl streamable/streamNodes.xsl -out import1.html</code>
+    <p>3. This example performs a pivor function swaping rows and columns, streaming is 
+     required to be disabled here.</p>
+     <code>runXalan -in streamable/dbinfo.xml -xsl streamable/pivot.xsl -out import1.html</code>
+    
+ 
+    <a name="showerror">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Show-error</h4>
+    <p>
+<b>Contributed by John Gentilin (johnglinux@eyecatching.com).</b>
+</p>
+    <p>What it does: use the SQL library ExtensionError class to return an error message 
+     in the output stream. The stylesheet calls a template with a select statement that 
+     returns a nodeset when an error occurs.</p>
+    <p>
+<a href="#dbsetup">Set up the database</a>, and run this sample from the extensions/sql subdirectory:</p>
+    <p>1. An example where we specify invalid connection information:</p>
+     <code>runXalan -in show-error/dbinfo.xml -xsl show-error/invalidConn.xsl -out import1.html</code>
+    <p>2. An example where we specify invalid parameters to a parameterized query:</p>
+     <code>runXalan -in show-error/dbinfo.xml -xsl show-error/invalidPQuery.xsl -out import1.html</code>
+    <p>3. An example where we specify an invlaid query:</p>
+     <code>runXalan -in show-error/dbinfo.xml -xsl show-error/invalidQuery.xsl -out import1.html</code>
+    
+        
+    
+    <a name="trace">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Trace</h3>
+      <p>What it does: Trace uses the TraceListener and TraceManager classes to log transformation events.</p>
+      <p>Run this sample from the Trace subdirectory with</p>
+      <p>
+<code>java Trace</code>
+</p>
+      <p>and examine the result in events.log. Additionally, run this sample from the extensions subdirectory with</p>
+      <p>
+<code>java Trace 3-java-namespace</code>
+</p>
+      <p>for the trace of a stylesheet with extensions.  For more information, see <a href="usagepatterns.html#debugging">Debugger Interface</a>
+</p>
+     <a name="validate">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Validate</h3>
+     <ul>
+     <li>
+<a href="#validatexmlinput">ValidateXMLInput</a>
+</li>
+     <li>
+<a href="#validateutility">Validate utility</a>
+</li>
+     </ul>
+<a name="validatexmlinput">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>ValidateXMLInput</h4>
+     <p>What it does: Uses <a href="apidocs/javax/xml/parsers/SAXParserFactory.html">SAXParserFactory</a> to turn on validation, and 
+     <a href="apidocs/org/xml/sax/XMLReader.html">XMLReader</a> to parse the XML input and report errors and warnings to a SAX event
+     handler. The XML input (birds.xml) contains an internal DOCTYPE declaration, and a few minor document type violations, which you are 
+     invited to fix, add to, and vary in any way you find useful.</p>
+     <p>Run this sample from the Validate subdirectory with</p>
+     <p>
+<code>java ValidateXMLInput</code>
+</p>
+     <a name="validateutility">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Validate utility</h4>
+     <p>What it does: Uses the <a href="apidocs/javax/xml/parsers/SAXParser.html">JAXP SAXParser</a> with a SAX event handler 
+     (extends <a href="apidocs/org/xml/sax/helpers/DefaultHandler.html">DefaultHandler</a> and implements 
+     <a href="apidocs/org/xml/sax/ext/LexicalHandler.html">LexicalHandler</a>) to verify that XML files conform to their declared 
+     document type. You can use this utility to verify that an individual file or all the .xml files in a directory are
+     well-formed and valid. Each .xml file should contain a DOCTYPE declaration.</p>
+     <p>Run this sample from any directory with</p>
+     <p>
+<code>java Validate <b>
+<i>file-or-dir-name</i>
+</b> [<b>
+<i>logfile</i>
+</b>
+</code>]</p>
+     <p>where <b>
+<i>file-or-dir-name</i>
+</b> is an XML file or directory pathname, and <b>
+<i>logfile</i>
+</b> designates a log.
+     If you omit the second argument, Validate reports its findings to the screen.</p>
+     <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">A limitation: Files containing document parts appear to fail if you check them with Validate. Check readme.xml, 
+     which "includes" by entity reference a number of files, and it passes. The parse operation scans the entire document
+     with the includes. Check an "included" file (such as history.xml) as if it were an independent document and it fails.</td>
+</tr>
+</table>
+     
+     
+
+     <a name="trax">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>trax (JAXP transform samples)</h3>
+     <p>What it does: runs a number of samples illustrating uses of the <a href="trax.html">JAXP transform interfaces</a>.</p>
+     <p>Run this sample from the trax subdirectory with</p>
+     <p>
+<code>java Examples</code>
+</p>
+     <p>and examine the source in Examples.java and ExampleContentHandler.java.</p>
+     
+     
+     <a name="transformthread">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>TransformThread</h3>
+     <p>What it does: spawns multiple threads, with each thread running two transformations on two different XML files.</p>
+     <p>Run this sample from the TransformThread subdirectory with</p>
+     <p>
+<code>java TransformThread</code>
+</p>
+     <p>and examine the source in TransformThread.java. A more detailed description along with configuration options are listed in the header.</p>
+     
+     
+     <a name="applyxpath">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>ApplyXPath</h3>
+     <p>What it does: ApplyXPath uses the convenience methods in the Xalan-Java 2 specific <a href="apidocs/org/apache/xpath/XPathAPI.html">XPathAPI</a> to
+     execute an XPath expression against an XML document and return the nodes (if any) it finds.</p>
+     <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">You can use this sample as an aid when you want to find out what a given XPath expression returns from a
+     given XML file. Keep in mind that the context node (base point of evaluation) for the XPath expression is the document
+     root.</td>
+</tr>
+</table>
+     <p>Run this sample from the ApplyXPath subdirectory with</p> 
+     <p>
+<code>java ApplyXPath <b>
+<i>XMLFile XPathExpression</i>
+</b>
+</code>
+</p>
+     <p>where <b>
+<i>XMLFile</i>
+</b> is an XML source file and <b>
+<i>XPathExpression</i>
+</b> is an XPath expression to
+     apply to that file. The ApplyXPath subdirectory contains an XML file named foo.xml --<br />
+          <code>&lt;doc&gt;&lt;name first="David" last="Marston"/&gt;...&lt;/doc&gt;</code>
+<br /> -- so you can try command
+     lines like</p>
+     <p>
+<code>java ApplyXPath foo.xml /</code>
+</p>
+     <p>and</p>
+     <p>
+<code>java ApplyXPath foo.xml /doc/name/@first</code>
+</p>
+     <p>For more information, see <a href="usagepatterns.html#xpath">Working with XPath expressions</a>.</p>
+     
+    
+     <a name="applyxpathdom">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>ApplyXPathDOM</h3>
+     <p>What it does: ApplyXPathDOM is very similar to the <a href="#applyxpath">ApplyXPath</a> sample, but it uses the API 
+     in the <a href="http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/">DOM Level 3 XPath 
+     Specification</a> to execute an XPath expression against an XML document and return 
+     the nodes (if any) it finds.</p>
+     <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">You can use this sample as an aid when you want to find out what a given XPath expression returns from a
+     given XML file. Keep in mind that the context node (base point of evaluation) for the XPath expression is the document
+     root.</td>
+</tr>
+</table>
+     <p>Run this sample from the ApplyXPathDOM subdirectory with</p> 
+     <p>
+<code>java ApplyXPathDOM <b>
+<i>XMLFile XPathExpression</i>
+</b>
+</code>
+</p>
+     <p>where <b>
+<i>XMLFile</i>
+</b> is an XML source file and <b>
+<i>XPathExpression</i>
+</b> is an XPath expression to
+     apply to that file. The ApplyXPathDOM subdirectory contains an XML file named foo.xml --<br />
+          <code>&lt;doc&gt;&lt;name first="David" last="Marston"/&gt;...&lt;/doc&gt;</code>
+<br /> -- so you can try command
+     lines like</p>
+     <p>
+<code>java ApplyXPathDOM foo.xml /</code>
+</p>
+     <p>and</p>
+     <p>
+<code>java ApplyXPathDOM foo.xml /doc/name/@first</code>
+</p>
+     <p>For more information, see <a href="usagepatterns.html#xpath">Working with XPath expressions</a>.</p>
+     
+     
+     <a name="applyxpathjaxp">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>ApplyXPathJAXP</h3>
+     <p>What it does: ApplyXPathJAXP is similar to the <a href="#applyxpath">ApplyXPath</a> sample, but it uses the XPath API in JAXP 1.3
+     to evaluate an XPath expression against an XML document and return the evaluation result in the specified type.</p>
+     <p>Run this sample from the XPathAPI subdirectory with</p>
+     <p>
+<code>java ApplyXPathJAXP <b>
+<i>XMLFile XPathExpression ReturnType</i>
+</b>
+</code>
+</p>
+     <p>where <b>
+<i>XMLFile</i>
+</b> is an XML source file, <b>
+<i>XPathExpression</i>
+</b> is an XPath expression to 
+     apply to that file, and <b>
+<i>ReturnType</i>
+</b> is one of the strings from the list {"num", "bool", "str", "node", "nodeset"}
+     designating the return type of the evaluation. The XPathAPI subdirectory contains an XML file named 
+     foo.xml. So you can try command lines like</p>
+     <p>
+<code>java ApplyXPathJAXP foo.xml /doc/name[1]/@last str</code>
+</p>
+     <p>and</p>
+     <p>
+<code>java ApplyXPathJAXP foo.xml /doc/name nodeset</code>
+</p>
+     
+
+     <a name="xpathresolver">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XPathResolver</h3>
+     <p>What it does: XPathResolver provides sample implementations of the NamespaceContext, XPathFunctionResolver 
+     and XPathVariableResolver interfaces described in the <a href="apidocs/javax/xml/xpath/XPath.html">
+     JAXP 1.3 XPath API</a>. 
+     The sample demonstrates how these implementations can be used to to evaluate XPath expressions that contain 
+     extension functions and references to variables.</p>
+     <p>Run this sample from the XPathAPI subdirectory with</p>
+     <p>
+<code>java XPathResolver</code>
+</p>
+     
+
+     <a name="extensionresolver">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>ExtensionFunctionResolver</h3>
+     <p>What it does: ExtensionFunctionResolver demonstrates how to use the sample implementation of XPathFunctionResolver to 
+     evaluate XPath expressions containing Java or EXSLT extension functions.</p>
+     <p>To run this sample from the XPathAPI subdirectory, you need to compile ExtensionTest.java first and put
+     the XPathAPI directory on your classpath. Run the sample using</p>
+     <p>
+<code>java ExtensionFunctionResolver</code>
+</p>
+     
+     
+     <a name="translets">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Translets</h3>
+                 <ul>
+                 <li>
+<a href="#xsltc1">JAXPTransletOneTransformation</a>
+</li>
+                 <li>
+<a href="#xsltc2">JAXPTransletMultipleTransformations</a>
+</li>
+                 <li>
+<a href="#xsltcother">Other XSLTC samples</a>
+</li>   
+                 </ul>
+                 <p>You can use the JAXP interfaces to compile and run translets.
+                 For an overview of the usage patterns these samples illustrate, see 
+                 <a href="xsltc_usage.html#api">Calling XSLTC with the JAXP API</a>.</p>
+                 <a name="xsltc1">‌</a>
+                 <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>JAXPTransletOneTransformation</h4>
+                 <p>What it does: Uses the XSLTC TransformerFactory to compile a translet and use
+                 the translet to transform the XSLTC to-do list from XML into HTML.</p>
+                 <p>Run this sample from the translets subdirectory with</p>
+                 <p>
+<code>java JAXPTransletOneTransformation</code>
+</p>
+                 <p>View the result in todo.html.</p>
+                 <a name="xsltc2">‌</a>
+                 <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>JAXPTransletMultipleTransformations</h4>
+                 <p>What it does: Uses the XSLTC TransformerFactory to compile a translet and use
+                 the Templates object associated with the translet to transform the XSLTC and Xalan to-do lists from XML 
+                 into HTML.</p>
+                 <p>Run this sample from the translets subdirectory with</p>
+                 <p>
+<code>java JAXPTransletMultipleTransformations</code>
+</p>
+                 <p>View the results in todo.html and todotoo.html.</p>                
+                 <a name="xsltcother">‌</a>
+                 <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Other XSLTC samples</h4>
+                 <p>Other XSLTC samples are located in the following samples subdirectories:</p>
+                 <ul>
+                 <li>CompiledServlet</li>
+                 <li>CompiledBrazil</li>
+                 <li>CompiledJAXP</li>
+                 <li>CompiledApplet</li>
+                 <li>CompiledEJB</li>
+                 </ul>
+                 <p>For information about each of these samples, consult the README file in the subdirectory.</p>
+                 <p>XSLTC provides demos for using XSLTC as a servlet and as a handler for
+                 Brazil (a new and powerful Web techology from Sun labs).</p>
+                 <p>To run the Brazil-handler demo, download Brazil from sunlabs:</p>
+                 <p>
+<code>    <a href="http://research.sun.com/research/download/index.html">http://research.sun.com/research/download/index.html</a>
+</code>
+</p>
+                 <p>The translet must be specified as a pure class name,
+                 accessible through the Brazil-handler's classpath. For
+                 example:</p>
+                 <p>
+<code>    translet=mk054</code>
+</p>
+                 <p>The document must be specified as a valid URL. For example:</p>
+                 <p>
+<code>    document=http://server/path/to/filename.xml</code>
+</p>
+                 <p>If the file is local to the Brazil handler, it has to be
+                specified using the "file:filename.xml" format.</p>
+                <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">In order to run the Brazil-handler demo, you also need to
+                      make the Brazil and javax classes available from your
+                      classpath</td>
+</tr>
+</table>
+                 <p>To run the servlet demo, download the java extensions for servlets from Sun:</p>
+                 <p>
+<code>    
+                 <a href="http://java.sun.com/products/servlet/download.html">
+                 http://java.sun.com/products/servlet/download.html</a>
+</code>
+</p>
+                 
+                 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/trax.html b/xalan-j/trax.html
new file mode 100644
index 0000000..f60caa7
--- /dev/null
+++ b/xalan-j/trax.html
@@ -0,0 +1,546 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Using the JAXP Transform APIs</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Using the JAXP Transform APIs</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>Transform API<br />
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Using the JAXP Transform APIs</h2>
+<ul>
+ <li>
+<a href="#intro">Introduction</a>
+</li>
+ <li>
+<a href="#terminology">General Terminology</a>
+</li>
+ <li>
+<a href="#model">Model</a>
+</li>
+ <li>
+<a href="#patterns">Patterns</a>
+</li> 
+</ul>
+<a name="intro">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>   
+<p>This document describes the transformation API for XML (TrAX), the set of APIs contained in
+	 <a href="apidocs/javax/xml/transform/package-summary.html">javax.xml.transform</a>, <a href="apidocs/javax/xml/transform/stream/package-summary.html">javax.xml.transform.stream</a>, <a href="apidocs/javax/xml/transform/dom/package-summary.html">javax.xml.transform.dom</a>, and <a href="apidocs/javax/xml/transform/sax/package-summary.html">javax.xml.transform.sax</a>.</p> 
+  
+<p>There is a broad need for Java applications to be able to transform XML
+	 and related tree-shaped data structures. In fact, XML is not normally very
+	 useful to an application without going through some sort of transformation,
+	 unless the semantic structure is used directly as data. Almost all XML-related
+	 applications need to perform transformations. Transformations may be described
+	 by Java code, Perl code, <a href="http://www.w3.org/TR/xslt">XSLT</a>
+	 Stylesheets, other types of script, or by proprietary formats. The inputs, one
+	 or multiple, to a transformation, may be a URL, XML stream, a DOM tree, SAX
+	 Events, or a proprietary format or data structure. The output types are 
+	 pretty much the same types as the inputs, but different inputs may need to be
+	 combined with different outputs.</p> 
+  
+<p>The great challenge of a transformation API is how to deal with all the
+	 possible combinations of inputs and outputs, without becoming specialized for
+	 any of the given types.</p> 
+   
+<a name="terminology">‌</a>	 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>General Terminology</h3> 
+	 
+<p>This section will explain some general terminology used in this
+		document. Technical terminology will be explained in the Model section. In many
+		cases, the general terminology overlaps with the technical terminology.</p> 
+	 
+<div class="glossary">
+<p class="label">
+<em>Tree</em>
+</p>
+<blockquote class="item">This term, as used within this document, describes an
+			 abstract structure that consists of nodes or events that may be produced by
+			 XML. A Tree physically may be a DOM tree, a series of well balanced parse
+			 events (such as those coming from a SAX2 ContentHander), a series of requests
+			 (the result of which can describe a tree), or a stream of marked-up
+			 characters.</blockquote>
+
+<p class="label">
+<em>Source Tree(s)</em>
+</p>
+<blockquote class="item">One or more trees that are the inputs to the
+			 transformation.</blockquote>
+
+<p class="label">
+<em>Result Tree(s)</em>
+</p>
+<blockquote class="item">One or more trees that are the output of the
+			 transformation.</blockquote>
+
+
+
+<p class="label">
+<em>Transformation</em>
+</p>
+<blockquote class="item">The process of consuming a stream or tree to produce
+			 another stream or tree.</blockquote>
+
+
+
+<p class="label">
+<em>Identity (or Copy) Transformation</em>
+</p>
+<blockquote class="item">The process of transformation from a source to a result,
+			 making as few structural changes as possible and no informational changes. The
+			 term is somewhat loosely used, as the process is really a copy from one
+			 "format" (such as a DOM tree, stream, or set of SAX events) to
+			 another.</blockquote>
+
+
+
+<p class="label">
+<em>Serialization</em>
+</p>
+<blockquote class="item">The process of taking a tree and turning it into a stream. In
+			 some sense, a serialization is a specialized transformation.</blockquote>
+
+
+
+<p class="label">
+<em>Parsing</em>
+</p>
+<blockquote class="item">The process of taking a stream and turning it into a tree. In
+			 some sense, parsing is a specialized transformation.</blockquote>
+
+
+
+<p class="label">
+<em>Transformer</em>
+</p>
+<blockquote class="item">A Transformer is the object that executes the transformation.
+			 </blockquote>
+
+
+
+<p class="label">
+<em>Transformation instructions</em>
+</p>
+<blockquote class="item">Describes the transformation. A form of code, script, or
+			 simply a declaration or series of declarations.</blockquote>
+
+
+
+<p class="label">
+<em>Stylesheet</em>
+</p>
+<blockquote class="item">The same as "transformation instructions," except it is
+			 likely to be used in conjunction with <a href="http://www.w3.org/TR/xslt">XSLT</a>.</blockquote>
+
+
+
+<p class="label">
+<em>Templates</em>
+</p>
+<blockquote class="item">Another form of "transformation instructions." In the TrAX
+			 interface, this term is used to describe processed or compiled transformation
+			 instructions. The Source flows through a Templates object to be formed into the
+			 Result.</blockquote>
+
+
+
+<p class="label">
+<em>Processor</em>
+</p>
+<blockquote class="item">A general term for the thing that may both process the
+			 transformation instructions, and perform the transformation.</blockquote>
+
+       
+
+
+<p class="label">
+<em>DOM</em>
+</p>
+<blockquote class="item">Document Object Model, specifically referring to the <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/">DOM level 3</a>
+                         Specification.</blockquote>
+			 
+
+<p class="label">
+<em>SAX</em>
+</p>
+<blockquote class="item">Simple API for XML, specifically referring to the
+			 <a href="http://www.saxproject.org/">SAX 2.0
+			 release</a>.</blockquote>
+</div> 
+
+ <a name="model">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Model</h3> 
+  
+<p>The section defines the abstract model for TrAX, apart from the details
+	 of the interfaces.</p> 
+  
+<p>A TrAX <a href="#pattern-TransformerFactory">TransformerFactory</a> is an object
+	 that processes transformation instructions, and produces
+	 <a href="#pattern-Templates">Templates</a> (in the technical
+	 terminology). A <a href="#pattern-Templates">Templates</a>
+	 object provides a <a href="#pattern-Transformer">Transformer</a>, which transforms one or
+	 more <a href="#pattern-Source">Source</a>s into one or more
+	 <a href="#pattern-Result">Result</a>s.</p> 
+  
+<p>To use the TrAX interface, you create a
+	 <a href="#pattern-TransformerFactory">TransformerFactory</a>,
+	 which may directly provide a <a href="#pattern-Transformer">Transformer</a>, or which can provide
+	 <a href="#pattern-Templates">Templates</a> from a variety of
+	 <a href="#pattern-Source">Source</a>s. The
+	 <a href="#pattern-Templates">Templates</a> object is a processed
+	 or compiled representation of the transformation instructions, and provides a
+	 <a href="#pattern-Transformer">Transformer</a>. The
+	 <a href="#pattern-Transformer">Transformer</a> processes a
+	 <a href="#pattern-Transformer">Source</a> according to the
+	 instructions found in the <a href="#pattern-Templates">Templates</a>, and produces a
+	 <a href="#pattern-Result">Result</a>.</p> 
+  
+<p>The process of transformation from a tree, either in the form of an
+	 object model, or in the form of parse events, into a stream, is known as
+	 <b>
+<i>serialization</i>
+</b>.</p> 
+<a name="patterns">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>TrAX Patterns</h3>
+<p>The intent, responsibilities, and thread safety of TrAX objects:</p>
+<ul>
+  <li>
+<a href="#pattern-Processor">Processor</a>
+</li>
+  <li>
+<a href="#pattern-TransformerFactory">TransformerFactory</a>
+</li>
+  <li>
+<a href="#pattern-Templates">Templates</a>
+</li>
+  <li>
+<a href="#pattern-Transformer">Transformer</a>
+</li>
+  <li>
+<a href="#pattern-Source">Source</a>
+</li>
+  <li>
+<a href="#pattern-Result">Result</a>
+</li>  
+</ul>
+<a name="pattern-Processor">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Processor</h4>
+<div class="glossary">
+<p class="label">
+<em>Intent</em>
+</p>
+<blockquote class="item">Generic concept for the
+  set of objects that implement the TrAX interfaces.</blockquote>
+<p class="label">
+<em>Responsibilities</em>
+</p>
+<blockquote class="item">Create compiled transformation instructions, transform
+  sources, and manage transformation parameters and
+  properties.</blockquote>
+<p class="label">
+<em>Thread safety</em>
+</p>
+<blockquote class="item">Only the Templates object can be
+  used concurrently in multiple threads. The rest of the processor does not do
+  synchronized blocking, and so may not be used to perform multiple concurrent
+  operations.</blockquote>
+</div>
+ <a name="pattern-TransformerFactory">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>TransformerFactory</h4>
+<div class="glossary">
+<p class="label">
+<em>Intent</em>
+</p>
+<blockquote class="item">Serve as a vendor-neutral Processor interface for
+  <a href="http://www.w3.org/TR/xslt">XSLT</a> and similar
+  processors.</blockquote>
+<p class="label">
+<em>Responsibilities</em>
+</p>
+<blockquote class="item">Serve as a factory for a concrete
+  implementation of an TransformerFactory, serve as a direct factory for
+  Transformer objects, serve as a factory for Templates objects, and manage
+  processor specific features.</blockquote>
+<p class="label">
+<em>Thread safety</em>
+</p>
+<blockquote class="item">A TransformerFactory may not perform mulitple concurrent
+  operations.</blockquote>
+</div>  
+<a name="pattern-Templates">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Templates</h4>
+<div class="glossary">
+<p class="label">
+<em>Intent</em>
+</p>
+<blockquote class="item">The runtime representation of the transformation instructions.</blockquote>
+<p class="label">
+<em>Responsibilities</em>
+</p>
+<blockquote class="item">A data bag for transformation instructions; act as a factory
+  for Transformers.</blockquote>
+<p class="label">
+<em>Thread safety</em>
+</p>
+<blockquote class="item">Threadsafe for concurrent
+  usage over multiple threads once construction is complete.</blockquote>
+</div>  
+<a name="pattern-Transformer">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Transformer</h4>
+<div class="glossary">
+<p class="label">
+<em>Intent</em>
+</p>
+<blockquote class="item">Act as a per-thread
+  execution context for transformations, act as an interface for performing the
+  transformation.</blockquote>
+<p class="label">
+<em>Responsibilities</em>
+</p>
+<blockquote class="item">Perform the
+  transformation.</blockquote>
+<p class="label">
+<em>Thread safety</em>
+</p>
+<blockquote class="item">Only one instance per thread
+  is safe.</blockquote>
+</div>  
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The Transformer is bound to the Templates
+  object that created it.</td>
+</tr>
+</table>
+<a name="pattern-Source">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Source</h4>
+<div class="glossary">
+<p class="label">
+<em>Intent</em>
+</p>
+<blockquote class="item">Serve as a
+  single vendor-neutral object for multiple types of input.</blockquote>
+<p class="label">
+<em>Responsibilities</em>
+</p>
+<blockquote class="item">Act as simple data holder for System IDs, DOM nodes, streams,
+  etc.</blockquote>
+<p class="label">
+<em>Thread safety</em>
+</p>
+<blockquote class="item">Threadsafe concurrently over multiple
+  threads for read-only operations; must be synchronized for edit
+  operations.</blockquote>
+</div>  
+<a name="pattern-Result">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Result</h4>
+<div class="glossary">
+<p class="label">
+<em>Intent</em>
+</p>
+<blockquote class="item">Serve
+  as a single object for multiple types of output, so there can be simple process
+  method signatures.</blockquote>
+<p class="label">
+<em>Responsibilities</em>
+</p>
+<blockquote class="item">Act as simple data holder for
+  output stream, DOM node, ContentHandler, etc.</blockquote>
+<p class="label">
+<em>Thread safety</em>
+</p>
+<blockquote class="item">Threadsafe concurrently over multiple threads for read-only,
+  must be synchronized for edit.</blockquote>
+</div>
+ 
+ 
+ <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/usagepatterns.html b/xalan-j/usagepatterns.html
new file mode 100644
index 0000000..88cecbd
--- /dev/null
+++ b/xalan-j/usagepatterns.html
@@ -0,0 +1,1026 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Basic usage patterns</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Basic usage patterns</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>Usage Patterns<br />
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Basic usage patterns</h2>
+<ul>
+<li>
+<a href="#basic">Basic steps</a>
+</li>
+<li>
+<a href="#plug">Plugging in the Transformer and XML parser</a>
+</li>
+<li>
+<a href="#outputprops">Configuring serialization output properties</a>
+</li>
+<li>
+<a href="#outputencoding">Caution: setting output encoding in the stylesheet</a>
+</li>
+<li>
+<a href="#incremental">Performing incremental transformations</a>
+</li>
+<li>
+<a href="#embed">Working with embedded stylesheets</a>
+</li>
+<li>
+<a href="#params">Setting stylesheet parameters</a>
+</li>
+<li>
+<a href="#serialize">Serializing output</a>
+</li>
+<li>
+<a href="#sax">Explicitly working with SAX</a>
+</li>
+<li>
+<a href="#outasin">Using transformation output as input for another transformation</a>
+</li>
+<li>
+<a href="#dom">Processing and producing DOM trees</a>
+</li>
+<li>
+<a href="#xpath">Working with XPath expressions</a>
+</li>
+<li>
+<a href="#applet">Using the Xalan-Java applet wrapper</a>
+</li>
+<li>
+<a href="#servlet">Using Xalan-Java in a servlet</a>
+</li>
+<li>
+<a href="#extensions">Creating and using extensions</a>
+</li>
+<li>
+<a href="#multithreading">Multithreading</a>
+</li>
+<li>
+<a href="#debugging">Debugger interface</a>
+</li>
+</ul>
+<p>See also: <a href="features.html">Transform Features</a>.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Unless otherwise specified, the usage discussed in this section refers to 
+the Xalan-Java Interpretive processor. See <a href="xsltc_usage.html">Getting Started Using  
+XSLTC</a> for information on using the Xalan-Java Compiling processor.</td>
+</tr>
+</table>
+<br />
+<a name="basic">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Basic steps</h3>
+    <ol>
+    <li>
+<a href="#transformerfactory">Instantiate a TransformerFactory</a>
+</li>
+    <li>
+<a href="#transformer">Process the stylesheet and generate a Transformer</a>
+</li>
+    <li>
+<a href="#transformation">Perform the transformation</a>
+</li>
+  </ol>
+    <p>The following example illustrates the three basic steps involved in performing a transformation.</p>
+    <blockquote class="source">
+<pre>// 1. Instantiate a TransformerFactory.
+javax.xml.transform.TransformerFactory tFactory = 
+                  javax.xml.transform.TransformerFactory.newInstance();
+
+// 2. Use the TransformerFactory to process the stylesheet Source and
+//    generate a Transformer.
+javax.xml.transform.Transformer transformer = tFactory.newTransformer
+                (new javax.xml.transform.stream.StreamSource("foo.xsl"));
+
+// 3. Use the Transformer to transform an XML Source and send the
+//    output to a Result object.
+transformer.transform
+    (new javax.xml.transform.stream.StreamSource("foo.xml"), 
+     new javax.xml.transform.stream.StreamResult( new
+                                  java.io.FileOutputStream("foo.out")));</pre>
+</blockquote>
+  <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">For a working example of this model at its simplest, see SimpleTransform.java in the java/samples/SimpleTransform subdirectory.</td>
+</tr>
+</table>
+  <a name="transformerfactory">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>1. Instantiate a TransformerFactory</h3>
+  <p>
+<a href="apidocs/javax/xml/transform/TransformerFactory.html">TransformerFactory</a> is an abstract class with a static newInstance() method that instantiates the concrete subclass designated by the javax.xml.transform.TransformerFactory system property.</p>
+  <p>The default setting for this system property is <a href="apidocs/org/apache/xalan/processor/TransformerFactoryImpl.html">org.apache.xalan.processor.TransformerFactoryImpl</a>.</p>
+<a name="transformer">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>2. Use the TransformerFactory to process the stylesheet Source and produce a Transformer</h3>
+<p>The TransformerFactory <a href="apidocs/javax/xml/transform/TransformerFactory.html#newTransformer(javax.xml.transform.Source)">newTransformer(Source xslSource)</a> method processes the stylesheet Source into a Templates object and returns a Transformer that you can use to perform a transformation (apply the Templates object to an XML Source).</p>
+<p>You may provide the stylesheet Source in the form of a stream of XML markup (<a href="apidocs/javax/xml/transform/stream/StreamSource.html">StreamSource</a>), a DOM Node (<a href="apidocs/javax/xml/transform/dom/DOMSource.html">DOMSource</a>), or a SAX InputSource (<a href="apidocs/javax/xml/transform/sax/SAXSource.html">SAXSource</a>). To specify a StreamSource, you may use a system ID or file name (using URI syntax), a java.io.InputStream, or a java.io.Reader. The use of DOMSource and SAXSource are illustrated in subsequent sections.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">If you plan to use the stylesheet Source to transform multiple XML Sources, you should use the TransformerFactory <a href="apidocs/javax/xml/transform/TransformerFactory.html#newTemplates(javax.xml.transform.Source)">newTemplates(Source xslSource)</a> method to explicitly generate a Templates object. For each transformation, use the Templates object to generate a new Transformer. For the details, see <a href="#multithreading">Multithreading</a>.</td>
+</tr>
+</table>
+<a name="transformation">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>3. Use the Transformer to perform a transformation</h3>
+<p>Use the Transformer <a href="apidocs/javax/xml/transform/Transformer.html#transform(javax.xml.transform.Source,javax.xml.transform.Result">transform(Source xmlSource, Result transformResult)</a> method to transform  the XML Source and place the transformation output in a Result object.</p>
+<p>Just as with the stylesheet, you can supply the XML Source in the form of a <a href="apidocs/javax/xml/transform/stream/StreamSource.html">StreamSource</a>, <a href="apidocs/javax/xml/transform/dom/DOMSource.html">DOMSource</a>, or <a href="apidocs/javax/xml/transform/sax/SAXSource.html">SAXSource</a>. Likewise, the Result may be a <a href="apidocs/javax/xml/transform/stream/StreamResult.html">StreamResult</a>, <a href="apidocs/javax/xml/transform/dom/DOMResult.html">DOMResult</a>, or <a href="apidocs/javax/xml/transform/sax/SAXResult.html">SAXResult</a>.</p>
+<p>For each node in the XML source, the Transformer uses the transformation instructions in the Templates object to determine which template to apply: one of the templates in the Templates object, a default template rule as specified in the XSLT spec, or none.</p>
+<a name="plug">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Plugging in a Transformer and XML parser</h3>
+<p>The Java API for XML Processing interfaces enable you to isolate your application from the internal implementation details of a given Transformer, SAX parser, or DOM parser. For each of these objects, there is an abstract Factory class with a static newInstance() method that instantiates a concrete Factory which wraps the underlying implementation. These newInstance() methods use system property settings to determine which implementation to instantiate.</p>
+<p>Xalan-Java is distributed with a system property setting for the Xalan-Java processor. This setting is in <code>xalan.jar</code> in META-INF/services (see src/META-INF/services).</p>
+<div class="glossary">
+  <p class="label">
+<em>System property</em>
+</p>
+    <blockquote class="item">Setting</blockquote>
+  <p class="label">
+<em>
+<code>javax.xml.transform.TransformerFactory</code>
+</em>
+</p>
+   <blockquote class="item">
+<code>org.apache.xalan.processor.TransformerFactoryImpl</code>
+</blockquote>
+</div>
+<p>If you are using Xerces, the XML parser factory settings are as follows:</p>
+<div class="glossary">
+  <p class="label">
+<em>System property</em>
+</p>
+    <blockquote class="item">Setting</blockquote>
+  <p class="label">
+<em>
+<code>javax.xml.parsers.DocumentBuilderFactory</code>
+</em>
+</p>
+   <blockquote class="item">
+<code>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</code>
+</blockquote>    
+  <p class="label">
+<em>
+<code>javax.xml.parsers.SAXParserFactory</code>
+</em>
+</p>
+   <blockquote class="item">
+<code>org.apache.xerces.jaxp.SAXParserFactoryImpl</code>
+</blockquote>
+ </div>
+<p>You can change any of these settings as follows (in order of precedence):</p>
+<ol>
+  <li>Set the system property from the command line when you launch Java or from within your application.<br />
+<br />
+</li>
+  <li>Set the system property in jaxp.properties in the JAVA_HOME/lib directory, where JAVA_HOME is the root of the JDK.<br />
+<br />
+</li>
+  <li>Revise the entry in src/META-INF/services and rebuild <code>xalan.jar</code> or <code>xercesImpl.jar</code>, depending on which entry you have changed.<br />
+<br />
+</li>
+</ol>
+<p>For example, to use the Crimson XML parser in place of the Xerces XML parser, place Crimson on the class path and set the 
+<code>javax.xml.parsers.SAXParserFactory</code> system property to <code>org.apache.crimson.jaxp.SAXParserFactoryImpl</code>.</p>
+<p>For more information about the mechanism used to determine system property values and how you can plug other implementations into your applications, see "Section 3: Plugability Layer" in the <b>
+<i>Java API for XML Processing</i>
+</b> at 
+<a href="http://java.sun.com/aboutJava/communityprocess/review/jsr063/index.html">JSR-000063 1.1</a>.</p> 
+<a name="outputprops">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Configuring serialization output properties</h3>
+<p>Output properties for XML, HTML, and text transformation output are defined in property files in the org.apache.xml.serializer package.</p>
+<p>You can override the default value of these properties in your stylesheet by using the attributes of an xsl:output element. 
+You can override the Xalan specific default settings as follows:</p>
+<ol>
+  <li>Declare the xalan namespace in your stylesheet element (xmlns:xalan="http://xml.apache.org/xalan").<br />
+<br />
+</li>
+  <li>Use the namespace prefix you assign (for example, "xalan") to redefine properties of interest in the stylesheet xsl:output
+      element (for example, xalan:indent-amount="5").</li>
+</ol>
+<p>The following stylesheet fragment declares the xalan namespace and sets indent-amount to 2:</p>
+<blockquote class="source">
+<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:xalan="http://xml.apache.org/xalan"&gt;
+                
+  &lt;xsl:output method="xml" 
+              encoding="UTF-8"
+              indent="yes" 
+              xalan:indent-amount="2"/&gt;</pre>
+</blockquote>
+  <p>If you want to change the property settings globally, edit the values in the property files in src/org/apache/xml/serializer, 
+  and use Ant to <a href="readme.html#jar">rebuild <code>serializer.jar</code>
+</a>. Be aware that if you change the default value
+  of a standard property, such as the default encoding value, this may be in conflict with the default value specified by the XSLT 1.0 
+  recommendation.</p>
+<p>The properties files define the following properties:</p>
+<p>
+<b>
+<i>output_xml.properties</i>
+</b>:</p>
+<table border="1">
+  <tr>
+    <th class="content" rowspan="1" colspan="1">Property</th>
+    <th class="content" rowspan="1" colspan="1">Default value</th>
+  </tr>  
+  <tr>
+    <td class="content" rowspan="1" colspan="1">version</td>
+    <td class="content" rowspan="1" colspan="1">1.0</td>
+  </tr>  
+  <tr>
+    <td class="content" rowspan="1" colspan="1">encoding</td>
+    <td class="content" rowspan="1" colspan="1">UTF-8</td>
+  </tr>  
+  <tr>
+    <td class="content" rowspan="1" colspan="1">indent</td>
+    <td class="content" rowspan="1" colspan="1">no</td>
+  </tr>  
+  <tr>
+    <td class="content" rowspan="1" colspan="1">omit-xml-declaration</td>
+    <td class="content" rowspan="1" colspan="1">no</td>
+  </tr> 
+  <tr>
+    <td class="content" rowspan="1" colspan="1">standalone</td>
+    <td class="content" rowspan="1" colspan="1">no</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">media-type</td>
+    <td class="content" rowspan="1" colspan="1">text/xml</td>
+  </tr>     
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:indent-amount</td>
+    <td class="content" rowspan="1" colspan="1">0</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:content-handler</td>
+    <td class="content" rowspan="1" colspan="1">org.apache.xml.serializer.ToXMLStream</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:entities</td>
+    <td class="content" rowspan="1" colspan="1">org/apache/xml/serializer/XMLEntities</td>
+  </tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The xalan:content-handler property specifies the default name of the Java class that implements the 
+<a href="apidocs/org/xml/sax/ContentHandler.html">org.xml.sax.ContentHandler</a>
+interface and recieves calls during result tree serialization. If you specify an 
+alternate Java class it must implement the ContentHandler interface.</td>
+</tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">You can also create your own XML entity file (mapping characters to
+entities) or edit src/org/apache/xml/serializer/XMLEntities.properties and
+rebuild <code>serializer.jar</code>.</td>
+</tr>
+</table>
+<p>
+<b>
+<i>output_html.properties</i>
+</b>:</p>
+<table border="1">
+  <tr>
+    <th class="content" rowspan="1" colspan="1">Property</th>
+    <th class="content" rowspan="1" colspan="1">Default value</th>
+  </tr>  
+  <tr>
+    <td class="content" rowspan="1" colspan="1">version</td>
+    <td class="content" rowspan="1" colspan="1">4.0</td>
+  </tr> 
+  <tr>
+    <td class="content" rowspan="1" colspan="1">indent</td>
+    <td class="content" rowspan="1" colspan="1">yes</td>
+  </tr>   
+  <tr>
+    <td class="content" rowspan="1" colspan="1">media-type</td>
+    <td class="content" rowspan="1" colspan="1">text/html</td>
+  </tr>   
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:indent-amount</td>
+    <td class="content" rowspan="1" colspan="1">0</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:content-handler</td>
+    <td class="content" rowspan="1" colspan="1">org.apache.xml.serializer.ToHTMLStream</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:entities</td>
+    <td class="content" rowspan="1" colspan="1">org/apache/xml/serializer/HTMLEntities</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:use-url-escaping</td>
+    <td class="content" rowspan="1" colspan="1">yes</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:omit-meta-tag</td>
+    <td class="content" rowspan="1" colspan="1">no</td>
+  </tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The xalan:content-handler property specifies the default name of the Java class that implements the 
+<a href="apidocs/org/xml/sax/ContentHandler.html">org.xml.sax.ContentHandler</a>
+interface and recieves calls during result tree serialization. If you specify an 
+alternate Java class it must implement the ContentHandler interface.</td>
+</tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">You can also create your own HTML entity file (mapping characters to entities) 
+or edit src/org/apache/xml/serializer/HTMLEntities.properties and rebuild <code>serializer.jar</code>.</td>
+</tr>
+</table>
+<p>
+<b>
+<i>output_text.properties</i>
+</b>:</p>
+<table border="1">  
+  <tr>
+    <th class="content" rowspan="1" colspan="1">Property</th>
+    <th class="content" rowspan="1" colspan="1">Default value</th>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">media-type</td>
+    <td class="content" rowspan="1" colspan="1">text/plain</td>
+  </tr>    
+  <tr>
+    <td class="content" rowspan="1" colspan="1">xalan:content-handler</td>
+    <td class="content" rowspan="1" colspan="1">org.apache.xml.serializer.ToTextStream</td>
+  </tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The xalan:content-handler property specifies the default name of the Java class that implements the 
+<a href="apidocs/org/xml/sax/ContentHandler.html">org.xml.sax.ContentHandler</a>
+interface and recieves calls during result tree serialization. If you specify an 
+alternate Java class it must implement the ContentHandler interface.</td>
+</tr>
+</table>
+<a name="outputencoding">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Caution: setting output encoding in the stylesheet</h3>
+<p>When you use the &lt;xsl:output&gt; encoding attribute to set output character encoding, you should not 
+use StreamResult(java.io.Writer) to construct a 
+<a href="apidocs/javax/xml/transform/stream/StreamResult.html">StreamResult</a> object to hold the transformation result.
+If you do, the Writer uses its own encoding rather than the encoding specified in the stylesheet.</p>
+<p>If you want to use a Writer, you can specify an encoding when you create the Writer (java.io.OutputStreamWriter). Once the 
+Writer exists, you cannot reset the encoding it uses.</p>
+<a name="incremental">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Performing incremental transformations</h3>
+<p>The <a href="dtm.html">DTM</a> (Document Table Model) supports incremental transformations, the incremental generation of the 
+transformation result while the source document is still being parsed. For more information, see 
+<a href="dtm.html#incremental">incremental transformations</a>.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">You can also enable incremental transformations with the <a href="commandline.html">command-line utility</a> by including the -INCREMENTAL flag.</td>
+</tr>
+</table>
+<a name="embed">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Working with embedded stylesheets</h3>
+<p>An XML Source may include an <a href="http://www.w3.org/TR/xml-stylesheet/">xml-stylesheet processing instruction</a> which identifies the stylesheet to be used to process the document. As indicated by the processing instruction <b>
+<i>href</i>
+</b> attribute, the stylesheet itself may be embedded in the XML document or located elsewhere.</p>
+<p>Suppose you have an XML document (foo.xml) with the following xml-stylesheet processing instruction:</p>
+<p>
+<code>&lt;?xml-stylesheet type="text/xml" href="foo.xsl"?&gt;</code>
+</p>
+<p>The following fragment uses this instruction to locate the stylesheet (foo.xsl in the same directory as foo.xml) and create a Templates object. Note the use of the TransformerFactory getAssociatedStylesheet() in step 2a.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">An XML document may include more than one xml-stylesheet processing instruction, hence the support for working with multiple stylesheets. If more than one stylesheet is returned, the other stylesheets are imported into the first stylesheet.</td>
+</tr>
+</table>
+<blockquote class="source">
+<pre>// 1. Instantiate the TransformerFactory.
+javax.xml.transform.TransformerFactory tFactory = 
+                    javax.xml.transform.TransformerFactory.newInstance();
+// 2a. Get the stylesheet from the XML source.
+String media = null , title = null, charset = null;
+javax.xml.transform.Source stylesheet = tFactory.getAssociatedStylesheet
+                   (new StreamSource("foo.xml"), media, title, charset);
+
+// 2b. Process the stylesheet and generate a Transformer.
+Transformer transformer = tFactory.newTransformer(stylesheet);
+
+// 3. Use the Transformer to perform the transformation and send the
+//    the output to a Result object.
+transformer.transform
+             (new javax.xml.transform.stream.StreamSource("foo.xml"),
+              new StreamResult (new java.io.FileOutputStream("foo.out")));</pre>
+</blockquote>
+<p>For a sample that uses this technique, see <a href="samples.html#usestylesheetpi">UseStylesheetPI</a>.</p>
+<p>You can also instruct the <a href="commandline.html">command-line utility</a> to use stylesheet processing
+instructions:</p>
+<ol>
+  <li>Include the <code>-in</code> flag with an XML source that contains a stylesheet processing instruction.<br />
+<br />
+</li>
+  <li>Do not include the <code>-xsl</code> flag.</li>
+</ol>
+<a name="serialize">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Serializing output</h3>
+<p>In some cases, you may want to "transform" a DOM tree into a stream, which the XML community calls serialization. 
+<a href="https://jaxp.java.net/">JAXP 1.3</a> and the Xalan-Java Transformer implementation provide direct 
+support for this operation. Simply use the TransformerFactory newTransformer() method (no arguments) to create a Transformer 
+that you can use to "copy" a DOMSource to a StreamResult. For examples, see Examples.exampleDOM2DOM(), 
+Examples.exampleSerializeNode(), and Examples.exampleAsSerializer() in the <a href="samples.html#trax">trax (JAXP transform) sample</a>.</p>
+<a name="params">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Setting stylesheet parameters</h3>
+<p>An XSLT stylesheet may include parameters that are set at run time each time a transformation is performed. To set a stylesheet parameter, use the Transformer 
+<a href="apidocs/javax/xml/transform/Transformer.html#setParameter(java.lang.String,java.lang.Object)">setParameter(String name, Object value)</a> method. For a working example, see UseStylesheetParam.java in the samples/UseStylesheetParam subdirectory.</p>
+<p>You can also set a parameter with the command-line utility by including the <code>-param</code> flag. For example:</p>
+<p>
+<code>java org.apache.xalan.xslt.Process -in foo.xml -xsl foo.xsl -param param1 foobar</code>
+</p>
+<p>where <code>param</code> is the parameter name and <code>foobar</code> is the parameter value. The parameter namespace is null.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Xalan-Java 2 processes string parameters. You are no longer required (as you were with Xalan-Java version 1) to enclose strings in single 
+quotes (') as string expressions.</td>
+</tr>
+</table>
+<a name="sax">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Explicitly working with SAX</h3>
+  <p>Xalan-Java uses the SAX event model to process stylesheets, to parse XML input documents, and to produce output. For each of these operations, an XMLReader reads input, firing parse events, and a ContentHandler listens to the XMLReader and executes parse event methods.</p>
+<p>When you use the basic procedure described above for performing transformations, Xalan-Java takes care of many of the SAX details under the covers. You are free to make these details explicit, which simply means that you can intervene in the procedure to accommodate the precise environment in which your application operates.</p>
+<p>Suppose, for example, you are using a custom XMLReader (perhaps for doing more than just parsing static XML documents) to generate Xalan-Java SAX parse events. You might even have a custom reader for producing/processing stylesheets. You can cast the TransformerFactory to a SAXTransformerFactory, which provides access to a TransformerHandler, which you can set as the ContentHandler for this reader.</p>
+  <p>The following example explicitly sets up the XMLReader and ContentHandlers, and replicates the <a href="#basic">basic steps</a> described above.</p>
+  <blockquote class="source">
+<pre>// Instantiate a TransformerFactory.
+javax.xml.transform.TransformerFactory tFactory = 
+                    javax.xml.transform.TransformerFactory.newInstance();
+// Verify that the TransformerFactory implementation you are using
+// supports SAX input and output (Xalan-Java does!).
+if (tFactory.getFeature(javax.xml.transform.sax.SAXSource.FEATURE) &amp;&amp; 
+    tFactory.getFeature(javax.xml.transform.sax.SAXResult.FEATURE))
+  { 
+    // Cast the TransformerFactory to SAXTransformerFactory.
+    javax.xml.transform.sax.SAXTransformerFactory saxTFactory = 
+                   ((javax.xml.transform.sax.SAXTransformerFactory) tFactory);
+    // Create a Templates ContentHandler to handle parsing of the 
+    // stylesheet.
+    javax.xml.transform.sax.TemplatesHandler templatesHandler = 
+                                        saxTFactory.newTemplatesHandler();
+
+    // Create an XMLReader and set its ContentHandler.
+    org.xml.sax.XMLReader reader = 
+                   org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
+    reader.setContentHandler(templatesHandler);
+    
+    // Parse the stylesheet.                       
+    reader.parse("foo.xsl");
+
+    // Get the Templates object (generated during the parsing of the stylesheet)
+    // from the TemplatesHandler.
+    javax.xml.transform.Templates templates = 
+                                          templatesHandler.getTemplates();
+    // Create a Transformer ContentHandler to handle parsing of 
+    // the XML Source.  
+    javax.xml.transform.sax.TransformerHandler transformerHandler 
+                           = saxTFactory.newTransformerHandler(templates);
+    // Reset the XMLReader's ContentHandler to the TransformerHandler.
+    reader.setContentHandler(transformerHandler);
+
+    // Set the ContentHandler to also function as a LexicalHandler, which
+    // can process "lexical" events (such as comments and CDATA). 
+    reader.setProperty("http://xml.org/sax/properties/lexical-handler", 
+                        transformerHandler);
+
+    // Set up a Serializer to serialize the Result to a file.
+    org.apache.xml.serializer.Serializer serializer = 
+    org.apache.xml.serializer.SerializerFactory.getSerializer
+    (org.apache.xml.serializer.OutputPropertiesFactory.getDefaultMethodProperties
+                                                                   ("xml"));
+    serializer.setOutputStream(new java.io.FileOutputStream("foo.out"));
+    // The Serializer functions as a SAX ContentHandler.
+    javax.xml.transform.Result result =
+      new javax.xml.transform.sax.SAXResult(serializer.asContentHandler());
+    transformerHandler.setResult(result);
+      
+    // Parse the XML input document.
+    reader.parse("foo.xml");</pre>
+</blockquote>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">If you want to perform multiple transformations with the same Templates object and a TransformerHandler, you must create a new
+    TransformerHandler for each transformation. The Xalan-Java implementation of TransformerHandler 
+    (<a href="apidocs/org/apache/xalan/transformer/TransformerHandlerImpl.html">TransformerHandlerImpl</a> fails to respond 
+    to events after the first endDocument event occurs.</td>
+</tr>
+</table>
+<a name="outasin">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using transformation output as input for another transformation</h3>
+
+<p>You can chain together a series of transformations such that the output of each transformation provides input for the next transformation. Xalan-Java supports two basic strategies for chaining a series of transformations:</p>
+<ul>
+  <li>Use the SAXTransformerFactory to process the stylesheet and create a TransformerHandler for each transformation. Then you can set
+the first TransformerHandler as the ContentHandler for the XMLReader that parses the input, make the second TransformerHandler the ContentHandler for the output of the first TransformerHandler, and so on. For more detail and an example, see the <a href="samples.html#pipe">Pipe</a> sample.<br />
+<br />
+</li>
+  <li>Use the SAXTransformerFactory to process the stylesheet and create a SAX XMLFilter for each transformation. Set an XMLReader as the parent of the first XMLFilter, the first XMLFilter as the parent of the second XMLFilter, and so on. You launch the series of transformations by instructing the last XMLFilter to parse the XML Source for the first transformation. For more detail and an example, see the <a href="samples.html#usexmlfilters">UseXMLFilters</a> sample.</li>
+</ul>
+<a name="dom">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Processing and producing DOM trees</h3>
+  <p>In some cases, the input and/or desired output for a transformation may be a DOM tree object. The javax.xml.transform.DOM package provides <a href="apidocs/javax/xml/transform/dom/DOMSource.html">DOMSource</a> and a <a href="apidocs/javax/xml/transform/dom/DOMResult.html">DOMResult</a>, either or both of which you can use when you perform a transformation.</p>
+<p>In some cases, your application provides input in the form of a DOM tree, which accelerates the transformation process, since the input has in effect already been processed. To produce DOM input from a stream, you can use a <a href="apidocs/javax/xml/parsers/DocumentBuilderFactory.html">DocumentBuilderFactory</a> to produce a <a href="apidocs/javax/xml/parsers/DocumentBuilder.html">DocumentBuilder</a> with which you can parse the XML input into a DOM Document, as illustrated below.</p>
+<blockquote class="source">
+<pre>// Instantiate a DocumentBuilderFactory.
+javax.xml.parsers.DocumentBuilderFactory dfactory =
+                    javax.xml.parsers.DocumentBuilderFactory.newInstance();
+// Use the DocumentBuilderFactory to provide access to a DocumentBuilder.
+javax.xml.parsers.DocumentBuilder dBuilder = dfactory.newDocumentBuilder();
+// Use the DocumentBuilder to parse the XML input.
+org.w3c.dom.Document inDoc = dBuilder.parse("foo.xml");</pre>
+</blockquote>
+<p>To produce DOM output, simply use a Transformer to transform to a DOMResult object.</p>
+<blockquote class="source">
+<pre>// Generate a Transformer.
+javax.xml.transform.Transformer transformer = tFactory.newTransformer
+                  (new javax.xml.transform.stream.StreamSource("foo.xsl"));
+// Create an empy DOMResult object for the output.
+javax.xml.transform.dom.DOMResult domResult =
+                                   new javax.xml.transform.dom.DOMResult();
+// Perform the transformation.
+transformer.transform(new javax.xml.transform.dom.DOMSource(inDoc),
+                      domResult);
+// Now you can get the output Node from the DOMResult.
+org.w3c.dom.Node node = domResult.getNode();</pre>
+</blockquote>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Create a new DOMResult object or use DOMResult.setNode() to assign a new container each time you want to perform a transformation 
+and place the output in a DOMResult object.</td>
+</tr>
+</table>
+<p>The <a href="samples.html#dom2dom">DOM2DOM</a> illustrates both procedures, and serializes the DOMResult to System.out.</p>
+<a name="xpath">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Working with XPath expressions</h3>
+<p>XSLT stylesheets use XPath expressions to select nodes, specify conditions, and generate text for the result tree. XPath provides an API that you can call directly. For example, you may want to evaluate an XPath expression programmatically and do your own processing without a stylesheet.</p>
+<p>XPath is an independent entity, with clients other than XSLT processors (such as XPointer). Accordingly, Xalan-Java 2 has packaged XPath as a separate module (org.apache.xpath and its subpackages). The org.apache.xpath.XPathAPI class contains convenience methods that you can use to return single DOM Nodes, NodeIterators, and XObjects. Apart from their own functionality, these methods also provide a path into the lower-level XPath API that you may find useful.</p>
+<p>JAXP 1.3 also provides an API for xpath expression evaluation in the javax.xml.xpath package. Users are 
+ recommended to use the new JAXP 1.3 XPath API rather than the old Xalan-Java 2 specific XPath API.</p>
+<p>For an example that uses the Xalan-Java 2 specific XPathAPI to execute XPath expressions against XML source files, 
+see <a href="samples.html#applyxpath">ApplyXPath</a>. For examples on how to use the new JAXP 1.3 XPath
+API, see <a href="samples.html#applyxpathjaxp">ApplyXPathJAXP</a> and 
+<a href="samples.html#xpathresolver">XPathResolver</a>.</p>
+<a name="applet">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using the Xalan-Java applet wrapper</h3>
+<ol> 
+<li>Include <a href="apidocs/org/apache/xalan/client/XSLTProcessorApplet.html">XSLTProcessorApplet</a> in an HTML client.<br />
+<br />
+</li>
+<li>Specify the XML source document and XSL stylesheet.<br />
+<br />
+You can use the DocumentURL and StyleURL PARAM tags or the <a href="apidocs/org/apache/xalan/client/XSLTProcessorApplet.html#setDocumentURL(java.lang.String)">setdocumentURL()</a> and <a href="apidocs/org/apache/xalan/client/XSLTProcessorApplet.html#setStyleURL(java.lang.String)">setStyleURL()</a> methods. If the XML document contains a stylesheet Processing Instruction (PI), you do not need to specify an XSL stylesheet.<br />
+<br />
+</li>
+<li>Call the <a href="apidocs/org/apache/xalan/client/XSLTProcessorApplet.html#transformToHtml(java.lang.String,java.lang.String)">transformToHtml()</a> or <a href="apidocs/org/apache/xalan/client/XSLTProcessorApplet.html#getHtmlText()">getHtmlText()</a> method, which performs the transformation and returns the new document as a String.</li>
+</ol>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The transformToHTML() method takes arguments for the XML source document and XSL stylesheet. The getHtmlText() method takes no arguments: it uses property or parameter settings, as in the example below.</td>
+</tr>
+</table>
+<p>For an example, see the <a href="samples.html#appletxmltohtml">AppletXMLtoHTML</a> sample applet. The &lt;applet&gt; tag is in samples/AppletXMLtoHTML/client.html:</p>
+<blockquote class="source">
+<pre>&lt;applet  
+    name="xslControl"
+    code="org.apache.xalan.client.XSLTProcessorApplet.class"
+    archive="../../xalan.jar,../../build/xalan.jar,../../serializer.jar,../../build/serializer.jar,../../lib/xml-apis.jar,../../lib/xercesImpl.jar"
+    height="0"
+    width"0"&gt;
+    &lt;param name="documentURL" value="xalanApplets.xml"/&gt;
+    &lt;param name="styleURL" value="s1ToHTML.xsl"/&gt;
+&lt;/applet&gt;</pre>
+</blockquote>
+<p>When the user clicks the Transform button, the HTML client calls the getHtmlText() method, and puts the returned HTML text in a frame for the user to view.</p>
+<p>For samples, see <a href="samples.html#applet">AppletXMLtoHTML</a>.</p>
+<a name="netscape">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Problems with Netscape</h4>
+    <p>The JAXP strategy of reading system properties 
+    generates SecurityExceptions when you attempt to run Xalan-Java applets in the Netscape Communicator 4.7.</p> 
+    <p>Stuart Connell 
+    &lt;Stuart.Connell@compuware.com&gt; reports that the Xalan-Java applet wrapper does work in Netscape Communicator 6, 
+    provided that you avoid calls to the AppletContext showStatus() method. In other words, you can remove the showStatus() calls
+    from org.apache.xalan.client.XSLTProcessorApplet, and run Xalan-Java applets from Netscape Communicator 6. This appears to be a
+    Netscape bug, which hopefully will be fixed soon. For more information, see 
+    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3231">Bugzilla bug 3231</a>.</p>
+    
+<a name="servlet">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using Xalan-Java in a servlet</h3>
+<p>You can set up a servlet to use Xalan-Java to respond to requests for XML documents by transforming those documents into HTML and serving them to web browsers. To respond to HTTP GET requests, all you need to do is overwrite the HttpServlet doGet() method with a procedure that instantiates a Transformer and uses it to perform a transformation. As the following example shows, you can generate a ResultStream that a PrintWriter writes to the HttpResponse OutputStream, returning the transformation output to the web browser.</p>
+<blockquote class="source">
+<pre>
+public class SampleXSLTServlet extends javax.servlet.http.HttpServlet {
+  
+  public final static String FS = System.getProperty("file.separator"); 
+  // Respond to HTTP GET requests from browsers.
+  public void doGet (javax.servlet.http.HttpServletRequest request,
+                     javax.servlet.http.HttpServletResponse response)
+    throws javax.servlet.ServletException, java.io.IOException
+  {
+    // Set content type for HTML.
+    response.setContentType("text/html; charset=UTF-8");    
+    // Output goes to the response PrintWriter.
+    java.io.PrintWriter out = response.getWriter();
+    try
+    {	
+      javax.xml.transform.TransformerFactory tFactory = 
+                javax.xml.transform.TransformerFactory.newInstance();
+      //get the real path for xml and xsl files.
+      String ctx = getServletContext().getRealPath("") + FS;        
+      // Get the XML input document and the stylesheet, both in the servlet
+      // engine document directory.
+      javax.xml.transform.Source xmlSource = 
+                new javax.xml.transform.stream.StreamSource
+                             (new java.net.URL("file", "", ctx+"foo.xml").openStream());
+      javax.xml.transform.Source xslSource = 
+                new javax.xml.transform.stream.StreamSource
+                             (new java.net.URL("file", "", ctx+"foo.xsl").openStream());
+      // Generate the transformer.
+      javax.xml.transform.Transformer transformer = 
+                             tFactory.newTransformer(xslSource);
+      // Perform the transformation, sending the output to the response.
+      transformer.transform(xmlSource, 
+                           new javax.xml.transform.stream.StreamResult(out));
+    }
+    // If an Exception occurs, return the error to the client.
+    catch (Exception e)
+    {
+      out.write(e.getMessage());
+      e.printStackTrace(out);    
+    }
+    // Close the PrintWriter.
+    out.close();
+  }  
+}</pre>
+</blockquote>
+<p>For a working sample, see <a href="samples.html#simplexsltservlet">SimpleXSLTServlet</a>.</p>
+<p>In the preceding example, the URLs for the XML document and XSL stylesheet are hardcoded in the servlet. You can also create a servlet that parses the request URL for input parameters specifying the XML document, XSL stylesheet, and any relevant stylesheet parameters. For samples, see <a href="samples.html#usestylesheetparamservlet">UseStylesheetParamServlet</a> and <a href="samples.html#xsltservletwithparams">XSLTServletWithParams</a>. For a more robust and complex sample that also employs a properties file to determine which stylesheet to use depending on the client browser/device, see <a href="samples.html#applyxslt">ApplyXSLT</a>.</p>
+<a name="extensions">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Creating and using extensions</h3>
+<p>For those cases where you want to be able to call procedural code from within a stylesheet, the Xalan-Java Extensions facility supports the creation of extension elements and extension functions. See <a href="extensions.html">Extensions</a> and <a href="samples.html#extensions">Extensions samples</a>.</p>
+<a name="multithreading">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Multithreading</h3>
+<p>A given Templates object may be used repeatedly and even in multiple threads running concurrently for the transformation of XML input, but you should use the Templates object to instantiate a separate Transformer for each transformation you perform. The Templates object is an immutable runtime representation of the structure and content of a stylesheet (which may include and import multiple stylesheet sources). A Transformer, on the other hand, is a lightweight object that tracks state information during the transformation, and should only be used to perform a single transformation.</p>
+
+<p>If you want to perform multiple transformations (sequentially or concurrently) with the same stylesheet instructions, do the following:</p>
+<ol>
+  <li>Use the TransformerFactory <a href="apidocs/javax/xml/transform/TransformerFactory.html#newTemplates(javax.xml.transform.Source)">newTemplates(Source xslSource)</a> method to create a Templates object.<br />
+<br />
+</li>
+<li>For each transformation, use the Templates object <a href="apidocs/javax/xml/transform/Templates.html#newTransformer()">newTransformer()</a> method to create a Transformer, and use that Transformer's 
+<a href="apidocs/javax/xml/transform/Transformer.html#transform(javax.xml.transform.Source,javax.xml.transform.Result)">transform(Source xmlSource, Result transformResult)</a> method to perform the transformation.</li>
+</ol>
+<p>For an example, see Examples.exampleUseTemplatesObj() in the <a href="samples.html#trax">trax sample</a>.</p>
+<a name="debugging">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Debugger Interface</h3>
+		<p>Xalan-Java contains a debugger interface in the org.apache.xalan.xslt.trace package:</p> 
+		<ul>
+		  <li>
+<a href="apidocs/org/apache/xalan/trace/TraceListener.html">TraceListener</a> is an interface that debuggers 
+		  can implement. Or, like the <a href="commandline.html">command-line utility</a>, you can use the <a href="apidocs/org/apache/xalan/trace/PrintTraceListener.html">PrintTraceListener</a> implementation of that interface.
+      <br />
+<br />
+</li>
+      <li>You can register a TraceListener with the 
+      <a href="apidocs/org/apache/xalan/trace/TraceManager.html">TraceManager</a> associated
+      with the Transformer that will perform a given transformation.<br />
+<br />
+</li>
+		  <li>
+<a href="apidocs/org/apache/xalan/trace/TracerEvent.html">TracerEvent</a> is an event that is 
+		  passed to the TraceListener.trace() function. It is called before a node is 'executed' in the stylesheet.<br />
+<br />
+</li>
+		  <li>
+<a href="apidocs/org/apache/xalan/trace/GenerateEvent.html">GenerateEvent</a> is an event that is 
+		  passed to the TraceListener.generated() function. It is called after an event occurs to create something in the result
+      tree.<br />
+<br />
+</li>
+      <li>
+<a href="apidocs/org/apache/xalan/trace/SelectionEvent.html">SelectionEvent</a> is an event triggered by the
+       selection of a stylesheet node.</li>
+      <li>
+<a href="apidocs/org/apache/xalan/trace/ExtensionEvent.html">ExtensionEvent</a> is an event that is
+       passed to the TraceListener.extension() function.  It is called before an extension call is made.<br />
+<br />
+</li>
+		</ul>
+    <p>The <a href="commandline.html">command-line utility</a> uses the debugger interface when you include one or more of the
+     following switches: <code>-TT</code>, <code>-TG</code>, <code>-TS</code>, <code>-TTC</code>.</p>
+    <p>Example:</p>
+<blockquote class="source">
+<pre>import org.apache.xalan.transformer.TransformerImpl;
+import org.apache.xalan.trace.TraceManager;
+import org.apache.xalan.trace.PrintTraceListener;
+...
+// 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);
+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 is called.
+ptl.m_traceExtension = true;
+
+// Set up the transformation    
+javax.xml.transform.TransformerFactory tFactory = 
+                     javax.xml.transform.TransformerFactory.newInstance();
+javax.xml.transform.Transformer transformer = 
+  tFactory.newTransformer(new javax.xml.transform.stream.StreamSource
+                                                             ("foo.xsl"));
+
+// Cast the Transformer object to TransformerImpl.
+if (transformer instanceof TransformerImpl) {
+  TransformerImpl transformerImpl = (TransformerImpl)transformer;
+  
+  // Register the TraceListener with the 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 javax.xml.transform.stream.StreamSource("foo.xml"), 
+        new javax.xml.transform.stream.StreamResult
+                                    (new java.io.FileWriter("foo.out")) );
+}
+// Close the PrintWriter and FileWriter.
+pw.close();
+fw.close();</pre>
+</blockquote>
+<p>For a sample application that uses this technique, see <a href="samples.html#trace">Trace</a>.</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/whatsnew.html b/xalan-j/whatsnew.html
new file mode 100644
index 0000000..3354e5f
--- /dev/null
+++ b/xalan-j/whatsnew.html
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: What's new in Xalan-Java 2</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">What's new in Xalan-Java 2</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>What's New<br />
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>What's new in Xalan-Java 2</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>What's new in Xalan-Java Version 2.7.2</h3>  
+    <p>
+      Here's what new in Xalan-Java Version 2.7.2.
+    </p>
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Fix for CVE-2014-0107 insufficient secure processing</h4>
+      <p>
+        When using FEATURE_SECURE_PROCESSING ("http://javax.xml.XMLConstants/feature/secure-processing") on a TransformerFactory, the output properties:
+      </p>
+      <ul>
+        <li>{http://xml.apache.org/xalan}content-handler</li>
+        <li>{http://xml.apache.org/xalan}entities</li>
+        <li>{http://xml.apache.org/xslt}content-handler</li>
+        <li>{http://xml.apache.org/xslt}entities</li>
+      </ul>
+      <p>
+        should be ignored (see http://xml.apache.org/xalan-j/usagepatterns.html#outputprops)
+      </p>
+      <p>
+        These properties can be used to load an arbitrary class or access an arbitrary URL/resource so are problematic when secure processing is desired.
+      </p>
+      <p>      
+        <code>  
+          &lt;xsl:output xalan:content-handler="org.example.BadClass" ...
+        </code>   
+      </p>
+      <p>      
+        <code>  
+          &lt;xsl:output xalan:entities="http://example.org/reallyLargeFile.bin" ...
+        </code>   
+      </p>
+      <p>
+        These features could be used to load a class that had undesirable side-effects or to load a large file and exhaust memory, etc. 
+      </p>
+      <p>
+        See <a href="#https://issues.apache.org/jira/browse/XALANJ-2435">XALANJ-2435</a>. 
+      </p>
+    
+    
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Upgrade to Xerces-J 2.11.0 and XML Commons External 1.4.01</h4>
+      The distributions contain upgraded versions of <code>xercesImpl.jar</code>
+      (Xerces-J 2.11.0) and <code>xml-apis.jar</code> (XML Commons External 1.4.01).
+    
+    
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Bug fixes</h4>
+      Xalan-Java Version 2.7.2 contains performance enhancements and other bug fixes since 2.7.1. You can find the list 
+      in <a href="readme.html#notes_latest">the release notes</a>.
+    
+    
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xmlfilters.gif b/xalan-j/xmlfilters.gif
new file mode 100644
index 0000000..2b4d640
--- /dev/null
+++ b/xalan-j/xmlfilters.gif
Binary files differ
diff --git a/xalan-j/xpath_apis.html b/xalan-j/xpath_apis.html
new file mode 100644
index 0000000..0ded892
--- /dev/null
+++ b/xalan-j/xpath_apis.html
@@ -0,0 +1,628 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Using the JAXP XPath APIs</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Using the JAXP XPath APIs</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>XPath API<br />
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Using the JAXP XPath APIs</h2>
+  <ul>
+  <li>
+<a href="#basic">Basic steps</a>
+</li>
+  <li>
+<a href="#plugin">Plugging in the XPathFactory</a>
+</li>
+  <li>
+<a href="#namespacecontext">Using NamespaceContext</a>
+</li>
+  <li>
+<a href="#variableresolver">Using XPathVariableResolver</a>
+</li>
+  <li>
+<a href="#functionresolver">Using XPathFunctionResolver</a>
+</li>
+  <li>
+<a href="#sampleresolver">Using the sample XPathFunctionResolver</a>
+</li>
+  </ul>
+  
+  <a name="basic">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Basic steps</h3>
+    <ol>
+    <li>
+<a href="#xpathfactory">Instantiate an XPathFactory</a>
+</li>
+    <li>
+<a href="#xpath">Create an XPath</a>
+</li>
+    <li>
+<a href="#xpathexpression">(optional) Create an XPathExpression</a>
+</li>
+    <li>
+<a href="#evaluation">Evaluate the XPath expression in a specified context</a>
+</li>
+    </ol>
+  <p>The following example illustrates the basic steps involved in evaluating an XPath expression.</p>
+  <blockquote class="source">
+<pre>// 1. Instantiate an XPathFactory.
+  javax.xml.xpath.XPathFactory factory = 
+                    javax.xml.xpath.XPathFactory.newInstance();
+  
+  // 2. Use the XPathFactory to create a new XPath object
+  javax.xml.xpath.XPath xpath = factory.newXPath();
+  
+  // 3. Compile an XPath string into an XPathExpression
+  javax.xml.xpath.XPathExpression expression = xpath.compile("/doc/name");
+  
+  // 4. Evaluate the XPath expression on an input document
+ String result = expression.evaluate(new org.xml.sax.InputSource("foo.xml"));
+  </pre>
+</blockquote>
+  
+  
+  <a name="xpathfactory">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>1. Instantiate an XPathFactory</h3>  
+  <p>
+<a href="apidocs/javax/xml/xpath/XPathFactory.html">XPathFactory</a> is an abstract class with two static 
+  newInstance() methods (<a href="apidocs/javax/xml/xpath/XPathFactory.html#newInstance()">newInstance()</a> and
+  <a href="apidocs/javax/xml/xpath/XPathFactory.html#newInstance(java.lang.String)">newInstance(String uri)</a>)
+  that instantiate the concrete subclass designated as the javax.xml.xpath.XPathFactory service provider.
+  The optional parameter uri specifies the object model. The implementation in Xalan-Java 2 only supports the
+  W3C DOM object model, identified by the URI <a href="apidocs/javax/xml/xpath/XPathFactory.html#DEFAULT_OBJECT_MODEL_URI">
+  DEFAULT_OBJECT_MODEL_URI</a>.</p>
+
+  <p>The default service provider for the javax.xml.xpath.XPathFactory service is 
+  <a href="apidocs/org/apache/xpath/jaxp/XPathFactoryImpl.html">org.apache.xpath.jaxp.XPathFactoryImpl</a>.
+  </p>
+  
+  
+  <a name="xpath">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>2. Create an XPath</h3>
+  You can use the <a href="apidocs/javax/xml/xpath/XPathFactory.html#newXPath()">XPathFactory.newXPath()</a> 
+  method to create a new <a href="apidocs/javax/xml/xpath/XPath.html">XPath</a>.
+  
+  
+  <a name="xpathexpression">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>3. (optional) Create an XPathExpression</h3>
+  You can use the <a href="apidocs/javax/xml/xpath/XPath.html#compile(java.lang.String)">XPath.compile(String expression)</a>
+  method to compile an XPath string into an <a href="apidocs/javax/xml/xpath/XPathExpression.html">XPathExpression</a> object 
+  for later evaluation. This is an optional step.
+  You can evaluate an XPath expression without compiling it first. 
+  
+
+  <a name="evaluation">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>4. Evaluate an XPath expression</h3>
+  <p>If you compile an XPath String into an <a href="apidocs/javax/xml/xpath/XPathExpression.html">XPathExpression</a> 
+  in step 3, you can use one of the four evaluate() methods in
+  the XPathExpression interface to evaluate the XPath expression. If the evaluation context is a W3C Node in an 
+  existing Document, you can use the <a href="apidocs/javax/xml/xpath/XPathExpression.html#evaluate(java.lang.Object)">
+  evaluate(Object item)</a> or <a href="apidocs/javax/xml/xpath/XPathExpression.html#evaluate(java.lang.Object, javax.xml.namespace.QName)">
+  evaluate(Object item, QName returnType)</a> method by passing the context item as the first parameter.
+  The method with a returnType parameter allows you to specify the return type as one of the following supported 
+  return types:
+  <li>
+<a href="apidocs/javax/xml/xpath/XPathConstants.html#BOOLEAN">XPathConstants.BOOLEAN</a>
+</li>
+  <li>
+<a href="apidocs/javax/xml/xpath/XPathConstants.html#NUMBER">XPathConstants.NUMBER</a>
+</li>
+  <li>
+<a href="apidocs/javax/xml/xpath/XPathConstants.html#STRING">XPathConstants.STRING</a>
+</li>
+  <li>
+<a href="apidocs/javax/xml/xpath/XPathConstants.html#NODESET">XPathConstants.NODESET</a>
+</li>
+  <li>
+<a href="apidocs/javax/xml/xpath/XPathConstants.html#NODE">XPathConstants.NODE</a>
+</li>
+  </p>
+  <p>If the returnType parameter is not specified, the default is XPathConstants.STRING.</p>
+  <p>If the evaluation context is an input document, you can use one of the two evaluate() methods with an 
+  InputSource parameter (<a href="apidocs/javax/xml/xpath/XPathExpression.html#evaluate(org.xml.sax.InputSource)">evaluate(InputSource source)</a> 
+  or <a href="apidocs/javax/xml/xpath/XPathExpression.html#evaluate(org.xml.sax.InputSource, javax.xml.namespace.QName)">
+  evaluate(InputSource source, QName returnType)</a>) to evaluate the XPath expression.</p>
+  <p>The compiling step allows you to reuse an XPath expression for evaluation on multiple contexts. 
+  If an XPath expression is only used once, you can use one of the four evaluate() methods in the 
+  <a href="apidocs/javax/xml/xpath/XPath.html">XPath</a> interface 
+  to evaluate the XPath expression without compiling it first.</p>
+  
+  
+  <a name="plugin">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Plugging in the XPathFactory</h3>
+  <p>The Java API for XML Processing interfaces enable you to plug in your own implementation of XPathFactory.
+  The abstract class XPathFactory has a static newInstance() method that instantiates a concrete Factory 
+  which wraps the underlying implementation. The newInstance() method uses system property settings to determine 
+  which implementation to instantiate.</p>
+  <p>Xalan-Java 2 is distributed with a pre-configured setting for the provider of the XPathFactory service. This setting is in 
+  xalan.jar in META-INF/services/javax.xml.xpath.XPathFactory, with a value of org.apache.xpath.jaxp.XPathFactoryImpl.</p>
+  <p>You can plug in a new XPathFactory as follows (in order of precedence):
+  <ol>
+  <li>Set the system property "javax.xml.xpath.XPathFactory" + ":uri" from the command line when you 
+  launch Java or from within your application, where uri is the URI of the underlying object model. The URI of
+  the default W3C DOM object model is <code>http://java.sun.com/jaxp/xpath/dom</code>.</li>
+  <li>Set the property in jaxp.properties in the JAVA_HOME/lib directory, where JAVA_HOME is the root of 
+  the JDK.</li>
+  <li>Revise the entry in src/META-INF/services/javax.xml.xpath.XPathFactory and rebuild xalan.jar. Each potential service 
+  provider entry in this file is required to implement the method <code>isObjectModelSupported(String objectModel).</code>
+  The first service provider found in class loader order that supports the specified object model will be used.</li>
+  </ol>
+  </p>
+  
+  
+  <a name="namespacecontext">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using NamespaceContext</h3>
+  <p>If namespace prefixes are used in an XPath expression, the XPath processor needs to know what namespace URIs 
+  the prefixes are bound to. Logically a prefix can only be bound to a single Namespace URI in the current scope. However,
+  a Namespace URI can be bound to multiple prefixes in the current scope. The information about namespace 
+  prefix to URI mappings is provided by an object that implements the 
+  <a href="apidocs/javax/xml/namespace/NamespaceContext.html">javax.xml.namespace.NamespaceContext</a> interface.</p>
+  <p>Suppose you want to evaluate the XPath expression <code>"/foo:document/bar:element"</code> on the following xml document:</p>
+  <blockquote class="source">
+<pre>
+  &lt;?xml version='1.0'?&gt;
+  &lt;foo:document xmlns:foo="http://apache.org/foo" xmlns:bar="http://apache.org/bar"&gt;
+    &lt;bar:element&gt;MyBar&lt;/bar:element&gt;
+  &lt;/foo:document&gt;
+  </pre>
+</blockquote>
+  
+  <p>You need to create your own implementation of <a href="apidocs/javax/xml/namespace/NamespaceContext.html">NamespaceContext</a>
+  to inform the XPath processor what namespace URIs
+  the prefixes are bound to. For the example above, you can create a NamespaceContext implementation as follows:</p>
+  <blockquote class="source">
+<pre>
+    public class MyNamespaceContext implements NamespaceContext
+    {
+        public String getNamespaceURI(String prefix)
+        {
+            if (prefix.equals("foo"))
+                return "http://apache.org/foo";
+            else if (prefix.equals("bar"))
+                return "http://apache.org/bar";
+            else
+                return XMLConstants.NULL_NS_URI;
+        }
+        
+        public String getPrefix(String namespace)
+        {
+            if (namespace.equals("http://apache.org/foo"))
+                return "foo";
+            else if (namespace.equals("http://apache.org/bar"))
+                return "bar";
+            else
+                return null;
+        }
+
+        public Iterator getPrefixes(String namespace)
+        {
+            return null;
+        }
+    }  
+  </pre>
+</blockquote>
+  
+  <p>Then you can use the <a href="apidocs/javax/xml/xpath/XPath.html#setNamespaceContext(javax.xml.namespace.NamespaceContext)">
+  XPath.setNamespaceContext(NamespaceContext nsContext)</a>
+  method to set the NamespaceContext on the XPath object you create using the <a href="#basic">basic steps</a>.</p>
+  <p>The XPath processor in Xalan-Java 2 only uses the <a href="apidocs/javax/xml/namespace/NamespaceContext.html#getNamespaceURI(java.lang.String)">
+  getNamespaceURI(String prefix)</a>
+  method on NamespaceContext. The other two methods 
+  <a href="apidocs/javax/xml/namespace/NamespaceContext.html#getPrefix(java.lang.String)">getPrefix(String namespace)</a>
+  and <a href="apidocs/javax/xml/namespace/NamespaceContext.html#getPrefixes(java.lang.String)">getPrefixes(String namespace)</a>
+  are not used. If the NamespaceContext object is only used by the XPath processor, you can let the unused methods 
+  return null for simplicity.</p>
+  
+  
+  
+  <a name="variableresolver">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using XPathVariableResolver</h3>
+  <p>
+<a href="apidocs/javax/xml/xpath/XPathVariableResolver.html">XPathVariableResolver</a> provides access to the set of user 
+  defined XPath variables. If an XPath expression contains
+  a variable reference, we need to set a XPathVariableResolver on the XPath object using the 
+  <a href="apidocs/javax/xml/xpath/XPath.html#setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver)">
+  XPath.setXPathVariableResolver(XPathVariableResolver resolver)</a>
+  method. You can also set the XPathVariableResolver on the XPathFactory, using the 
+  <a href="apidocs/javax/xml/xpath/XPathFactory.html#setXPathVariableResolver(javax.xml.xpath.XPathVariableResolver)">
+  XPathFactory.setXPathVariableResolver(XPathVariableResolver resolver)</a>
+  method. If the XPathVariableResolver is set on the XPathFacory, then all XPath objects constructed from this 
+  XPathFactory will use the specified XPathVariableResolver by default. The XPath processor uses the
+  XPathVariableResolver to retrieve the value of a user defined variable. In the course of evaluating any 
+  single XPath expression, a variable's value must be immutable. </p>
+  <p>Suppose that the XPath expression to be evaluated is <code>"$x + $y"</code>, we need to provide a XPathVariableResolver
+  implementation from which the values of the variable x and y can be retrieved. For this example, the 
+  XPathVariableResolver implementation can be written as follows:</p>
+  <blockquote class="source">
+<pre>
+    public class MyVariableResolver implements XPathVariableResolver
+    {
+        public Object resolveVariable(QName var)
+        {
+            if (var == null)
+                throw new NullPointerException("The variable name cannot be null");
+              
+            if (var.equals(new QName("x")))
+                return new Integer(2);
+            else if (var.equals(new QName("y")))
+                return new Integer(3);
+            else
+                return null;
+        }
+    }
+  </pre>
+</blockquote>  
+  
+  
+  <a name="functionresolver">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using XPathFunctionResolver</h3>
+  <p>
+<a href="apidocs/javax/xml/xpath/XPathFunctionResolver.html">XPathFunctionResolver</a> provides access to the 
+  set of user defined XPathFunctions. If an XPath expression contains
+  an extension function, you can use the 
+  <a href="apidocs/javax/xml/xpath/XPath.html#setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver)">
+  XPath.setXPathFunctionResolver(XPathFunctionResolver resolver)</a>
+  method to set a XPathFunctionResolver on the XPath object. You can also use the
+  <a href="apidocs/javax/xml/xpath/XPathFactory.html#setXPathFunctionResolver(javax.xml.xpath.XPathFunctionResolver)">
+  XPathFactory.setXPathFunctionResolver(XPathFunctionResolver resolver)</a>
+  method to set a XPathFunctionResolver on the XPathFactory, in which case all XPath objects constructed from this
+  XPathFactory will use the specified XPathVariableResolver by default.</p>
+  <p>The XPathFunctionResolver interface only has one method:</p>
+  <p>
+<a href="apidocs/javax/xml/xpath/XPathFunctionResolver.html#resolveFunction(javax.xml.namespace.QName, int)">
+  <code>public XPathFunction resolveFunction(QName functionName, int arity)</code>
+</a>
+</p>
+  <p>This method returns a XPathFunction object from the given function name and arity. XPath functions are resolved 
+  by name and arity. The parameter types have no impact here. XPathFunctionResolver is only used for functions with
+  an explicit prefix. It is not needed for XPath built-in functions and it cannot be used to override those functions.</p>
+  <p>The XPathFunction interface has only one method:</p>
+  <p>
+<a href="apidocs/javax/xml/xpath/XPathFunction.html#evaluate(java.util.List)">
+  <code>public java.lang.Object evaluate(java.util.List args) throws XPathFunctionException</code>
+</a>
+</p>
+  <p>The function parameters are passed in using the args parameter as a java.util.List. And the method returns the result 
+  of evaluating the XPath function as an Object.</p>
+  <p>To support the use of extension functions in an XPath expression, a user needs to provide implementations of
+  the XPathFunctionResolver and XPathFunction interfaces. The resolveFunction method of the XPathFunctionResolver
+  implementation should return an object of a class that implements the XPathFunction interface.</p>
+  <p>Suppose we want to evaluate the XPath expression <code>"ext:myAdditionFunction(2, 3)"</code>, and the purpose
+  of the extension function is simply to return the sum of the two parameters. Because an extension function
+  always has an explicit prefix, we also need to implement the NamespaceContext interface to provide a namespace
+  prefix to URI mapping. For this example, we need to implement three interfaces: NamespaceContext, 
+  XPathFunctionResolver and XPathFunction. A sample implementation is as follows:</p>
+  <blockquote class="source">
+<pre>
+      public class MyNamespaceContext implements NamespaceContext
+      {
+          public String getNamespaceURI(String prefix)
+          {
+              if (prefix == null)
+                throw new IllegalArgumentException("The prefix cannot be null.");
+              
+              if (prefix.equals("ext"))
+                  return "http://ext.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://ext.com"))
+                return "ext";
+              else
+                return null;
+          }
+  
+          public Iterator getPrefixes(String namespace)
+          {
+              return null;
+          }
+      }
+      
+      /**
+       * The XPathFunctionResolver implementation is used to evaluate
+       * the extension function "ext:myAdditionFunction(2, 3)".
+       */
+      public class MyFunctionResolver implements XPathFunctionResolver
+      {
+      	/**
+      	 * This method returns a customized XPathFunction implementation
+      	 * for the extension function "ext:myAdditionFunction(2, 3)".
+      	 */
+      	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://ext.com", "myAdditionFunction", "ext")))
+      	    /** 
+      	     * 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;
+      	}
+      }
+  </pre>
+</blockquote>
+  
+  
+  <a name="sampleresolver">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using the sample XPathFunctionResolver</h3>
+  <p>Normally you need to provide your own implementation of XPathFunctionResolver in order to use
+  extension functions in XPath expressions. In Xalan-Java 2, we provide a sample implementation 
+  of XPathFunctionResolver in the class org.apache.xalan.extensions.XPathFunctionResolverImpl, with supports
+  for Java and EXSLT extensions. If you set the XPathFunctionResolver to an object of this class, then
+  you can use Java and EXSLT extension functions in the XPath expression. You also need to use a
+  NamespaceContext along with the sample XPathFunctionResolver. Xalan-Java 2 also includes a sample 
+  implementation of NamespaceContext in org.apache.xalan.extensions.ExtensionNamespaceContext, which 
+  provides the following namespace prefix to URI mappings:</p>
+  
+  <table border="1">
+  <tr>
+    <th class="content" rowspan="1" colspan="1">Prefix</th>
+    <th class="content" rowspan="1" colspan="1">URI</th>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">java</td>
+    <td class="content" rowspan="1" colspan="1">http://xml.apache.org/xalan/java</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">exslt</td>
+    <td class="content" rowspan="1" colspan="1">http://exslt.org/common</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">math</td>
+    <td class="content" rowspan="1" colspan="1">http://exslt.org/math</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">set</td>
+    <td class="content" rowspan="1" colspan="1">http://exslt.org/sets</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">str</td>
+    <td class="content" rowspan="1" colspan="1">http://exslt.org/strings</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">dyn</td>
+    <td class="content" rowspan="1" colspan="1">http://exslt.org/dynamic</td>
+  </tr>
+  <tr>
+    <td class="content" rowspan="1" colspan="1">datetime</td>
+    <td class="content" rowspan="1" colspan="1">http://exslt.org/dates-and-times</td>
+  </tr>
+  </table>
+  
+  <p>Suppose you want to evaluate the XPath expression <code>"math:max(/doc/num)"</code>, which contains
+  an EXSLT extension call. Here the prefix <code>"math"</code> corresponds to the URI <code>"http://exslt.org/math"</code>. 
+  The following code snippet demonstrates how to use the sample XPathFunctionResolver to evaluate the 
+  XPath expression above:</p>
+  <blockquote class="source">
+<pre>
+        XPathFactory factory = XPathFactory.newInstance();
+        XPath xpath = factory.newXPath();
+        
+        // set the NamespaceContext to 
+        // org.apache.xalan.extensions.ExtensionNamespaceContext
+        xpath.setNamespaceContext(new org.apache.xalan.extensions.ExtensionNamespaceContext());
+        
+        // set the XPathFunctionResolver to 
+        // org.apache.xalan.extensions.XPathFunctionResolverImpl
+        xpath.setXPathFunctionResolver(new org.apache.xalan.extensions.XPathFunctionResolverImpl());
+        
+        // Evaluate the XPath expression "math:max(/doc/num)" against 
+        // the input document numlist.xml
+        Object result = xpath.evaluate("math:max(/doc/num)", new InputSource("numlist.xml"), XPathConstants.NUMBER);  
+  </pre>
+</blockquote>
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/DOMInterface.gif b/xalan-j/xsltc/DOMInterface.gif
new file mode 100644
index 0000000..8f8919e
--- /dev/null
+++ b/xalan-j/xsltc/DOMInterface.gif
Binary files differ
diff --git a/xalan-j/xsltc/DOMLocking.gif b/xalan-j/xsltc/DOMLocking.gif
new file mode 100644
index 0000000..cae33b4
--- /dev/null
+++ b/xalan-j/xsltc/DOMLocking.gif
Binary files differ
diff --git a/xalan-j/xsltc/all_namespaces.gif b/xalan-j/xsltc/all_namespaces.gif
new file mode 100644
index 0000000..38034b7
--- /dev/null
+++ b/xalan-j/xsltc/all_namespaces.gif
Binary files differ
diff --git a/xalan-j/xsltc/ast_stage1.gif b/xalan-j/xsltc/ast_stage1.gif
new file mode 100644
index 0000000..6e5c425
--- /dev/null
+++ b/xalan-j/xsltc/ast_stage1.gif
Binary files differ
diff --git a/xalan-j/xsltc/ast_stage2.gif b/xalan-j/xsltc/ast_stage2.gif
new file mode 100644
index 0000000..9387a5d
--- /dev/null
+++ b/xalan-j/xsltc/ast_stage2.gif
Binary files differ
diff --git a/xalan-j/xsltc/ast_stage3.gif b/xalan-j/xsltc/ast_stage3.gif
new file mode 100644
index 0000000..2d40d2e
--- /dev/null
+++ b/xalan-j/xsltc/ast_stage3.gif
Binary files differ
diff --git a/xalan-j/xsltc/cast_expression.gif b/xalan-j/xsltc/cast_expression.gif
new file mode 100644
index 0000000..9bb0090
--- /dev/null
+++ b/xalan-j/xsltc/cast_expression.gif
Binary files differ
diff --git a/xalan-j/xsltc/class_loader.gif b/xalan-j/xsltc/class_loader.gif
new file mode 100644
index 0000000..3bc2db9
--- /dev/null
+++ b/xalan-j/xsltc/class_loader.gif
Binary files differ
diff --git a/xalan-j/xsltc/compiler_AST.gif b/xalan-j/xsltc/compiler_AST.gif
new file mode 100644
index 0000000..69871b6
--- /dev/null
+++ b/xalan-j/xsltc/compiler_AST.gif
Binary files differ
diff --git a/xalan-j/xsltc/compiler_DOM.gif b/xalan-j/xsltc/compiler_DOM.gif
new file mode 100644
index 0000000..a056cbb
--- /dev/null
+++ b/xalan-j/xsltc/compiler_DOM.gif
Binary files differ
diff --git a/xalan-j/xsltc/compiler_architecture.gif b/xalan-j/xsltc/compiler_architecture.gif
new file mode 100644
index 0000000..e57d661
--- /dev/null
+++ b/xalan-j/xsltc/compiler_architecture.gif
Binary files differ
diff --git a/xalan-j/xsltc/compiler_design.gif b/xalan-j/xsltc/compiler_design.gif
new file mode 100644
index 0000000..f12ef43
--- /dev/null
+++ b/xalan-j/xsltc/compiler_design.gif
Binary files differ
diff --git a/xalan-j/xsltc/dom_namespace1.gif b/xalan-j/xsltc/dom_namespace1.gif
new file mode 100644
index 0000000..2b9418e
--- /dev/null
+++ b/xalan-j/xsltc/dom_namespace1.gif
Binary files differ
diff --git a/xalan-j/xsltc/dom_namespace2.gif b/xalan-j/xsltc/dom_namespace2.gif
new file mode 100644
index 0000000..7fce24d
--- /dev/null
+++ b/xalan-j/xsltc/dom_namespace2.gif
Binary files differ
diff --git a/xalan-j/xsltc/dom_namespace3.gif b/xalan-j/xsltc/dom_namespace3.gif
new file mode 100644
index 0000000..d62b9b8
--- /dev/null
+++ b/xalan-j/xsltc/dom_namespace3.gif
Binary files differ
diff --git a/xalan-j/xsltc/index.html b/xalan-j/xsltc/index.html
new file mode 100644
index 0000000..1ddcc8e
--- /dev/null
+++ b/xalan-j/xsltc/index.html
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC Documentation</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC Documentation</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>Overview<br />
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC Documentation</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>User Documentation</h3>
+    <p>The following user documentation is currently available:</p>
+    <ul>
+      <li>Command-line <a href="README.xsltc">compiler</a> and
+      <a href="README.xslt">runtime</a> man pages.</li>
+      <li>
+<a href="xsltc_native_api.html">XSLTC Native API reference</a>
+</li>
+      <li>
+<a href="xsltc_trax_api.html">XSLTC TrAX API reference</a>
+</li>
+      <li>
+<a href="xsltc_performance.html">XSLTC Performance Hints</a>
+</li>
+    </ul>
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Design Documents</h3>
+    <p>The following design documents are currently available:</p>
+    <ul>
+      <li>
+<a href="#overall">XSLTC overall design</a>
+</li>
+      <li>
+<a href="#compiler">XSLTC compiler design</a>
+</li>
+      <li>
+<a href="#runtime">XSLTC runtime library design</a>
+</li>
+      <li>
+<a href="#runtime">XSLTC internal DOM design</a>
+</li>
+      <li>
+<a href="#trax">XSLTC TrAX implementation design</a>
+</li>
+    </ul>
+
+
+    
+    <a name="overall">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>XSLTC overall design</h4>
+
+    <p>The figure below describes the overall design of XSLTC's compiler:</p>
+    <p>
+<img src="overall_design.gif" alt="overall_design.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 1: Architectural overview of XSLTC</i>
+</b>
+</p>
+
+    <p>A client application can use XSLTC either through its
+    <a href="xsltc_native_api.html">native API</a> or through or
+    implementation of the <a href="xsltc_trax_api.html">TrAX API</a>. The
+    <a href="#compiler">compiler</a> generates one or more Java classes
+    (we have chosen to call them 'translets').
+    The <a href="#runtime">runtime library</a> contains classes that
+    can load these translets and use them to transform XML documents to some
+    markup language or plain text. There is also a detailed document describing
+    <a href="xsltc_namespace.html">namespace handling</a> in all parts of
+    XSLTC (compiler, internal DOM, and output handler).</p>
+
+    
+
+    
+    <a name="compiler">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>XSLTC compiler design</h4>
+
+    <p>The figure below describes the overall design of XSLTC's compiler:</p>
+    <p>
+<img src="compiler_design.gif" alt="compiler_design.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 2: Compiler architecture overview</i>
+</b>
+</p>
+
+    <p>There is also a <a href="xsltc_compiler.html">high-level design</a>
+    document for XSLTC's compiler. Apart from that you can also find separate
+    design documents for some XSL elements and XPath expressions, patterns
+    and functions:</p>
+
+    <h5>XSL elements</h5>
+      <ul>
+        <li>
+<a href="xsl_sort_design.html">&lt;xsl:sort&gt;</a>
+</li>
+        <li>
+<a href="xsl_key_design.html">&lt;xsl:key&gt;</a>
+</li>
+        <li>
+<a href="xsl_whitespace_design.html">&lt;xsl:preserve-space&gt;</a>
+</li>
+        <li>
+<a href="xsl_whitespace_design.html">&lt;xsl:strip-space&gt;</a>
+</li>
+        <li>
+<a href="xsl_comment_design.html">&lt;xsl:comment&gt;</a>
+</li>
+        <li>
+<a href="xsl_comment_design.html">&lt;xsl:message&gt;</a>
+</li>
+        <li>
+<a href="xsl_if_design.html">&lt;xsl:if&gt;</a>
+</li>
+        <li>
+<a href="xsl_choose_design.html">&lt;xsl:choose&gt;</a>
+</li>
+        <li>
+<a href="xsl_variable_design.html">&lt;xsl:variable&gt;</a>
+</li>
+        <li>
+<a href="xsl_variable_design.html">&lt;xsl:param&gt;</a>
+</li>
+        <li>
+<a href="xsl_include_design.html">&lt;xsl:include&gt;</a>
+</li>
+        <li>
+<a href="xsl_include_design.html">&lt;xsl:import&gt;</a>
+</li>
+      </ul>
+    
+    <h5>XPath functions</h5>
+      <ul>
+        <li>
+<a href="xsl_key_design.html">key()</a>
+</li>
+        <li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+        <li>
+<a href="xsl_unparsed_design.html">unparsed-entity-uri()</a>
+</li>
+      </ul>
+    
+    <h5>XPath expressons</h5>
+      <ul>
+        <li>
+<a href="xsltc_predicates.html">Predicates</a>
+</li>
+      </ul>
+    
+
+    <h5>XPath patterns</h5>
+      <ul>
+        <li>
+<a href="xsltc_predicates.html#step-pattern">StepPattern</a>
+</li>
+        <li>
+<a href="xsl_key_design.html#patterns">IdPattern</a>
+</li>
+        <li>
+<a href="xsl_key_design.html#patterns">KeyPattern</a>
+</li>
+      </ul>
+    
+    
+
+    
+    <a name="runtime">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>XSLTC runtime library design</h4>
+
+    <p>The runtime portion of XSLTC has four main components; the internal DOM
+    implementation (not W3C), the translet class(es), the runtime
+    library and the output processor:</p>
+
+    <p>
+<img src="runtime_design.gif" alt="runtime_design.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 3: Runtime library architecture overview</i>
+</b>
+</p>
+
+    <p>The <a href="xsltc_runtime.html">runtime library design</a> document
+    describes the structure of the compiled translet as well as the translet
+    runtime library.</p>
+
+    <p>The <a href="xsltc_dom.html">Internal DOM design</a> document
+    describes the components and structure of the internal DOM, support for
+    DOM2 navigation, the DOM adapter, DOM multiplexer, and DOM builder.</p>
+
+    <p>The <a href="xsltc_iterators.html">iterator design</a> document
+    describes the general design of the internal DOM iterators and describes
+    some of the more complicated iterators in detail.</p>
+
+    
+
+    
+    <a name="trax">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>XSLTC TrAX Implementation</h4>
+
+    <p>An implementation of the JAXP/ TrAX interface was added on to XSLTC
+    at a late stage. Special care was taken to preserve the small footprint
+    and high performance of XSLTC. The following design was used to wrap
+    XSLTC behind a lightweight (but complete) TrAX implementation:</p>
+
+    <p>
+<img src="trax_translet_wrapping.gif" alt="trax_translet_wrapping.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 4: XSLTC TrAX interface implementation</i>
+</b>
+</p>
+
+    <p>The <a href="xsltc_trax.html">TrAX design</a> document contains
+    details of XSLTC's TrAX implementation.</p>
+
+    <p>XSLTC also has a 'smart' TrAX <code>TransformerFactory</code> class
+    that will alternate between using XSLTC and Xalan for transformations.
+    This factory class will make its choices based on usage patterns. This will
+    be described in a separate design document.</p>
+
+    
+
+    
+
+  <p>
+<b>
+<i>Design documents by <a href="mailto:morten@xml.apache.org">Morten Jørgensen</a> - updated 13.12.2001</i>
+</b>
+</p>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/iterator_stack.gif b/xalan-j/xsltc/iterator_stack.gif
new file mode 100644
index 0000000..7e683d4
--- /dev/null
+++ b/xalan-j/xsltc/iterator_stack.gif
Binary files differ
diff --git a/xalan-j/xsltc/key_relations.gif b/xalan-j/xsltc/key_relations.gif
new file mode 100644
index 0000000..946d4dc
--- /dev/null
+++ b/xalan-j/xsltc/key_relations.gif
Binary files differ
diff --git a/xalan-j/xsltc/match_namespace1.gif b/xalan-j/xsltc/match_namespace1.gif
new file mode 100644
index 0000000..4d0056d
--- /dev/null
+++ b/xalan-j/xsltc/match_namespace1.gif
Binary files differ
diff --git a/xalan-j/xsltc/match_namespace2.gif b/xalan-j/xsltc/match_namespace2.gif
new file mode 100644
index 0000000..db10277
--- /dev/null
+++ b/xalan-j/xsltc/match_namespace2.gif
Binary files differ
diff --git a/xalan-j/xsltc/namespace_stack.gif b/xalan-j/xsltc/namespace_stack.gif
new file mode 100644
index 0000000..a469d23
--- /dev/null
+++ b/xalan-j/xsltc/namespace_stack.gif
Binary files differ
diff --git a/xalan-j/xsltc/output_namespaces1.gif b/xalan-j/xsltc/output_namespaces1.gif
new file mode 100644
index 0000000..5068fc2
--- /dev/null
+++ b/xalan-j/xsltc/output_namespaces1.gif
Binary files differ
diff --git a/xalan-j/xsltc/output_namespaces2.gif b/xalan-j/xsltc/output_namespaces2.gif
new file mode 100644
index 0000000..aaf7cf7
--- /dev/null
+++ b/xalan-j/xsltc/output_namespaces2.gif
Binary files differ
diff --git a/xalan-j/xsltc/output_settings.gif b/xalan-j/xsltc/output_settings.gif
new file mode 100644
index 0000000..804e087
--- /dev/null
+++ b/xalan-j/xsltc/output_settings.gif
Binary files differ
diff --git a/xalan-j/xsltc/overall_design.gif b/xalan-j/xsltc/overall_design.gif
new file mode 100644
index 0000000..32e9e98
--- /dev/null
+++ b/xalan-j/xsltc/overall_design.gif
Binary files differ
diff --git a/xalan-j/xsltc/pattern_objects.gif b/xalan-j/xsltc/pattern_objects.gif
new file mode 100644
index 0000000..ea07393
--- /dev/null
+++ b/xalan-j/xsltc/pattern_objects.gif
Binary files differ
diff --git a/xalan-j/xsltc/resources/Xalan-Logo-tm.png b/xalan-j/xsltc/resources/Xalan-Logo-tm.png
new file mode 100644
index 0000000..9a08808
--- /dev/null
+++ b/xalan-j/xsltc/resources/Xalan-Logo-tm.png
Binary files differ
diff --git a/xalan-j/xsltc/resources/Xalan-Logo.txt b/xalan-j/xsltc/resources/Xalan-Logo.txt
new file mode 100644
index 0000000..7886950
--- /dev/null
+++ b/xalan-j/xsltc/resources/Xalan-Logo.txt
@@ -0,0 +1,85 @@
+
+The XALAN Logo
+
+Graphic: A stylized version of the African Xalam instrument.
+
+
+
+TEXT FONTS SIZE AND STYLE:
+
+TM (trademark)
+
+	Font: Arial
+	Size: 14pt
+	Style: Bold)
+
+XSLT
+
+	Font: Arial
+	Size: 22pt
+	Style: Bold
+
+Apache Software Foundation
+
+	Font: Arial
+	Size: 18pt
+	Style: Bold
+	Note: 2 space characters between words
+
+Xalan	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-C	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-J	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+
+INSTRUMENT GRAPHIC (vector equations)
+
+	Vertical Width:		0.75 inch (3/4)
+	HorizontalLength:	3.667 inch (3 2/3)
+
+	Oval on the left,
+	neck and butt on the right.
+
+	Oval Width:		0.75 inch (3/4)
+	Oval Length:		1.583 inch (1 7/12)
+
+	Neck Width:		0.167 inch (1/6)
+
+	Butt Width:		0.25 inch (1/4)
+	Butt Length:		0.417 inch (5/12)
+
+
+Description of instrument logo
+
+	Oval: simulation of a gourd sound chamber
+	With orange gradation hues
+
+	Neck: rectangle simulating a round fingerboard
+	With yellow-green gradation hues
+
+	Butt: rounded rectangle simulating end of neck
+	With olive-green hue
+
+	String Anchor:  rounded rectangle on the gourd
+	With olive-green hue
+
+	2 strings: the full length from Anchor to Butt
+
+	2 strings: tied to neck, at 1/2 length from Anchor to Butt
+
+	3 Loose Tie Strings on the Butt, simulating tuning anchors
+
+	
\ No newline at end of file
diff --git a/xalan-j/xsltc/resources/Xalan-Trademark.txt b/xalan-j/xsltc/resources/Xalan-Trademark.txt
new file mode 100644
index 0000000..0bd3704
--- /dev/null
+++ b/xalan-j/xsltc/resources/Xalan-Trademark.txt
@@ -0,0 +1,106 @@
+
+The XALAN Logo - Trademark Description
+--------------------------------------
+
+Prepared By:  
+
+	Steven J. Hathaway
+
+	(shathaway@apache.org)
+
+	September 3, 2011
+
+
+
+Prepared for:
+
+	The Apache Software Foundation
+
+--------------------------------------
+
+Graphic: A stylized version of the African Xalam instrument.
+
+Note: the difference in spelling.
+
+	Xalam is the African Musical Instrument
+	Xalan is the Apache Xalan Software Project
+
+
+TEXT FONTS SIZE AND STYLE:
+
+TM (trademark symbol)
+
+	Font: Arial
+	Size: 14pt
+	Style: Bold)
+
+XSLT
+
+	Font: Arial
+	Size: 22pt
+	Style: Bold
+
+Apache Software Foundation (trademark name)
+
+	Font: Arial
+	Size: 18pt
+	Style: Bold
+	Note: 2 space characters between words
+
+Xalan	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-C	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+Xalan-J	(trademark name)
+
+	Font: Segoe Print
+	Size: 48pt
+	Style: Bold
+
+
+INSTRUMENT GRAPHIC (vector equations)
+
+	Vertical Width:		0.75 inch (3/4)
+	HorizontalLength:	3.667 inch (3 2/3)
+
+	Oval on the left,
+	neck and butt on the right.
+
+	Oval Width:		0.75 inch (3/4)
+	Oval Length:		1.583 inch (1 7/12)
+
+	Neck Width:		0.167 inch (1/6)
+
+	Butt Width:		0.25 inch (1/4)
+	Butt Length:		0.417 inch (5/12)
+
+
+Description of instrument logo
+
+	Oval: simulation of a gourd sound chamber
+	With orange gradation hues
+
+	Neck: rectangle simulating a round fingerboard
+	With yellow-green gradation hues
+
+	Butt: rounded rectangle simulating end of neck
+	With olive-green hue
+
+	String Anchor:  rounded rectangle on the gourd
+	With olive-green hue
+
+	2 strings: the full length from Anchor to Butt
+
+	2 strings: tied to neck, at 1/2 length from Anchor to Butt
+
+	3 Loose Tie Strings on the Butt, simulating tuning anchors
+
+	
\ No newline at end of file
diff --git a/xalan-j/xsltc/resources/XalanJ-Logo-tm.png b/xalan-j/xsltc/resources/XalanJ-Logo-tm.png
new file mode 100644
index 0000000..cab93a7
--- /dev/null
+++ b/xalan-j/xsltc/resources/XalanJ-Logo-tm.png
Binary files differ
diff --git a/xalan-j/xsltc/resources/apache-xalan.css b/xalan-j/xsltc/resources/apache-xalan.css
new file mode 100644
index 0000000..fc2fa1a
--- /dev/null
+++ b/xalan-j/xsltc/resources/apache-xalan.css
@@ -0,0 +1,414 @@
+/* Xalan-C/C++ Project Web Pages (css) Stylesheet */
+
+/*
+ * 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.
+*/
+
+/* This (css) stylesheet renders the xhtml web pages that were generated
+ * from StyleBook XML markup using the "xalan-book.xslt" transformation.
+*/
+
+html > bod  {left:0;}
+body {
+/*  background-color: white; */
+  background-color: #f8f8f0;
+  color: black;
+  padding: 0;
+  margin: 0;
+  font-family: arial, "lucida console", san-serif;
+}
+
+/* Emulate table align=center */
+div.centered, td.centered {
+  text-align: center;
+}
+
+div.centered table {
+  margin: 0 auto;
+  text-align: left;
+}
+
+/*
+ * ID Sections
+ */
+
+#content {
+  width: 80%;
+  float: left;
+  font-size: 12pt;
+  padding-top: 1em;
+  padding-left: 5px;
+  margin-left: 10px;
+  border-left: 1px solid #aaa;
+}
+
+#navLeft {
+  clear: left;
+  width: 15%;
+  float: left;
+  padding: 2px;
+  margin-left: 1%;
+  color: red;
+  position: relative;
+  left: 1px;
+  background-color: #eee;
+}
+
+.navGroup {
+  color: Black;
+  font-size: 14pt;
+}
+
+
+#title {
+  color: black;
+  background-color: #eee;
+  text-align: center;
+  border-bottom: 1px solid #aaa;
+  padding: 0;
+  vertical-align: middle;
+}
+
+table.HdrTitle {
+  font-size: 18pt;
+}
+
+table.HdrButtons {
+  font-size: 8pt;
+  background-color: #ccf;
+  align: "center";
+  border: "1";
+
+}
+
+#footer {
+    clear: both;
+    margin: 0 2em;
+    color: #444;
+    background-color: #ddd;
+    text-align: center;
+    padding: .5em 0;
+    font-size: 75%;
+    border-top: 1px solid #aaa;
+}
+
+/*
+ * Anchors
+ */
+
+a {
+  color: blue;
+  text-decoration: undedrline;
+}
+
+a img {
+  border: 0;
+}
+
+a:hover {
+  text-decoration: none;
+  background-color: #d7c9c9;
+}
+
+/*
+ * Headers
+ */
+
+h1 {}
+
+#title h1 {
+  padding: 1px 0;
+  margin: 0;
+  float: right;
+  width: 60%;
+  font-size: 20pt;
+  text-align: center;
+}
+
+#content h1 { background-color: #8af }
+
+h2 {}
+
+#title h2 {
+  font-size: 14pt;
+  width: 60%;
+  text-alignment: center;
+  padding: 1px 0;
+  margin: 0;
+}
+
+#content h2 { background-color: #9bf }
+
+#content h2.year {
+  background-color: #ddd;
+  text-align: center;
+}
+
+h3 {}
+
+#content h3.monthName {
+  background-color: #333;
+  text-align: center;
+}
+
+#content h3 { background-color: #acf }
+
+h4{}
+
+#content h4.eventTitle {
+  margin-left: 1%;
+  border-bottom: 1px solid blue;
+}
+
+#content h4 { background-color: #cdf }
+
+/*
+ * Tables
+ */
+
+th {}
+
+td {}
+
+th.content {background-color: #4BD }
+td.content {background-color: #AEF }
+
+/*
+ * Lists and navLeft
+ */
+
+ul {}
+
+#navLeft ul {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+#navLeft ul li {
+  margin: 0;
+}
+
+#navLeft ul li p {
+  margin: 0;
+}
+
+#navLeft ul li ul {
+  list-style-type: none;
+  font-size: 90%;
+  margin: 0 2em;
+}
+
+#navLeft ul li ul li {
+  margin: 0;
+}
+
+/*
+ * Paragraphs
+ */
+
+p {}
+
+#navLeft p {
+  text-align: center;
+  padding: 0 auto;
+  margin: 0;
+}
+
+#footer p {
+  padding: 0;
+}
+
+#content p.topalign {
+  vertical-align: middle;
+  height: 2em;
+  text-align: center;
+  width: 100%;
+  padding: .5em;
+  border: 1px solid #ddd;
+}
+
+#content p.topalign img {
+  vertical-align: middle;
+  text-align: text-middle;
+}
+
+#content p.quote {
+  color:black;
+  font-style: italic;
+  font-size: 110%;
+  margin-left: 10%;
+  margin-right: 10%;
+  padding 1em;
+  border: 1px solid #ddd;
+  text-align: center;
+}
+
+#content p.navbar {
+  font-size: 90%;
+  text-align: center;
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #ddd;
+}
+
+blockquote {}
+
+blockquote.note {
+  font-size: 80%;
+  border: 1px solid #ddd;
+  background-color: #eee;
+}
+
+td.noteImg {
+  background-color: white;
+  border: 0;
+}
+
+td.noteTxt {
+  background-color: white;
+  font-size: 120%;
+  border: 2px solid #ddd;
+  background-color: #eee;
+}
+
+/**
+ ** UNSPECIFIED IN APACHE STYLEBOOK DTD
+ ** <caution>..</caution> and <warning>..</warning>
+ **
+ * 
+ * td.cautionImg {
+ *   background-color: white;
+ *   border: 0;
+ * }
+ * 
+ * td.cautionTxt {
+ *   background-color: white;
+ *   font-size: 120%;
+ *   border: 2px solid #ddd;
+ *   background-color: #eee;
+ * }
+ * 
+ * 
+ * td.warningImg {
+ *   background-color: white;
+ *   border: 0;
+ * }
+ * 
+ * td.warningTxt {
+ *   background-color: white;
+ *   font-size: 120%;
+ *   border: 2px solid #ddd;
+ *   background-color: #eee;
+ * }
+ * 
+**/
+
+
+blockquote.source {
+  font-size: 75%;
+}
+
+code {
+  font-size: 75%;
+}
+
+
+/*
+ * Special Table (note)
+ */
+
+#notediv div { background-color: white }
+
+table.note {
+  width: 90%;
+}
+
+td.noteImg {
+  background-color: white;
+  vertical-align: top;
+  border: 0;
+  width: 24;
+}
+
+td.noteTxt {
+  color: black;
+  background-color: #eee;
+  font-size: 90%;
+  border: 2px solid;
+  border-color: #ccc;
+}
+
+
+/*
+ * Images
+ */
+
+img {}
+
+
+#footer img {
+  border: 0;
+}
+
+
+/*
+ * Document Divisions
+ */
+
+div {}
+
+/*
+ * Pre
+ */
+
+pre {}
+
+
+/*
+ * Generic Classes
+ */
+
+.indented {
+  margin-left: 3%;
+}
+
+.topBanner {
+  float: right;
+  margin: 0;
+  border: 0;
+  vertical-align: middle;
+}
+
+.noborder {
+  border: 0;
+  margin: 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xalan-j/xsltc/resources/asf_logo.png b/xalan-j/xsltc/resources/asf_logo.png
new file mode 100644
index 0000000..66c34f0
--- /dev/null
+++ b/xalan-j/xsltc/resources/asf_logo.png
Binary files differ
diff --git a/xalan-j/xsltc/resources/note.gif b/xalan-j/xsltc/resources/note.gif
new file mode 100644
index 0000000..3394222
--- /dev/null
+++ b/xalan-j/xsltc/resources/note.gif
Binary files differ
diff --git a/xalan-j/xsltc/runtime_architecture.gif b/xalan-j/xsltc/runtime_architecture.gif
new file mode 100644
index 0000000..9c8e2e7
--- /dev/null
+++ b/xalan-j/xsltc/runtime_architecture.gif
Binary files differ
diff --git a/xalan-j/xsltc/runtime_design.gif b/xalan-j/xsltc/runtime_design.gif
new file mode 100644
index 0000000..c5d605a
--- /dev/null
+++ b/xalan-j/xsltc/runtime_design.gif
Binary files differ
diff --git a/xalan-j/xsltc/runtime_type_mapping.gif b/xalan-j/xsltc/runtime_type_mapping.gif
new file mode 100644
index 0000000..769a993
--- /dev/null
+++ b/xalan-j/xsltc/runtime_type_mapping.gif
Binary files differ
diff --git a/xalan-j/xsltc/sort_objects.gif b/xalan-j/xsltc/sort_objects.gif
new file mode 100644
index 0000000..0ec7cbb
--- /dev/null
+++ b/xalan-j/xsltc/sort_objects.gif
Binary files differ
diff --git a/xalan-j/xsltc/translet_wrapping.gif b/xalan-j/xsltc/translet_wrapping.gif
new file mode 100644
index 0000000..c71b914
--- /dev/null
+++ b/xalan-j/xsltc/translet_wrapping.gif
Binary files differ
diff --git a/xalan-j/xsltc/trax_output_settings.gif b/xalan-j/xsltc/trax_output_settings.gif
new file mode 100644
index 0000000..804e087
--- /dev/null
+++ b/xalan-j/xsltc/trax_output_settings.gif
Binary files differ
diff --git a/xalan-j/xsltc/trax_translet_wrapping.gif b/xalan-j/xsltc/trax_translet_wrapping.gif
new file mode 100644
index 0000000..c71b914
--- /dev/null
+++ b/xalan-j/xsltc/trax_translet_wrapping.gif
Binary files differ
diff --git a/xalan-j/xsltc/type_mapping.gif b/xalan-j/xsltc/type_mapping.gif
new file mode 100644
index 0000000..bb3cbb9
--- /dev/null
+++ b/xalan-j/xsltc/type_mapping.gif
Binary files differ
diff --git a/xalan-j/xsltc/type_mappings.gif b/xalan-j/xsltc/type_mappings.gif
new file mode 100644
index 0000000..31f888c
--- /dev/null
+++ b/xalan-j/xsltc/type_mappings.gif
Binary files differ
diff --git a/xalan-j/xsltc/typecast.gif b/xalan-j/xsltc/typecast.gif
new file mode 100644
index 0000000..2a9c168
--- /dev/null
+++ b/xalan-j/xsltc/typecast.gif
Binary files differ
diff --git a/xalan-j/xsltc/uri_resolver.gif b/xalan-j/xsltc/uri_resolver.gif
new file mode 100644
index 0000000..4da7a35
--- /dev/null
+++ b/xalan-j/xsltc/uri_resolver.gif
Binary files differ
diff --git a/xalan-j/xsltc/xsl_choose_design.html b/xalan-j/xsltc/xsl_choose_design.html
new file mode 100644
index 0000000..caf8e87
--- /dev/null
+++ b/xalan-j/xsltc/xsl_choose_design.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: &lt;xsl:choose&gt; / &lt;xsl:when&gt; / &lt;xsl:otherwise&gt;</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">&lt;xsl:choose&gt; / &lt;xsl:when&gt; / &lt;xsl:otherwise&gt;</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>Choose|When|Otherwise design<br />
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>&lt;xsl:choose&gt; / &lt;xsl:when&gt; / &lt;xsl:otherwise&gt;</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#implementation">Implementation</a>
+</li>    
+  </ul>
+  
+
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+  <p>The <code>&lt;xsl:choose&gt;</code> element is used to determine one
+  course of action based on a series of tests. Each test is done inside an
+  <code>&lt;xsl:when&gt;</code> element. If a test succeeds, the body of the
+  <code>&lt;xsl:when&gt;</code> element is executed. If no tests fail then
+  a <code>&lt;xsl:otherwise&gt;</code> element can be used to specify a
+  default action:</p>
+
+  <blockquote class="source">
+<pre>
+    &lt;xsl:choose&gt;
+      &lt;xsl:when test="element-available('some-extension')"&gt;
+          ...
+      &lt;/xsl:when&gt;
+      &lt;xsl:when test="function-availabe('saxon:nodeset')"&gt;
+          ...
+      &lt;/xsl:when&gt;
+      &lt;xsl:otherwise&gt;
+          ...
+      &lt;/xsl:otherwise&gt;
+    &lt;/xsl:choose&gt;</pre>
+</blockquote>
+
+  
+
+  <a name="implementation">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Implementation</h3>
+
+  <p>The <code>Choose</code> class places all <code>When</code> child-nodes
+  in a vector. The <code>Choose</code> class translates the "test"-attribute
+  of all <code>When</code> nodes (in strict order) and chains them together
+  in an if-else style. The expression that holds each test contains a true-
+  and a false-list. These lists are vectors of branch targets that should be
+  used if the test succeeds or fails, respectively. The first test's
+  false-list is pointed to the start of the next test (ie. if the first test
+  fails, then we run the next test). The last test's false-list points directly
+  to the code for the body of the <code>&lt;xsl:otherwise&gt;</code> element.
+  </p>
+
+  <p>Just as with the <code>&lt;xsl:if&gt;</code>-element, special care is
+  taken for the <code>element-available()</code> and
+  <code>function-available()</code> functions. These functions are evaluated at
+  compile-time (this can be done since all parameters for these functions are
+  literals) and the body of a <code>&lt;xsl:when&gt;</code> element is not
+  compiled if we know that it will never be needed at runtime.</p>
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_comment_design.html b/xalan-j/xsltc/xsl_comment_design.html
new file mode 100644
index 0000000..ef2a26d
--- /dev/null
+++ b/xalan-j/xsltc/xsl_comment_design.html
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: &lt;xsl:comment&gt; / &lt;xsl:message&gt;</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">&lt;xsl:comment&gt; / &lt;xsl:message&gt;</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>Comment design<br />
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>&lt;xsl:comment&gt; / &lt;xsl:message&gt;</h2>
+
+  <ul>
+  <li>
+<a href="#functionality">Functionality</a>
+</li>
+  <li>
+<a href="#implementation">Implementation</a>
+</li>  
+  </ul>
+<a name="functionality">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+  <p>The <code>&lt;xsl:comment&gt;</code> element is used to insert XML comments
+  into the result document. The comment is inserted as follows in the XSL
+  stylesheet:</p>
+
+  <blockquote class="source">
+<pre>    &lt;element&gt;
+      &lt;xsl:comment&gt;This is a comment!&lt;/xsl:comment&gt;
+    &lt;/element&gt;</pre>
+</blockquote>
+
+  <p>and it will be output in the result document as follows:</p>
+
+  <blockquote class="source">
+<pre>    &lt;element&gt;
+      &lt;!-- This is a comment! --&gt;
+    &lt;/element&gt;</pre>
+</blockquote>
+
+  <p>The <code>&lt;xsl:message&gt;</code> element is used to send messages to
+  who/whatever is performing the transformation. The message can be displayed
+  in a terminal, a dialog box, etc. The  <code>&lt;xsl:message&gt;</code> element
+  is used in the same way as the <code>&lt;xsl:comment&gt;</code> element,
+  however the message is <b>not</b> output in the result document.</p>
+
+  <p>The <code>&lt;xsl:message&gt;</code> element has an attribute
+  <code>"terminate"</code> which can be used to terminate the transformation at any
+  given stage. This is useful when using message to give information about
+  illegal values in the input document.</p>
+<a name="implementation">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Implementation</h3>
+
+  <p>The output handler class has a method for outputting comments in the
+  output document and messages to the operator. The code compiled for a
+  comment gathers all text that goes into the comment in a StringValueHandler
+  object, retrieves the full text string from this handler, and then finally
+  sends it to the output handler. Similarly the code compiled for a message
+  will simply send the message to the output handler in use.</p>
+
+  <p>Messages will be output to the terminal (stdout) when a transformation
+  is run in a terminal. The message will be output before the beginning of the
+  output document. Messages will be shown in a dialog box if a transformation
+  is run in an applet.</p>
+
+  <p>
+<code>&lt;xsl:message&gt;</code> elements that use the <code>"terminate"</code>
+  attribute to abort transformations cause an exception to be thrown. A
+  RuntimeException is used for this, and the exception text is:</p>
+  <p>
+<code>Termination forced by an xsl:message instruction</code>
+</p>
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_if_design.html b/xalan-j/xsltc/xsl_if_design.html
new file mode 100644
index 0000000..9e87e49
--- /dev/null
+++ b/xalan-j/xsltc/xsl_if_design.html
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: &lt;xsl:if&gt;</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">&lt;xsl:if&gt;</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>If design<br />
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>&lt;xsl:if&gt;</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#implementation">Implementation</a>
+</li>    
+  </ul>
+  
+
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+  <p>This element is cruical to XSL processing, but still very simple both in
+  its use and implementation. The element is used like this:</p>
+<blockquote class="source">
+<pre>
+  &lt;xsl:if test="contains($the-world,'Elvis')"&gt;
+    &lt;xsl:message&gt;Elvis is still alive!&lt;/xsl:message&gt;
+  &lt;/xsl:if&gt;</pre>
+</blockquote>
+
+  <p>The element's contents will only be executed if the test succeeds. There
+  is no <code>&lt;xsl:else&gt;</code> element. One has to use either several
+  <code>&lt;xsl:if&gt;</code>-elements or use a choose-element.</p>
+
+  
+
+  <a name="implementation">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Implementation</h3>
+
+  <p>The basic implementation is very simple:</p>
+  <ul>
+    <li>execute the expression from the 'test'-attribute</li>
+    <li>evaluate the resulting boolean value</li>
+    <li>ignore the element contents if the value is 'false'</li>
+    <li>otherwise execute the element contents</li>
+  </ul>
+
+  <p>There is onle type of function call that makes this a bit more complicated.
+  The <code>function-available()</code> and <code>element-available()</code>
+  function calls can be used to test for extension elements and functions. A
+  very common use for these is to encapsulate all references to extension
+  elements inside an <code>&lt;xsl:if&gt;</code> element and test for the
+  existance of this element before attempting to use it. XSLTC has to support
+  this. Otherwise we may risk either outputting erronuous error or warning
+  messages about acessing non-existing elements, or even worse, compiling in
+  calls to non-existing methods in the translet, causing the JVM's verifier to
+  prevent the translet from being loaded.</p>
+
+  <p>The <code>function-available()</code> and <code>element-available()</code>
+  functions have been updated to perform an evaluation at compile-time, so that
+  the <code>If</code> class can know wether to compile in calls to extensions or
+  not. This is possible because both functions take only literal expressions as
+  parameters. See the <code>getResult()</code> methods of the
+  <code>FunctionAvailableCall</code> and <code>ElementAvailableCall</code>
+  classes for details.</p>
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_include_design.html b/xalan-j/xsltc/xsl_include_design.html
new file mode 100644
index 0000000..5617509
--- /dev/null
+++ b/xalan-j/xsltc/xsl_include_design.html
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: &lt;xsl:include&gt; / &lt;xsl:import&gt;</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">&lt;xsl:include&gt; / &lt;xsl:import&gt;</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>Include|Import design<br />
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>&lt;xsl:include&gt; / &lt;xsl:import&gt;</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#implementation">Implementation</a>
+</li>    
+  </ul>
+  
+
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+    <p>
+<code>&lt;xsl:include&gt;</code> allows you to include one stylesheet
+    into another. The includ<b>ed</b> stylesheet's templates will have the same
+    default priorities and import precedence as the includ<b>ing</b> stylesheet.
+    <code>&lt;xsl:import&gt;</code> offers the same, but the import precedence
+    of elements in an import<b>ed</b> stylesheet is always less than that of
+    the import<b>ing</b> stylesheet.</p>
+   
+  
+
+  <a name="implementation">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Implementation</h3>
+ 
+    <a name="include">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>&lt;xsl:include&gt;</h4>
+
+    <p>This is the simplest case, so we will look at that first. The algorithm
+    for including another stylesheet is roughly:</p>
+
+    <ul>
+      <li>get the including stylesheet from the XSLT parser</li>
+      <li>get the value of the "href" attribute from the
+        <code>&lt;xsl:include&gt;</code> element and check for circular
+        includes/imports</li>
+      <li>check if there is a defined <code>SourceLoader</code> set either
+        through the native or the TrAX API</li>
+      <li>get an <code>InputSource</code> for the document to include, either
+        from the <code>SourceLoader</code> or from the document's URI</li>
+      <li>parse the input document using the compiler's XSLT parser</li>
+      <li>set the import precedence of the included stylesheet to the same as
+        the import precedence of the including stylesheet</li>
+      <li>get the top-level stylesheet from the XSLT parser</li>
+      <li>move all variables, parameters, and top-level elements (include
+        templates) from the included stylesheet to the top-level stylesheet
+        (all elements will keep their import precedence even after being moved
+        to the top-level stylesheet)</li>
+    </ul>
+ 
+        
+
+    <a name="import">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>&lt;xsl:import&gt;</h4>
+
+    <p>This is very similar to <code>&lt;xsl:include&gt;</code>, but import
+    precedence has to be handled differently. Looking at the code you'll find
+    this fragment:</p>
+<blockquote class="source">
+<pre>
+    // Handle precedence for the including stylesheet
+    final int currPrecedence = parser.getCurrentImportPrecedence();
+    final int nextPrecedence = parser.getNextImportPrecedence();
+    _imported.setImportPrecedence(currPrecedence);
+    context.setImportPrecedence(nextPrecedence);</pre>
+</blockquote>
+
+    <p>The important thing here is that the imported stylesheet has import
+    precedence <b>less</b> than the importing stylesheet. So the imported
+    stylesheet gets the current import precedence, while the current stylesheet
+    gets the next available (unused) import precedence. The
+    <code>Stylesheet</code> class has a method
+    <code>setImportPrecedence()</code> that ensures that the import precedence
+    is set not only for the stylesheet itself, but that it is also propagated
+    down to any included/imported stylesheets:</p>
+<blockquote class="source">
+<pre>
+    public void setImportPrecedence(final int precedence) {
+	// Set import precedence for this stylesheet
+	_importPrecedence = precedence;
+
+	// Set import precedence for all included stylesheets
+	final Enumeration elements = elements();
+	while (elements.hasMoreElements()) {
+	    SyntaxTreeNode child = (SyntaxTreeNode)elements.nextElement();
+	    if (child instanceof Include) {
+		Stylesheet included = ((Include)child).getIncludedStylesheet();
+		if (included != null) included.setImportPrecedence(precedence);
+	    }
+	}
+
+	// Set import precedence for the stylesheet that imported this one
+	if (_importedFrom != null) {
+	    if (_importedFrom.getImportPrecedence() &lt; precedence) {
+		final Parser parser = getParser();
+		final int nextPrecedence = parser.getNextImportPrecedence();
+		_importedFrom.setImportPrecedence(nextPrecedence);
+	    }
+	}
+	// Set import precedence for the stylesheet that included this one
+	else if (_includedFrom != null) {
+	    if (_includedFrom.getImportPrecedence() != precedence)
+		_includedFrom.setImportPrecedence(precedence);
+	}
+    }</pre>
+</blockquote>
+
+    <p>This method has been carefully cluttered together, and it works, and it
+    should not be touched.</p>
+
+    
+
+    <a name="apply-imports">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>&lt;xsl:apply-imports&gt;</h4>
+
+    
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_key_design.html b/xalan-j/xsltc/xsl_key_design.html
new file mode 100644
index 0000000..6ef9334
--- /dev/null
+++ b/xalan-j/xsltc/xsl_key_design.html
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: &lt;xsl:key&gt; / key() / IdKeyPattern</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">&lt;xsl:key&gt; / key() / IdKeyPattern</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>Keys<br />
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>&lt;xsl:key&gt; / key() / IdKeyPattern</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#implementation">Implementation</a>
+</li>    
+  </ul>
+  
+
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+  <p>The <code>&lt;xsl:key&gt;</code> element is a top-level element that can be
+  used to define a named index of nodes from the source XML tree(s). The
+  element has three attributes:</p>
+
+  <ul>
+    <li>
+      <code>name</code> - the name of the index
+    </li>
+    <li>
+      <code>match</code> - a pattern that defines the nodeset we want
+      indexed
+    </li>
+    <li>
+      <code>use</code> - an expression that defines the value to be used
+      as the index key value.
+    </li>
+  </ul>
+
+  <p>A named index can be accessed using either the <code>key()</code> function
+  or a KeyPattern. Both these methods address the index using its defined name
+  (the "name" attribute above) and a parameter defining one or more lookup
+  values for the index. The function or pattern returns a node set containing
+  all nodes in the index whose key value match the parameter's value(s):</p>
+
+  <blockquote class="source">
+<pre>
+    &lt;xsl:key name="book-author" match="book" use="author"/&gt;
+        :
+        :
+    &lt;xsl:for-each select="key('book-author', 'Mikhail Bulgakov')"&gt;
+      &lt;xsl:value-of select="author"/&gt;
+      &lt;xsl:text&gt;: &lt;/xsl:text&gt;
+      &lt;xsl:value-of select="author"/&gt;
+      &lt;xsl:text&gt;&amp;#xa;&lt;/xsl:text&gt;
+    &lt;/xsl:for-each&gt;</pre>
+</blockquote>
+
+  <p>The KeyPattern can be used within an index definition to create unions
+  and intersections of node sets:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:key name="cultcies" match="farmer | fisherman" use="name"/&gt;</pre>
+</blockquote>
+
+  <p>This could have been done using regular <code>&lt;xsl:for-each&gt;</code>
+  and <code>&lt;xsl:select&gt;</code> elements. However, if your stylesheet
+  accesses the same selection of nodes over and over again, the transformation
+  will be much more efficient using pre-indexed keys as shown above.</p>
+
+  
+
+  <a name="implementation">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Implementation</h3>
+
+    <a name="indexing">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Indexing</h4>
+
+    <p>The <code>AbstractTranslet</code> class has a global hashtable that holds
+    an index for each named key in the stylesheet (hashing on the "name"
+    attribute of <code>&lt;xsl:key&gt;</code>). <code>AbstractTranslet</code>
+    has a couple of public methods for inserting and retrieving data from this
+    hashtable:</p>
+<blockquote class="source">
+<pre>
+    public void buildKeyIndex(String keyName, int nodeID, String value);
+    public KeyIndex KeyIndex getKeyIndex(String keyName);</pre>
+</blockquote>
+
+    <p>The <code>Key</code> class compiles code that traverses the input DOM and
+    extracts nodes that match some given parameters (the <code>"match"</code>
+    attribute of the <code>&lt;xsl:key&gt;</code> element). A new element is
+    inserted into the named key's index. The nodes' DOM index and the value
+    translated from the <code>"use"</code> attribute of the
+    <code>&lt;xsl:key&gt;</code> element are stored in the new entry in the
+    index.</p>
+
+    <p>Something similar is done for indexing IDs. This index is generated from
+    the <code>ID</code> and <code>IDREF</code> fields in the input document's
+    DTD. This means that the code for generating this index cannot be generated
+    at compile-time, which again means that the code has to be generic enough
+    to handle all DTDs. The class that handles this is the
+    <code>org.apache.xalan.xsltc.dom.DTDMonitor</code> class. This class
+    implements the <code>org.xml.sax.XMLReader</code> and
+    <code>org.xml.sax.DTDHandler</code> interfaces. A client application using
+    the native API must instanciate a <code>DTDMonitor</code> and pass it to the
+    translet code - if, and only if, it wants IDs indexed (one can improve
+    performance by omitting this step). This is descrived in the
+    <a href="xsltc_native_api.html">XSLTC Native API reference</a>. The
+    <code>DTDMonitor</code> class will use the same indexing as the code
+    generated by the <code>Key</code> class. The index for ID's is called
+    "##id". We assume that no stylesheets will contain a key with this name.</p>
+
+    <p>The index itself is implemented in the
+    <code>org.apache.xalan.xsltc.dom.KeyIndex</code> class. The index has an
+    hashtable with all the values from the matching nodes (the part of the node
+    used to generate this value is the one specified in the <code>"use"</code>
+    attribute). For every matching value there is a bit-array (implemented in
+    the <code>org.apache.xalan.xsltc.BitArray</code> class), holding a list of
+    all node indexes for which this value gives a match:</p>
+    <p>
+<img src="key_relations.gif" alt="key_relations.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 1: Indexing tables</i>
+</b>
+</p>
+
+    <p>The <code>KeyIndex</code> class implements the <code>NodeIterator</code>
+    interface, so that it can be returned directly by the implementation of the
+    <code>key()</code> function. This is how the index generated by
+    <code>&lt;xsl:key&gt;</code> and the node-set returned by the
+    <code>key()</code> and KeyPattern are tied together. You can see how this is
+    done in the <code>translate()</code> method of the <code>KeyCall</code>
+    class.</p>
+
+    <p>The <code>key()</code> function can be called in two ways:</p>
+<blockquote class="source">
+<pre>
+    key('key-name','value')
+    key('key-name','node-set')</pre>
+</blockquote>
+
+    <p>The first parameter is always the name of the key. We use this value to
+    lookup our index from the _keyIndexes hashtable in AbstractTranslet:</p>
+    <blockquote class="source">
+<pre>
+    il.append(classGen.aloadThis());
+    _name.translate(classGen, methodGen);
+    il.append(new INVOKEVIRTUAL(getKeyIndex));</pre>
+</blockquote>
+
+    <p>This compiles into a call to
+    <code>AbstractTranslet.getKeyIndex(String name)</code>, and it leaves a
+    <code>KeyIndex</code> object on the stack. What we then need to do it to
+    initialise the <code>KeyIndex</code> to give us nodes with the requested
+    value. This is done by leaving the <code>KeyIndex</code> object on the stack
+    and pushing the <code>"value"</code> parameter to <code>key()</code>, before
+    calling <code>lookup()</code> on the index:</p>
+<blockquote class="source">
+<pre>
+    il.append(DUP);  // duplicate the KeyIndex obejct before return
+    _value.translate(classGen, methodGen);
+    il.append(new INVOKEVIRTUAL(lookup));</pre>
+</blockquote>
+
+    <p>This compiles into a call to <code>KeyIndex.lookup(String value)</code>.
+    This will initialise the <code>KeyIndex</code> object to return nodes that
+    match the given value, so the <code>KeyIndex</code> object can be left on
+    the stack when we return. This because the <code>KeyIndex</code> object
+    implements the <code>NodeIterator</code> interface.</p>
+
+    <p>This matter is a bit more complex when the second parameter of
+    <code>key()</code> is a node-set. In this case we need to traverse the nodes
+    in the set and do a lookup for each node in the set. What I do is this:</p>
+
+    <ul>
+      <li>
+        construct a <code>KeyIndex</code> object that will hold the
+        return node-set
+      </li>
+      <li>
+        find the named <code>KeyIndex</code> object from the hashtable in
+        AbstractTranslet
+      </li>
+      <li>
+        get an iterator for the node-set and do the folowing loop:</li>
+        <ul>
+          <li>get string value for current node</li>
+          <li>do lookup in KeyIndex object for the named index</li>
+          <li>merge the resulting node-set into the return node-set</li>
+        </ul>
+      <li>
+        leave the return node-set on stack when done
+      </li>
+    </ul>
+
+    
+
+    <a name="improvements">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Possible indexing improvements</h4>
+
+    <p>The indexing implementation can be very, very memeory exhaustive as there
+    is one <code>BitArray</code> allocated for each value for every index. This
+    is particulary bad for the index used for IDs ('##id'), where a single value
+    should only map to one, single node. This means that a whole
+    <code>BitArray</code> is used just to contain one node. The
+    <code>KeyIndex</code> class should be updated to hold the first node for a
+    value in an <code>Integer</code> object, and then replace that with a
+    <code>BitArray</code> or a <code>Vector</code> only is a second node is
+    added to the value. Here is an outline for <code>KeyIndex</code>:</p>
+    <blockquote class="source">
+<pre>
+
+    public void add(Object value, int node) {
+        Object container;
+	if ((container = (BitArray)_index.get(value)) == null) {
+            _index.put(value, new Integer(node));
+	}
+	else {
+            // Check if there is _one_ node for this value
+            if (container instanceof Integer) {
+                int first = ((Integer)container
+                _nodes = new BitArray(_arraySize);
+                _nodes.setMask(node &amp; 0xff000000);
+                _nodes.setBit(first &amp; 0x00ffffff);
+                _nodes.setBit(node &amp; 0x00ffffff);
+                _index.put(value, _nodes);
+            }
+            // Otherwise add node to axisting bit array
+            else {
+                _nodex = (BitArray)container;
+                _nodes.setBit(node &amp; 0x00ffffff);
+            }
+        }
+    }</pre>
+</blockquote>
+
+    <p>Other methods inside the <code>KeyIndex</code> should be updated to
+    reflect this.</p>
+
+    
+
+    <a name="patterns">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Id and Key patterns</h4>
+
+    <p>As already mentioned, the challenge with the <code>id()</code> and
+    <code>key()</code> patterns is that they have no specific node type. 
+    Patterns are normally grouped based on their pattern's "kernel" node type.
+    This is done in the <code>org.apache.xalan.xsltc.compiler.Mode</code> class.
+    The <code>Mode</code> class has a method, <code>flatternAlaternative</code>,
+    that does this grouping, and all templates with a common kernel node type
+    will be inserted into a "test sequence". A test sequence is a set templates
+    with the same kernel node type. The <code>TestSeq</code> class generates
+    code that will figure out which pattern, amongst several patterns with the
+    same kernel node type, that matches a certain node. This is used by the
+    <code>Mode</code> class when generating the <code>applyTemplates</code>
+    method in the translet. A test sequence is also generated for all templates
+    whose pattern does not have a kernel node type. This is the case for all
+    Id and KeyPatterns. This test sequence, if necessary, is put before the
+    big <code>switch()</code> in the <code>applyTemplates()</code> mehtod. This
+    test has to be done for every single node that is traversed, causing the
+    transformation to slow down siginificantly. This is why we do <b>not</b>
+    recommend using this type of patterns with XSLTC.</p>
+
+    
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_lang_design.html b/xalan-j/xsltc/xsl_lang_design.html
new file mode 100644
index 0000000..cf6b7ce
--- /dev/null
+++ b/xalan-j/xsltc/xsl_lang_design.html
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: lang() function</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">lang() function</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>lang()<br />
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>lang() function</h2>
+
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#implementation">Implementation</a>
+</li>    
+  </ul>
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+  <p>The <code>xml:lang</code> can be used to determine the language for a node or
+  a node-set. The attribute can be used to store language-specific data in an
+  XML document:</p>
+
+  <blockquote class="source">
+<pre>
+    &lt;phrases&gt;
+      &lt;greeting xml:lang="en"&gt;Hello!&lt;/greeting&gt;
+      &lt;greeting xml:lang="no"&gt;Hei!&lt;/greeting&gt;
+      &lt;greeting xml:lang="fr"&gt;Salut!&lt;/greeting&gt;
+      &lt;greeting xml:lang="es"&gt;Hola!&lt;/greeting&gt;
+      &lt;greeting xml:lang="de"&gt;Sweinhund!&lt;/greeting&gt;
+    &lt;/phrases&gt;
+  </pre>
+</blockquote>
+
+  <p>The XSL stylesheet can use the <code>lang()</code> function to select the
+  element with the desired language:</p>
+
+  <blockquote class="source">
+<pre>
+    &lt;xsl:template match="greeting"&gt;
+      &lt;xsl:if test="lang("de")&gt;
+        &lt;xsl:value-of select="."/&gt;
+        &lt;xsl:text&gt; Grossglucklicher wunche!&lt;/xsl:text&gt;
+      &lt;/xsl:if&gt;
+    &lt;/xsl:template&gt;
+  </pre>
+</blockquote>
+ <a name="implementation">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Implementation</h3>
+
+  <p>The DOM interface has been given a method that returns the language for
+  a given node. The language is returned as a string (on whatever format is
+  used in the XML document - should be iso), and may be null if no language is
+  defined.</p>
+
+  <blockquote class="source">
+<pre>
+    public String DOM.getLanguage(int node);
+  </pre>
+</blockquote>
+
+  <p>The BasisLibrary class has a static method that will compare the language
+  of the context node with some other language and return the result as a
+  boolean.</p>
+
+  <blockquote class="source">
+<pre>
+    public static boolean BasisLibrary.testLanguage(String language, DOM dom, int node);
+  </pre>
+</blockquote>
+
+  <p>The compiled code for the <code>lang()</code> method calls this method in the
+  BasisLibrary and leaves the result on the stack for the calling element.</p>
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_sort_design.html b/xalan-j/xsltc/xsl_sort_design.html
new file mode 100644
index 0000000..5e5d0c0
--- /dev/null
+++ b/xalan-j/xsltc/xsl_sort_design.html
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: &lt;xsl:sort&gt;</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">&lt;xsl:sort&gt;</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>xsl:sort<br />
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>&lt;xsl:sort&gt;</h2>
+
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#sort-class">The Sort class</a>
+</li>
+    <li>
+<a href="#iterator">The SortingIterator class</a>
+</li>
+    <li>
+<a href="#sortrecord">The NodeSortRecord class</a>
+</li>    
+    <li>
+<a href="#recordfactory">The NodeSortRecordFactory class</a>
+</li>
+  </ul>
+  
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+  <p>The <code>&lt;xsl:sort&gt;</code> element is used to define a sort key
+  which specifies the order in which nodes selected by either
+  <code>&lt;xsl:apply-templates&gt;</code> or <code>&lt;xsl:for-each&gt;</code>
+  are processed. The nodes can be sorted either in numerical or alphabetic
+  order, and the alphabetic order may vary depeinding on the language in use.
+  The nodes can be sorted either in ascending or descending order.</p>
+
+  <a name="sort-class">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The Sort class</h3>
+
+  <p>Static methods of the Sort class is responsible for generating the
+  necessary code for invoking SortingIterators under
+  <code>&lt;xsl:apply-templates&gt;</code> and <code>&lt;xsl:for-each&gt;</code>
+  elements. Both these elements can have several <code>&lt;xsl:sort&gt;</code>
+  child nodes defining primary, secondary, teriary, etc. keys. The code for
+  <code>&lt;xsl:apply-templates&gt;</code> and <code>&lt;xsl:for-each&gt;</code>
+  create  vectors containg a Sort object for each sort key. The object methods
+  of the Sort object encapsulate a container for key-specific data (such as the
+  sort key itself, sort order, sort type, and such) while the static methods
+  take a vector of Sort objects and generate the actual code.</p>
+
+  <p>The <code>translate()</code> method of the Sort object is never called. The
+  vectors containing the Sort objects for a <code>&lt;xsl:apply-templates&gt;</code>
+  or <code>&lt;xsl:for-each&gt;</code> element are instead passed to the static
+  <code>translateSortIterator()</code> method. This method compiles code that
+  instanciates a SortingIterator object that will pass on a node-set in a
+  specific order to the code handling the <code>&lt;xsl:apply-templates&gt;</code>
+  or <code>&lt;xsl:for-each&gt;</code> element.</p>
+
+  <a name="iterator">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The SortingIterator class</h3>
+
+  <p>The SortingIterator class is responsible for sorting nodes encapsulated in
+  sort obects. These sort objects must be of a class inheriting from
+  NodeSortRecord, a the SortingIterator object needs a factory object providing
+  it with the correct type of objects:</p>
+
+  <p>
+<img src="sort_objects.gif" alt="sort_objects.gif" />
+</p>
+  <p>
+<b>
+<i>Figure 1: SortingIterator</i>
+</b>
+</p>
+
+  <p>The SortingIterator class is fairly dumb and leaves much of the work to the
+  NodeSortRecord class. The iterator gets the NodeSortRecords from the factory
+  object and sorts them using quicksort and calling <code>compareTo()</code> on
+  pairs of NodeSortRecord objects.</p>
+
+  <a name="sortrecord">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The NodeSortRecord class</h3>
+
+  <p>The static methods in the Sort class generates a class inheriting from
+  NodeSortRecord, with the following overloaded methods:</p>
+
+  <ul>
+    <li>
+<b>Class Constructor</b>
+</li>
+      <ul>
+<li>The class constructor is overloaded to create sort-key global
+      tables, such as an array containing the sort order for all the sort keys
+      and another array containg all the sort types. Different sort order/types
+      can be specified for the different levels of sort keys, but we assume that
+      the same language is used for all levels.</li>
+</ul>
+      
+    <li>
+<code>extractValueFromDOM(int level)</code>
+</li>
+      <ul>
+<li>This method is called by the SortingIterator object to extract the
+      value for a specific sort key for a node. The SortingIterator will only
+      use this method once and will cache the returned value for later use. The
+      method will only be called if absultely necessary.</li>
+</ul>
+
+    <li>
+<code>compareType(int level)</code>
+</li>
+      <ul>
+<li>This method returns the sort type for one sort key level. Returns
+      either <code>COMPARE_STRING</code> or <code>COMPARE_NUMERIC</code>.</li>
+</ul>
+    
+    <li>
+<code>sortOrder(int level)</code>
+</li>
+      <ul>
+<li>This method returns the sort order for one sort key level. Returns
+      either <code>COMPARE_ASCENDING</code> or <code>COMPARE_DESCENDING</code>
+</li>
+</ul>
+    
+    <li>
+<code>getCollator(int level)</code>
+</li>
+      <ul>
+<li>This method returns a Collator object for language-specific
+      string comparisons. The same Collator is used for all levels of the key.
+      </li>
+</ul> 
+  </ul>
+
+  <p>The <code>compareTo()</code> method of the NodeSortRecord base class deserves
+  a bit of attention. It takes its own node (from the this pointer) and another
+  node and compares, if necessary, the values for all sort keys:</p>
+
+  <blockquote class="source">
+<pre>
+    /**
+     * Compare this sort element to another. The first level is checked first,
+     * and we proceed to the next level only if the first level keys are
+     * identical (and so the key values may not even be extracted from the DOM)
+     */
+    public int compareTo(NodeSortRecord other) {
+	int cmp;
+    
+	for (int level=0; level&lt;_levels; level++) {
+	    
+	    // Compare the two nodes either as numeric or text values
+	    if (compareType(level) == COMPARE_NUMERIC) {
+		final Double our = numericValue(level);
+		final Double their = other.numericValue(level);
+		if (our == null) return(-1);
+		if (their == null) return(1);
+		cmp = our.compareTo(their);
+	    }
+	    else {
+		String our = stringValue(level);
+		String their = other.stringValue(level);
+		if (our == null) return(-1);
+		if (their == null) return(1);
+		cmp = getCollator().compare(our,their);
+	    }
+	    
+	    // Return inverse compare value if inverse sort order
+	    if (cmp != 0) {
+		if (sortOrder(level) == COMPARE_DESCENDING)
+		    return(0 - cmp);
+		else
+		    return(cmp);
+	    }
+	    
+	}
+	return(0);
+    }
+  </pre>
+</blockquote>
+
+  <p>The two methods <code>stringValue(int level)</code> and 
+  <code>numericValue(int level)</code> return values for one level of the sort key
+  of a node. These methods cache these values after they are first read so that
+  the <code>DOM.getNodeValue()</code> is only called once. Also, the algorithm
+  used for these two methods assure that <code>DOM.getNodeValue()</code> is only
+  called when needed. The value for a node's secondary sort key is never
+  retrieved if the node can be uniquely identified by its primary key.</p>
+
+  <a name="recordfactory">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The NodeSortRecordFactory class</h3>
+
+  <p>After the static methods of the Sort class has generated the new class for
+  sort objects it generates code that instanciates a new NodeSortRecordFactory
+  object. This object is passed as a parameter to SortingIterators constructor
+  and is used by the iterator to generate the necessary sort objects.</p>
+
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_unparsed_design.html b/xalan-j/xsltc/xsl_unparsed_design.html
new file mode 100644
index 0000000..0714a39
--- /dev/null
+++ b/xalan-j/xsltc/xsl_unparsed_design.html
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: unparsed-entity-uri()</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">unparsed-entity-uri()</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>Unparsed entities<br />
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>unparsed-entity-uri()</h2>
+
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#implementation">Implementation</a>
+</li>
+  </ul>
+  
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+
+  <p>The <code>unparsed-entity-uri()</code> function gives access to declarations
+  of unparsed entities in the DTD of the source document. If the DTD contains
+  the declaration:</p>
+
+  <blockquote class="source">
+<pre>
+    &lt;!ENTITY mom-picture SYSTEM "http://www.home.com/mom.jpg" NDATA JPEG&gt;
+  </pre>
+</blockquote>
+
+  <p>the expression <code>unparsed-entity-uri('mom-picture')</code> returns an
+  URI for the file <code>mom.jpg</code>.</p>
+
+  <a name="implementation">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Implementation</h3>
+
+  <p>Unparsed entities must be gathered from the XML input document at the time
+  when the DOM is built. To achieve this our parser must parse the document DTD
+  (if any) and store all data of type NDATA (not XML data) in a
+  hashtable in the AbstractTranslet object. All the compiled code for this
+  function needs to do is call a method in the translet for retrieving the
+  value for the requested element:</p>
+
+  <blockquote class="source">
+<pre>
+    public String AbstractTranslet.getUnparsedEntity(String entityName);
+  </pre>
+</blockquote>
+
+  <p>The translet will use the supplied <code>entityName</code> to look up the
+  value in the hashtable and then leave the string value on the stack for the
+  element that called <code>lang()</code>.</p>
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_variable_design.html b/xalan-j/xsltc/xsl_variable_design.html
new file mode 100644
index 0000000..7f9ccb3
--- /dev/null
+++ b/xalan-j/xsltc/xsl_variable_design.html
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: &lt;xsl:variable&gt; / &lt;xsl:param&gt;</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">&lt;xsl:variable&gt; / &lt;xsl:param&gt;</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>Variable|Param design<br />
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>&lt;xsl:variable&gt; / &lt;xsl:param&gt;</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#implementation">Implementation</a>
+</li>    
+  </ul>
+  
+
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+  <p>Variables in XSLT are not really variables, as their values cannot be
+  changed. They resemble constants from conventional programming languages. The
+  only way in which a variable can be changed is by declaring it inside a
+  for-each loop, in which case its value will be updated for every iteration.
+  Top-level variables (variables that are direct child nodes of the
+  <code>&lt;xsl:stylesheet&gt;</code> element) can never be changed.</p>
+
+  <blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="/foo/bar"&gt;
+      &lt;xsl:variable name="some-bar" select="."/&gt;
+      &lt;xsl:value-of select="$some-bar"/&gt;
+    &lt;/xsl:for-each&gt;</pre>
+</blockquote>
+
+  <p>Parameters are assigned a value either from the process that invoked
+  the stylesheet (top-level parameter), or from a
+  <code>&lt;xsl:with-param&gt;</code> or from a default value (in which case it
+  behaves as if it was a variable).</p>
+
+  <blockquote class="source">
+<pre>
+    &lt;xsl:template match="/"&gt;
+      &lt;xsl:call-template name="blob"&gt;
+        &lt;xsl:with-param name="par" select="'some-value'"/&gt;
+      &lt;/xsl:call-template&gt;
+    &lt;/xsl:template&gt;
+
+    &lt;xsl:template name="blob"&gt;
+      &lt;xsl:param name="par" select="'default-value'"/&gt;
+      &lt;xsl:value-of select="$param"/&gt;
+    &lt;/xsl:template&gt;</pre>
+</blockquote>
+
+  
+
+  <a name="implementation">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Implementation</h3>
+
+    <p>Variables and parameters share a common base class
+    <code>VariableBase</code> that contains a lot of common methods. This class
+    handles both global and local variables/parameters.</p>
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Top-level parameters and variables</h4>
+
+    <p>All top-level (ie. global) parameters and variables are stored inside
+    fields in the translet class. Variables are stored as objects or basic
+    data types (such as boolean, char, int, etc.) while parameters have to be
+    "boxed" inside an object. This is because parameters are also stored as
+    objects inside the translet. The <code>addParameter()</code> method of the
+    <code>AbstractTranslet</code> class stores the parameter in a Hashtable
+    (the Hashtable maps the parameter name to the parameter value). The
+    "boxing" of the parameter's value is done by the class that handles the
+    parameters type. This class is a subclass of
+    <code>org.apache.xalan.xsltc.compiler.util.Type</code>.</p>
+
+    <p>Note that all top-level parameters and variables from all imported and
+    included stylesheets will be placed as direct children of the top-level
+    stylesheet in the AST. This done to make global variables truly global and
+    not just global in the stylesheet where it was declared.</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Local parameters and variables</h4>
+
+    <p>Local variables that are accessible from a given syntax tree node will
+    first be put on the JVM's stack and stored in a local variable slot. This
+    makes the variable or parameter accessible from all code within that
+    method. But, in some special cases, the code that is compiled to handle an
+    element/expression within the variable scope is not put inside the same
+    method as the actual variable. This is the case for some predicates.
+    All syntax-tree nodes implement the <code>isClosureBoundary()</code> method
+    to indicate if its child an ancestor nodes will end up in a different method
+    then itself. This method is used by the <code>Variable</code> and
+    <code>Param</code> classes to determine if the variable or parameter will
+    "escape" the variable frame.</p>
+
+    <blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="/foo/bar/baz"&gt;
+        &lt;xsl:variable name="pos" select="3"/&gt;
+        &lt;xsl:apply-templates select="/foo/bar[$pos]"/&gt;
+    &lt;/xsl:for-each&gt;</pre>
+</blockquote>
+
+    <p>The predicate in this stylesheet fragment is compiled into a separate
+    auxiliary class that implements the <code>Filter</code> interface. It will
+    therefore not have access to the variable "pos" in the current stack frame.
+    A common technique for cases like this is to use a <b>"closure"</b>. A
+    closure is a record that contains references to all variables that are in
+    scope for a certain part of the compiled scope. This is done in a very
+    simple manner in XSLTC. All variables or parameters that can "escape" the
+    stack are passed to the translet via its <code>addVariable()</code> method.
+    They can then later be retrieved by the <code>getVariable()</code> method.
+    </p>
+
+    <p>
+<b>Important note 1:</b> A predicate does not always result in a
+    auxiliary class. In some cases we optimize the code by using tailored
+    iterators and goodies like that instead. We may want to update the
+    predicate code to check if an auxiliary class will be generated before
+    returning true or false from the <code>isClosureBoundary()</code>
+    method.</p>
+
+    <p>
+<b>Important note 2:</b> There could be other closure boundaries
+    that we have not yet discovered or considered. This could be, for instance,
+    sort records and other auxiliary classes:</p>
+
+    <blockquote class="source">
+<pre>
+    &lt;xsl:variable name="sort-order" select="'decending'"/&gt;
+    &lt;xsl:for-each select="/foo/bar/baz"&gt;
+        &lt;xsl:sort select="@name" order="$sort-order"/&gt;
+        &lt;xsl:value-of select="."/&gt;
+    &lt;/xsl:for-each&gt;</pre>
+</blockquote>
+
+    <p>I would not be surprised if this fails. A fix could be to implement the
+    <code>isClosureBoundary()</code> in the <code>Sort</code> class and have the
+    method return 'true' in all cases.</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Parameter and variable references</h4>
+
+    <p>A parameter or variable reference does the oposite of a parameter or
+    variable. The value is read from either a global field, a local variable
+    slot or from a call to <code>getVariable()</code> /
+    <code>getParameter()</code>. The chosen method depends is we're dealing with
+    a parameter or a variable, a global or a local, an escaping variable or not.
+    </p>
+
+    <p>The XPath parser identifies all variable references and instanciates
+    either a <code>VariableRef</code> or a <code>ParameterRef</code>. The XPath
+    parser calls the parser's <code>lookupVariable</code> method in an initial
+    attempt to find the variable/parameter instance. If that fails, it goes on
+    to call the symbol table's <code>lookupName()</code> method. If that also
+    fails this means that either:</p>
+
+    <ul>
+      <li>a variable or parameter with the given name does not exist</li>
+      <li>the variable will be declared at a later stage
+      (but within the same scope)</li>
+    </ul>
+
+    <p>The XPath parser creates an instance of the <code>UnresolvedRef</code>
+    class. This class attempts to locate the variable after the whole AST has
+    been built, when the <code>typeCheck()</code> method is called. If this
+    fails an error is reported and the compilation stops. Otherwise the class
+    creates a <code>VariableRef</code> or a <code>ParameterRef</code> instance
+    and lets that handle the reference.</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Forward references</h4>
+
+    <p>XSLTC allows for forward references to global variables and parameters.
+    You can even reference variables in not-yet included/imported stylesheets.
+    In most cases, this is handled by changing the order of top-level elements.
+    (Variables are placed first so that they are handled before any includes
+    or imports).  But when a variable contains references to other variables,
+    then this requires some extra code in the <code>Stylesheet</code> and
+    <code>VariableBase</code> classes. The <code>VariableBase</code> has a
+    method that returns a vector containing all variables that are referenced
+    in the variable definition.</p>
+
+    <blockquote class="source">
+<pre>
+    &lt;xsl:variable name="C" select="$A &lt; $B"/&gt;
+    &lt;xsl:variable name="A" select="1"/&gt;
+    &lt;xsl:variable name="B" select="2"/&gt;</pre>
+</blockquote>
+
+    <p>In this case, the <code>getDependencies()</code> method for variable
+    C will return the variables A and B. The stylesheet has a method called
+    <code>resolveReferences</code> that will order the variables accordingly
+    so that the variable values are computed in the desired order. This method
+    will issue an error message and terminate the compilation if there are
+    circular variable/parameter dependencies.</p>
+
+    
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsl_whitespace_design.html b/xalan-j/xsltc/xsl_whitespace_design.html
new file mode 100644
index 0000000..86316c5
--- /dev/null
+++ b/xalan-j/xsltc/xsl_whitespace_design.html
@@ -0,0 +1,471 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: &lt;xsl:strip/preserve-space&gt;</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">&lt;xsl:strip/preserve-space&gt;</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>Whitespace<br />
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>&lt;xsl:strip/preserve-space&gt;</h2>
+
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#identify">Identifying strippable whitespace nodes</a>
+</li>
+    <li>
+<a href="#which">Determining which nodes to strip</a>
+</li>
+    <li>
+<a href="#strip">Stripping nodes</a>
+</li>
+    <li>
+<a href="#filter">Filtering whitespace nodes</a>
+</li>
+  </ul>
+  
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+  <p>The <code>&lt;xsl:strip-space&gt;</code> and <code>&lt;xsl:preserve-space&gt;</code>
+  elements are used to control the way whitespace nodes in the source XML
+  document are handled. These elements have no impact on whitespace in the XSLT
+  stylesheet. Both elements can occur only as top-level elements, possible more
+  than once, and the elements are always empty</p>
+ 
+  <p>Both elements take one attribute "elements" which contains a
+  whitespace separated list of named nodes which should be or preserved
+  stripped from the source document. These names can be on one of these three
+  formats (NameTest format):</p>
+
+  <ul>
+    <li>
+      All whitespace nodes:
+      <code>elements="*"</code>
+    </li>
+    <li>
+      All whitespace nodes with a namespace:
+      <code>elements="&lt;namespace&gt;:*"</code>
+    </li>
+    <li>
+      Specific whitespace nodes: <code>elements="&lt;qname&gt;"</code>
+    </li>
+  </ul>
+
+  <a name="identify">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Identifying strippable whitespace nodes</h3>
+
+  <p>The DOM detects all text nodes and assigns them the type <code>TEXT</code>.
+  All text nodes are scanned to detect whitespace-only nodes. A text-node is
+  considered a whitespace node only if it consist entirely of characters from
+  the set { 0x09, 0x0a, 0x0d, 0x20 }. The DOM implementation class has a static
+  method used to detect such nodes:</p>
+
+<blockquote class="source">
+<pre>
+    private static final boolean isWhitespaceChar(char c) {
+        return c == 0x20 || c == 0x0A || c == 0x0D || c == 0x09;
+    }
+</pre>
+</blockquote>
+
+  <p>The characters are checked in probable order.</p>
+
+  <p> The DOM has a bit-array that is used to  tag text-nodes as strippable
+  whitespace nodes:</p>
+
+  <blockquote class="source">
+<pre>private int[] _whitespace;</pre>
+</blockquote>
+
+  <p>There are two methods in the DOM implementation class for accessing this
+  bit-array: <code>markWhitespace(node)</code> and <code>isWhitespace(node)</code>.
+  The array is resized together with all other arrays in the DOM by the
+  <code>DOM.resizeArrays()</code> method. The bits in the array are set in the
+  <code>DOM.maybeCreateTextNode()</code> method. This method must know whether
+  the current node is a located under an element with an
+  <code>xml:space="&lt;value&gt;"</code> attribute in the DOM, in which
+  case it is not a strippable whitespace node.</p>
+
+  <p>An auxillary class, WhitespaceHandler, is used for this purpose. The class
+  works in a way as a stack, where you "push" a new strip/preserve setting
+  together with the node in which this setting was determined. This means that
+  for every time the DOM builder encounters an <code>xml:space</code> attribute
+  it will invoke a method on an instance of the WhitespaceHandler class to
+  signal that a new preserve/strip setting has been encountered. This is done
+  in the <code>makeAttributeNode()</code> method. The whitespace handler stores the
+  new setting and pushes the current element node on its stack. When the
+  DOM builder closes up an element (in <code>endElement()</code>), it invokes
+  another method of the whitespace handler to check if the strip/preserve
+  setting is still valid. If the setting is now invalid (we're closing the
+  element whose node id is on the top of the stack) the handler inverts the
+  setting and pops the element node id off the stack. The previous
+  strip/preserve setting is then valid, and the id of node where this setting
+  was defined is on the top of the stack.</p>
+
+  <a name="which">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Determining which nodes to strip</h3>
+
+  <p>A text node is never stripped unless it contains only whitespace
+  characters (Unicode characters 0x09, 0x0A, 0x0D and 0x20). Stripping a text
+  node means that the node disappears from the DOM; so that it is never
+  included in the output and that it is ignored by all functions such as
+  <code>count()</code>. A text node is preserved if any of the following apply:</p>
+
+  <ul>
+    <li>
+      the element name of the parent of the text node is in the set of
+      elements listed in <code>&lt;xsl:preserve-space&gt;</code>
+    </li>
+    <li>
+      the text node contains at least one non-whitespace character
+    </li>
+    <li>
+      an ancenstor of the whitespace text node has an attribute of
+      <code>xsl:space="preserve"</code>, and no close ancestor has and
+      attribute of <code>xsl:space="default"</code>.
+    </li>
+  </ul>
+
+  <p>Otherwise, the text node is stripped. Initially the set of 
+  whitespace-preserving element names contains all element names, so the
+  default behaviour is to preserve all whitespace text nodes.</p>
+
+  <p>This seems simple enough, but resolving conflicts between matching
+  <code>&lt;xsl:strip-space&gt;</code> and <code>&lt;xsl:preserve-space&gt;</code>
+  elements requires a lot of thought. Our first consideration is import
+  precedence; the match with the highest import precedence is always chosen.
+  Import precedence is determined by the order in which the compared elements
+  are visited. (In this case those elements are the top-level
+  <code>&lt;xsl:strip-space&gt;</code> and <code>&lt;xsl:preserve-space&gt;</code>
+  elements.) This example is taken from the XSLT recommendation:</p>
+
+  <ul>
+    <li>stylesheet A imports stylesheets B and C in that order;</li>
+    <li>stylesheet B imports stylesheet D;</li>
+    <li>stylesheet C imports stylesheet E.</li>
+  </ul>
+
+  <p>Then the order of import precedence (lowest first) is D, B, E, C, A.</p>
+
+  <p>Our next consideration is the priority of NameTests (XPath spec):</p>
+  <ul>
+    <li>
+      <code>elements="&lt;qname&gt;"</code> has priority 0
+    </li>
+    <li>
+      <code>elements="&lt;namespace&gt;:*"</code> has priority -0.25
+    </li>
+    <li>
+      <code>elements="*"</code> has priority -0.5
+    </li>
+  </ul>
+
+  <p>It is considered an error if the desicion is still ambiguous after this,
+  and it is up to the implementors to decide what the apropriate action is.</p>
+
+  <p>With all this complexity, the normal usage for these elements is quite
+  smiple; either preserve all whitespace nodes but one type:</p>
+
+  <blockquote class="source">
+<pre>&lt;xsl:strip-space elements="foo"/&gt;</pre>
+</blockquote>
+
+  <p>or strip all whitespace nodes but one type:</p>
+
+  <blockquote class="source">
+<pre>
+    &lt;xsl:strip-space elements="*"/&gt;
+    &lt;xsl:preserve-space elements="foo"/&gt;</pre>
+</blockquote>
+
+  <a name="strip">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Stripping nodes</h3>
+
+  <p>The ultimate goal of our design would be to totally screen all stripped
+  nodes from the translet; to either physically remove them from the DOM or to
+  make it appear as if they are not there. The first approach will cause
+  problems in cases where multiple translets access the same DOM. In the future
+  we wish to let translets run within servlets / JSPs with a common DOM cache.
+  This DOM cache will keep copies of DOMs in memory to prevent the same XML
+  file from being downloaded and parsed several times. This is a scenarios we
+  might see:</p>
+
+    <p>
+<img src="DOMInterface.gif" alt="DOMInterface.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 1: Multiple translets accessing a common pool of DOMs</i>
+</b>
+</p>
+
+  <p>The three translets running on this host access a common pool of 4 DOMs.
+  The DOMs are accessed through a common DOM interface. Translets accessing
+  a single DOM will have a DOMAdapter and a single DOMImpl object behind this
+  interface, while translets accessing several DOMs will be given a MultiDOM
+  and a set of DOMImpl objects.</p>
+
+  <p>The translet to the left may want to strip some nodes from the shared DOM
+  in the cache, while the other translets may want to preserve all whitespace
+  nodes. Our initial thought then is to keep the DOM as it is and somehow
+  screen the left-hand translet of all the whitespace nodes it does not want to
+  process. There are a few ways in which we can accomplish this:</p>
+
+  <ul>
+    <li>
+      The translet can, prior to starting to traverse the DOM, send a reference
+      to the tables containing information on which nodes we want stripped to
+      the DOM interface. The DOM interface is then responsible for hiding all
+      stripped whitespace nodes from the iterators and the translet. A problem
+      with this approach is that we want to omit the DOM interface layer if
+      the translet is only accessing a single DOM. The DOM interface layer will
+      only be instanciated by the translet if the stylesheet contained a call
+      to the <code>document()</code> function.<br />
+<br />
+    </li>
+    <li>
+      The translet can provide its iterators with information on which nodes it
+      does not want to see. The translet is still shielded from unwanted
+      whitespace nodes, but it has the hassle of passing extra information over
+      to most iterators it ever instanciates. Note that all iterators do not
+      need be aware of whitepspace nodes in this case. If you have a look at
+      the figure again you will see that only the first level iterator (that is
+      the one closest to the DOM or DOM interface) will have to strip off
+      whitespace nodes. But, there may be several iterators that operate
+      directly on the DOM ( invoked by code handling XSL functions such as
+      <code>count()</code>) and every single one of those will need to be told
+      which whitespace nodes the translet does not want to see.<br />
+<br />
+    </li>
+    <li>
+      The third approach will take advantage of the fact that not all
+      translets will want to strip whitespace nodes. The most effective way of
+      removing unwanted whitespace nodes is to do it once and for all, before
+      the actual traversal of the DOM starts. This can be done by making a
+      clone of the DOM with exlusive-access rights for this translet only. We
+      still gain performance from the cache because we do not have to pay the
+      cost of the delay caused by downloading and parsing the XML source file.
+      The cost we have to pay is the time needed for the actual cloning and the
+      extra memory we use.<br />
+<br />
+      Normally one would imagine the translet (or the wrapper class that
+      invokes the translet) calls the DOM cache with just an URL and receives
+      a reference to an instanciated DOM. The cache will either have built
+      this DOM on-demand or just passed back a reference to an existing tree.
+      In this case the DOM would need an extra call that a translet would use
+      to clone a DOM, passing the existing DOM reference to the cache and
+      recieving a new reference to the cloned DOM. The translet can then do
+      whatever it wants with this DOM (the cache need not even keep a reference
+      to this tree).
+    </li>
+  </ul>
+  
+  <p>We are lucky enough to be able to combine the first two approaches. All
+  iterators that directly access the DOM (axis iterators) are instanciated by
+  calls to the DOM interface layer (the DOM class). The actual iterators are
+  created in the DOM implementation layer (the DOMImpl class). So, we can pass
+  references to the preserve/strip whitespace tables to the DOM, and the DOM
+  will make sure that all axis iterators return node sets with respect to these
+  tables.</p>
+  <a name="filter">‌</a> 
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Filtering whitespace nodes</h3>
+
+  <p>For each axis iterator and for <code>DOM.makeStringValue()</code> and
+  <code>DOM.stringValueAux()</code> we must apply a filter for eliminating all
+  unwanted whitespace nodes. To achive this we must build a very efficient
+  predicate for determining if the current node should be stripped or not. This
+  predicate is built by <code>Whitespace.compilePredicate()</code>. This method is
+  static and builds a predicate for a vector of WhitespaceRule objects. (The
+  WhitespaceRule class is defined within the Whitespace class.) Each
+  WhitespaceRule object contains information for a single element listed
+  in an <code>&lt;xsl:strip/preserve-space&gt;</code> element, and is broken down
+  into the following information:</p>
+
+  <ul>
+    <li>the namespace (can be the default namespace)</li>
+    <li>the element name or "<code>*</code>"</li>
+    <li>the type of rule; NS:EL, NS:<code>*</code> or <code>*</code>
+</li>
+    <li>the priority of the rule (based on import precedence and type)</li>
+    <li>the action; either strip or preserver</li>
+  </ul>
+
+  <p>The Vector of WhitespaceRules is arranged in order of priority and
+  redundant rules are removed. A predicate method is then compiled into the
+  translet as:</p>
+
+<blockquote class="source">
+<pre>
+    public boolean stripSpace(int node);
+</pre>
+</blockquote>
+
+  <p>Unfortunately this method cannot be declared static.</p>
+
+  <p>When the Stylesheet objectcompiles the <code>topLevel()</code> method of the
+  translet it checks for the existance of the <code>stripSpace()</code> method. If
+  this method exists the <code>topLevel()</code> will be compiled to pass the
+  translet to the DOM as a StripWhitespaceFilter (the translet implements this
+  interface when the <code>stripSpace()</code> method is compiled).</p>
+
+  <p>All axis iterators and the <code>DOM.makeStringValue()</code> and
+  <code>DOM.stringValueAux()</code> methods check for the existance of this filter
+  (it is kept in a global variable in the DOM implementation class) and takes
+  the appropriate actions. The methods in the DOM for returning axis iterators
+  will place a StrippingIterator on top of the axis iterator if the filter is
+  present, and the two methods just mentioned will return empty strings for
+  whitespace nodes that should be stripped.</p>
+ 
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_compiler.html b/xalan-j/xsltc/xsltc_compiler.html
new file mode 100644
index 0000000..e5681f4
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_compiler.html
@@ -0,0 +1,560 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC Compiler Design</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC Compiler Design</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>Compiler design<br />
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC Compiler Design</h2>
+
+  <ul>  
+    <li>
+<a href="#overview">Compiler Overview</a>
+</li>
+    <li>
+<a href="#ast">Building the Abstract Syntax Tree</a>
+</li>
+    <li>
+<a href="#typecheck">Type-check and Cast Expressions</a>
+</li>
+    <li>
+<a href="#compile">JVM byte-code generation</a>
+</li>
+  </ul>
+
+  
+
+  <a name="overview">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Compiler overview</h3>
+
+    <p>The main component of the XSLTC compiler is the class</p>   
+    <ul>
+      <li>
+<code>org.apache.xalan.xsltc.compiler.XSLTC</code>
+</li>
+    </ul>
+
+    <p>This class uses three parsers to consume the input stylesheet(s):</p>
+
+    <ul>
+      <li>
+<code>javax.xml.parsers.SAXParser</code>
+</li>
+    </ul>
+
+    <p>is used to parse the stylesheet document and pass its contents to
+    the compiler as basic SAX2 events.</p>
+
+    <ul>
+      <li>
+<code>com.sun.xslt.compiler.XPathParser</code>
+</li>
+    </ul>
+
+    <p> is a parser used to parse XPath expressions and patterns. This parser
+    is generated using JavaCUP and JavaLEX from Princeton University.</p>
+
+    <ul>
+      <li>
+<code>com.sun.xslt.compiler.Parser</code>
+</li>
+    </ul>
+
+    <p>is a wrapper for the other two parsers. This parser is responsible for
+    using the other two parsers to build the compiler's abstract syntax tree
+    (which is described in more detail in the next section of this document).
+    </p>
+
+  
+
+  
+  <a name="ast">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Building an Abstract Syntax Tree</h3>
+
+    <p>An abstract syntax tree (AST) is a data-structure commonly used by
+    compilers to separate the parse-phase from the later phases of the
+    compilation. The AST has one node for each parsed token from the stylesheet
+    and can easily be parsed at the stages of type-checking and bytecode
+    generation.</p>
+
+    <ul>
+      <li>
+        <a href="#mapping">Mapping stylesheet elements to AST nodes</a>
+      </li>
+      <li>
+        <a href="#domxsl">Building the AST from AST nodes</a>
+      </li>
+      <li>
+        <a href="#mapping">Mapping XPath expressions and patterns to additional AST nodes</a>
+      </li>
+    </ul>
+
+    <p>The SAX parser passes the contents of the stylesheet to XSLTC's main
+    parser. The SAX events represent a decomposition of the XML document that
+    contains the stylesheet. The main parser needs to create one AST node from
+    each node that it receives from the SAX parser. It also needs to use the
+    XPath parser to decompose attributes that contain XPath expressions and
+    patterns. Remember that XSLT is in effect two languages: XML and XPath,
+    and one parser is needed for each of these languages. The SAX parser breaks
+    down the stylesheet document, the XPath parser breaks down XPath expressions
+    and patterns, and the main parser maps the decomposed elements into nodes
+    in the abstract syntax tree.</p>
+
+    <a name="mapping">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Mapping stylesheets elements to AST nodes</h4>
+
+    <p>Every element that is defined in the XSLT 1.0 spec is represented by a
+    a class in the <code>org.apache.xalan.xsltc.compiler</code> package. The
+    main parser class contains a <code>Hashtable</code> that that maps XSL
+    elements into Java classes that make up the nodes in the AST. These Java
+    classes all reside in the <code>org.apache.xalan.xsltc.compiler</code>
+    package and extend either the <code>TopLevelElement</code> or the
+    <code>Instruction</code> classes. (Both these classes extend the
+    <code>SyntaxTreeNode</code> class.)</p>
+
+    <p>The mapping from XSL element names to Java classes/AST nodes is set up
+    in the <code>initClasses()</code> method of the main parser:</p>
+<blockquote class="source">
+<pre>
+    private void initStdClasses() {
+	try {
+	    initStdClass("template",    "Template");
+	    initStdClass("param",       "Param");
+	    initStdClass("with-param",  "WithParam");
+	    initStdClass("variable",    "Variable");
+	    initStdClass("output",      "Output");
+	    :
+	    :
+	    :
+	}
+    }
+
+    private void initClass(String elementName, String className)
+	throws ClassNotFoundException {
+	_classes.put(elementName,
+		     Class.forName(COMPILER_PACKAGE + '.' + className));
+    }</pre>
+</blockquote>
+
+    
+
+    <a name="domxsl">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Building the AST from AST nodes</h4>
+    <p>The parser builds an AST from the various syntax tree nodes. Each node
+    contains a reference to its parent node, a vector containing references
+    to all child nodes and a structure containing all attribute nodes:</p>
+<blockquote class="source">
+<pre>
+    protected SyntaxTreeNode _parent; // Parent node
+    private   Vector _contents;       // Child nodes
+    protected Attributes _attributes; // Attributes of this element</pre>
+</blockquote>
+
+
+    <p>These variables should be accessed using these methods:</p>
+<blockquote class="source">
+<pre>
+    protected final SyntaxTreeNode getParent();
+    protected final Vector getContents();
+    protected String getAttribute(String qname);
+    protected Attributes getAttributes();</pre>
+</blockquote>
+
+    <p>At this time the AST only contains nodes that represent the XSL elements
+    from the stylesheet. A SAX parse is generic and can only handle XML files
+    and will not break up and identify XPath patterns/expressions (these are
+    stored as attributes to the various nodes in the tree). Each XSL instruction
+    gets its own node in the AST, and the XPath patterns/expressions are stored
+    as attributes of these nodes. A stylesheet looking like this:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:stylesheet .......&gt;
+      &lt;xsl:template match="chapter"&gt;
+        &lt;xsl:text&gt;Chapter&lt;/xsl:text&gt;
+        &lt;xsl:value-of select="."&gt;
+      &lt;/xsl:template&gt;
+    &lt;/xsl&gt;stylesheet&gt;</pre>
+</blockquote>
+
+    <p>will be stored in the AST as indicated in the following picture:</p>
+    <p>
+<img src="ast_stage1.gif" alt="ast_stage1.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 1: The AST in its first stage</i>
+</b>
+</p>
+
+    <p>All objects that make up the nodes in the initial AST have a
+    <code>parseContents()</code> method. This method is responsible for:</p>
+
+    <ul>
+      <li>parsing the values of those attributes that contain XPath expressions
+      or patterns, breaking each expression/pattern into AST nodes and inserting
+      them into the tree.</li>
+      <li>reading/checking all other required attributes</li>
+      <li>propagate the <code>parseContents()</code> call down the tree</li>
+    </ul>
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Mapping XPath expressions and patterns to additional AST nodes</h4>
+
+    <p>The nodes that represent the XPath expressions and patterns extend
+    either the <code>Expression</code> or <code>Pattern</code> class
+    respectively. These nodes are not appended to the <code>_contents</code>
+    vectory of each node, but rather stored as individual references in each
+    AST element node. One example is the <code>ForEach</code> class that
+    represents the <code>&lt;xsl:for-each&gt;</code> element. This class has
+    a variable that contains a reference to the AST sub-tree that represents
+    its <code>select</code> attribute:</p>
+<blockquote class="source">
+<pre>
+    private Expression _select;</pre>
+</blockquote>
+   
+    <p>There is no standard way of storing these XPath expressions and each
+    AST node that contains one or more XPath expression/pattern must handle
+    that itself. This handling basically involves passing the attribute's
+    value to the XPath parser and receiving back an AST sub-tree.</p>
+
+    <p>With all XPath expressions/patterns expanded, the AST will look somewhat
+    like this:</p>
+
+    <p>
+<img src="ast_stage2.gif" alt="ast_stage2.gif" />
+</p>
+    <p>
+<b>
+<i>Fiugre 2: The AST in its second stage</i>
+</b>
+</p>
+
+    
+  
+
+  
+
+  <a name="typecheck">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Type-check and Cast Expressions</h3>
+
+    <p>In many cases we will need to typecast the top node in the expression
+    sub-tree to suit the expected result-type of the expression, or to typecast
+    child nodes to suit the allowed types for the various operators in the
+    expression. This is done by calling 'typeCheck()' on the root-node in the
+    XSL tree. Each SyntaxTreeNode node is responsible for inserting type-cast
+    nodes between itself and its child nodes or XPath nodes. These type-cast
+    nodes will convert the output-types of the child/XPath nodes to the expected
+    input-type of the parent node. Let look at our AST again and the node that
+    represents the <code>&lt;xsl:value-of&gt;</code> element. This element
+    expects to receive a string from its <code>select</code> XPath expression,
+    but the <code>Step</code> expression will return either a node-set or a
+    single node. An extra node is inserted into the AST to perform the
+    necessary type conversions:</p>
+
+    <p>
+<img src="ast_stage3.gif" alt="ast_stage3.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 3: XPath expression type cast</i>
+</b>
+</p>
+
+    <p>The <code>typeCheck()</code> method of each SyntaxTreeNode object will
+    call <code>typeCheck()</code> on each of its XPath expressions. This method
+    will return the native type returned by the expression. The AST node will
+    insert an additional type-conversion node if the return-type does not match
+    the expected data-type. Each possible return type is represented by a class
+    in the <code>org.apache.xalan.xsltc.compiler.util</code> package. These
+    classes all contain methods that will generate bytecodes needed to perform
+    the actual type conversions (at runtime). The type-cast nodes in the AST
+    mainly consist of calls to these methods.</p>
+  
+
+  
+
+  <a name="compile">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>JVM byte-code generation</h3>
+
+    <ul>
+      <li>
+<a href="#stylesheet">Compiling the stylesheet</a>
+</li>
+      <li>
+<a href="#toplevel">Compiling top-level elements</a>
+</li>
+      <li>
+<a href="#templates">Compiling template code</a>
+</li>
+      <li>
+<a href="#instructions">Compiling instructions, functions expressions and patterns</a>
+</li>
+    </ul>
+
+    <p>Evey node in the AST extends the <code>SyntaxTreeNode</code> base class
+    and implements the <code>translate()</code> method. This method is
+    responsible for outputting the actual bytecodes that make up the
+    functionality required for each element, function, expression or pattern.
+    </p>
+
+    <a name="stylesheet">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Compiling the stylesheet</h4>
+    <p>Some nodes in the AST require more complex code than others. The best
+    example is the <code>&lt;xsl:stylesheet&gt;</code> element. The code that
+    represents this element has to tie together the code that is generated by
+    all the other elements and generate the actual class definition for the main
+    translet class. The <code>Stylesheet</code> class generates the translet's
+    constructor and methods that handle all top-level elements.</p>
+    
+
+    <a name="toplevel">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Compiling top-level elements</h4>
+    <p>The bytecode that handles top-level elements must be generated before any
+    other code. The '<code>translate()</code>' method in these classes are
+    mainly called from these methods in the Stylesheet class:</p>
+<blockquote class="source">
+<pre>
+    private String compileBuildKeys(ClassGenerator);
+    private String compileTopLevel(ClassGenerator, Enumeration);
+    private void compileConstructor(ClassGenerator, Output);</pre>
+</blockquote>
+
+    <p>These methods handle most top-level elements, such as global variables
+    and parameters, <code>&lt;xsl:output&gt;</code> and
+    <code>&lt;xsl:decimal-format&gt;</code> instructions.</p>
+    
+
+    <a name="templates">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Compiling template code</h4>
+    <p>All XPath patterns in <code>&lt;xsl:apply-template&gt;</code>
+    instructions are converted into numeric values (known as the pattern's
+    kernel 'type'). All templates with identical pattern kernel types are
+    grouped together and inserted into a table known as a test sequence.
+    (The table of test sequences is found in the Mode class in the compiler
+    package. There will be one such table for each mode that is used in the
+    stylesheet). This table is used to build a big <code>switch()</code>
+    statement in the translet's <code>applyTemplates()</code> method. This
+    method is initially called with the root node of the input document.</p>
+
+    <p>The <code>applyTemplates()</code> method determines the node's type and
+    passes this type to the <code>switch()</code> statement to look up the
+    matching template. The test sequence code (the <code>TestSeq</code> class)
+    is responsible for inserting bytecodes to find  one  matching template
+    in cases where more than one template matches the current node type.</p>
+
+    <p>There may be several templates that share the same pattern kernel type.
+    Here are a few examples of templates with patterns that all have the same
+    kernel type:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="A/C"&gt;
+    &lt;xsl:template match="A/B/C"&gt;
+    &lt;xsl:template match="A | C"&gt;</pre>
+</blockquote>
+
+    <p>All these templates will be grouped under the type for
+    <code>&lt;C&gt;</code> and will all get the same kernel type (the type for
+    <code>"C"</code>). The last template will be grouped both under
+    <code>"C"</code> and <code>"A"</code>, since it matches either element.
+    If the type identifier for <code>"C"</code> in this case is 8, all these
+    templates will be put under <code>case 8:</code> in
+    <code>applyTemplates()</code>'s big <code>switch()</code> statement. The
+    <code>TestSeq</code> class will insert some code under the
+    <code>case 8:</code> statement (similar to if's and then's) in order to
+    determine which of the three templates to trigger.</p>
+    
+
+    <a name="instructions">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Compiling instructions, functions, expressions and patterns</h4>
+
+    <p>The template code is generated by calling <code>translate()</code> on
+    each <code>Template</code> object in the abstract syntax tree. This call
+    will be propagated down the abstract syntax tree and every element will
+    output the bytecodes necessary to complete its task.</p>
+
+    <p>The Java Virtual Machine is stack-based, which goes hand-in-hand with
+    the tree structure of a stylesheet and the AST. A node in the AST will
+    call <code>translate()</code> on its child nodes and any XPath nodes before
+    it generates its own bytecodes. In that way the correct sequence of JVM
+    instructions is generated.  Each one of the child nodes is responsible of
+    creating code that leaves the node's output value (if any) on the stack.
+    The typical procedure for the parent node is to create JVM code that
+    consumes these values off the stack and then leave its own output on the
+    stack (for its parent).</p>
+
+    <p>The tree-structure of the stylesheet is in this way closely tied with
+    the stack-based JVM. The design does not offer any obvious way of extending
+    the compiler to output code for other non-stack-based VMs or processors.</p>
+    
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_dom.html b/xalan-j/xsltc/xsltc_dom.html
new file mode 100644
index 0000000..09ae74e
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_dom.html
@@ -0,0 +1,748 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC Internal DOM</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC Internal DOM</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>Internal DOM<br />
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC Internal DOM</h2>
+
+  <ul>
+    <li>
+<a href="#functionality">General functionlaity</a>
+</li>
+    <li>
+<a href="#components">Components of the internal DOM</a>
+</li>
+    <li>
+<a href="#structure">Internal structure</a>
+</li>
+    <li>
+<a href="#navigation">Tree navigation</a>
+</li>
+    <li>
+<a href="#namespaces">Namespaces</a>
+</li>
+    <li>
+<a href="#w3c">W3C DOM2 navigation support</a>
+</li>
+    <li>
+<a href="#adapter">The DOM adapter - DOMAdapter</a>
+</li>
+    <li>
+<a href="#multiplexer">The DOM multiplexer - MultiDOM</a>
+</li>
+    <li>
+<a href="#builder">The DOM builder - DOMImpl$DOMBuilder</a>
+</li>
+  </ul>
+
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>General functionality</h3>
+  <p>The internal DOM gives the translet access to the XML document(s) it has
+  to transform. The interface to the internal DOM is specified in the DOM.java
+  class. This is the interface that the translet uses to access the DOM. 
+  There is also an interface specified for DOM caches -- DOMCache.java</p>
+
+  <a name="components">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Components of the internal DOM</h3>
+
+  <p>This DOM interface is implemented by three classes:</p>
+  <ul>
+    <li>
+<b>org.apache.xalan.xsltc.dom.DOMImpl</b>
+<br />
+<br />
+      This is the main DOM class. An instance of this class contains the nodes
+      of a <b>single</b> XML document.<br />
+<br />
+    </li>
+    <li>
+<b>org.apache.xalan.xsltc.dom.MultiDOM</b>
+<br />
+<br />
+      This class is best described as a DOM multiplexer. XSLTC was initially
+      designed to operate on a single XML document, and the initial DOM and
+      the DOM interface were designed and implemented without the
+      <code>document()</code> function in mind. This class will allow a translet
+      to access multiple DOMs through the original DOM interface.<br />
+<br />
+    </li>
+    <li>
+<b>org.apache.xalan.xsltc.dom.DOMAdapter</b>
+<br />
+<br />
+      The DOM adapter is a mediator between a DOMImpl or a MultiDOM object and
+      a single translet. A DOMAdapter object contains mappings and reverse
+      mappings between node  types in the DOM(s) and node types in the translet.
+      This mediator is needed to allow several translets access to a single DOM.
+      <br />
+<br />
+    </li>
+    <li>
+<b>org.apache.xalan.xsltc.dom.DocumentCache</b>
+<br />
+<br />
+      A sample DOM cache (implementing DOMCache) that is used with our sample
+      transformation applications.
+    </li>
+  </ul>
+
+  <p>
+<img src="DOMInterface.gif" alt="DOMInterface.gif" />
+</p>
+  <p>
+<b>
+<i>Figure 1: Main components of the internal DOM</i>
+</b>
+</p>
+
+  <p>The figure above shows how several translets can access one or more
+  internal DOM from a shared pool of cached DOMs. A translet can also access a
+  DOM tree outside of a cache. The Stylesheet class that represents the XSL
+  stylesheet to compile contains a flag that indicates if the translet uses the
+  <code>document()</code> function. The code compiled into the translet will act
+  accordingly and instanciate a MultiDOM object if needed (this code is compiled
+   in the compiler's <code>Stylesheet.compileTransform()</code> method).</p>
+
+  <a name="structure">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Internal Structure</h3>
+  <ul>
+    <li>
+<a href="#node-id">Node identification</a>
+</li>
+    <li>
+<a href="#element-nodes">Element nodes</a>
+</li>
+    <li>
+<a href="#attribute-nodes">Attribute nodes</a>
+</li>    
+    <li>
+<a href="#text-nodes">Text nodes</a>
+</li>
+    <li>
+<a href="#comment-nodes">Comment nodes</a>
+</li>    
+    <li>
+<a href="#pi" />Processing instructions</li>
+  </ul>
+  <a name="node-id">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Node identifation</h4>
+
+  <p>Each node in the DOM is represented by an integer. This integer is an
+  index into a series of arrays that describes the node. Most important is
+  the <code>_type[]</code> array, which holds the (DOM internal) node type. There
+  are some general node types that are described in the DOM.java interface:</p>
+
+<blockquote class="source">
+<pre>
+    public final static int ROOT                   = 0;
+    public final static int TEXT                   = 1;
+    public final static int UNUSED                 = 2;
+    public final static int ELEMENT                = 3;
+    public final static int ATTRIBUTE              = 4;
+    public final static int PROCESSING_INSTRUCTION = 5;
+    public final static int COMMENT                = 6;
+    public final static int NTYPES                 = 7;
+</pre>
+</blockquote>
+
+  <p>Element and attribute nodes will be assigned types based on their expanded
+  QNames. The <code>_type[]</code> array is used for this:</p>
+
+<blockquote class="source">
+<pre>
+    int    type      = _type[node];             // get node type
+</pre>
+</blockquote>
+
+  <p>The node type can be used to look up the element/attribute name in the
+  element/attribute name array <code>_namesArray[]</code>:</p>
+
+<blockquote class="source">
+<pre>
+    String name      = _namesArray[type-NTYPES]; // get node element name
+</pre>
+</blockquote>
+
+  <p>The resulting string contains the full, expanded QName of the element or
+  attribute. Retrieving the namespace URI of an element/attribute is done in a
+  very similar fashion:</p>
+
+<blockquote class="source">
+<pre>
+    int    nstype    = _namespace[type-NTYPES]; // get namespace type
+    String namespace = _nsNamesArray[nstype];   // get node namespace name
+</pre>
+</blockquote>
+  <a name="element-nodes">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Element nodes</h4>
+
+  <p>The contents of an element node (child nodes) can be identified using
+  the <code>_offsetOrChild[]</code> and <code>_nextSibling[]</code> arrays. The
+  <code>_offsetOrChild[]</code> array will give you the first child of an element
+  node:</p>
+
+<blockquote class="source">
+<pre>
+    int    child     = _offsetOrChild[node];    // first child
+    child = _nextSibling[child];                // next child
+</pre>
+</blockquote>
+
+  <p>The last child will have a "<code>_nextSibling[]</code>" of 0 (zero).
+  This value is OK since the root node (the 0 node) will not be a child of
+  any element.</p>
+
+  <a name="attribute-nodes">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Attribute nodes</h4>
+
+  <p>The first attribute node of an element is found by a lookup in the
+  <code>_lengthOrAttr[]</code> array using the node index:</p>
+
+<blockquote class="source">
+<pre>
+    int    attribute = _offsetOrChild[node];    // first attribute
+    attribute = _nextSibling[attribute];        // next attribute
+</pre>
+</blockquote>
+
+  <p>The names of attributes are contained in the <code>_namesArray[]</code> just
+  like the names of element nodes. The value of attributes are store the same
+  way as text nodes:</p>
+
+<blockquote class="source">
+<pre>
+    int    offset    = _offsetOrChild[attribute]; // offset into character array
+    int    length    = _lengthOrAttr[attribute];  // length of attribute value
+    String value     = new String(_text, offset, length);
+</pre>
+</blockquote>
+  <a name="text-nodes">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Text nodes</h4>
+
+  <p>Text nodes are stored identically to attribute values. See the previous
+  section on <a href="#attribute-nodes">attribute nodes</a>.</p>
+  <a name="comment-nodes">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Comment nodes</h4>
+
+  <p>The internal DOM does currently <b>not</b> contain comment nodes. Yes, I
+  am quite aware that the DOM has a type assigned to comment nodes, but comments
+  are still not inserted into the DOM.</p>
+  <a name="pi">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Processing instructions</h4>
+
+  <p>Processing instructions are handled as text nodes. These nodes are stored
+  identically to attribute values. See the previous section on
+  <a href="#attribute-nodes">attribute nodes</a>.</p>
+
+  <a name="navigation">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Tree navigation</h3>
+
+  <p>The DOM implementation contains a series of iterator that implement the
+  XPath axis. All these iterators implement the NodeIterator interface and
+  extend the NodeIteratorBase base class. These iterators do the job of
+  navigating the tree using the <code>_offsetOrChild[]</code>, <code>_nextSibling</code>
+  and <code>_parent[]</code> arrays. All iterators that handles XPath axis are
+  implemented as a private inner class of DOMImpl. The translet uses a handful
+  of methods to instanciate these iterators:</p>
+
+<blockquote class="source">
+<pre>
+    public NodeIterator getIterator();
+    public NodeIterator getChildren(final int node);
+    public NodeIterator getTypedChildren(final int type);
+    public NodeIterator getAxisIterator(final int axis);
+    public NodeIterator getTypedAxisIterator(final int axis, final int type);
+    public NodeIterator getNthDescendant(int node, int n);
+    public NodeIterator getNamespaceAxisIterator(final int axis, final int ns);
+    public NodeIterator orderNodes(NodeIterator source, int node);
+</pre>
+</blockquote>
+
+  <p>There are a few iterators in addition to these, such as sorting/ordering
+  iterators and filtering iterators. These iterators are implemented in
+  separate classes and can be instanciated directly by the translet.</p>
+
+  <a name="namespaces">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Namespaces</h3>
+
+  <p>Namespace support was added to the internal DOM at a late stage, and the
+  design and implementation of the DOM bears a few scars because of this. 
+  There is a separate <a href="xsltc_namespace.html">design
+  document</a> that covers namespaces.</p>
+
+  <a name="w3c">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>W3C DOM2 navigation support</h3>
+
+  <p>The DOM has a few methods that give basic W3C-type DOM navigation. These
+  methods are:</p>
+
+<blockquote class="source">
+<pre>
+    public Node makeNode(int index);
+    public Node makeNode(NodeIterator iter);
+    public NodeList makeNodeList(int index);
+    public NodeList makeNodeList(NodeIterator iter);
+</pre>
+</blockquote>
+
+  <p>These methods return instances of inner classes of the DOM that implement
+  the W3C Node and NodeList interfaces.</p>
+
+  <a name="adapter">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The DOM adapter - DOMAdapter</h3>
+  <ul>
+    <li>
+<a href="#translet-dom">Translet/DOM type mapping</a>
+</li>
+    <li>
+<a href="#whitespace">Whitespace text-node stripping</a>
+</li>
+    <li>
+<a href="#method-mapping">Method mapping</a>
+</li>
+  </ul>
+  <a name="translet-dom">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Translet/DOM type mapping</h4>
+
+  <p>The DOMAdapter class performs the mappings between DOM and translet node
+  types, and vice versa. These mappings are necessary in order for the translet
+  to correctly identify an element/attribute in the DOM and for the DOM to
+  correctly identify the element/attribute type of a typed iterator requested
+  by the translet. Note that the DOMAdapter also maps translet namespace types
+  to DOM namespace types, and vice versa.</p>
+
+  <p>The DOMAdapter class has four global tables that hold the translet/DOM
+  type and namespace-type mappings. If the DOM knows an element as type
+  19, the DOMAdapter will translate this to some other integer using the
+  <code>_mapping[]</code> array:</p>
+
+<blockquote class="source">
+<pre>
+    int domType = _mapping[transletType];
+</pre>
+</blockquote>
+
+  <p>This action will be performed when the DOM asks what type a specific node
+  is. The reverse is done then the translet wants an iterator for a specific
+  node type. The DOMAdapter must translate the translet-type to the type used
+  internally in the DOM by looking up the <code>_reverse[]</code> array:</p>
+
+<blockquote class="source">
+<pre>
+    int transletType = _mapping[domType];
+</pre>
+</blockquote>
+
+  <p>There are two additional mapping tables: <code>_NSmapping[]</code> and
+  <code>_NSreverse[]</code> that do the same for namespace types.</p>
+  <a name="whitespace">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Whitespace text-node stripping</h4>
+
+  <p>The DOMAdapter class has the additional function of stripping whitespace
+  nodes in the DOM. This functionality had to be put in the DOMAdapter, as
+  different translets will have different preferences for node stripping.</p>
+  <a name="method-mapping">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Method mapping</h4>
+
+  <p>The DOMAdapter class implements the same <code>DOM</code> interface as the
+  DOMImpl class. A DOMAdapter object will look like a DOMImpl tree, but the
+  translet can access it directly without being concerned with type mapping
+  and whitespace stripping. The <code>getTypedChildren()</code> demonstrates very
+  well how this is done:</p>
+
+<blockquote class="source">
+<pre>
+    public NodeIterator getTypedChildren(int type) {
+        // Get the DOM type for the requested typed iterator
+        final int domType = _reverse[type];
+        // Now get the typed child iterator from the DOMImpl object
+        NodeIterator iterator = _domImpl.getTypedChildren(domType);
+        // Wrap the iterator in a WS stripping iterator if child-nodes are text nodes
+	if ((domType == DOM.TEXT) &amp;&amp; (_filter != null))
+	    iterator = _domImpl.strippingIterator(iterator,_mapping,_filter);
+	return(iterator);
+    }
+</pre>
+</blockquote>
+
+  <a name="multiplexer">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The DOM multiplexer - MultiDOM</h3>
+
+  <p>The DOM multiplexer class is only used when the compiled stylesheet uses
+  the <code>document()</code> function. An instance of the MultiDOM class also
+  implements the DOM interface, so that it can be accessed in the same way
+  as a DOMAdapter object.</p>
+
+  <p>A node in the DOM is identified by an integer. The first 8 bits of this
+  integer are used to identify the DOM in which the node belongs, while the
+  lower 24 bits are used to identify the node within the DOM:</p>
+    <table border="1">
+      <tr>
+        <td class="content" rowspan="1" colspan="1">31-24</td>
+        <td class="content" rowspan="1" colspan="1">23-16</td>
+        <td class="content" rowspan="1" colspan="1">16-8</td>
+        <td class="content" rowspan="1" colspan="1">7-0</td>
+      </tr>
+      <tr>
+        <td class="content" rowspan="1" colspan="1">DOM id</td>
+        <td class="content" rowspan="1" colspan="3">node id</td>
+      </tr>
+    </table>
+
+  <p>The DOM multiplexer has an array of DOMAdapter objects. The topmost 8
+  bits of the identifier is used to find the correct DOM from the array. Then
+  the lower 24 bits are used in calls to methods in the DOMAdapter object:</p>
+
+<blockquote class="source">
+<pre>
+    public int getParent(int node) {
+	return _adapters[node&gt;&gt;&gt;24].getParent(node &amp; 0x00ffffff) | node &amp; 0xff000000;
+    }
+</pre>
+</blockquote>
+
+  <p>Note that the node identifier returned by this method has the same upper 8
+  bits as the input node. This is why we <code>OR</code> the result from
+  <code>DOMAdapter.getParent()</code> with the top 8 bits of the input node.</p>
+
+  <a name="builder">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The DOM builder - DOMImpl$DOMBuilder</h3>
+  <ul>
+    <li>
+<a href="#startelement">startElement()</a>
+</li>
+    <li>
+<a href="#endelement">endElement()</a>
+</li>
+    <li>
+<a href="#startprefixmapping">startPrefixMapping()</a>
+</li>
+    <li>
+<a href="#endprefixmapping">endPrefixMapping()</a>
+</li>
+    <li>
+<a href="#characters">characters()</a>
+</li>
+    <li>
+<a href="#startdocument">startDocument()</a>
+</li>
+    <li>
+<a href="#enddocument">endDocument()</a>
+</li>
+  </ul>
+
+  <p>The DOM builder is an inner class of the DOM implementation. The builder
+  implements the SAX2 <code>ContentHandler</code> interface and populates the DOM
+  by receiving SAX2 events from a SAX2 parser (presently xerces). An instance
+  of the DOM builder class can be retrieved from <code>DOMImpl.getBuilder()</code>
+  method, and this handler can be set as an XMLReader's content handler:</p>
+
+<blockquote class="source">
+<pre>
+    final SAXParserFactory factory = SAXParserFactory.newInstance();
+    final SAXParser parser = factory.newSAXParser();
+    final XMLReader reader = parser.getXMLReader();
+    final DOMImpl dom = new DOMImpl();
+    reader.setContentHandler(dom.getBuilder());
+</pre>
+</blockquote>
+
+  <p>The DOM builder will start to populate the DOM once the XML parser starts
+  generating SAX2 events:</p>
+  <a name="startelement">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>startElement()</h4>
+
+  <p>This method can be called in one of two ways; either with the expanded
+  QName (the element's separate uri and local name are supplied) or as a
+  normal QName (one String on the format prefix:local-name). The DOM stores
+  elements as expanded QNames so it needs to know the element's namespace URI.
+  Since the URI is not supplied with this call, we have to keep track of
+  namespace prefix/uri mappings while we're building the DOM. See 
+  <code>
+<a href="#startprefixmapping">startPrefixMapping()</a>
+</code> below for details on
+  namespace handling.</p>
+
+  <p>The <code>startElement()</code> inserts the element as a child of the current
+  parent element, creates attribute nodes for all attributes in the supplied
+  "<code>Attributes</code>" attribute list (by a series of calls to
+  <code>makeAttributeNode()</code>), and finally creates the actual element node
+  (by calling <code>internElement()</code>, which inserts a new entry in the
+  <code>_type[]</code> array).</p>
+  <a name="endelement">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>endElement()</h4>
+
+  <p>This method does some cleanup after the <code>startElement()</code> method,
+  such as revering <code>xml:space</code> settings and linking the element's
+  child nodes.</p>
+  <a name="startprefixmapping">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>startPrefixMapping()</h4>
+
+  <p>This method is called for each namespace declaration in the source
+  document. The parser should call this method before the prefix is referenced
+  in a QName that is passed to the <code>startElement()</code> call. Namespace
+  prefix/uri mappings are stored in a Hashtable structure. Namespace prefixes
+  are used as the keys in the Hashtable, and each key maps to a Stack that
+  contains the various URIs that the prefix maps to. The URI on top of the
+  stack is the URI that the prefix currently maps to.</p>
+
+  
+    <p>
+<img src="namespace_stack.gif" alt="namespace_stack.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 2: Namespace handling in the DOM builder</i>
+</b>
+</p>
+
+
+  <p>Each call to <code>startPrefixMapping()</code> results in a lookup in the
+  Hashtable (using the prefix), and a <code>push()</code> of the URI onto the
+  Stack that the prefix maps to.</p>
+  <a name="endprefixmapping">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>endPrefixMapping()</h4>
+
+  <p>A namespace prefix/uri mapping is closed by locating the Stack for the
+  prefix, and then <code>pop()</code>'ing the topmost URI off this Stack.</p>
+  <a name="characters">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>characters()</h4>
+
+  <p>Text nodes are stored as simple character sequences in the character array
+  <code>_text[]</code>. The start and lenght of a node's text can be determined by
+  using the node index to look up <code>_offsetOrChild[]</code> and
+  <code>_lengthOrAttribute[]</code>.</p>
+
+  <p>We want to re-use character sequences if two or more text nodes have
+  identical content. This can be achieved by having two different text node
+  indexes map to the same character sequence. The <code>maybeReuseText()</code>
+  method is always called before a new character string is stored in the
+  <code>_text[]</code> array. This method will locate the offset of an existing
+  instance of a character sequence.</p>
+  <a name="startdocument">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>startDocument()</h4>
+
+  <p>This method initialises a bunch of data structures that are used by the
+  builder. It also pushes the default namespace on the namespace stack (so that
+  the "" prefix maps to the <code>null</code> namespace).</p>
+  <a name="enddocument">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>endDocument()</h4>
+
+  <p>This method builds the <code>_namesArray[]</code>, <code>_namespace[]</code>
+  and <code>_nsNamesArray[]</code> structures from temporary datastructures used
+  in the DOM builder.</p>
+
+   
+ 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_iterators.html b/xalan-j/xsltc/xsltc_iterators.html
new file mode 100644
index 0000000..07a5736
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_iterators.html
@@ -0,0 +1,573 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC node iterators</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC node iterators</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>Xsltc Iterators<br />
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC node iterators</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+
+  <p>This document describes the function of XSLTC's node iterators. It also
+  describes the <code>NodeIterator</code> interface and some implementations of
+  this interface are described in detail:</p>
+
+  <ul>
+    <li>
+<a href="#purpose">Node iterator function</a>
+</li>
+    <li>
+<a href="#interface">NodeIterator interface</a>
+</li>
+    <li>
+<a href="#baseclass">Node iterator base class</a>
+</li>    
+    <li>
+<a href="#details">Implementation details</a>
+</li>    
+  </ul>
+
+  
+
+   
+
+  <a name="purpose">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Node Iterator Function</h3>
+
+    <p>Node iterators have several functions in XSLTC. The most obvious is
+    acting as a placeholder for node-sets. Node iterators also act as a link
+    between the translet and the DOM(s), they can act as filters (implementing
+    predicates), they contain the functionality necessary to cover all XPath
+    axes and they even serve as a front-end to XSLTC's node-indexing mechanism
+    (for the <code>id()</code> and <code>key()</code> functions).</p>
+  
+
+   
+
+  <a name="interface">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Node Iterator Interface</h3>
+
+    <p>The node iterator interface is defined in
+    <code>org.apache.xalan.xsltc.NodeIterator</code>.</p>
+
+    <p>The most basic operations in the <code>NodeIterator</code> interface are
+    for setting the iterators start-node. The "start-node" is
+    an index into the DOM. This index, and the axis of the iterator, determine
+    the node-set that the iterator contains. The axis is programmed into the
+    various node iterator implementations, while the start-node can be set by
+    calling:</p>
+<blockquote class="source">
+<pre>
+    public NodeIterator setStartNode(int node);</pre>
+</blockquote>
+
+    <p>Once the start node is set the node-set can be traversed by a sequence of
+    calls to:</p>
+<blockquote class="source">
+<pre>
+    public int next();</pre>
+</blockquote>
+
+    <p>This method will return the constant <code>NodeIterator.END</code> when
+    the whole node-set has been returned. The iterator can be reset to the start
+    of the node-set by calling:</p>
+<blockquote class="source">
+<pre>
+    public NodeIterator reset();</pre>
+</blockquote>
+
+    <p>Two additional methods are provided to set the position within the
+    node-set. The first method below will  mark  the current node in the
+    node-set, while the second will (at any point) set the iterators position
+    back to that node.</p>
+<blockquote class="source">
+<pre>
+    public void setMark();
+    public void gotoMark();</pre>
+</blockquote>
+
+    <p>Every node iterator implements two functions that make up the
+    functionality behind XPath's <code>getPosition()</code> and
+    <code>getLast()</code> functions.</p>
+<blockquote class="source">
+<pre>
+    public int getPosition();
+    public int getLast();</pre>
+</blockquote>
+
+    <p>The <code>getLast()</code> function returns the number of nodes in the
+    set, while the <code>getPosition()</code> returns the current position
+    within the node-set. The value returned by <code>getPosition()</code> for
+    the first node in the set is always 1 (one), and the value returned for the
+    last node in the set is always the same value as is returned by
+    <code>getLast()</code>.</p>
+
+    <p>All node iterators that implement an XPath axis will return the node-set
+    in the natural order of the axis. For example, the iterator implementing the
+     ancestor  axis will return nodes in reverse document order (bottom to
+    top), while the iterator implementing the  descendant  will return
+    nodes in document order. The node iterator interface has a method that can
+    be used to determine if an iterator returns nodes in reverse document order:
+    </p>
+<blockquote class="source">
+<pre>
+    public boolean isReverse();</pre>
+</blockquote>
+
+    <p>Two methods are provided for when node iterators are encapsulated inside
+    a variable or parameter. To understand the purpose behind these two methods
+    we should have a look at a sample XML document and stylesheet first:</p>
+    <blockquote class="source">
+<pre>
+    &lt;?xml version="1.0"?&gt;
+    &lt;foo&gt;
+        &lt;bar&gt;
+            &lt;baz&gt;A&lt;/baz&gt;
+            &lt;baz&gt;B&lt;/baz&gt;
+        &lt;/bar&gt;
+        &lt;bar&gt;
+            &lt;baz&gt;C&lt;/baz&gt;
+            &lt;baz&gt;D&lt;/baz&gt;
+        &lt;/bar&gt;
+    &lt;/foo&gt;
+
+    &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
+
+        &lt;xsl:template match="foo"&gt;
+            &lt;xsl:variable name="my-nodes" select="//foo/bar/baz"/&gt;
+            &lt;xsl:for-each select="bar"&gt;
+                &lt;xsl:for-each select="baz"&gt;
+                    &lt;xsl:value-of select="."/&gt;
+                &lt;/xsl:for-each&gt;
+                &lt;xsl:for-each select="$my-nodes"&gt;
+                    &lt;xsl:value-of select="."/&gt;
+                &lt;/xsl:for-each&gt;
+            &lt;/xsl:for-each&gt;
+        &lt;/xsl:template&gt;
+
+    &lt;/xsl:stylesheet&gt;</pre>
+</blockquote>
+
+    <p>Now, there are three iterators at work here. The first iterator is the
+    one that is wrapped inside the variable <code>my-nodes</code> - this
+    iterator contains  all  <code>&lt;baz/&gt;</code> elements in the
+    document. The second iterator contains all <code>&lt;bar&gt;</code>
+    elements under the current element (this is the iterator used by the
+    outer <code>for-each</code> loop). The third and last iterator is the one
+    used by the first of the inner <code>for-each</code> loops. When the outer
+    loop is run the first time, this third iterator will be initialized to
+    contain the first two <code>&lt;baz&gt;</code> elements under the context
+    node (the first <code>&lt;bar&gt;</code> element). Iterators are by default
+    restarted from the current node when used inside a <code>for-each</code>
+    loop like this. But what about the iterator inside the variable
+    <code>my-nodes</code>? The variable should keep its assigned value, no
+    matter what the context node is. In able to prevent the iterator from being
+    reset, we must use a mechanism to block calls to the
+    <code>setStartNode()</code> method. This is done in three steps:</p>
+
+    <ul>
+      <li>The iterator is created and initialized when the variable gets
+      assigned its value (node-set).</li>
+      <li>When the variable is read, the iterator is copied (cloned). The
+      original iterator inside the variable is never used directly. This is
+      to make sure that the iterator inside the variable is always in its
+      original state when read.</li>
+      <li>The iterator clone is marked as not restartable to prevent it from
+      being restarted when used to iterate the <code>&lt;xsl:for-each&gt;</code>
+      element loop.</li>
+    </ul>
+
+    <p>These are the two methods used for the three steps above:</p>
+<blockquote class="source">
+<pre>
+    public NodeIterator cloneIterator();
+    public void setRestartable(boolean isRestartable);</pre>
+</blockquote>
+
+    <p>Special care must be taken when implementing these methods in some
+    iterators. The <code>StepIterator</code> class is the best example of this.
+    This iterator wraps two other iterators; one of which is used to generate
+    start-nodes for the other - so one of the encapsulated node iterators must
+    always remain restartable - even when used inside variables. The
+    <code>StepIterator</code> class is described in detail later in this
+    document.</p>
+
+  
+
+
+   
+
+  <a name="baseclass">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Node Iterator Base Class</h3>
+
+    <p>A node iterator base class is provided to contain some common
+    functionality. The base class implements the node iterator interface, and
+    has a few additional methods:</p>
+<blockquote class="source">
+<pre>
+    public NodeIterator includeSelf();
+    protected final int returnNode(final int node);
+    protected final NodeIterator resetPosition();</pre>
+</blockquote>
+
+    <p>The <code>includeSelf()</code> is used with certain axis iterators that
+    implement both the <code>ancestor</code> and <code>ancestor-or-self</code>
+    axis and similar. One common implementation is used for these axes and
+    this method is used to signal that the  "self"  node should
+    also be included in the node-set.</p>
+
+    <p>The <code>returnNode()</code> method is called by the implementation of
+    the <code>next()</code> method. <code>returnNode()</code> increments an
+    internal node counter/cursor that keeps track of the current position within
+    the node set. This counter/cursor is then used by the 
+    <code>getPosition()</code> implementation to return the current position.
+    The node cursor can be reset by calling <code>resetPosition()</code>. This
+    method is normally called by an iterator's <code>reset()</code> method.</p>
+
+  
+
+   
+
+  <a name="details">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Node Iterator Implementation Details</h3>
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Axis iterators</h4>
+
+    <p>All axis iterators are implemented as inner classes of the internal
+    DOM implementation <code>org.apache.xalan.xsltc.dom.DOMImpl</code>. In this
+    way all axis iterator classes have direct access to the internal node
+    type- and navigation arrays of the DOM:</p>
+<blockquote class="source">
+<pre>
+    private short[]   _type;          // Node types
+    private short[]   _namespace;     // Namespace URI types
+    private short[]   _prefix;        // Namespace prefix types
+
+    private int[]     _parent;        // Index of a node's parent
+    private int[]     _nextSibling;   // Index of a node's next sibling node
+    private int[]     _offsetOrChild; // Index of an elements first child node
+    private int[]     _lengthOrAttr;  // Index of an elements first attribute node</pre>
+</blockquote>
+
+    <p>The axis iterators can be instanciated by calling either of these two
+    methods of the DOM:</p>
+<blockquote class="source">
+<pre>
+    public NodeIterator getAxisIterator(final int axis);
+    public NodeIterator getTypedAxisIterator(final int axis, final int type);</pre>
+</blockquote>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>StepIterator</h4>
+    
+    <p>The <code>StepIterator</code> is used to  chain  other iterators. A
+    very basic example is this XPath expression:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="foo/bar"&gt;</pre>
+</blockquote>
+
+    <p>To generate the appropriate node-set for this loop we need three
+    iterators. The compiler will generate code that first creates a typed axis
+    iterator; the axis will be  child  and the type will be that assigned
+    to <code>&lt;foo&gt;</code> elements. Then a second typed axis iterator will
+    be created; this also a  child -iterator, but this one with the type
+    assigned to <code>&lt;bar&gt;</code> elements. The third iterator is a
+    step iterator that encapsulates the two axis iterators. The step iterator is
+    the initialized with the context node.</p>
+
+    <p>The step iterator will use the first axis iterator to generate
+    start-nodes for the second axis iterator. In plain english this means that
+    the step iterator will scan all <code>foo</code> elements for any
+    <code>bar</code> child elements. When a <code>StepIterator</code> is
+    initialized with a start-node it passes the start node to the
+    <code>setStartNode()</code> method of its  source -iterator (left).
+    It then calls <code>next()</code> on that iterator to get the start-node
+    for the  iterator  iterator (right):</p>
+<blockquote class="source">
+<pre>
+    // Set start node for left-hand iterator...
+    _source.setStartNode(_startNode);
+    // ... and get start node for right-hand iterator from left-hand,
+    _iterator.setStartNode(_source.next());</pre>
+</blockquote>
+
+    <p>The step iterator will keep returning nodes from its right iterator until
+    it runs out of nodes. Then a new start-node is retrieved by again calling
+    <code>next()</code> on the  source -iterator. This is why the
+    right-hand iterator always has to be restartable - even if the step iterator
+    is placed inside a variable or parameter. This becomes even more complicated
+    for step iterators that encapsulate other step iterators. We'll make our
+    previous example a bit more interesting:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="foo/bar[@name='cat and cage']/baz"&gt;</pre>
+</blockquote>
+
+    <p>This will result in an iterator-tree similar to this:</p>
+
+    <p>
+<img src="iterator_stack.gif" alt="iterator_stack.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 1: Stacked step iterators</i>
+</b>
+</p>
+
+    <p>The  "foo"  iterator is used to supply the second step
+    iterator with start nodes. The second step iterator will pass these start
+    nodes to the  "bar"  iterator, which will be used to get the
+    start nodes for the third step iterator, and so on....</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Iterators for Filtering/Predicates</h4>
+
+    <p>The <code>org.apache.xalan.xsltc.dom</code> package contains a few
+    iterators that are used to implement predicates and filters. Such iterators
+    are normally placed on top of another iterator, and return only those nodes
+    that match a specific node value, position, etc.
+    These iterators include:</p>
+
+    <ul>
+      <li>NthIterator</li>
+      <li>NodeValueIterator</li>
+      <li>FilteredStepIterator</li>
+      <li>CurrentNodeListIterator</li>
+    </ul>
+
+    <p>The last one is the most interesting. This iterator is used to implement
+    chained predicates, such as:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:value-of select="foo[@blob='boo'][2]"&gt;</pre>
+</blockquote>
+
+    <p>The first predicate reduces the node set from containing all
+    <code>&lt;foo&gt;</code> elements, to containing only those elements that
+    have a  "blob"  attribute with the value 'boo'. The
+    <code>CurrentNodeListIterator</code> is used to contain this reduced
+    node-set. The iterator is constructed by passing it a source iterator (in
+    this case an iterator that contains all <code>&lt;foo&gt;</code> elements)
+    and a filter that implements the predicate (<code>@blob = 'boo'</code>).</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>SortingIterator</h4>
+
+    <p>The sorting iterator is one of the main functional components behind the
+    implementation of the <code>&lt;xsl:sort&gt;</code> element. This element,
+    including the sorting iterator, is described in detail in the
+    <code>&lt;xsl:sort&gt;</code>
+    <a href="xsl_sort_design.html">design document</a>.</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>SingletonIterator</h4>
+
+    <p>The singleton iterator is a wrapper for a single node. The node passed
+    in to the <code>setStartNode()</code> method is the only node that will be
+    returned by the <code>next()</code> method. The singleton iterator is used
+    mainly for node to node-set type conversions.</p>
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>UnionIterator</h4>
+
+    <p>The union iterator is used to contain unions of node-sets contained in
+    other iterators. Some of the methods in this iterator are unnecessary
+    comlicated. The <code>next()</code> method contains an algorithm for
+    ensuring that the union node-set is returned in document order. We might be
+    better off by simply wrapping the union iterator inside a duplicate filter
+    iterator, but there could be some performance implications. Worth checking.
+    </p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>KeyIndex</h4>
+
+    <p>This is not just an node iterator. An index used for keys and ids will
+    return a set of nodes that are contained within the named index and that
+    share a certain property. The <code>KeyIndex</code> implements the node
+    iterator interface, so that these nodes can be returned and handled just
+    like any other node set. See the
+    <a href="xsl_key_design.html">design document</a> for 
+    <code>&lt;xsl:key&gt;</code>, <code>key()</code> and <code>id()</code>
+    for further details.</p>
+
+    
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_namespace.html b/xalan-j/xsltc/xsltc_namespace.html
new file mode 100644
index 0000000..5245767
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_namespace.html
@@ -0,0 +1,832 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC and Namespaces</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC and Namespaces</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>Namespaces<br />
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC and Namespaces</h2>
+
+  <ul>
+    <li>
+<a href="#functionality">Functionality</a>
+</li>
+    <li>
+<a href="#overview">Namespace overview</a>
+</li>
+    <li>
+<a href="#NSA">The DOM &amp; namespaces</a>
+</li>    
+    <li>
+<a href="#NSB">Namespaces in the XSL stylesheet</a>
+</li>
+    <li>
+<a href="#NSC">Namespaces in the output document</a>
+</li>
+  </ul>
+  <a name="functionality">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Functionality</h3>
+
+    <p>Namespaces are used when an XML documents has elements have the same
+    name, but are from different contexts, and thus have different meanings
+    and interpretations. For instance, a <code>&lt;TITLE&gt;</code> element can
+    be a HTML title element in one part of the XML document, while it in other
+    parts of the document the <code>&lt;TITLE&gt;</code> element is used for
+    encapsulating the title of a play or a book. This sort of confusion is
+    very common when reading XML source from multiple documents, but can also
+    occur within a single document.</p>
+
+    <p>Namespaces have three very important properties: a name, a prefix (an
+    alias for its name) and a scope. Namespaces are declared as attributes of
+    almost any node in an XML document. The declaration looks like this:</p>
+
+<blockquote class="source">
+<pre>
+    &lt;element xmlns:prefix="http://some.site/spec"&gt;....&lt;/element&gt;
+</pre>
+</blockquote>
+
+    <p>The <code>"xmlns"</code> tells that this is a namespace declaration. The
+    scope of the namespace declaration is the element in which it is defined
+    and all the children of that element.The prefix is the local alias we use
+    for referencing the namespace, and the URL (it can be anything, really) is
+    the name/definition of the namespace. Note that even though the namespace
+    definition is normally an URL, it does not have to point to anything. It
+    is recommended that it points to a page that describes the elements in the
+    namespace, but it does not have to. The prefix can be just about anything
+    - or nothing (in which case it is the default namespace). Any prefix,
+    including the empty prefix for the default namespace, can be redefined to
+    refer to a different namespace at any time in an XML document. This is
+    more likely to happen to the default namespace than any other prefix. Here
+    is an example of this:</p>
+
+    <a name="xml_sample_1">‌</a>
+<blockquote class="source">
+<pre>
+    &lt;?xml version="1.0"?&gt;
+    
+    &lt;employees xmlns:postal="http://postal.ie/spec-1.0"
+               xmlns:email="http://www.w3c.org/some-spec-3.2"&gt;
+        &lt;employee&gt;
+            &lt;name&gt;Bob Worker&lt;/name&gt;
+            &lt;postal:address&gt;
+                &lt;postal:street&gt;Nassau Street&lt;/postal:street&gt;
+                &lt;postal:city&gt;Dublin 3&lt;/postal:city&gt;
+                &lt;postal:country&gt;Ireland&lt;/postal:country&gt;
+            &lt;/postal:address&gt;
+            &lt;email:address&gt;bob.worker@hisjob.ie&lt;/email:address&gt;
+        &lt;/employee&gt;
+    &lt;/employees&gt;
+</pre>
+</blockquote>
+
+    <p>This short document has two namespace declarations, one with the prefix
+    <code>"postal"</code> and another with the prefix <code>"email"</code>. The
+    prefixes are used to distinguish between elements for e-mail addresses and
+    regular postal addresses. In addition to these two namespaces there is also
+    an initial (unnamed) default namespace being used for the
+    <code>&lt;name&gt;</code> and <code>&lt;employee&gt;</code> tags. The scope of the
+    default namespace is in this case the whole document, while the scope of
+    the other two declared namespaces is the <code>&lt;employees&gt;</code>
+    element and its children.</p>
+
+    <p>By changing the default namespace we could have made the document a
+    little bit simpler and more readable:</p>
+
+    <a name="xml_sample_2">‌</a>
+<blockquote class="source">
+<pre>
+    &lt;?xml version="1.0"?&gt;
+    
+    &lt;employees xmlns:email="http://www.w3c.org/some-spec-3.2"&gt;
+        &lt;employee&gt;
+            &lt;name&gt;Bob Worker&lt;/name&gt;
+            &lt;address xmlns="http://postal.ie/spec-1.0"&gt;
+                &lt;street&gt;Nassau Street&lt;/street&gt;
+                &lt;city&gt;Dublin 3&lt;/city&gt;
+                &lt;country&gt;Ireland&lt;/country&gt;
+            &lt;/address&gt;
+            &lt;email:address&gt;bob.worker@hisjob.ie&lt;/email:address&gt;
+        &lt;/employee&gt;
+    &lt;/employees&gt;
+</pre>
+</blockquote>
+
+    <p>The default namespace is redefined for the <code>&lt;address&gt;</code> node
+    and its children, so there is no need to specify the street as
+    <code>&lt;postal:street&gt;</code> - just plain <code>&lt;street&gt;</code> is
+    sufficient. Note that this also applies to the <code>&lt;address&gt;</code>
+    where the namespace is first defined. This is in effect a redefinition of
+    the default namespace.</p>
+  <a name="overview">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Namespace overview</h3>
+
+    <p>Namespaces will have to be handled in three separate parts of the XSLT
+    compiler:</p>
+
+    <a name="all_namespaces">‌</a>
+      <p>
+<img src="all_namespaces.gif" alt="all_namespaces.gif" />
+</p>
+      <p>
+<b>
+<i>Figure 1: Namespace handlers in the XSLTC</i>
+</b>
+</p>
+
+    <p>The most obvious is the namespaces in the source XML document
+    (marked <a href="#NSA">"NS A"</a> in figure 1). These namespaces will be
+    handled by our DOM implementation class. The source XSL stylesheet also
+    has its own set of namespaces (<a href="NSB.html">"NS B"</a>) - one of which
+    is the XSL namespace. These namespaces will be handled at run-time and
+    whatever information that is needed to process there should be compiled
+    into the translet. There is also a set of namespaces that will be used in
+    the resulting document (<a href="NSC.html">"NS C"</a>). This is an
+    intersection of the first two. The output document should not contain any
+    more namespace declarations than necessary.</p>
+
+    <a name="NSA">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The DOM &amp; namespaces</h3>
+    <ul>
+      <li>
+<a href="#dom-namespace">DOM node types and namespace types</a>
+</li>
+      <li>
+<a href="#assign">Assigning namespace types to DOM nodes</a>
+</li>                
+    </ul>
+    <a name="dom-namespace">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>DOM node types and namespace types</h4>
+
+    <p>Refer to the XSLTC <a href="xsltc_runtime.html">runtime
+    environment design</a> document for a description of node types before
+    proceeding. In short, each node in the our DOM implementation is
+    represented by a simple integer. By using this integer as an index into an
+    array called <code>_type[]</code> we can find the type of the node.</p>
+
+    <p>The type of the node is an integer representing the type of element the
+    node is. All elements <code>&lt;bob&gt;</code> will be given the same type,
+    all text nodes will be given the same type, and so on. By using the node
+    type as an index an array called <code>_namesArray[]</code> we can find the
+    name of the element type - in this case "bob". This code fragment shows
+    how you can, with our current implementation, find the name of a node:</p>
+
+<blockquote class="source">
+<pre>
+    int    node = iterator.getNext();  // get next node
+    int    type = _type[node];         // get node type
+    String name = _namesArray[type];   // get node name
+</pre>
+</blockquote>
+
+    <p>We want to keep the one-type-per-node arrangement, since that lets us
+    produce fairly efficient code. One type in the DOM maps to one type in
+    the compiled translet. What we could do to represent the namespace for
+    each node in the DOM is to add a <code>_namespaceType[]</code> array that holds
+    namespace types. Each node type maps to a namespace type, and each
+    namespace type maps to a namespace name (and a prefix with a limited
+    scope):</p>
+
+    <a name="type_mappings">‌</a>
+    <p>
+<img src="type_mappings.gif" alt="type_mappings.gif" />
+</p>
+      <p>
+<b>
+<i>Figure 2: Mapping between node types/names, namespace types/names</i>
+</b>
+</p>
+
+    <p>This code fragment shows how we could get the namespace name for a node:</p>
+
+<blockquote class="source">
+<pre>
+    int    node      = iterator.getNext();    // get next node
+    int    type      = _type[node];           // get node type
+    int    nstype    = _namespace[type];      // get namespace type
+    String name      = _namesArray[type];     // get node element name
+    String namespace = _nsNamesArray[nstype]; // get node namespace name
+</pre>
+</blockquote>
+
+    <p>Note that namespace prefixes are not included here. Namespace prefixes
+    are local to the XML document and will be expanded to the full namespace
+    names when the nodes are put into the DOM. This, however, is not a trivial
+    matter.</p>
+    <a name="assign">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Assigning namespace types to DOM nodes</h4>
+
+    <p>We cannot simply have a single namespace prefix array similar to the
+    <code>_namespaceArray[]</code> array for mapping a namespace type to a single
+    prefix. This because prefixes can refer to different namespaces depending
+    on where in the document the prefixes are being used. In our last example's
+    <a href="xml_sample_2.html">XML fragment</a> the empty prefix <code>""</code>
+    initially referred to the default namespace (the one with no name - just
+    like a Clint Eastwood character). Later on in the document the empty
+    prefix is changed to refer to a namespace called 
+    <code>"http://postal.ie/spec-1.0"</code>.</p>
+
+    <p>Namespace prefixes are only relevant at the time when the XML document
+    is parsed and the DOM is built. Once we have the DOM completed we only need
+    a table that maps each node type to a namespace type, and another array of
+    all the names of the different namespaces. So what we want to end up with
+    is something like this:</p>
+
+     <p>
+<img src="dom_namespace1.gif" alt="dom_namespace1.gif" />
+</p>
+     <p>
+<b>
+<i>Figure 3: Each namespace references in the DOM gets one entry</i>
+</b>
+</p>
+
+    <p>The namespace table has one entry for each namespace, nomatter how many
+    prefixes were used ro reference this namespace in the DOM. To build this
+    array we need a temporary data structure used by the DOM builder. This
+    structure is a hashtable - where the various prefixes are used for the
+    hash values. The contents of each entry in the table will be a small stack
+    where previous meanings of each prefix will be stored:</p>
+
+     <p>
+<img src="dom_namespace2.gif" alt="dom_namespace2.gif" />
+</p>
+     <p>
+<b>
+<i>Figure 4: Temporary data structure used by the DOM builder</i>
+</b>
+</p>
+
+    <p>When the first node is encountered we define a new namespace
+    <code>"foo"</code> and assign this namespace type/index 1 (the default 
+    namespace <code>""</code> has index 0). At the same time we use the prefix
+    <code>"A"</code> for a lookup in the hashtable. This gives us
+    an integer stack used for the prefix <code>"A"</code>. We push the namespace
+    type 1 on this stack. From now on, until <code>"A"</code> is pop'ed off this
+    stack, the prefix <code>"A"</code> will map to namespace type 1, which
+    represents the namespace URI <code>"foo"</code>.</p>
+
+    <p>We then encounter the next node with a new namespace definition with
+    the same namespace prefix, we create a new namespace <code>"bar"</code> and
+    we put that in the namespace table under type 2. Again we use the prefix
+    <code>"A"</code> as an entry into the namespace prefix table and we get the
+    same integer stack. We now push namespace type 2 on the stack, so that
+    namespace prefix <code>"A"</code> maps to namespace URI <code>"bar"</code>. When
+    we have traversed this node's children we need to pop the integer off the
+    stack, so when we're back at the first node the prefix <code>"A"</code> again
+    will point to namespace type 0, which maps to <code>"foo"</code>. To keep
+    track of what nodes had what namespace declarations, we use a namespace
+    declaration stack:</p>
+
+    <p>
+<img src="dom_namespace3.gif" alt="dom_namespace3.gif" />
+</p>
+     <p>
+<b>
+<i>Figure 5: Namespace declaration stack</i>
+</b>
+</p>
+     
+    <p>Every namespace declaration is pushed on the namespace declaration
+    stack. This stack holds the node index for where the namespace was
+    declared, and a reference to the prefix stack for this declaration.
+    The <code>endElement()</code> method of the DOMBuilder class will need to
+    remove namespace declaration for the node that is closed. This is done
+    by first checking the namespace declaration stack for any namespaces
+    declared by this node. If any declarations are found these are un-declared
+    by poping the namespace prefixes off the respective prefix stack(s), and
+    then poping the entry/entries for this node off the namespace declaration
+    stack.</p>
+
+    <p>The <code>endDocument()</code> method will build an array that contains
+    all namespaces used in the source XML document - <code>_nsNamesArray[]</code>
+    - which holds the URIs of all refered namespaces. This method also builds
+    an array that maps all DOM node types to namespace types. This two arrays
+    are accessed through two new methods in the DOM interface:</p>
+
+<blockquote class="source">
+<pre>
+    public String getNamespaceName(int node);
+    public int    getNamespaceType(int node);
+</pre>
+</blockquote>
+
+  <a name="NSB">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Namespaces in the XSL stylesheet</h3>
+  <ul>
+    <li>
+<a href="#store-access">Storing and accessing namespace information</a>
+</li>
+    <li>
+<a href="#mapdom-stylesheet">Mapping DOM namespaces to stylesheet namespaces</a>
+</li>
+    <li>
+<a href="#wildcards">Wildcards and namespaces</a>
+</li>
+  </ul>
+    <a name="store-access">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Storing and accessing namespace information</h4>
+    <p>The SymbolTable class has three datastructures that are used to hold
+    namespace information:</p>
+
+    <ul>
+      <li>
+        First there is the <code>_namespaces[]</code> Hashtable that maps the names
+        of in-scope namespace to their respective prefixes. Each key in the
+        Hashtable object has a stack. A new prefix is pushed on the stack for
+        each new declaration of a namespace.
+      </li>
+      <li>
+        Then there is the <code>_prefixes[]</code> Hashtable. This has the reverse
+        function of the <code>_namespaces[]</code> Hashtable - it maps from
+        prefixes to namespaces.
+      </li>
+      <li>
+        There is also a hashtable that is used for implementing the
+        <code>&lt;xsl:namespace-alias&gt;</code> element. The keys in this
+        hashtable is taken from the <code>stylesheet-prefix</code> attribute of
+        this element, and the resulting prefix (from the <code>result-prefix</code>
+        attribute) is used as the value for each key.
+      </li>
+    </ul>
+
+    <p>The SymbolTable class offers 4 methods for accessing these data
+    structures:</p>
+
+<blockquote class="source">
+<pre>
+    public void   pushNamespace(String prefix, String uri);
+    public void   popNamespace(String prefix);
+    public String lookupPrefix(String uri);
+    public String lookupNamespace(String prefix);
+</pre>
+</blockquote>
+
+    <p>These methods are wrapped by two methods in the Parser class (a Parser
+    object alwas has a SymbolTable object):</p>
+<blockquote class="source">
+<pre>
+    // This method pushes all namespaces declared within a single element
+    public void pushNamespaces(ElementEx element);
+    // This method pops all namespaces declared within a single element
+    public void popNamespaces(ElementEx element);
+</pre>
+</blockquote>
+
+    <p>The translet class has, just like the DOM, a <code>namesArray[]</code>
+    structure for holding the expanded QNames of all accessed elements. The
+    compiled translet fills this array in its constructor. When the translet
+    has built the DOM (a DOMImpl object), it passes the DOM to the a DOM
+    adapter (a DOMAdapter object) together with the names array. The DOM
+    adapter then maps the translet's types to the DOM's types.</p>
+   <a name="mapdom-stylesheet">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Mapping DOM namespaces and stylesheet namespaces</h4>
+
+    <p>Each entry in the DOM's <code>_namesArray[]</code> is expanded to contain
+    the full QName, so that instead of containing <code>prefix:localname</code> it
+    will now contain <code>namespace-uri:localname</code>. In this way the expanded
+    QName in the translet will match the exanded QName in the DOM. This assures
+    matches on full QNames, but does not do much for <code>match="A:*"</code> type
+    XPath patterns. This is where our main challenge lies.</p>
+    <a name="wildcards">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Wildcards and namespaces</h4>
+
+    <p>The original implementation of the XSLTC runtime environment would
+    only allow matches on "<code>*</code>" and "<code>@*</code>" patterns. This was
+    achieved by mapping all elements that could not be mapped to a translet
+    type to 3 (DOM.ELEMENT type), and similarly all unknown attributes to
+    type 4 (DOM.ATTRIBUTE type). The main <code>switch()</code> statement in
+    <code>applyTemplates()</code> would then have a separate "<code>case()</code>"
+    for each of these. (Under each <code>case()</code> you might have to check
+    for the node's parents in case you were matching on "<code>path/*</code>"-type
+    patterns.) This figure shows how that was done:</p>
+
+    <a name="match_namespace1">‌</a>
+    <p>
+<img src="match_namespace1.gif" alt="match_namespace1.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 6: Previous pattern matching</i>
+</b>
+</p>
+
+    <p>The "Node test" box here represents the "<code>switch()</code>" statement.
+    The "Node parent test" box represent each "<code>case:</code>" for that 
+    <code>switch()</code> statement. There is one <code>case:</code> for each know
+    translet node type. For each node type we have to check for any parent
+    patterns - for instance, for the pattern "<code>/foo/bar/baz</code>", we will
+    get a match with <code>case "baz"</code>, and we have to check that the parent
+    node is "<code>bar</code>" and that the grandparent is "<code>foo</code>" before
+    we can say that we have a hit. The "Element parent test" is the test that
+    is done all DOM nodes that do not directly match any translet types. This
+    is the test for "<code>*</code>" or "<code>foo/*</code>". Similarly we have a
+    "<code>case:</code>" for match on attributes ("<code>@*</code>").</p>
+
+    <p>What we now want to achieve is to insert a check for patterns on the
+    format "<code>ns:*</code>", "<code>foo/ns:*</code>" or "<code>ns:@*</code>", which
+    this figure illustrates:</p>
+
+    <a name="match_namespace2">‌</a>
+      <p>
+<img src="match_namespace2.gif" alt="match_namespace2.gif" />
+</p>
+      <p>
+<b>
+<i>Figure 7: Pattern matching with namespace tests</i>
+</b>
+</p>
+
+
+    <p>Each node in the DOM needs a namespace type as well as the QName type.
+    With this type we can match wildcard rules to any specific namespace.
+    So after any checks have been done on the whole QName of a node (the type),
+    we can match on the namespace type of the node. The main dispatch
+    <code>switch()</code> in <code>applyTemplates()</code> must be changed from this:</p>
+
+    <blockquote class="source">
+<pre>
+        public void applyTemplates(DOM dom, NodeIterator iterator,
+                                   TransletOutputHandler handler) {
+
+            // Get next node from iterator
+            while ((node = iterator.next()) != END) {
+                // Get internal node type
+                final int type = DOM.getType(node);
+                switch(type) {
+                case DOM.ROOT:      // Match on "/" pattern
+                    handleRootNode();       
+                    break;
+                case DOM.TEXT:      // Handle text nodes
+                    handleText();
+                    break;
+                case DOM.ELEMENT:   // Match on "*" pattern
+                    handleWildcardElement();
+                    break;
+                case DOM.ATTRIBUTE: // Handle on "@*" pattern
+                    handleWildcardElement();
+                    break;
+                case nodeType1:     // Handle 1st known element type
+                    compiledCodeForType1();
+                    break;
+                    :
+                    :
+                    :
+                case nodeTypeN:   // Handle nth known element type
+                    compiledCodeForTypeN();
+                    break;
+                default:
+                   NodeIterator newIterator = DOM.getChildren(node);
+                   applyTemplates(DOM, newIterator, handler);
+                   break;
+                }
+            }
+            return;
+        }
+</pre>
+</blockquote>
+
+    <p>To something like this:</p>
+
+    <blockquote class="source">
+<pre>
+        public void applyTemplates(DOM dom, NodeIterator iterator,
+                                   TransletOutputHandler handler) {
+
+            // Get next node from iterator
+            while ((node = iterator.next()) != END) {
+
+                // First run check on node type
+                final int type = DOM.getType(node);
+                switch(type) {
+                case DOM.ROOT:      // Match on "/" pattern
+                    handleRootNode();
+                    continue;
+                case DOM.TEXT:      // Handle text nodes
+                    handleText();
+                    continue;
+                case DOM.ELEMENT:   // Not handled here!!!
+                    break;
+                case DOM.ATTRIBUTE: // Not handled here!!!
+                    break;
+                case nodeType1:     // Handle 1st known element type
+                    if (compiledCodeForType1() == match) continue;
+                    break;
+                    :
+                    :
+                    :
+                case nodeTypeN:     // Handle nth known element type
+                    if (compiledCodeForTypeN() == match) continue;
+                    break;
+                default:
+                    break;
+                }
+
+                // Then run check on namespace type
+                final int namespace = DOM.getNamespace(type);
+                switch(namespace) {
+                case 0: // Handle nodes matching 1st known namespace
+                    if (handleThisNamespace() == match) continue;
+                    break;
+                case 1: // Handle nodes matching 2nd known namespace
+                    if (handleOtherNamespace() == match) continue;
+                    break;
+                }
+
+                // Finally check on element/attribute wildcard
+                if (type == DOM.ELEMENT) {
+                    if (handleWildcardElement() == match)
+                        continue;
+                    else {
+                       // The default action for elements
+                       NodeIterator newIterator = DOM.getChildren(node);
+                       applyTemplates(DOM, newIterator, handler);
+                    }
+                }
+                else if (type == DOM.ATTRIBUTE) {
+                    handleWildcardAttribute();
+                    continue; 
+                }
+            }
+        }
+</pre>
+</blockquote>
+
+    <p>First note that the default action (iterate on children) does not hold for
+    attributes, since attribute nodes do not have children. Then note that the way
+    the three levels of tests are ordered is consistent with the way patterns
+    should be prioritised:</p>
+
+    <ul>
+
+      <li>
+<b>Match on element/attribute types:</b>
+</li>
+        <ul>
+          <li>
+<code>match="/"</code> - match on the root node</li>
+          <li>
+<code>match="B"</code> - match on any B element</li>
+          <li>
+<code>match="A/B"</code> - match on B elements with A parent</li>
+          <li>
+<code>match="A | B"</code> - match on B or A element</li>
+          <li>
+<code>match="foo:B"</code> - match on B element within "foo" namespace</li>
+        </ul>
+        <li>
+<b>Match on namespace:</b>
+</li>
+        <ul>
+          <li>
+<code>match="foo:*"</code> - match on any element within "foo" namespace</li>
+          <li>
+<code>match="foo:@*"</code> - match on any attribute within "foo" namespace</li>
+          <li>
+<code>match="A/foo:*"</code> - match on any element within "foo" namespace with A parent</li>
+          <li>
+<code>match="A/foo:@*"</code> - match on any attribute within "foo" namespace with A parent</li>
+        </ul>      
+
+      <li>
+<b>Match on wildcard:</b> </li>
+        <ul>
+          <li>
+<code>match="*"</code> - match on any element</li>
+          <li>
+<code>match="@*"</code> - match on any attribute</li>
+          <li>
+<code>match="A/*"</code> - match on any element with A parent</li>
+          <li>
+<code>match="A/@*"</code> - match on any attribute with A parent</li>
+        </ul>
+     
+    </ul>
+
+     <a name="NSC">‌</a>
+     <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Namespaces in the output document</h3>
+
+    <p>These are the categories of namespaces that end up in the output
+    document:</p>
+
+    <ul>
+      <li>
+        Namespaces used in literal elements/attributes in the stylesheet. These
+        namespaces should be declared <b>once</b> before use in the output
+        document. These elements are copied to the output document independent
+        of namespaces in the input XML document. However, the namespaces can
+        be declared using the same prefix, such that a namespace used by a
+        literal result element can overshadow a namespace from the DOM.
+      </li>
+      <li>
+        Namespaces from elements in the stylesheet that match elements in the
+        DOM. No namespaces from the DOM should be copied to the output document
+        unless they are actually referenced in the stylesheet. No namespaces
+        from the stylesheet should be copied to the output document unless the
+        elements in which they are references match elements in the DOM.
+      </li>
+    </ul>
+
+      <a name="output_namespaces1">‌</a>
+      <p>
+<img src="output_namespaces1.gif" alt="output_namespaces1.gif" />
+</p>
+      <p>
+<b>
+<i>Figure 8: Namespace declaration in the output document</i>
+</b>
+</p>    
+
+    <p>Any literal element that ends up in the output document must declare all
+    namespaces that were declared in the <code>&lt;xsl:stylesheet&lt;</code>
+    element. Exceptions are namespaces that are listed in this element's
+    <code>exclude-result-prefixes</code> or <code>extension-element-prefixes</code>
+    attributes. These namespaces should only be declared if they are referenced
+    in the output.</p>
+
+    <p>Literal elements should only declare namespaces when necessary. A
+    literal element should only declare a namespace in the case where it
+    references a namespace using prefix that is not in scope for this
+    namespace. The output handler will take care of this problem. All namespace
+    declarations are put in the output document using the output handler's
+    <code>declarenamespace()</code> method. This method will monitor all namespace
+    declarations and make sure that no unnecessary declarations are output.
+    The datastructures used for this are similar to those used to track
+    namespaces in the XSL stylesheet:</p>
+
+    <a name="output_namespaces2">‌</a>
+    <p>
+<img src="output_namespaces2.gif" alt="output_namespaces2.gif" />
+</p>
+      <p>
+<b>
+<i>Figure 9: Handling Namespace declarations in the output document</i>
+</b>
+</p>
+
+ 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_native_api.html b/xalan-j/xsltc/xsltc_native_api.html
new file mode 100644
index 0000000..8a2ba83
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_native_api.html
@@ -0,0 +1,555 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC Native API Documentation</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC Native API Documentation</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>Xsltc Native API<br />
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC Native API Documentation</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC Compiler API</h3>
+
+    <p>XSLTC's native API is represented by the
+    <code>org.apache.xalan.xsltc.compiler.XSLTC</code> class. Any application
+    using XSLTC's native API should only have to access methods in this class
+    in order to compile a stylesheet (or a set or stylesheets) into one or
+    more Java classes. The <code>XSLTC</code> has an empty constructor. The
+    class needs to be initialized before each compilation by a call to:</p>
+<blockquote class="source">
+<pre>
+    public void init();
+</pre>
+</blockquote>
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Compile methods</h4>
+    <p>There is a set of methods for compiling one or more stylesheets into a
+    set of Java classes. The stylesheet can be specified either as a
+    <code>URL</code>, <code>InputStream</code>, <code>InputSource</code> or
+    a <code>Vector</code> containing a set of <code>URL</code>s pointing to
+    stylesheets:</p>
+<blockquote class="source">
+<pre>
+    public boolean compile(URL url);
+    public boolean compile(URL url, String transletName);
+    public boolean compile(InputStream stream, String transletName);
+    public boolean compile(InputSource input, String transletName);
+    public boolean compile(Vector stylesheets);</pre>
+</blockquote>
+
+    <p>The default behaviour is to output the compiled Java class(es) to one or
+    more Java classes in the current working directory. The name of the main
+    translet class will be obtained from (in order of priority):</p>
+
+    <ul>
+      <li>that specified in the <code>compile()</code> method</li>
+      <li>if none is specified (if the parameter is 'null') the name will be
+      generated from the filename specified by the input URL/file/stream</li>
+      <li>the default translet name (set by <code>setClassName()</code>)</li>
+      <li>the built-in default class name <code>"GregorSamsa"</code>
+</li>
+    </ul>
+
+    <p>Additional Java classes will be generated for complex stylesheets. These
+    classes represent elements such as predicates, sort-records, etc. in the
+    stylesheet. Additional classes share the same root name as the main translet
+    class, with a suffix containing a '$'-sign and a sequence number. The result
+    of a single compilation of a complex stylesheet could be:</p>
+<blockquote class="source">
+<pre>
+    GregorSamsa.java
+    GregorSamsa$0.java
+    GregorSamsa$1.java
+    GregorSamsa$2.java
+    GregorSamsa$3.java</pre>
+</blockquote>
+
+    <p>It is not always desireable having these classes dumped to files in the
+    current working directory. There is one <code>compile()</code> method that
+    will return the Java class definitions as bytecodes. The bytecodes are
+    returned in a two-dimmensional <code>byte</code> array. Each byte-array
+    contains the bytecodes for one Java class:</p>
+<blockquote class="source">
+<pre>
+    public byte[][] compile(String name, InputSource input);</pre>
+</blockquote>
+
+    <p>Alternatively, one can first compile the stylesheet into one or more
+    Java class files, and then also retrieve the bytecodes from the compiler:</p>
+<blockquote class="source">
+<pre>
+    public byte[][] getBytecodes();</pre>
+</blockquote>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Output settings</h4>
+
+    <p>The default (root) name for the generated Java classes can be set and
+    retrieved by calls to these methods:</p>
+<blockquote class="source">
+<pre>
+    public void setClassName(String className);
+    public String getClassName();</pre>
+</blockquote>
+
+    <p>One can also specify a package to place the classes in:</p>
+<blockquote class="source">
+<pre>
+    public void setPackageName(String package);</pre>
+</blockquote>
+
+    <p>The generated classes can also be wrapped inside a single Java archive
+    (JAR-file):</p>
+<blockquote class="source">
+<pre>
+    public void setJarFileName(String jarFileName);
+    public String getJarFileName();</pre>
+</blockquote>
+
+    <p>The result file(s) need not be output in the current working directory.
+    Specify the directory to output to by calling:</p>
+<blockquote class="source">
+<pre>
+    public boolean setDestDirectory(String directory);</pre>
+</blockquote>
+
+    
+
+    <a name="document-locator">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Input document locator interface</h4>
+
+    <p>XSLTC's compiler has an interface that a client application can implement
+    to provide XSL input from alternative sources. Implementing and using this
+    interface is necessary when the top-level stylesheet contains one or more
+    <code>&lt;xsl:include&gt;</code> and <code>&lt;xsl:import&gt;</code>
+    elements that reference stylesheets that cannot be read using standard
+    <code>File</code> or <code>URL</code> classes. The interface that a client
+    must implement is <code>org.apache.xalan.xsltc.compiler.SourceLoader</code>,
+    and its only method is:</p>
+<blockquote class="source">
+<pre>
+    public InputSource loadSource(String href, String context, XSLTC xsltc);</pre>
+</blockquote>
+
+    <p>The compiler class, <code>XSLTC</code>, has a method for specifying the
+    implementation of this interface:</p>
+<blockquote class="source">
+<pre>
+    public void setSourceLoader(SourceLoader loader);</pre>
+</blockquote>
+
+    <p>This interface shares the same purpose as the <code>URIResolver</code>
+    interface in the JAXP/TrAX API.</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Debug settings</h4>
+
+    <p>XSLTC can be forced to output debug messages and stack dumps:</p>
+<blockquote class="source">
+<pre>
+    public void setDebug(boolean debug);
+    public boolean debug();</pre>
+</blockquote>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Error handling</h4>
+
+    <p>All <code>compile()</code> methods return 'true' if the compilation
+    succeeded. The compiler could in such case still generate warning messages.
+    These message could be retrieved a <code>Vector</code> of strings or
+    output directlry to stderr:</p>
+<blockquote class="source">
+<pre>
+    public Vector getWarnings();
+    public void printWarnings();</pre>
+</blockquote>
+
+    <p>All <code>compile()</code> methods will return 'false' if any serious
+    errors prevented the compiler from generating any Java classes. Error
+    messages are handled similar to warning messages:</p>
+<blockquote class="source">
+<pre>
+    public Vector getErrors();
+    public void printErrors();</pre>
+</blockquote>
+
+    <p>Note that warning messages are not returned/output by these two methods.
+    A client application should pass both warning  and error messages
+    to its user.</p>
+
+    
+
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC Transform API</h3>
+
+    <p>The steps described in this chapter are covered in these sample
+    source code files:</p>
+
+    <ul>
+      <li>
+<code>org.apache.xalan.xsltc.cmdline.Transform</code>
+</li>
+      <li>
+<code>xml-xalan/java/samples/CompiledApplet/TransformApplet.java</code>
+</li>
+      <li>
+<code>xml-xalan/java/samples/CompiledBrazil/TransformHandler.java</code>
+</li>
+      <li>
+<code>xml-xalan/java/samples/CompiledEJB/TransformBean.java</code>
+</li>
+      <li>
+<code>xml-xalan/java/samples/CompiledEJB/TransformHome.java</code>
+</li>
+      <li>
+<code>xml-xalan/java/samples/CompiledEJB/TransformRemote.java</code>
+</li>
+      <li>
+<code>xml-xalan/java/samples/CompiledEJB/TransformServlet.java</code>
+</li>
+      <li>
+<code>xml-xalan/java/samples/CompiledServlet/CompileServlet.java</code>
+</li>
+      <li>
+<code>xml-xalan/java/samples/CompiledServlet/TransformServlet.java</code>
+</li>
+    </ul>
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Transformation input handling</h4>
+
+    <p>The main input document must be parsed using a SAX handler. The main SAX
+    events (<code>ContentHandler</code>) and lexical declarations
+    (<code>LexicalHandler</code>) are handled by the internal DOM builder.
+    The classes that make up the internal DOM are:</p>
+<blockquote class="source">
+<pre>
+    org.apache.xalan.xsltc.DOM;             - DOM interface
+    org.apache.xalan.xsltc.dom.DOMImpl;     - DOM implementation
+    org.apache.xalan.xsltc.dom.DOMAdapter;  - DOM-to-translet mapper
+    org.apache.xalan.xsltc.dom.MultiDOM;    - DOM multiplexer
+    org.apache.xalan.xsltc.dom.DOMBuilder;  - DOM builder interface</pre>
+</blockquote>
+
+    <p>The <code>DOMBuilder</code> interface is a wrapper for the standard SAX
+    <code>ContentHandler</code> and <code>LexicalHandler</code> interfaces.
+    The <code>DOMBuilder</code> contains both these interfaces, and it is
+    implemented by an inner class of the <code>DOMImpl</code> class. To build
+    the internal DOM, one has to go through these steps:</p>
+<blockquote class="source">
+<pre>
+    // Create a SAX parser and get the XMLReader object it uses
+    final SAXParserFactory factory = SAXParserFactory.newInstance();
+    try {
+	factory.setFeature(Constants.NAMESPACE_FEATURE,true);
+    }
+    catch (Exception e) {
+	factory.setNamespaceAware(true);
+    }
+    final SAXParser parser = factory.newSAXParser();
+    final XMLReader reader = parser.getXMLReader();
+
+     // Set the DOM's DOM builder as the XMLReader's SAX2 ContentHandler
+    final DOMImpl dom = new DOMImpl();
+    DOMBuilder builder = dom.getBuilder();
+    reader.setContentHandler(builder);
+
+     // Set the DOM's DOM builder as the XMLReader's SAX2 LexicalHandler
+    try {
+	String prop = "http://xml.org/sax/properties/lexical-handler";
+	reader.setProperty(prop, builder);
+    }
+    catch (SAXException e) {
+	 // Can be quitely ignored...
+    }
+
+     // Pass the document URI or file-name to the DOM
+    dom.setDocumentURI(uri);
+     // Parse the input document to populate the DOM
+    reader.parse(uri);</pre>
+</blockquote>
+
+    <p>The input XML document may contain of reference a DTD. A DTD must be
+    processed by XSLTC in order to support the <code>id()</code> and
+    <code>unparsed-entity-uri()</code> functions.
+    The <code>org.apache.xalan.xsltc.dom.DTDMonitor</code> class can handle
+    DTD declarations and aggregate them for use by a translet. Create your
+    <code>DTDMonitor</code> instance by passing it a reference to your SAX
+    parser:</p>
+<blockquote class="source">
+<pre>
+     // Create a DTD monitor and pass it to the XMLReader object
+    final DTDMonitor dtd = new DTDMonitor(reader);</pre>
+</blockquote>
+
+    <p>This call ensures that an index is built for all <code>ID</code>
+    attributes described in the DTD:</p>
+<blockquote class="source">
+<pre>
+     // If there are any elements with ID attributes, build an index
+    dtd.buildIdIndex(dom, 0, _translet);</pre>
+</blockquote>
+
+    <p>And this call ensures that the translet is passed all unparsed entities
+    described in the DTD:</p>
+<blockquote class="source">
+<pre>
+    translet.setDTDMonitor(dtd);</pre>
+</blockquote>
+
+    <p>We'll tell you how to create the translet instance in the next section.</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>The translet instance</h4>
+
+    <p>All compiled translets inherit from the <code>AbstractTranslet</code>
+    class, so it is safe to cast your tranlet instance to that class:</p>
+<blockquote class="source">
+<pre>
+    Class transletClass = Class.forName(transletName);
+    AbstractTranslet translet = (AbstractTranslet)transletClass.newInstance();</pre>
+</blockquote>
+
+    <p>Note that the translet  instance  is not reusable, so you would
+    benefit from keeping the reference to the translet class.</p>
+
+    <p>Once you have your translet instance you can start playing around with
+    it. First you want to pass parameters to it:</p>
+<blockquote class="source">
+<pre>
+    // Pass global parameters
+    translet.addParameter("my-param", "my-value");</pre>
+</blockquote>
+
+    <p>You also want to remember to pass your DTD handler to the translet.
+    (See previous section.)</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Preparing the output handler</h4>
+
+    <p>The compiled translet does not contain all the functionality needed to
+    format the output document. This is handled by our output post-processor
+    <code>org.apache.xalan.xsltc.runtime.TextOutput</code>. This class needs
+    to be instanciated with three parameters; a SAX <code>ContentHandler</code>,
+    a <code>LexicalHandler</code> and a string containing the desired output
+    encoding. The user should normally provide the two handlers, and the
+    output encoding can be obtained from a field in the translet:</p>
+<blockquote class="source">
+<pre>
+    // Get the output encoding (from any &lt;xsl:output&gt; element
+    String encoding = translet._encoding;
+
+    // Create a translet output handler and plug in the SAX handlers
+    TextOutput textOutput = new TextOutput(myContentHandler, myLexicalHandlere, encoding);</pre>
+</blockquote>
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Transformation</h4>
+
+    <p>With the internal DOM built, the DTD monitor in place, and the output
+    handler set up, we're ready to run the actual transformation:</p>
+<blockquote class="source">
+<pre>
+    // Transform and pass output to the translet output handler
+    translet.transform(dom, textOutput);</pre>
+</blockquote>
+ 
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>The DOM cache interface</h4>
+
+    <p>Parsing the input document and building the internal DOM is a fairly
+    expensive operation, and it is often desireable to build a cache holding
+    frequently accessed internal DOMs. An application using XSLTC's native
+    API can accomplish this by implementing the
+    <code>org.apache.xalan.xsltc.DOMCache</code> interface. The application will
+    still have to call the translet's <code>transform()</code> method with a
+    DOM from the cache. But, the translet may have to load additional documents
+    if the original stylesheet contained calls to the <code>document()</code>
+    function. The translet can be instructed to read DOMs from a cache by
+    calling this method:</p>
+<blockquote class="source">
+<pre>
+    public void setDOMCache(DOMCache cache);
+    public DOMCache getDOMCache();</pre>
+</blockquote>
+
+    
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_overview.html b/xalan-j/xsltc/xsltc_overview.html
new file mode 100644
index 0000000..3ad0f94
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_overview.html
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC stylesheet compiler overview</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC stylesheet compiler overview</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC stylesheet compiler overview</h2>
+   
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Using the Command-Line Utility</h3>
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_performance.html b/xalan-j/xsltc/xsltc_performance.html
new file mode 100644
index 0000000..84c1f1e
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_performance.html
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC Performance</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC Performance</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>Performance Hints<br />
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC Performance</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>
+
+    <p>
+<b>XSLT is not a programming language!</b> Just so you remember.
+    XSLT is a declarative language and can be used by you to describe
+    <b>what</b> you want put in your output document and
+    <b>what</b> you want this output to look like. It does not describe
+    <b>how</b> these tasks should be carried. That is the job of the XSLT
+    processor. This document is <b>not</b> a "<b>
+<i>programmer's guide to XSLT</i>
+</b>"
+    and should not be considered as such. All XSLT processors have their
+    properties and ways of handling XSL elements and XPath properties. This
+    document will give you some insight into the XSLTC internals, so that you
+    can channel your stylesheets through XSLTC's shortest and most efficient
+    code paths.</p>
+
+    <p>XSLTC's performance has always been one of its key selling points.
+    (I should probably find a better term here, since we're giving XSLTC away
+    for free.) But, there are some specific patterns and expressions that are
+    not handled much better than with other interpretive XSLT processors, and
+    this document is an attempt to pinpoint these and to outline alternatives.
+    </p>
+
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+    <ul>
+      <li>
+<a href="#pred">Avoid using predicates in '*' patterns</a>
+</li>
+      <li>
+<a href="#idkey">Avoid using id/key-patterns</a>
+</li>
+      <li>
+<a href="#union">Avoid union expressions where possible</a>
+</li>
+      <li>
+<a href="#sort">Sort stored node-sets once</a>
+</li>
+      <li>
+<a href="#cache">Cache input documents</a>
+</li>
+      <li>
+<a href="#trax">TrAX vs. native API</a>
+</li>
+    </ul>
+  
+
+  <a name="pred">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Avoid using predicates in wildcard patterns</h3>
+
+    <p>XSLTC gains its speed from the simple dispatch loop in the translet's
+    <code>applyTemplates()</code> method. This method uses a simple
+    <code>switch()</code> statement to choose the desired template based on
+    the current node's node type (an integer). By adding a pattern with a
+    wildcard (no type) and a predicate, XSLTC is forced to evaluate the
+    predicate for every single node.</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="*[2]"&gt;</pre>
+</blockquote>
+
+    <p>The above pattern should be avoided by selecting the desired node when
+    using <code>&lt;xsl:apply-templates&gt;</code>. Use named templates or
+    modes to make sure you trigger the correct template:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="/"&gt;
+      &lt;xsl:apply-templates select="bar"/&gt;
+    &lt;/xsl:template&gt;
+
+    &lt;xsl:template match="*[2]"/&gt;
+
+    &lt;xsl:template match="*"/&gt;</pre>
+</blockquote>
+
+    <p>can be replaced by:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="/"&gt;
+      &lt;xsl:apply-templates select="bar"/&gt;
+      &lt;xsl:apply-templates select="bar[2]" mode="second"/&gt;
+    &lt;/xsl:template&gt;
+
+    &lt;xsl:template match="*" mode="second"/&gt;
+
+    &lt;xsl:template match="*"/&gt;</pre>
+</blockquote>
+
+    <p>This change will only improve performance if the stylesheet is fairly
+    large and has a good few templates (10 or more). Also note that the order
+    of the output is changed by this approach, so if the order is significant
+    you'll have to stick to the original stylesheet.</p>
+
+    <p>
+<b>Important note:</b> The type of pattern referred to as a
+    type-less pattern, as it does not match any specific node type. Such
+    patterns do in general degrade the performance of XSLTC. Type-less patterns
+    must be evaluated for every single node in the input document - causing a
+    general performance degradation.</p>
+
+  
+
+  <a name="idkey">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Avoid using id/key-patterns</h3>
+
+    <p>Id and key patterns can be used to trigger a template if the current
+    node has a specific id or has a specific value in a key's index:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="id('some-value')"/&gt;
+
+    &lt;xsl:template match="key('key-name', 'some-value')"/&gt;</pre>
+</blockquote>
+
+    <p>Looking up a value/node-pair in an index does not require much processing
+    time at all. But, this is also a type-less pattern and can match any type
+    of node. This degrades XSLTC's performance, just like wildcard patterns
+    with predicates (see above paragraph).</p>
+
+  
+
+  <a name="union">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Avoid union expressions where possible</h3>
+
+    <p>Union expressions provide an all-in-one-go easy way of applying templates
+    to sets of nodes:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:apply-templates select="foo|bar|baz"/&gt;</pre>
+</blockquote>
+
+    <p>The union iterator that is used to implement union expressions is 
+    unfortunately not very efficient. If node order is not of importance, then
+    one can benefit from breaking the union up in several elements:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:apply-templates select="foo"/&gt;
+    &lt;xsl:apply-templates select="bar"/&gt;
+    &lt;xsl:apply-templates select="baz"/&gt;</pre>
+</blockquote>
+
+    <p>But, remeber that this will give you all <code>&lt;foo&gt;</code>
+    elements first, then all <code>&lt;bar&gt;</code> elements, and so on.
+    This is not always desirable. You may want to handle these elements in
+    the order in which they appear in the input document.</p>
+
+    <p>
+<b>Important note:</b> This does <b>not</b> apply to union patterns.
+    Using unions in patterns actually makes smaller and more efficient code,
+    as only one copy of the templete body has to be compiled. Use:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="foo|bar|baz"/&gt;</pre>
+</blockquote>
+
+    <p>instead of:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="foo"/&gt;
+    &lt;xsl:template match="bar"/&gt;
+    &lt;xsl:template match="baz"/&gt;</pre>
+</blockquote>
+ 
+  
+
+  <a name="sort">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Sort stored node-sets once</h3>
+
+    <p>This item is very obvious, but nevertheless easy to forget in some
+    complicated cases. If you put a result-tree fragment inside a variable, and
+    you want the nodes in a specific, sorted order, then sort the nodes as you
+    create the variable and not when you use it. Instead of:</p>
+<blockquote class="source">
+<pre>
+
+    &lt;xsl:variable name="bars"&gt;
+      &lt;xsl:copy-of select="//foo/bar"/&gt;
+    &lt;/xsl:variable&gt;
+
+    &lt;xsl:template match="/"&gt;
+      &lt;xsl:text&gt;List of bar's in sorted order:&amp;#xa;&lt;/xsl:text&gt;
+      &lt;xsl:for-each select="$bars-sorted"&gt;
+        &lt;xsl:value-of select="@name"/&gt;
+        &lt;xsl:text&gt;&amp;#xa;&lt;/xsl:text&gt;
+      &lt;/xsl:for-each&gt;
+    &lt;/xsl:template&gt;</pre>
+</blockquote>
+
+    <p>A better way, and with most XSLT processors the only legal way, is to
+    sort the result tree when creating it:</p>
+<blockquote class="source">
+<pre>
+
+    &lt;xsl:variable name="bars"&gt;
+      &lt;xsl:for-each select="//foo/bar"&gt;
+        &lt;xsl:sort select="@name"/&gt;
+        &lt;xsl:copy-of select="."/&gt;
+      &lt;/xsl:for-each&gt;
+    &lt;/xsl:variable&gt;
+
+    &lt;xsl:template match="/"&gt;
+      &lt;xsl:text&gt;List of bar's in sorted order:&amp;#xa;&lt;/xsl:text&gt;
+      &lt;xsl:for-each select="$bars"&gt;
+        &lt;xsl:value-of select="@name"/&gt;
+        &lt;xsl:text&gt;&amp;#xa;&lt;/xsl:text&gt;
+      &lt;/xsl:for-each&gt;
+    &lt;/xsl:template&gt;</pre>
+</blockquote>
+
+    <p>It is very common to sort node-sets returned by the id() and key()
+    functions. Instead of doing this sorting over and over again, one should
+    use a variable and store the node set in the desired sort order, and read
+    the node set from the variable whenever used.</p>
+
+  
+
+  <a name="cache">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Cache the input document</h3>
+
+    <p>All XSLT processors use an internal DOM-like structure, and XSLTC is no
+    exception. The internal DOM is tailored for the XSLTC design and can be
+    navigated efficiently by the translet. Building the internal DOM is a
+    rather slow process, and does very many cases take more time than the
+    actual transformation. This is a general rule, and does not only apply to
+    XSLTC. It is advisable, and common in most large-scale XSLT-based
+    applications, to create a cache for the input documents. Not only does this
+    prevent CPU- and memory-intensive DOM creation, but it also prevents several
+    translets from having their own private copies of common input documents.
+    Both XSLTC's  internal API and TrAX implementation provide ways of
+    implementing a decent input document cache:</p>
+
+    <ul>
+      <li>See <a href="#trax-cache">below</a> for a description of how
+      to do this using the TrAX interface.</li>
+
+      <li>The <a href="xsltc_native_api.html#document-locator">native API
+      documentation</a> contains a section on using the internal
+      <code>org.apache.xalan.xsltc.compiler.SourceLoader</code> interface.</li>
+    </ul>
+  
+
+  <a name="trax">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>TrAX vs. native API</h3>
+
+    <h5>TrAX performance benefits</h5>
+
+    <p>If XSLTC's two-step approach to XSLT processing suits your application
+    then there is no reason why you should not use the TrAX API. The API fits
+    very nicely in with XSLTC internals and processing model. In fact, you may
+    even benefit from using TrAX in cases where your stylesheet is compiled
+    into a large ammount of auxiliary classes. The most obvious benefit is that
+    the translet class and auxiliary classes are all bundled inside the
+    <code>Templates</code> object. Performance can also be improved due to the
+    fact that XSLTC chaches all auxiliary classes inside <code>Templates</code>
+    code, preventing the class loader from being invoked more than necessary.
+    This is just theory and no tests have been done, but you should see a
+    performance improvement when using XSLTC and TrAX in such cases.</p>
+
+    
+
+    <h5>Treat Templates objects as compiled translets</h5>
+
+    <p>When using TrAX, the <code>Templates</code> object should be considered
+    the result of a compilation. With XSLTC this is the actual case - the
+    <code>Templates</code> object contains the translet Java class(es). With
+    other XSLT processors the <code>Templates</code> directly or indirectly
+    contains data-structures represent all or parts of the input stylesheet.
+    The bottom line is: Create your <code>Templates</code> object once, cache
+    and re-use it as often as possible.</p>
+
+    
+
+    <a name="trax-cache">‌</a>
+    <h5>Input document caching</h5>
+
+    <p>An extension to the TrAX API allows input documents to be cached. The
+    extensions is a sub-class to the TrAX <code>Source</code> class, which can
+    be used to wrap XSLTC's internal DOM structures. This is described in
+    detail in the <a href="xsltc_trax_api.html">XSLTC TrAX API reference</a>.
+    </p>
+
+    <p>If you do chose to implement a DOM cache, you should have your cache
+    implement the <code>javax.xml.transform.URIResolver</code> interface so
+    that documents loaded by the <code>document()</code> function are also read
+    from your cache.</p>
+
+    
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_predicates.html b/xalan-j/xsltc/xsltc_predicates.html
new file mode 100644
index 0000000..0adc2de
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_predicates.html
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC Predicate Handling</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC Predicate Handling</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>XPath Predicates<br />
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC Predicate Handling</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Definition</h3>
+
+  <p>According to Michael Kay's "XSLT Programmer's Reference" page
+  736, a predicate is "An expression used to filter which nodes are
+  selected by a particular step in a path expression, or to select a subset of
+  the nodes in a node-set. A Boolean expression selects the nodes for which the
+  predicate is true; a numeric expression selects the node at the position
+  given by the value of the expression, for example '[1]' selects the first
+  node.". Note that a predicate containing a boolean expression can
+  return zero, one or more nodes, while a predicate containing a numeric
+  expression can return only zero or one node.</p>
+
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Examples</h3>
+
+  <p>I'll list a few examples that I can refer back to later on in this
+  document. All examples will use this XML document:</p>
+<blockquote class="source">
+<pre>
+    &lt;?xml version="1.0"?&gt;
+    &lt;doc&gt;
+      &lt;foo location="Drumcondra"&gt;
+        &lt;bar name="Cat and Cage"/&gt;
+        &lt;bar name="Fagan's"/&gt;
+        &lt;bar name="Gravedigger's"/&gt;
+        &lt;bar name="Ivy House"/&gt;
+      &lt;foo&gt;
+      &lt;foo location="Town"&gt;
+        &lt;bar name="Peter's Pub"/&gt;
+        &lt;bar name="Grogan's"/&gt;
+        &lt;bar name="Hogans's"/&gt;
+        &lt;bar name="Brogan's"/&gt;
+      &lt;/foo&gt;
+    &lt;/doc&gt;</pre>
+</blockquote>
+
+  <p>Here are some examples of a predicate with boolean expressions:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="//bar[contains(@name,'ogan')]"&gt;
+    &lt;xsl:for-each select="//bar[parent::*/@location = 'Drumcondra']"&gt;
+    &lt;xsl:for-each select="//bar[@name = 'Cat and Cage']"&gt;</pre>
+</blockquote>
+
+  <p>The first two select more than one node, while the last selects only one.
+  The last expression could select more nodes if the input document was
+  different. Now, here are a few examples of predicates with numeric
+  expressions:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:value-of select="//bar[1]"&gt;
+    &lt;xsl:value-of select="/doc/foo[2]/bar[1]"&gt;
+    &lt;xsl:value-of select="/doc/foo[2]/bar"&gt;</pre>
+</blockquote>
+  <p>The last expression will return more than one node, but the step that
+  contains the predicate returns only one (the second <code>&lt;foo&gt;</code>
+  element).</p>
+
+  <p>The above are the basic types of predicates. These can be grouped to create
+  a predicate pipeline, where the first predicate reduces the node-set that the
+  second predicate filters, and so on. Here are some examples:</p>
+<blockquote class="source">
+<pre>
+    A: &lt;for-each select="//bar[contains(@name,'ogan')][2]"&gt;
+    C: &lt;for-each select="//bar[2][contains(@name,'ogan')]"&gt;
+    B: &lt;for-each select="//bar[position() &gt; 3][2]"&gt;</pre>
+</blockquote>
+
+  <p>It is easier to figure out which nodes these expressions should return if
+  one goes through the steps and predicates one by one. In expression
+  <code>A:</code> we first get all <code>&lt;bar&gt;</code> elements from the
+  whole document. Then the first predicate selects from that node-set only
+  those elements that have a <code>@name</code> attribute that contains
+  "ogan", and we're left with these elements:</p>
+<blockquote class="source">
+<pre>
+        &lt;bar name="Grogan's"&gt;
+        &lt;bar name="Hogans's"&gt;
+        &lt;bar name="Brogan's"&gt;</pre>
+</blockquote>
+  <p>And finally, the last predicate then selects the second of those
+  elements:</p>
+<blockquote class="source">
+<pre>
+        &lt;bar name="Hogans's"&gt;</pre>
+</blockquote>
+
+  <p>Expression <code>B:</code> contains the same predicates as <code>A:</code>,
+  but the resulting node set if completely different. We start off with the same
+  set of <code>&lt;bar&gt;</code> elements, but we apply the
+  <code>"[2]"</code> predicate first, and end up with this
+  element:</p>
+<blockquote class="source">
+<pre>
+        &lt;bar name="Fagan's"&gt;</pre>
+</blockquote>
+
+  <p>Fagan's is the bar where the Irish Taoiseach (prime minister) drinks his
+  pints, but its name does not contain the string "<code>ogan</code>",
+  so the resulting node-set is empty.</p>
+
+  <p>The third expressions also starts off with all <code>&lt;bar&gt;</code>
+  elements, applies the predicate "<code>[position() &gt; 3]</code>",
+  and reduces the node set to these:</p>
+<blockquote class="source">
+<pre>
+        &lt;bar name="Ivy House"&gt;
+        &lt;bar name="Peter's Pub"&gt;
+        &lt;bar name="Grogan's"&gt;
+        &lt;bar name="Hogans's"&gt;
+        &lt;bar name="Brogan's"&gt;</pre>
+</blockquote>
+  <p>The last predicate "<code>[2]</code>" is applied to this node-set
+  and set is further reduced to:</p>
+<blockquote class="source">
+<pre>
+        &lt;bar name="Peter's Pub"&gt;</pre>
+</blockquote>
+
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Categories</h3>
+
+  <p>From the examples in the last chapter we can try to categorize predicate
+  chains/pipelines to simplify our implementation. We can speed up processing
+  significantly if we can avoid using a data-structure (iterator) to represent
+  the intermediate step between predicates. The goal of setting up these
+  categories is to pinpoint those cases where an intermediate iterator has
+  to be used and when it can be avoided.</p>
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Single predicate expressions</h4>
+
+    <p>Expressions containing just a single predicate have no intermediate step
+    and there is no need for any extra iterator. The expression inside the
+    predicate can be applied directly to the original iterator. We call this
+    category <b>SIMPLE_CONTEXT</b>.</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Expressions containing only non-position predicates</h4>
+    
+    <p>Predicate-order is significant when the predicate-chain contains one or
+    more predicate with an expression similar to
+    "<code>position() &gt; 3</code>" or "<code>2</code>". This
+    is because the <code>position()</code> and <code>last()</code> explicitly
+    refer to the intermediate step between applying each predicate. The
+    expression:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="//bar[contains(@name,'ogan')][parent::*/@location = 'Town']"&gt;</pre>
+</blockquote>
+    <p>has two predicates that can be applied in any order and still produce the
+    desired node-set. Such predicates can be merged to:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="//bar[contains(@name,'ogan') &amp; (parent::*/@location = 'Town')]"&gt;</pre>
+</blockquote>
+    <p>We call this category NO_CONTEXT.</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Expressions containing position predicates</h4>
+
+    <p>A predicate-chain, whose predicates' expressions contain any use of the
+    <code>position()</code> or <code>last()</code> functions require some way
+    of representing the intermediate step in an iterator. The first predicate
+    is applied to the original node-set, and the resulting node-set must then
+    be stored in some other iterator, from which the second predicate can get
+    the current position from the iterator's <code>getPosition()</code> and
+    <code>getLast()</code> methods. We call this category
+    GENERAL_CONTEXT</p>
+
+    
+
+    <a name="exception">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Expressions containing one position predicate</h4>
+
+    <p>There is one expection from the GENERAL_CONTEXT category. If the
+    predicate-chain contains only one position-predicate, and that predicate is
+    the very first one, then that predicate can call the iterator that contains
+    the first node-set directly. Just look:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="//bar[2][parent::*/@location = 'Drumcondra']"&gt;</pre>
+</blockquote>
+    <p>The <code>[2]</code> predicate can be applied to the original iterator
+    for the <code>//bar</code> step. And so can the
+    <code>[parent::*/@location = 'Drumcondra']</code> predicate as well. This
+    is only the case when the position predicate is first in the predicate
+    chain. These types of predicate chains belong in the
+     NO_CONTEXT  category.</p>
+
+    
+
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Design details</h3>
+
+    <p>Predicates are handled quite differently in step expressions and step
+    patterns. Step expressions are not implemented with the various contexts in
+    mind and use a specialised iterator to wrap the code for each predicate.
+    Step patterns are more complicated and CPU (or should I say JVM?)
+    exhaustive. Step patterns containing predicates are analysed to determine
+    context type and compiled accordingly.</p>
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Predicates and Step expressions</h4>
+
+    <p>The basic behaviour for a predicate is to compile a <b>filter</b>. This
+    filter is an auxiliary class that implements the
+    <code>org.apache.xalan.xsltc.dom.CurrentNodeListFilter</code> interface. The
+    <code>Step</code> or <code>StepPattern</code> that uses the predicate will
+    create a <code>org.apache.xalan.xsltc.dom.CurrentNodeListFilter</code>. This
+    iterator contains the nodes that pass through the predicate. The compiled
+    filter is used by the iterator to determine which nodes that should be
+    included. The <code>org.apache.xalan.xsltc.dom.CurrentNodeListFilter</code>
+    interface contains only a single method:</p>
+<blockquote class="source">
+<pre>
+    public interface CurrentNodeListFilter {
+    public abstract boolean test(int node, int position, int last, int current,
+                                 AbstractTranslet translet, NodeIterator iter);
+    }</pre>
+</blockquote>
+
+    <p>The code that is compiled into the <code>test()</code> method is the
+    code for the predicate's expression. The <code>Predicate</code> class
+    compiles the filter class and a <code>test()</code> method skeleton, while
+    some sub-class of the <code>Expression</code> class compiles the actual
+    code that goes into this method.</p>
+
+    <p>The iterator is initialised with a filter that implements this interface:
+    </p>
+<blockquote class="source">
+<pre>
+    public CurrentNodeListIterator(NodeIterator source, 
+				   CurrentNodeListFilter filter,
+				   int currentNode,
+				   AbstractTranslet translet) {
+	this(source, !source.isReverse(), filter, currentNode, translet);
+    }</pre>
+</blockquote>
+
+    <p>The iterator will use its source iterator to provide it with the initial
+    node-set. Each node that is returned from this set is passed through the
+    filter before returned by the <code>next()</code> method. Note that the
+    source iterator can also be a current node-list iterator (if two or more
+    predicates are chained together).</p>
+
+    
+
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Optimisations in Step expressions</h4>
+
+    <h5>Node-value iterators</h5>
+
+    <p>Some simple predicates that test for node values are handled by the
+    <code>NodeValueIterator</code> class at runtime. These are:</p>
+<blockquote class="source">
+<pre>
+    A: foo[@attr = &lt;value&gt;]
+    B: foo[bar = &lt;value&gt;]
+    C: foo/bar[. = &lt;value&gt;]</pre>
+</blockquote>
+
+    <p>The first case is handled by creating an iterator that represents
+    <code>foo/@attr</code>, then passing this iterator and a test-value to
+    a <code>NodeValueIterator</code>. The <b>&lt;value&gt;</b> is an
+    expression that is compiled and passed to the iterator as a string. It
+    does <b>not</b> have to be a literal string as the string value is
+    found at runtime. The last two cases are similarly handled by creating an
+    iterator for <code>foo/bar</code> and passing that and the test-value to
+    a <code>NodeValueIterator</code>.</p>
+
+    
+
+    <h5>Nth descendant iterators</h5>
+
+    <p>The <code>Step</code> class is also optimised for position-predicates
+    that are applied to descendant iterators:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="//bar[3]"&gt;</pre>
+</blockquote>
+
+    <p>Such step/predicate combinations are handled by the internal DOM's
+    inner class <code>NthDescendantIterator</code>.</p>
+
+    
+
+    <h5>Nth position iterators</h5>
+
+    <p>Similarly, the <code>Step</code> class is optimised for
+    position-predicates that are applied to basic steps:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:for-each select="bar[3]"&gt;</pre>
+</blockquote>
+
+    <p>Such step/predicate combinations are handled by the internal DOM's
+    inner class <code>NthPositionIterator</code>.</p>
+
+    
+
+    <h5>Node test</h5>
+
+    <p>The predicate class contains a method that tells you if it is a boolean
+    test:</p>
+<blockquote class="source">
+<pre>
+    public boolean isBooleanTest();</pre>
+</blockquote>
+
+    <p>This can be, but it currently is not, used by the <code>Step</code> class
+    to compile in optimised code. Some work to be done here!</p>
+
+    
+
+    
+
+    <a name="step-patterns">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Predicates and StepPatterns</h4>
+
+    <p>Using predicates in patterns is slow on any XSLT processor, and XSLTC
+    is no exception. This is why the predicate context is carefully analysed
+    by the <code>StepPattern</code> class, so that the compiled code is
+    specialised to handle the specific predicate(s) in use. First we should
+    consider the basic step pattern.</p>
+
+    <h5>Basic pattern handling</h5>
+
+    <p>All patterns are grouped (by the <code>Mode</code> class) according to
+    their <b>
+<i>kernel</i>
+</b>-node type. The kernel node-type is node-type of the
+    <b>last</b> step in a pattern:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="foo/bar/baz"&gt;  ...  &lt;xsl:template&gt;</pre>
+</blockquote>
+
+    <p>In this case the type for elements <code>&lt;baz&gt;</code> is the
+    kernel type. This step is <b>not</b> compiled as a step pattern. The node
+    type is passed to the <code>Mode</code> class and is used to place the
+    remainder of the pattern code inside the big <code>switch()</code> statement
+    in the translet's <code>applyTemplates()</code> method. The whole pattern
+    is then <b>reduced</b> to:</p>
+<blockquote class="source">
+<pre>
+    match="foo/bar"</pre>
+</blockquote>
+
+    <p>The <code>StepPattern</code> representing the <code>&lt;bar&gt;</code>
+    element test is compiled under the appropriate <code>case:</code> section
+    of the <code>switch()</code> statement. The code compiled for the step
+    pattern is basically just a call to the DOM's <code>getType()</code>
+    method and a test for the desired node type. There are two special cases
+    for:</p>
+<blockquote class="source">
+<pre>
+    &lt;xsl:template match="foo/*/baz"&gt;  ...  &lt;xsl:template&gt;
+    &lt;xsl:template match="foo/*@[2]"&gt;  ...  &lt;xsl:template&gt;</pre>
+</blockquote>
+
+    <p>In the first case we call <code>isElement()</code> and in the second case
+    we call <code>isAttribute()</code>, instead of <code>getType()</code>.</p>
+
+    
+
+    <h5>Patterns with predicates</h5>
+
+    <p>The <code>typeCheck()</code> method of the <code>StepPattern</code>
+    invokes a method that analyses the predicates of the step pattern and
+    determines their context. (Note that this method needs to be updated to
+    handle the exception to the GENERAL_CONTEXT metioned in the section
+    <a href="#exception">Expressions containing one position predicate</a> earlier in this document.) The <code>translate()</code> method of the
+    <code>StepPattern</code> class contains a <code>switch()</code> statement
+    that calls methods that are tailored for compiling code for the various
+    predicate contexts.</p>
+
+    
+
+    
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_runtime.html b/xalan-j/xsltc/xsltc_runtime.html
new file mode 100644
index 0000000..7f27f9f
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_runtime.html
@@ -0,0 +1,677 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC runtime environment</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC runtime environment</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>Runtime<br />
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC runtime environment</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+
+  <p>This document describes the design and overall architecture of XSLTC's
+  runtime environment. This does not include the internal DOM and the DOM
+  iterators, which are all covered in separate documents.</p>
+
+  <ul>
+    <li>
+<a href="#overview">Runtime overview</a>
+</li>
+    <li>
+<a href="#translet">The compiled translet</a>
+</li>
+    <li>
+<a href="#types">External/internal type mapping</a>
+</li>    
+    <li>
+<a href="#mainloop">Main program loop</a>
+</li>
+    <li>
+<a href="#library">Runtime library</a>
+</li>
+    <li>
+<a href="#output">Output handling</a>
+</li>
+  </ul>
+
+  
+
+   
+
+  <a name="overview">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Runtime overview</h3>
+
+    <p>This figure shows the main components of XSLTC's runtime environment:</p>
+ 
+    <p>
+<img src="runtime_design.gif" alt="runtime_design.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 1: Runtime environment overview</i>
+</b>
+</p>
+
+    <p>The various steps these components have to go through to transform a
+    document are:</p>
+
+    <ul>
+      <li>instanciate a parser and hand it the input document</li>
+      <li>build an internal DOM from the parser's SAX events</li>
+      <li>instanciate the translet object</li>
+      <li>pass control to the translet object</li>
+      <li>receive output events from the translet</li>
+      <li>format the output document</li>
+    </ul>
+
+    <p>This process can be initiated either through XSLTC's native API or
+    through the implementation of the JAXP/TrAX API.</p>
+
+    <a name="translet">‌</a>
+    <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The compiled translet</h3>
+
+    <p>A translet is always a subclass of <code>AbstractTranslet</code>. As well
+    as having access to the public/protected methods in this class, the
+    translet is compiled with these methods:</p>
+<blockquote class="source">
+<pre>
+    public void transform(DOM, NodeIterator, TransletOutputHandler);</pre>
+</blockquote>
+
+    <p>This method is passed a <code>DOMImpl</code> object. Depending on whether
+    the stylesheet had any calls to the <code>document()</code> function this
+    method will either generate a <code>DOMAdapter</code> object (when only one
+    XML document is used as input) or a <code>MultiDOM</code> object (when there
+    are more than one XML input documents). This DOM object is passed on to
+    the <code>topLevel()</code> method.</p>
+
+    <p>When the <code>topLevel()</code> method returns, we initiate the output
+    document by calling <code>startDocument()</code> on the supplied output
+    handler object. We then call <code>applyTemplates()</code> to get the actual
+    output contents, before we close the output document by calling
+    <code>endDocument()</code> on the output handler.</p>
+<blockquote class="source">
+<pre>
+    public void topLevel(DOM, NodeIterator, TransletOutputHandler);</pre>
+</blockquote>
+
+    <p>This method handles all of these top-level elements:</p>
+    <ul>
+      <li>
+<code>&lt;xsl:output&gt;</code>
+</li>
+      <li>
+<code>&lt;xsl:decimal-format&gt;</code>
+</li>
+      <li>
+<code>&lt;xsl:key&gt;</code>
+</li>
+      <li>
+<code>&lt;xsl:param&gt;</code> (for global parameters)</li>
+      <li>
+<code>&lt;xsl:variable&gt;</code> (for global variables)</li>
+    </ul>
+<blockquote class="source">
+<pre>
+    public void applyTemplates(DOM, NodeIterator, TransletOutputHandler);</pre>
+</blockquote>
+
+    <p>This is the method that produces the actual output. Its central element
+    is a big <code>switch()</code> statement that is used to trigger the code
+    that represent the available templates for the various node in the input
+    document. See the chapter on the
+    <a href="#mainloop">main program loop</a> for details on this method.
+    </p>
+<blockquote class="source">
+<pre>
+    public void &lt;init&gt;();</pre>
+</blockquote>
+
+    <a name="namesarray">‌</a>
+    <p>The translet's constructor initializes a table of all the elements we
+    want to search for in the XML input document. This table is called the
+    <code>namesArray</code>, and maps each element name to an unique integer
+    value, know as the elements "translet-type".
+    The DOMAdapter, which acts as a mediator between the DOM and the translet,
+    will map these element identifier to the element identifiers used internally
+    in the DOM. See the section on <a href="#types">extern/internal type
+    mapping</a> and the internal DOM design document for details on this.</p>
+
+    <p>The constructor also initializes any <code>DecimalFormatSymbol</code>
+    objects that are used to format numbers before passing them to the
+    output post-processor. The output processor uses thes symbols to format
+    decimal numbers in the output.</p>
+<blockquote class="source">
+<pre>
+    public boolean stripSpace(int nodeType);</pre>
+</blockquote>
+
+    <p>This method is only present if any <code>&lt;xsl:strip-space&gt;</code>
+    or <code>&lt;xsl:preserve-space&gt;</code> elements are present in the
+    stylesheet. If that is the case, the translet implements the
+    <code>StripWhitespaceFilter</code> interface by containing this method.</p>
+
+  
+
+   
+
+  <a name="types">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>External/internal type mapping</h3>
+
+    <p>This is the very core of XSL transformations:
+    <b>Read carefully!!!</b>
+</p>
+
+    <a name="external-types">‌</a>
+    <p>Every node in the input XML document(s) is assigned a type by the DOM
+    builder class. This type is a unique integer value which represents the
+    element, so that for instance all <code>&lt;bob&gt;</code> elements in the
+    input document will be given type <code>7</code> and can be referred to by
+    that integer. These types can be used for lookups in the
+    <a href="#namesarray">namesArray</a> table to get the actual
+    element name (in this case "bob"). The type identifiers used in the DOM are
+    referred to as <b>external types</b> or <b>DOM types</b>, as they are
+    types known only outside of the translet.</p>
+
+    <a name="internal-types">‌</a>
+    <p>Similarly the translet assignes types to all element and attribute names
+    that are referenced in the stylesheet. This type assignment is done at
+    compile-time, while the DOM builder assigns the external types at runtime.
+    The element type identifiers used by the translet are referred to as
+    <b>internal types</b> or <b>translet types</b>.</p>
+
+    <p>It is not very probable that there will be a one-to-one mapping between
+    internal and external types. There will most often be elements in the DOM
+    (ie. the input document) that are not mentioned in the stylesheet, and
+    there could be elements in the stylesheet that do not match any elements
+    in the DOM. Here is an example:</p>
+
+<blockquote class="source">
+<pre>
+      &lt;?xml version="1.0"?&gt;
+      &lt;xsl:stylesheet version="1.0" xmlns:xsl="blahblahblah"&gt;
+
+      &lt;xsl:template match="/"&gt;
+        &lt;xsl:for-each select="//B"&gt;
+          &lt;xsl:apply-templates select="." /&gt;
+        &lt;/xsl:for-each&gt;
+        &lt;xsl:for-each select="C"&gt;
+          &lt;xsl:apply-templates select="." /&gt;
+        &lt;/xsl:for-each&gt;
+        &lt;xsl:for-each select="A/B"&gt;
+          &lt;xsl:apply-templates select="." /&gt;
+        &lt;/xsl:for-each&gt;
+      &lt;/xsl:template&gt;
+
+    &lt;/xsl:stylesheet&gt;
+</pre>
+</blockquote>
+
+    <p>In this stylesheet we are looking for elements <code>&lt;B&gt;</code>,
+    <code>&lt;C&gt;</code> and <code>&lt;A&gt;</code>. For this example we can
+    assume that these element types will be assigned the values 0, 1 and 2.
+    Now, lets say we are transforming this XML document:</p>
+
+<blockquote class="source">
+<pre>
+      &lt;?xml version="1.0"?&gt;
+
+      &lt;A&gt;
+        The crocodile cried:
+        &lt;F&gt;foo&lt;/F&gt;
+        &lt;B&gt;bar&lt;/B&gt;
+        &lt;B&gt;baz&lt;/B&gt;
+      &lt;/A&gt;
+</pre>
+</blockquote>
+
+    <p>This XML document has the elements <code>&lt;A&gt;</code>,
+    <code>&lt;B&gt;</code> and <code>&lt;F&gt;</code>, which we assume are
+    assigned the types 7, 8 and 9 respectively  (the numbers below that are
+    assigned for specific element types, such as the root node, text nodes,etc).
+    This causes a mismatch between the type used for <code>&lt;B&gt;</code> in
+    the translet and the type used for <code>&lt;B&gt;</code> in the DOM. The
+    DOMAdapter class (which mediates between the DOM and the translet) has been
+    given two tables for convertint between the two types; <code>mapping</code>
+    for mapping from internal to external types, and <code>reverseMapping</code>
+    for the other way around.</p>
+
+    <p>The translet contains a <code>String[]</code> array called
+    <code>namesArray</code>. This array contains all the element and attribute
+    names that were referenced in the stylesheet. In our example, this array
+    would contain these string (in this specific order): "B", 
+    "C" and "A". This array is passed as one of the
+    parameters to the DOM adapter constructor (the other parameter is the DOM
+    itself). The DOM adapter passes this table on to the DOM. The DOM generates
+    a hashtable that maps its known element names to the types the translet
+    knows. The DOM does this by going through the <code>namesArray</code> from
+    the translet sequentially, looks up each name in the hashtable, and is then
+    able to map the internal type to an external type. The result is then passed
+    back to the DOM adapter.</p>
+
+    <p>External types that are not interesting for the translet (such as the
+    type for <code>&lt;F&gt;</code> elements in the example above) are mapped
+    to a generic <code>"ELEMENT"</code> type (integer value 3), and are more or
+    less ignored by the translet. Uninterresting attributes are similarly
+    mapped to internal type <code>"ATTRIBUTE"</code> (integer value 4).</p>
+
+    <p>It is important that we separate the DOM from the translet. In several
+    cases we want the DOM as a structure completely independent from the
+    translet - even though the DOM is a structure internal to XSLTC. One such
+    case is when transformations are offered by a servlet as a web service.
+    Any DOM that is built should potentially be stored in a cache and made
+    available for simultaneous access by several translet/servlet couples.</p>
+
+    <p>
+<img src="runtime_type_mapping.gif" alt="runtime_type_mapping.gif" />
+</p>
+    <p>
+<b>
+<i>Figure 2: Two translets accessing a single dom using different type mappings</i>
+</b>
+</p>
+
+  
+
+   
+
+  <a name="mainloop">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Main program loop</h3>
+
+    <p>The main body of the translet is the <code>applyTemplates()</code>
+    method. This method goes through these steps:</p>
+
+    <ul>
+      <li>
+        Get the next node from the node iterator
+      </li>
+      <li>
+        Get the internal type of this node. The DOMAdapter object holds the
+        internal/external type mapping table, and it will supply the translet
+        with the internal type of the current node.
+      </li>
+      <li>
+        Execute a switch statement on the internal node type. There will be
+        one "case" label for each recognised node type - this includes the
+        first 7 internal node types.
+      </li>
+    </ul>
+
+    <p>The root node will have internal type 0 and will cause any initial
+    literal elements to be output. Text nodes will have internal node type 1
+    and will simply be dumped to the output handler. Unrecognized elements
+    will have internal node type 3 and will be given the default treatment
+    (a new iterator is created for the node's children, and this iterator
+    is passed with a recursive call to <code>applyTemplates()</code>).
+    Unrecognised attribute nodes (type 4) will be handled like text nodes.
+    This makes up the default (built in) templates of any stylesheet. Then,
+    we add one <code>"case"</code>for each node type that is matched by any
+    pattern in the stylesheet. The <code>switch()</code> statement in
+    <code>applyTemplates</code> will thereby look something like this:</p>
+
+<blockquote class="source">
+<pre>
+        public void applyTemplates(DOM dom, NodeIterator,
+                                   TransletOutputHandler handler) {
+
+            // get nodes from iterator
+            while ((node = iterator.next()) != END) {
+                // get internal node type
+                switch(DOM.getType(node)) {
+
+                case 0: // root
+                    outputPreable(handler);
+                    break;
+                case 1: // text
+                    DOM.characters(node,handler);
+                    break;
+                case 3: // unrecognised element
+                    NodeIterator newIterator = DOM.getChildren(node);
+                    applyTemplates(DOM,newIterator,handler);
+                    break;
+                case 4: // unrecognised attribute
+                    DOM.characters(node,handler);
+                    break;
+                case 7: // elements of type &lt;B&gt;
+                    someCompiledCode();
+                    break;
+                case 8: // elements of type &lt;C&gt;
+                    otherCompiledCode();
+                    break;
+                default:
+                    break;
+                }
+            }
+        }
+</pre>
+</blockquote>
+
+    <p>Each recognised element will have its own piece of compiled code.</p>
+
+    <p>Note that each "case" will not lead directly to a single template.
+    There may be several templates that match node type 7
+    (say <code>&lt;B&gt;</code>). In the sample stylesheet in the previous
+    chapter we have to templates that would match a node <code>&lt;B&gt;</code>.
+    We have one <code>match="//B"</code> (match just any <code>&lt;B&gt;</code>
+    element) and one <code>match="A/B"</code> (match a <code>&lt;B&gt;</code>
+    element that is a child of a <code>&lt;A&gt;</code> element). In this case
+    we would have to compile code that first gets the type of the current node's
+    parent, and then compared this type with the type for
+    <code>&lt;A&gt;</code>. If there was no match we will have executed the
+    first <code>&lt;xsl:for-each&gt;</code> element, but if there was a match
+    we will have executed the last one. Consequentally, the compiler will
+    generate the following code (well, it will look like this anyway):</p>
+
+<blockquote class="source">
+<pre>
+        switch(DOM.getType(node)) {
+          :
+          :
+        case 7: // elements of type &lt;B&gt;
+            int parent = DOM.getParent(node);
+            if (DOM.getType(parent) == 9) // type 9 = elements &lt;A&gt;
+                someCompiledCode();
+            else
+                evenOtherCompiledCode();
+            break;
+          :
+          :
+        }
+</pre>
+</blockquote>
+
+    <p>We could do the same for namespaces, that is, assign a numeric value
+    to every namespace that is references in the stylesheet, and use an
+    <code>"if"</code> statement for each namespace that needs to be checked for
+    each type. Lets say we had a stylesheet like this:</p>
+
+<blockquote class="source">
+<pre>
+      &lt;?xml version="1.0"?&gt;
+      &lt;xsl:stylesheet version="1.0" xmlns:xsl="blahblahblah"&gt;
+
+      &lt;xsl:template match="/"
+          xmlns:foo="http://foo.com/spec"
+          xmlns:bar="http://bar.net/ref"&gt;
+        &lt;xsl:for-each select="foo:A"&gt;
+          &lt;xsl:apply-templates select="." /&gt;
+        &lt;/xsl:for-each&gt;
+        &lt;xsl:for-each select="bar:A"&gt;
+          &lt;xsl:apply-templates select="." /&gt;
+        &lt;/xsl:for-each&gt;
+      &lt;/xsl:template&gt;
+
+    &lt;/xsl:stylesheet&gt;
+</pre>
+</blockquote>
+
+    <p>And a stylesheet like this:</p>
+
+<blockquote class="source">
+<pre>
+      &lt;?xml version="1.0"?&gt;
+
+      &lt;DOC xmlns:foo="http://foo.com/spec"
+           xmlns:bar="http://bar.net/ref"&gt;
+        &lt;foo:A&gt;In foo namespace&lt;/foo:A&gt;
+        &lt;bar:A&gt;In bar namespace&lt;/bar:A&gt;
+      &lt;/DOC&gt;
+</pre>
+</blockquote>
+
+    <p>We could still keep the same type for all <code>&lt;A&gt;</code> elements
+    regardless of what namespace they are in, and use the same <code>"if"</code>
+    structure within the <code>switch()</code> statement above. The other option
+    is to assign different types to <code>&lt;foo:A&gt;</code> and
+    <code>&lt;bar:A&gt;</code> elements. The latter is the option we chose, and
+    it is described in detail in the namespace design document.</p>
+
+  
+
+   
+
+  <a name="library">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Runtime library</h3>
+
+    <p>The runtime library offers basic functionality to the translet at
+    runtime. It is analoguous to UNIX's <code>libc</code>. The whole runtime
+    library is contained in a single class file:</p>
+
+<blockquote class="source">
+<pre>
+    org.apache.xalan.xsltc.runtime.BasisLibrary
+</pre>
+</blockquote>
+
+    <p>This class contains a large set of static methods that are invoked by
+    the translet. These methods are largely independent from eachother, and
+    they implement the following:</p>
+
+    <ul>
+      <li>simple XPath functions that do not require a lot of code
+      compiled into the translet class</li>
+      <li>functions for formatting decimal numbers to strings</li>
+      <li>functions for comparing nodes, node-sets and strings - used by
+      equality expressions, predicates and other</li>
+      <li>functions for generating localised error messages</li>
+    </ul>
+
+    <p>The runtime library is a central part of XSLTC. But, as metioned earlier,
+    the functions within the library are rarely related, so there is no real
+    overall design/architecture. The only common attribute of many of the
+    methods in the library is that all static methods that implement an XPath
+    function and with a capital <code>F</code>.</p>
+
+  
+
+   
+
+  <a name="output">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Output handler</h3>
+
+    <p>The translet passes its output to an output post-processor before the
+    final result is handed to the client application over a standard SAX
+    interface. The interface between the translet and the output handler is
+    very similar to a SAX interface, but it has a few non-standard additions.
+    This interface is described in this file:</p>
+
+<blockquote class="source">
+<pre>
+    org.apache.xalan.xsltc.TransletOutputHandler
+</pre>
+</blockquote>
+
+    <p>This interface is implemented by:</p>
+
+<blockquote class="source">
+<pre>
+    org.apache.xalan.xsltc.runtime.TextOutput
+</pre>
+</blockquote>
+
+    <p>This class, despite its name, handles all types of output (XML, HTML and
+    TEXT). Our initial idea was to have a base class implementing the
+    <code>TransletOutputHandler</code> interface, and then have one subclass
+    for each of the output types. This proved very difficult, as the output
+    type is not always known until after the transformation has started and
+    some elements have been output. But, this is an area where a change like
+    that has the potential to increase performance significantly. Output
+    handling has a lot to do with analyzing string contents, and by narrowing
+    down the number of string comparisons and string updates one can acomplish
+    a lot.</p>
+ 
+    <p>The main tasks of the output handler are:</p>
+
+    <ul>
+      <li>determine the output type based on the output generated by the
+      translet (not always necessary)</li>
+      <li>generate SAX events for the client application</li>
+      <li>insert the necessary namespace declarations in the output</li>
+      <li>escape special characters in the output</li>
+      <li>insert &lt;DOCTYPE&gt; and &lt;META&gt; elements in HTML output</li>
+    </ul>
+
+    <p>There is a very clear link between the output handler and the
+    <code>org.apache.xalan.xsltc.compiler.Output</code> class that handles
+    the <code>&lt;xsl:output&gt;</code> element. The <code>Output</code> class
+    stores many output settings and parameters in the translet class file and
+    the translet passes these on to the output handler.</p>
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_trax.html b/xalan-j/xsltc/xsltc_trax.html
new file mode 100644
index 0000000..ec8c895
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_trax.html
@@ -0,0 +1,837 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: The Translet API and TrAX</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">The Translet API and TrAX</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>Translet &amp; TrAX<br />
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>
+<a href="xsltc_trax_api.html">Xsltc TrAX API</a>
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>The Translet API and TrAX</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Contents</h3>
+
+  <p>Note: This document describes the design of XSLTC's TrAX implementation.
+  The XSLTC <a href="xsltc_trax_api.html">TrAX API user documentation</a>
+  is kept in a separate document.</p>
+
+  <p>The structure of this document is, and should be kept, as follows:</p>
+
+  <ul>
+    <li>A brief introduction to TrAX/JAXP</li>
+    <li>Overall design of the XSLTC TrAX implementation</li>
+    <li>Detailed design of various TrAX components</li>
+  </ul>
+
+  <ul>
+    <li>
+<a href="#abstract">Abstract</a>
+</li>
+    <li>
+<a href="#trax">TrAX basics</a>
+</li>
+    <li>
+<a href="#config">TrAX configuration</a>
+</li>
+    <li>
+<a href="#design">XSLTC TrAX architecture</a>
+</li>
+    <li>
+<a href="#detailed_design">XSLTC TrAX detailed design</a>
+</li>
+      <ul>
+        <li>
+<a href="#factory_design">TransformerFactory design</a>
+</li>
+        <li>
+<a href="#templates_design">Templates design</a>
+</li>
+        <li>
+<a href="#transformer_design">Transformer design</a>
+</li>
+        <li>
+<a href="#config_design">TrAX configuration design</a>
+</li>
+      </ul>
+  </ul>
+  
+
+  
+
+  <a name="abstract">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Abstract</h3>
+
+  <p>JAXP is the Java extension API for XML parsing. TrAX is an API for XML
+  transformations and is included in the later versions of JAXP. JAXP includes
+  two packages, one for XML parsing and one for XML transformations (TrAX):</p>
+<blockquote class="source">
+<pre>
+    javax.xml.parsers
+    javax.xml.transform</pre>
+</blockquote>
+
+  <p>XSLTC is an XSLT processing engine and fulfills the role as an XML
+  transformation engine behind the TrAX portion of the JAXP API. XSLTC is a
+  provider for the TrAX API and a client of the JAXP parser API.</p>
+
+  <p>This document describes the design used for integrating XSLTC translets
+  with the JAXP TrAX API. The heart of the design is a wrapper class around the
+  XSLTC compiler that extends the JAXP <code>SAXTransformerFactory</code>
+  interface. This factory delivers translet class definitions (Java bytecodes)
+  wrapped inside TrAX <code>Templates</code> objects. These
+  <code>Templates</code> objects can be used to instanciate 
+  <code>Transformer</code> objects that transform XML documents into markup or
+  plain text. Alternatively a <code>Transformer</code> object can be created
+  directly by the <code>TransformerFactory</code>, but this approach is not
+  recommended with XSLTC. The reason for this will be explained later in this
+  document.</p>
+
+  
+
+  
+
+  <a name="trax">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>TrAX basics</h3>
+
+  <p>The Java API for XML Processing (JAXP) includes an XSLT framework based
+  on the Transformation API for XML (TrAX). A JAXP transformation application
+  can use the TrAX framework in two ways. The simplest way is:</p>
+
+  <ul>
+    <li>create an instance of the TransformerFactory class</li>
+    <li>from the factory instance and a given XSLT stylesheet, create a new
+    Transformer object</li>
+    <li>call the Transformer object's transform() method, specifying the XML
+    input and a Result object.</li>
+  </ul>
+<blockquote class="source">
+<pre>
+    import javax.xml.transform.*;
+
+        public class Compile {
+
+            public void run(Source xsl) {
+                ....
+                TransformerFactory factory = TransformerFactory.newInstance();
+                Transformer transformer = factory.newTransformer(xsl);
+                ....
+            }
+        }</pre>
+</blockquote>
+
+  <p>This suits most conventional XSLT processors that transform XML documents
+  in one go. XSLTC needs one extra step to compile the XSL stylesheet into a
+  Java class (a "translet"). Fortunately TrAX has another approach
+  that suits XSLTC two-step transformation model:</p>
+
+  <ul>
+    <li>create an instance of the TransformerFactory class</li>
+    <li>from the factory instance and a given XSLTC, stylesheet, create a new
+    Templates object (this step will compile the stylesheet and put the
+    bytecodes for translet class(es) into the Templates object)</li>
+    <li>from the Template object create a Transformer object (this will
+    instanciate a new translet object).</li>
+    <li>call the Transformer object's transform() method, specifying the XML
+    input and a Result object.</li>
+  </ul>
+<blockquote class="source">
+<pre>
+    import javax.xml.transform.*;
+
+        public class Compile {
+
+            public void run(Source xsl) {
+                ....
+                TransformerFactory factory = TransformerFactory.newInstance();
+                Templates templates = factory.newTemplates(xsl);
+                Transformer transformer = templates.newTransformer();
+                ....
+            }
+        }</pre>
+</blockquote>
+
+  <p>Note that the first two steps need be performed only once for each
+  stylesheet. Once the stylesheet is compiled into a translet and wrapped in a
+  <code>Templates</code> object, the <code>Templates</code> object can be used
+  over and over again to create Transformer object (instances of the translet).
+  The <code>Templates</code> instances can even be serialized and stored on
+  stable storage (ie. in a memory or disk cache) for later use.</p>
+
+  <p>The code below illustrates a simple JAXP transformation application that
+  creates the <code>Transformer</code> directly. Remember that this is not the
+  ideal approach with XSLTC, as the stylesheet is compiled for each
+  transformation.</p>
+<blockquote class="source">
+<pre>
+    import javax.xml.transform.stream.StreamSource;
+    import javax.xml.transform.stream.StreamResult;
+    import javax.xml.transform.Transformer;
+    import javax.xml.transform.TransformerFactory;
+
+    public class Proto {
+
+        public void run(String xmlfile, String xslfile) {
+            Transformer transformer;
+            TransformerFactory factory = TransformerFactory.newInstance();
+
+        try {
+            StreamSource stylesheet = new StreamSource(xslfile);
+            transformer = factory.newTransformer(stylesheet);
+            transformer.transform(new StreamSource(xmlfile),
+                                  new StreamResult(System.out));
+        }
+        catch (Exception e) {
+            // handle errors...
+        }
+        :
+        :
+    }</pre>
+</blockquote>
+
+  <p>This approach seems simple is probably used in many applications. But, the
+  use of <code>Templates</code> objects is useful when multiple instances of
+  the same <code>Transformer</code> are needed. <code>Transformer</code>
+  objects are not thread safe, and if a server wants to handle several clients
+  requests it would be best off to create one global <code>Templates</code>
+  object, and then from this create a <code>Transformer</code> object for each
+  thread handling the requests. This approach is also by far the best for
+  XSLTC, as the <code>Templates</code> object will hold the class definitions
+  that make up the translet and its auxiliary classes. (Note that the bytecodes
+  and not the actuall class definitions are stored when serializing a
+  <code>Templates</code> object to disk. This is because of class loader
+  security restrictions.) To accomodate this second approach to TrAX
+  transformations, the above class would be modified  as follows:</p>
+<blockquote class="source">
+<pre>
+    try {
+        StreamSource stylesheet = new StreamSource(xslfile);
+        Templates templates = factory.newTemplates(stylesheet);
+        transformer = templates.newTransformer();
+        transformer.transform(new StreamSource(inputFilename),
+                              new StreamResult(System.out));
+    }
+    catch (Exception e) {
+        // handle errors...
+    }</pre>
+</blockquote>
+
+  
+
+  
+
+  <a name="config">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>TrAX configuration</h3>
+
+  <p>JAXP's <code>TransformerFactory</code> is configurable similar to the
+  other Java extensions. The API supports configuring thefactory by:</p>
+
+  <ul>
+    <li>passing vendor-specific attributes from the application, through the
+    TrAX interface, to the underlying XSL processor</li>
+    <li>registering an ErrorListener that will be used to pass error and
+    warning messages from the XSL processor to the application</li>
+    <li>registering an URIResolver that the application can use to load XSL
+    and XML documents on behalf of the XSL processor (the XSL processor will
+    use this to support the xsl:include and xsl:import elements and the
+    document() functions.</li>
+  </ul>
+
+  <p>The JAXP TransformerFactory can be queried at runtime to discover what
+  features it supports. For example, an application might want to know if a
+  particular factory implementation supports the use of SAX events as a source,
+  or whether it can write out transformation results as a DOM. The factory API
+  queries with the getFeature() method. In the above code, we could add the
+  following code before the try-catch block:</p>
+<blockquote class="source">
+<pre>
+    if (!factory.getFeature(StreamSource.FEATURE) || !factory.getFeature(StreamResult.FEATURE)) {
+        System.err.println("Stream Source/Result not supported by TransformerFactory\nExiting....");
+        System.exit(1);
+    }</pre>
+</blockquote>
+
+  <p>Other elements in the TrAX API are configurable. A Transformer object can
+  be passed settings that override the default output settings and the settings
+  defined in the stylesheet for indentation, output document type, etc.</p>
+
+  
+
+  
+
+  <a name="design">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC TrAX architecture</h3>
+
+  <p>XSLTC's architecture fits nicely in behind the TrAX interface. XSLTC's
+  compiler is put behind the <code>TransformerFactory</code> interface, the
+  translet class definition (either as a set of in-memory
+  <code>Class</code> objects or as a two-dimmensional array of bytecodes on
+  disk) is encapsulated in the <code>Templates</code> implementation and the
+  instanciated translet object is wrapped inside the <code>Transformer</code>
+  implementation. Figure 1 (below) shows this two-layered TrAX architecture:
+  </p>
+  
+  <p>
+<img src="trax_translet_wrapping.gif" alt="TransletWrapping" />
+</p>
+  <p>
+<b>
+<i>Figure 1: Translet class definitions are wrapped inside Templates objects</i>
+</b>
+</p>
+
+  <p>The <code>TransformerFactory</code> implementation also implements the
+  <code>SAXTransformerFactory</code> and <code>ErrorListener</code>
+  interfaces from the TrAX API.</p>
+
+  <p>The TrAX implementation has intentionally been kept completely separate
+  from the XSLTC native code. This prevents users of XSLTC's native API from
+  having to include the TrAX code in an application. All the code that makes
+  up our TrAX implementation resides in this package:</p>
+<blockquote class="source">
+<pre>
+    org.apache.xalan.xsltc.trax</pre>
+</blockquote>
+
+  <p>Message to all XSLTC developers: Keep it this way! Do not mix TrAX
+  and Native code!</p>
+
+  
+
+  
+
+  <a name="detailed_design">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>TrAX implementation details</h3>
+
+  <p>The main components of our TrAX implementation are:</p>
+
+  <ul>
+    <li>
+<a href="#transformer_factory">the TransformerFactory class</a>
+</li>
+    <li>
+<a href="#templates">the Templates class</a>
+</li>
+    <li>
+<a href="#transformer">the Transformer class</a>
+</li>
+    <li>
+<a href="#transformer">output properties handling</a>
+</li>
+  </ul>
+
+  <a name="factory_design">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>TransformerFactory implementation</h4>
+
+  <p>The methods that make up the basic <code>TransformerFactory</code>
+  iterface are: </p>
+<blockquote class="source">
+<pre>
+    public Templates newTemplates(Source source);
+    public Transformer newTransformer();
+    public ErrorListener getErrorListener();
+    public void setErrorListener(ErrorListener listener);
+    public Object getAttribute(String name);
+    public void setAttribute(String name, Object value);
+    public boolean getFeature(String name);
+    public URIResolver getURIResolver();
+    public void setURIResolver(URIResolver resolver);
+    public Source getAssociatedStylesheet(Source src, String media, String title, String charset);</pre>
+</blockquote>
+
+  <p>And for the <code>SAXTransformerFactory</code> interface:</p>
+<blockquote class="source">
+<pre>
+    public TemplatesHandler   newTemplatesHandler();
+    public TransformerHandler newTransformerHandler();
+    public TransformerHandler newTransformerHandler(Source src);
+    public TransformerHandler newTransformerHandler(Templates templates);
+    public XMLFilter newXMLFilter(Source src);
+    public XMLFilter newXMLFilter(Templates templates);</pre>
+</blockquote>
+
+  <p>And for the <code>ErrorListener</code> interface:</p>
+<blockquote class="source">
+<pre>
+    public void error(TransformerException exception);
+    public void fatalError(TransformerException exception);
+    public void warning(TransformerException exception);</pre>
+</blockquote>
+
+  <h5>TransformerFactory basics</h5>
+    <p>The very core of XSLTC TrAX support for XSLTC is the implementation of
+    the basic <code>TransformerFactory</code> interface. This factory class is
+    more or less a wrapper around the the XSLTC compiler and creates
+    <code>Templates</code> objects in which compiled translet classes can
+    reside. These <code>Templates</code> objects can then be used to create
+    <code>Transformer</code> objects. In cases where the
+    <code>Transformer</code>  is created directly by the factory we will use
+    the <code>Templates</code> class internally. In that way the transformation
+    will appear to be done in one step from the users point of view, while we
+    in reality use to steps. As described earler, this is not the best approach
+    when using XSLTC, as it causes the stylesheet to be compiled for each and
+    every transformation.</p>
+  
+
+  <h5>TransformerFactory attribute settings</h5>
+    <p>The <code>getAttribute()</code> and <code>setAttribute()</code> methods
+    only recognise two attributes: <code>translet-name</code> and
+    <code>debug</code>. The latter is obvious - it forces XSLTC to output debug
+    information (dumps the stack in the very unlikely case of a failure). The
+    <code>translet-name</code> attribute can be used to set the default class
+    name for any nameless translet classes that the factory creates. A nameless
+    translet will, for instance, be created when the factory compiles a translet
+    for the identity transformation. There is a default name,
+    <code>GregorSamsa</code>, for nameless translets, so there is no absolute
+    need to set this attribute. (Gregor Samsa is the main character from Kafka's
+    "Metamorphosis" - transformations, metamorphosis - I am sure you
+    see the connection.)</p>
+  
+
+  <h5>TransformerFactory stylesheet handling</h5>
+    <p>The compiler is can be passed a stylesheet through various methods in
+    the <code>TransformerFactory</code> interface. A stylesheet is passed in as
+    a <code>Source</code> object that containin either a DOM, a SAX parser or
+    a stream. The <code>getInputSource()</code> method handles all inputs and
+    converts them, if necessary, to SAX. The TrAX implementation contains an
+    adapter that will generate SAX events from a DOM, and this adapter is used
+    for DOM input. If the <code>Source</code> object contains a SAX parser, this
+    parser is just passed directly to the compiler. A SAX parse is instanciated
+    (using JAXP) if the <code>Source</code> object contains a stream.</p>
+  
+
+  <h5>TransformerFactory URI resolver</h5>
+    <p>A TransformerFactory needs a <code>URIResolver</code> to locate documents
+    that are referenced in <code>&lt;xsl:import&gt;</code> and
+    <code>&lt;xsl:include&gt;</code> elements. XSLTC has an internal interface
+    that shares the same purpose. This internal interface is implemented by the
+    <code>TransformerFactory</code>:</p>
+<blockquote class="source">
+<pre>
+    public InputSource loadSource(String href, String context, XSLTC xsltc);</pre>
+</blockquote>
+    <p>This method will simply use any defined <code>URIResolver</code> and
+    proxy the call on to the URI resolver's <code>resolve()</code> method. This
+    method returns a <code>Source</code> object, which is converted to SAX
+    events and passed back to the compiler.</p>
+  
+
+  
+
+  <a name="template_design">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Templates design</h4>
+
+  <h5>Templates creation</h5>
+    <p>The <code>TransformerFactory</code> implementation invokes the XSLTC
+    compiler to generate the translet class and auxiliary classes. These classes
+    are stored inside our <code>Templates</code> implementation in a manner
+    which allows the <code>Templates</code> object to be serialized. By making
+    it possible to store <code>Templates</code> on stable storage we allow the
+    TrAX user to store/cache translet class(es), thus making room for XSLTC's
+    one-compilation-multiple-transformations approach. This was done by giving
+    the <code>Templates</code> implementation an array of byte-arrays that
+    contain the bytecodes for the translet class and its auxiliary classes. When
+    the user first requests a <code>Transformer</code> instance from the
+    <code>Templates</code> object for the first time we create one or more
+    <code>Class</code> objects from these byte arrays. Note that this is done
+    only once as long as the <code>Template</code> object resides in memory. The
+    <code>Templates</code> object then invokes the JVM's class loader with the
+    class definition(s) to instanciate the translet class(es). The translet
+    objects are then wraped inside a <code>Transformer</code> object, which is
+    returned to the client code:</p>
+<blockquote class="source">
+<pre>
+
+    // Contains the name of the main translet class
+    private String   _transletName = null;
+
+    // Contains the actual class definition for the translet class and
+    // any auxiliary classes (representing node sort records, predicates, etc.)
+    private byte[][] _bytecodes = null;
+    
+    /**
+     * Defines the translet class and auxiliary classes.
+     * Returns a reference to the Class object that defines the main class
+     */
+    private Class defineTransletClasses() {
+	TransletClassLoader loader = getTransletClassLoader();
+
+	try {
+	    Class transletClass = null;
+	    final int classCount = _bytecodes.length;
+	    for (int i = 0; i &lt; classCount; i++) {
+		Class clazz = loader.defineClass(_bytecodes[i]);
+		if (clazz.getName().equals(_transletName))
+		    transletClass = clazz;
+	    }
+	    return transletClass; // Could still be 'null'
+	}
+	catch (ClassFormatError e) {
+	    return null;
+	}
+    }</pre>
+</blockquote>
+  
+
+  <h5>Translet class loader</h5>
+
+    <p>The <code>Templates</code> object will create the actual translet
+    <code>Class</code> object(s) the first time the
+    <code>newTransformer()</code> method is called. (The "first time" means the
+    first time either after the object was instanciated or the first time after
+    it has been read from storage using serialization.) These class(es) cannot
+    be created using the standard class loader since the method:</p>
+<blockquote class="source">
+<pre>
+    Class defineClass(String name, byte[] b, int off, int len);</pre>
+</blockquote>
+
+    <p>of the ClassLoader is protected. XSLTC uses its own class loader that
+    extends the standard class loader:</p>
+<blockquote class="source">
+<pre>
+    // Our own private class loader - builds Class definitions from bytecodes
+    private class TransletClassLoader extends ClassLoader {
+        public Class defineClass(byte[] b) {
+            return super.defineClass(null, b, 0, b.length);
+        }
+    }</pre>
+</blockquote>
+    <p>This class loader is instanciated inside a privileged code section:</p>
+<blockquote class="source">
+<pre>
+    TransletClassLoader loader = 
+        (TransletClassLoader) AccessController.doPrivileged(
+            new PrivilegedAction() {
+                public Object run() {
+                    return new TransletClassLoader();
+                }
+            }
+        );</pre>
+</blockquote>
+
+    <p>Then, when the newTransformer() method returns it passes back and
+    instance of XSLTC's <code>Transformer</code> implementation that contains
+    an instance of the main translet class. (One transformation may need several
+    Java classes - for sort-records, predicates, etc. - but there is always one
+    main translet class.)</p>
+
+  
+
+  <h5>Class loader security issues</h5>
+
+    <p>When XSLTC is placed inside a JAR-file in the
+    <code>$JAVA_HOME/jre/lib/ext</code> it is loaded by the extensions class
+    loader and not the default (bootstrap) class loader. The extensions class
+    loader does not look for class files/definitions in the user's
+    <code>CLASSPATH</code>. This can cause two problems: A) XSLTC does not find
+    classes for external Java functions, and B) XSLTC does not find translet or
+    auxiliary classes when used through the native API.</p>
+
+    <p>Both of these problems are caused by XSLTC internally calling the
+    <code>Class.forName()</code> method. This method will use the current class
+    loader to locate the desired class (be it an external Java class or a
+    translet/aux class). This is prevented by forcing XSLTC to use the bootstrap
+    class loader, as illustrated below:</p>
+
+    <p>
+<img src="class_loader.gif" alt="ClassLoader" />
+</p>
+    <p>
+<b>
+<i>Figure 2: Avoiding the extensions class loader</i>
+</b>
+</p>
+
+    <p>These are the steps that XSLTC will go through to load a class:</p>
+
+    <ol>
+      <li>the application requests an instance of the transformer factory </li>
+      <li>the Java extensions mechanism locates XSLTC as the transformer
+      factory implementation using the extensions class loader</li>
+      <li>the extensions class loader loads XSLTC</li>
+      <li>XSLTC's compiler attempts to get a reference to an external Java
+      class, but the call to Class.forName() fails, as the extensions class
+      loader does not use the user's class path</li>
+      <li>XSLTC attempts to get a reference to the bootstrap class loader, and
+      requests it to load the external class</li>
+      <li>the bootstrap class loader loads the requested class</li>
+    </ol>
+
+    <p>Step 5) is only allowed if XSLTC has special permissions. But, remember
+    that this problem only occurs when XSLTC is put in the
+    <code>$JAVA_HOME/jre/lib/ext</code> directory, where it is given all
+    permissions (by the default security file).</p>
+
+  
+
+  
+
+  <a name="transformer_design">‌</a>
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Transformer detailed design</h4>
+
+    <p>The <code>Transformer</code> class is a simple proxy that passes
+    transformation settings on to its translet instance before it invokes the
+    translet's <code>doTransform()</code> method. The <code>Transformer</code>'s
+    <code>transform()</code> method maps directly to the translet's
+    <code>doTransform()</code> method.</p>
+
+    <h5>Transformer input and output handling</h5>
+      <p>The <code>Transformer</code> handles its input in a manner similar to
+      that of the <code>TransformerFactory</code>. It has two methods for
+      creating standard SAX input and output handlers for its input and output
+      files:</p>
+<blockquote class="source">
+<pre>
+    private DOMImpl getDOM(Source source, int mask);
+    private ContentHandler getOutputHandler(Result result);</pre>
+</blockquote>
+
+      <p>One aspect of the <code>getDOM</code> method is that it handles four
+      various types of <code>Source</code> objects. In addition to the standard
+      DOM, SAX and stream types, it also handles an extended
+      <code>XSLTCSource</code> input type. This input type is a lightweight
+      wrapper from XSLTC's internal DOM-like input tree. This allows the user
+      to create a cache or pool of XSLTC's native input data structures
+      containing the input XML document. The <code>XSLTCSource</code> class
+      is located in:</p>
+<blockquote class="source">
+<pre>
+    org.apache.xalan.xsltc.trax.XSLTCSource</pre>
+</blockquote>
+    
+
+    <h5>Transformer parameter settings</h5>
+      <p>XSLTC's native interface has get/set methods for stylesheet parameters,
+      identical to those of the TrAX API. The parameter handling methods of
+      the <code>Transformer</code> implementation are pure proxies.</p>
+    
+
+    <h5>Transformer output settings</h5>
+      <p>The Transformer interface of TrAX has for methods for retrieving and
+      defining the transformation output document settings:</p>
+<blockquote class="source">
+<pre>
+    public Properties getOutputProperties();
+    public String getOutputProperty(String name);
+    public void setOutputProperties(Properties properties);
+    public void setOutputProperty(String name, String value);</pre>
+</blockquote>
+
+      <p>There are three levels of output settings. First there are the default
+      settings defined in the <a href="#">XSLT 1.0 spec</a>, then there
+      are the settings defined in the attributes of the &lt;xsl:output&gt;
+      element, and finally there are the settings passed in through the TrAX
+      get/setOutputProperty() methods.</p>
+
+      <p>
+<img src="trax_output_settings.gif" alt="Output settings" />
+</p>
+      <p>
+<b>
+<i>Figure 3: Passing output settings from TrAX to the translet</i>
+</b>
+</p>
+
+      <p>The AbstractTranslet class has a series of fields that contain the
+      default values for the output settings. The compiler/Output class will
+      compile code into the translet's constructor that updates these values
+      depending on the attributes in the &lt;xsl:output&gt; element. The
+      Transformer implementation keeps in instance of the java.util.Properties
+      class where it keeps all properties that are set by the
+      <code>setOutputProperty()</code> and the
+      <code>setOutputProperties()</code> methods. These settings are written to
+      the translet's output settings fields prior to initiating the
+      transformation.</p>
+
+    
+
+    <h5>Transformer URI resolver</h5>
+      <p>The <code>uriResolver()</code> method of the Transformer interface is
+      used to set a locator for documents referenced by the document() function
+      in XSL. The native XSLTC API has a defined interface for a DocumentCache.
+      The functionality provided by XSLTC's internal <code>DocumentCache</code>
+      interface is somewhat complimentary to the <code>URIResolver</code>, and
+      can be used side-by-side. To acomplish this we needed to find out in which
+      ways the translet can load an external document:</p>
+
+      <p>
+<img src="uri_resolver.gif" alt="URIResolver" />
+</p>
+      <p>
+<b>
+<i>Figure 4: Using URIResolver and DocumentCache objects</i>
+</b>
+</p>
+
+      <p>From the diagram we see that these three ways are:</p>
+      <ul>
+        <li>LoadDocument -&gt; .xml</li>
+        <li>LoadDocument -&gt; DocumentCache -&gt; .xml</li>
+        <li>LoadDocument -&gt; URIResolver -&gt; .xml</li>
+        <li>LoadDocument -&gt; DocumentCache -&gt; URIResolver -&gt; .xml</li>
+      </ul>
+
+    
+
+    
+  
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc/xsltc_trax_api.html b/xalan-j/xsltc/xsltc_trax_api.html
new file mode 100644
index 0000000..43a1a45
--- /dev/null
+++ b/xalan-j/xsltc/xsltc_trax_api.html
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC TrAX API</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">XSLTC Design</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC TrAX API</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="index.html">Overview</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_compiler.html">Compiler design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_whitespace_design.html">Whitespace</a>
+</li>
+<li>
+<a href="xsl_sort_design.html">xsl:sort</a>
+</li>
+<li>
+<a href="xsl_key_design.html">Keys</a>
+</li>
+<li>
+<a href="xsl_comment_design.html">Comment design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_lang_design.html">lang()</a>
+</li>
+<li>
+<a href="xsl_unparsed_design.html">Unparsed entities</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsl_if_design.html">If design</a>
+</li>
+<li>
+<a href="xsl_choose_design.html">Choose|When|Otherwise design</a>
+</li>
+<li>
+<a href="xsl_include_design.html">Include|Import design</a>
+</li>
+<li>
+<a href="xsl_variable_design.html">Variable|Param design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_runtime.html">Runtime</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_dom.html">Internal DOM</a>
+</li>
+<li>
+<a href="xsltc_namespace.html">Namespaces</a>
+</li></ul><hr /><ul>
+<li>
+<a href="xsltc_trax.html">Translet &amp; TrAX</a>
+</li>
+<li>
+<a href="xsltc_predicates.html">XPath Predicates</a>
+</li>
+<li>
+<a href="xsltc_iterators.html">Xsltc Iterators</a>
+</li>
+<li>
+<a href="xsltc_native_api.html">Xsltc Native API</a>
+</li>
+<li>Xsltc TrAX API<br />
+</li>
+<li>
+<a href="xsltc_performance.html">Performance Hints</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC TrAX API</h2>
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>The JAXP/TrAX API</h3>
+
+  <p>XSLTC is 100% compliant with the TrAX poriton of the
+  <a href="http://java.sun.com/xml/jaxp/index.html">JAXP API</a>. This
+  API is a standard extension to Java and there is not much point in describing
+  it in detail in this document.</p>
+
+  
+
+  <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC's extensions to JAXP/TrAX</h3>
+
+  <p>The <code>Source</code> and <code>Result</code> classes within TrAX are
+  used to handle input and output documents. These classes can be extended to
+  encapsulate additional input types. XSLTC's TrAX implementation contains an
+  extension to the <code>Source</code> class:</p>
+<blockquote class="source">
+<pre>
+    org.apache.xalan.xsltc.trax.XSLTCSource</pre>
+</blockquote>
+
+  <p>This extension class can be used to build XSLTC's internal
+  DOM and cache it for later usage. The following sample shows how to
+  use it with a <code>Transformer:</code>
+</p>
+<blockquote class="source">
+<pre>
+    public void run(String xmlfile, String xslfile) {
+
+          // Create an XSLTCSource for the input XML document
+          XSLTCSource source = new XSLTCSource(xmlfile);
+
+          // Build a StreamSource for the stylesheet
+          StreamSource stylesheet = new StreamSource(xslfile);
+
+          // Create a Transformer instance and process the input
+          Transformer transformer = factory.newTransformer(stylesheet);
+          transformer.transform(source, new StreamResult(System.out));
+	:
+	:
+    }</pre>
+</blockquote>
+
+  <p>If you do chose to implement a DOM cache, you should have your cache
+  implement the <code>javax.xml.transform.URIResolver</code> interface so
+  that documents loaded by the <code>document()</code> function are also read
+  from your cache.</p>
+
+  
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc_history.html b/xalan-j/xsltc_history.html
new file mode 100644
index 0000000..145e807
--- /dev/null
+++ b/xalan-j/xsltc_history.html
@@ -0,0 +1,18063 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: XSLTC software changes</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">XSLTC software changes</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>
+<a href="xsltc_usage.html">Using XSLTC</a>
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>XSLTC software changes</h2>
+<p>The following sections list <a href="xsltc_usage.html">XSLTC</a> changes back to the incorporation of XSLTC into Xalan-Java.</p>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.7.0</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java NodeSortRecordFactory.java SortSettings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Restored old constructor of NodeSortRecordFactory and _collator field of
+NodeSortRecord for binary compatibility.  These changes allow translets
+compiled with an earlier version of XSLTC to continue to run with the new
+version.  They should not be used in newly compiled translets or in new code
+in XSLTC itself.<br />
+
+Also introduced a SortSettings class that is used to bundle sort settings from
+NodeSortRecordFactory into instances of NodeSortRecord.  That reduces some of
+the space overhead in constructing a NodeSortRecord.<br />
+
+Reviewed by Igor Hersht (igorh@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom ForwardPositionIterator.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Revived ForwardPositionIterator class and BasisLibrary.positionF purely to
+support backwards compatibility with translets compiled with earlier versions
+of XSLTC.  New code should not reference either.<br />
+
+Reviewed by Christine Li (jycli@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/03/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeCounter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+xsl:number, minor code cleaning and optimization.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>bhakti@apache.org<b>
+<i> on </i>
+</b>2004/03/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Check if the systemId for the stylesheet is null to avoid getting an NPE.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/03/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Reverting latest patch by Arun. There are some problems with the new code to invoke functions dynamically (e.g. docbook 
+reports a compile-time type check error). The approach taken to determine when to invoke methods dynamically needs to be revisted.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2004/03/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bug 27417.  If an output stream is created by the XSLTC transformer, close
+it after the transformation.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/04/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ApplyImports.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for bugs 27932 and 15333.<br />
+
+Code was incorrectly calculating the set of templates to which an
+xsl:apply-imports instruction applies.  It should consider all templates that
+the current template rule could override, which means that if the template
+appeared in a stylesheet that was included in another stylesheet, any templates
+imported into the including stylesheet have to be considered as well.  The
+method Stylesheet.getMinimumDescendantPrecedence is responsible for this
+calculation.<br />
+
+In addition, when code is generated for an xsl:apply-imports, if any template
+has local parameters, an empty stack frame has to be pushed before attempting
+to apply-imports.  Otherwise, parameters from the template that contains the
+apply-imports instruction will be passed into the matching template.<br />
+
+Reviewed by Joanne Tong (joannet@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/04/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for bug 27932.<br />
+
+Code was incorrectly calculating the set of templates to which an
+xsl:apply-imports instruction applies.  It should consider all templates that
+the current template rule could override, which means that if the template
+appeared in a stylesheet that was included in another stylesheet, any templates
+imported into the including stylesheet have to be considered as well.  The
+method Stylesheet.getMinimumDescendantPrecedence is responsible for this
+calculation.<br />
+
+Reviewed by Joanne Tong (joannet@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>bhakti@apache.org<b>
+<i> on </i>
+</b>2004/05/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+In xsltc currently with the extension redirect the output file is created only if the parent dir exists. 
+Making the behaviour similar to that of xalan wherein the parent directory is also created.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/05/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 29120. The translet now stores a reference to the DocumentBuilderFactory which is used by 
+nodeList2Iterator() in the basis library. Note that to reuse that reference you need to use the same transformer 
+(not just the same template).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler AttributeValueTemplate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Implemented a new parser for ATVs. The old was buggy: did not handle escaped curly braces in all cases and did 
+not handled quotes at all. The old parser assumed that braces came in pairs, but it is possible to have an odd 
+number as in "{{{$foo}}}". The new parser seems to handle all cases correctly.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler LiteralAttribute.java LiteralElement.java Parser.java 
+SyntaxTreeNode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Modified code to ensure line number information is propagated from parent to children to ensure we get informative 
+error messages. This was particularly bad for errors in ATVs.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/05/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Improved patch for Bugzilla 29120 based on Matthias' suggestion. A DOMImplementation is now cached for even better performance.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/05/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Mode.java Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+If the local is set to Turkish, but the codepage is MS-DOS (US) 437. The BCEL
+InstructionFinder.search(String) method can not find any instructions contain
+letter I. In Turkish, there are 2 lower case i.  Since the search() method is case
+insensitive, change the pattern string to use lower case.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler LiteralElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla 29411. New algorithm shoudl optimize the way NS decls are reported for nested literal 
+elements. Note that the algorithm will not work accross non-literal elements. E.g., if there is an 
+xsl:element between two literal elements, the inner literal element may report unnecessary NS delcs. 
+This is just a simple way to ensure that any NS decls defined by the xsl:element instruction are re-defined 
+in the inner literal (see namespace39 in the conf tests).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed a problem with peephole optimization patterns. I don't know if something changed in BCEL since the 
+code was written, but the pattern syntax was not correct. I've also added a new common peephole pattern 
+which should reduce then inner loop's length in some Translets.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom KeyIndex.java xml-xalan/java/src/org/apache/xalan/xsltc/util 
+IntegerArray.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla Bug 28622.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/06/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CastExpr.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ObjectType.java StringType.java Type.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla 27539 and related problems. The main problem was that hashCode() was not implemented 
+correctly in ObjectType. To eleminate further problems I also removed Type.ObjectString as this type is the 
+same as Type.String and the latter can be used in place of the former.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>aruny@apache.org<b>
+<i> on </i>
+</b>2004/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Description: getNode should return the result DOM tree once TransformerHandler completes the transformation.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>aruny@apache.org<b>
+<i> on </i>
+</b>2004/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime 
+AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Description: Patch for the support of extension attribute "intent-amount" for xsl:output. Supports the old URI 
+{http://xml.apache.org/xslt} and new URI{http://xml.apache.org/xalan}.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>aruny@apache.org<b>
+<i> on </i>
+</b>2004/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Description: Patch for concatenating adjacent text nodes.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/07/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Submitted by:	Yash Talwar<br />
+Reviewed by:	Brian Minchau<br />
+Fix for bugzilla 28796.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/08/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc TransletException.java xml-xalan/java/src/org/apache/xalan/xsltc/cmdline 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/cmdline/getopt GetOptsException.java IllegalArgumentException.java 
+MissingOptArgException.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler CompilerException.java IllegalCharException.java 
+ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util MultiHashtable.java ObjectFactory.java StringStack.java 
+TypeCheckError.java xml-xalan/java/src/org/apache/xalan/xsltc/dom BitArray.java ObjectFactory.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime ObjectFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/trax 
+ObjectFactory.java TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added serialVersionUID for classes which implement Serializable interface. Patch created by Christine Li (jycli@ca.ibm.com) 
+and was reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/09/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Variable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Skip translation for any unreferenced variables. Patch reviewed by Christine Li (jycli@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/11/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CallTemplate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bug report XALANJ-1994.<br />
+
+The CallTemplate.getCalleeTemplate() method was searching through a Vector of
+all templates defined by the logical stylesheet, and picked out the first with
+the same name referenced by the current xsl:call-template instruction.  However,
+that failed to account for import precedence.  The SymbolTable.lookupTemplate
+method takes into account import precedence, and should be used instead.<br />
+
+Patch was reviewed by Christine Li (jycli@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/12/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java Operators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2003. Problem was unrelated to recursion, but simply a bug in the basis library. Swapping 
+operands requires swapping operators and the latter was not done. A workaround for this bug would be to 
+swap the operands (and operator) in the stylesheet (as that would not cause any swapping in the basis library).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/12/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2TO.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2015. Namespace declarations are now reported on a first pass to avoid the problem described in the bug report.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/12/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java Parser.java SyntaxTreeNode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-1761. Output properties from multiple xsl:output instructions are now correctly merged (previously, 
+only cdata-section-elements were handled correctly).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/12/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime Operators.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replaced meaningless numbers by predefined constants in swapArray[] vector.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>joannet@apache.org<b>
+<i> on </i>
+</b>2004/12/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Import.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed XALANJ-1812. Template inlining setting propagated to imported stylesheets.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2005/02/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Number.java xml-xalan/java/src/org/apache/xalan/xsltc/dom 
+AnyNodeCounter.java MultipleNodeCounter.java NodeCounter.java SingleNodeCounter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Implement Errata E24 for XSLTC, when the value attribute of xsl:number is NaN, infinite or less than 0.5. 
+More details please refer to bug report XALANJ-1979. Patch is reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/02/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ApplyImports.java 
+Mode.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ClassGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-1417.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/02/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Mode.java TestSeq.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util 
+MethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-2058. In the code, the problem is that a pattern gets compiled once, 
+and then this compiled pattern gets re-used whenever the pattern is
+needed in any method.
+The fix is that pattern should get compiled once per method.  So, pattern get reused only within a given method.
+for any new method, a pattern is recompiled.
+This fix has been reviewed by Henry Zongaro. Henry had also provided suggestions about the fix to resolve this issue.
+Thanks Henry for his valuable input.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/03/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xalan readme.xml resources.xml xsltc_usage.xml xml-xalan/java/xdocs/sources/xsltc 
+README.xslt README.xsltc<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-1937.  Change references in the docs from bugzilla to Apache Jira for reporting new issues and checking the 
+status of existing issues.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>ytalwar@apache.org<b>
+<i> on </i>
+</b>2005/03/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Text.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+This is a fix for XALANJ-2081.
+In class org.apache.xalan.xsltc.compiler.Text, a check was being done to find out if a given text string is all whitespaces.
+In case, a given text string is all whitespace, a call to serializer is not made.
+The code was using trim() method from java.lang.String.  trim() method trimmed characters as whitespaces 
+that are not considered as whitespace in XML.
+The code logic is changed to check if a given string is all whitespace accoding to XML specifications.
+I would like to thank Michael Glavassevich and Brian Minchau for their input to resolve this issue.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2005/04/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Clear XML reader for the case in which them main stylesheet is passed using a DOMSource. This fixes the problem 
+of trying to use a DOM2SAX reader for included/imported stylesheets that are resolved by user-defined URI resovers.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Put in the missing Transformer.reset() implementation when doing the JAXP 1.3 integration.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/trax SAX2DOM.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Support DOMResult.nextSibling in XSLTC. The nextSibling information is passed from TransformerImpl to TransletOutputHandlerFactory,
+then to SAX2DOM. If nextSibling is not null, SAX2DOM inserts the result nodes before it.
+Otherwise the result nodes are appended as the last children of the parent.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/05/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan Version.java xml-xalan/java/src/org/apache/xalan/processor 
+TransformerFactoryImpl.java xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java ErrorMsg.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/trax SmartTransformerFactoryImpl.java TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2123. Move hard-coded messages for JAXP 1.3 into resource bundles.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2005/06/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java Parser.java TransletOutput.java XSLTC.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java ErrorMessages.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java TemplatesImpl.java TransformerFactoryImpl.java 
+TransformerImpl.java TrAXFilter.java Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2136. Implement the secure processing feature for XSLTC. Extension functions
+and extension elements are disabled when this feature is set to true.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/06/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom KeyIndex.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XALANJ-1938.<br />
+
+A KeyIndex object contains a Hashtable mappings from key values to the
+IntegerArray objects that contain the set of nodes selected by those key values.
+For a reference to the key function, the lookupKey method finds the nodes
+selected by a particular key value, and the merge method merges all the nodes
+selected if more than one key value is specified for the one refernce to the key
+function.<br />
+
+The problem was that the lookupKey and merge methods operated on the "live"
+versions of the IntegerArrays stored in the mapping Hashtable, so that one
+reference to the key function might affect the result of subsequent references
+to the key function.  Changed those methods to make clones of the selected
+IntegerArray objects, which can be safely modified without affecting the
+original IntegerArrays.<br />
+
+This patch was reviewed by Joanne Tong (joannet@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/06/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bug XALANJ-2097 from Nick Van den Bleeken.
+(Nick.VandenBleeken@pandora.be), reviewed by Henry Zongaro.<br />
+
+The code generated for a path expression of the form $var/self::node() was
+incorrect.  It looked like the following, where "i" refers to the context node.<br />
+
+  new StepIterator(dtmaxisiterator1.cloneIterator(), new SingletonIterator(i));<br />
+
+That's incorrect, because the SingletonIterator will only return the node used
+upon its instantiation, rather than the node provided from the parent step
+expression by the StepIterator.<br />
+
+The SingletonIterator should only be used if the self::node() is not a step
+in a path expression.  In the case of a path expression, dom.getAxisIterator
+should be used to create the axis iterator instead.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/06/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler AbsoluteLocationPath.java FilteredAbsoluteLocationPath.java 
+FilterExpr.java FilterParentPath.java FunctionCall.java KeyCall.java ParentLocationPath.java Sort.java Step.java StepPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-2146.  Reviewed by Christine Li (jycli@ca.ibm.com).<br />
+
+Section 4.3.4 of the JVM specification prohibits an uninitialized object from
+appearing on the stack or in a local variable when a backwards branch is
+executed.  We need to guard against that in the generated code in XSLTC by
+storing arguments to constructors in temporary variables if there's any
+possibility that the code used to calculate such arguments might contain a
+backwards branch.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2005/07/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util 
+ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added missing apostrophe for error messages. Fixed bug report XALANJ-2167. Patch is reviewed by Sarah McNamara (mcnamara@ca.ibm.com)
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2005/07/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bug report XALANJ-2140.<br />
+
+The AbstractTranslet._keyIndexes field is used to record the sets of keys
+for a particular transformation by name.  This table was not cleared at the
+end of a transformation, so the keys from one transformation persisted to
+subsequent transformations.  Fixed this by adding a try-finally block in
+the AbstractTranslet.transform method and setting _keyIndexes to null in the
+finally block.<br />
+
+Reviewed by Brian Minchau (minchau@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/07/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Minor change in the error message,
+fix was found by Brian Vargas, patch produced and
+reviewed by Brian Minchau.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2005/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixing a NPE for when _locator is null in the XSLTC Parser.
+Applyin the patch in XALANJ-2154 from Brian Minchau, reiwed and approved by Santiago P.G.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor XSLProcessorVersion.java xml-xalan/java/src/org/apache/xalan/xslt 
+EnvironmentCheck.java xml-xalan/java/src/org/apache/xpath/domapi XPathEvaluatorImpl.java XPathExpressionImpl.java 
+XPathNSResolverImpl.java XPathResultImpl.java xml-xalan/java/src/org/apache/xml/serializer Version.src xml-xalan/java/xdocs/sources 
+entities.src xalan-jlocal.xml xalan-jsite.xml xml-xalan/java/xdocs/sources/xalan commandline_xsltc.xml commandline.xml downloads.xml 
+extensions.xml extensionslib.xml faq.xml features.xml getstarted.xml index.xml overview.xml public_apis.xml resources.xml samples.xml 
+trax.xml usagepatterns.xml whatsnew.xml xpath_apis.xml xsltc_usage.xml xml-xalan/java/xdocs/sources/xsltc README.xslt README.xsltc<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Doc changes for Xalan Java 2.7.0 release.
+This change was reviewed and approved in XALANJ-2170 by Christine Li.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>mcnamara@apache.org<b>
+<i> on </i>
+</b>2005/07/13<br />
+<b>
+<i>Modified: </i>
+</b> java/src/org/apache/xalan/xsltc/compiler xpath.lex<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XALANJ-1912.<br />
+Provided by Santiago Pericas-Geertsen<br />
+Reviewed by Yash Talwar.<br />
+<br />
+</li>
+
+</ul>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.6.0</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use translet as whitespace filter if it implements the StripFilter interface (This class should 
+probably be deprecated to avoid having to get it in sync with the Process class).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/processor StylesheetPIHandler.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla 24187 by Bhakti Mehta (Bhakti.Mehta@sun.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/11/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla 24188 by Bhakti Mehta (Bhakti.Mehta@sun.com). The runtime now attempts to resolve a reference when 
+the URI resolver returns null.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/11/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing patch for Bugzilla 24414 by Bhakti Mehta (Bhakti.Mehta@sun.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/11/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Param.java ParameterRef.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla 24518 by Mehta Bhakti (Mehta.Bhakti@sun.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/11/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java Util.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla 24695 by Bhakti Mehta (Bhakti.Mehta@sun.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/11/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java Util.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated patch for Bugzilla 24695 by Bhakti Metha. This patch gets an XMLReader from a SAXParserFactory if unable 
+to obtain one from an XMLReaderFactory.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/11/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java Stylesheet.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Morris Kwan (mkwan@ca.ibm.com), reviewed by myself:<br />
+<br />
+
+Split namesArray in translet into three arrays:  namesArray, urisArray and
+typesArray.<br />
+<br />
+
+Previously, entries in the namesArray had to be examined at run-time to
+distinguish those that represented elements, from those that represented
+attributes (prefixed by an '@'), and those that represented namespace node
+names (prefixed by a '?').  In addition, any namespace URI for the element or
+attribute was similarly stored in the namesArray entry.  So,
+"http://example.org:abc" and "http://example.org:@abc" respectively represented
+an element and an attribute named abc in the http://example.org namespace;
+"?abc" represented a namespace prefix of abc.<br />
+<br />
+
+With this change, the namesArray will have entries for "abc" in all three
+cases; the urisArray will contain entries for "http://example.org" for the
+element and attribute, and an empty string for the namespace prefix; and the
+typesArray will contain the value 1 for the element, 2 for the attribute and 13
+for the namespace (which correspond to the DTM constant values for those kinds
+of nodes).<br />
+<br />
+
+In addition, these values are stored in static arrays in the translet, and
+references to those arrays are copied to instance fields in the translet's
+constructor, rather than constructing arrays and initializing all their entries
+in the constructor each time.<br />
+<br />
+
+All this serves to reduce the overhead of initializing a transformation.<br />
+<br />
+
+
+Patch from myself, reviewed by Morris Kwan:<br />
+<br />
+
+Introduced a versioning mechanism in AbstractTranslet.  After constructing an
+object of a class that extends AbstractTranslet, the postInitialization method
+must be called.  That method will detect any versioning differences that can
+be resolved automatically, if a translet was compiled with an older version of
+the XSLTC than is being used at run-time.  The version number is stored in the
+translet's transletVersion field.<br />
+<br />
+
+In many cases, incompabilities run up against Java's binary compatibility
+rules, and fail catastrophically.  This versioning mechanism is designed to
+detect those cases that can't be detected by the JVM.  The first use of this
+mechanism is to translate from the old form of the namesArray used by old
+translets, to the new form expected by the modified version of the XSLTC
+run-time, as described above.<br />
+<br />
+
+In addition, if the translet version detected by the XSLTC run-time is more
+recent than any supported by the XSLTC run-time, an error will be reported.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/11/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime ErrorMessages.java xml-xalan/java/src/org/apache/xalan/xsltc/trax 
+TemplatesImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from myself, reviewed by Morris Kwan (mkwan@ca.ibm.com):<br />
+<br />
+
+Introduced a versioning mechanism in AbstractTranslet.  After constructing an
+object of a class that extends AbstractTranslet, the postInitialization method
+must be called.  That method will detect any versioning differences that can
+be resolved automatically, if a translet was compiled with an older version of
+the XSLTC than is being used at run-time.  The version number is stored in the
+translet's transletVersion field.<br />
+<br />
+
+In many cases, incompabilities run up against Java's binary compatibility
+rules, and fail catastrophically.  This versioning mechanism is designed to
+detect those cases that can't be detected by the JVM.  The first use of this
+mechanism is to translate from the old form of the namesArray used by old
+translets, to the new form expected by the modified version of the XSLTC
+run-time, as described above.<br />
+<br />
+
+In addition, if the translet version detected by the XSLTC run-time is more
+recent than any supported by the XSLTC run-time, an error will be reported.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOMEnhancedForDTM.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/dom DocumentCache.java DOMAdapter.java DOMWSFilter.java 
+KeyIndex.java LoadDocument.java SAXImpl.java XSLTCDTMManager.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime 
+AbstractTranslet.java BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changes to permit different DTM implementations to be supplied to XSLTC.<br />
+<br />
+
+Part of the change was to replace hard-coded references to SAXImpl with
+references to a new interface - DOMEnhancedForDTM.  This part of the change was
+supplied by Joseph Kesselman (keshlam@us.ibm.com).<br />
+<br />
+
+The other part of the change was to use ObjectFactory to look up a new XSLTC
+DTM Manager service provider (org.apache.xalan.xsltc.dom.XSLTCDTMManager).  The
+provider is looked up once when a TransformerFactory is created, and used by
+any Transformer objects created by that TransformerFactory.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java TransformerImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changes to permit different DTM implementations to be supplied to XSLTC.<br />
+<br />
+
+XSLTC will now use ObjectFactory to look up a new XSLTC DTM Manager service
+provider (org.apache.xalan.xsltc.dom.XSLTCDTMManager).  The provider is looked
+up once when a TransformerFactory is created, and used by any Transformer
+objects created by that TransformerFactory.<br />
+<br />
+
+Also, moved code for caching XMLReader objects from XSLTC's
+TransformerFactoryImpl to a new org.apache.xml.utils.XMLReaderManager class.<br />
+<br />
+
+It is now the responsibility of the DTMManagerDefault class to request one of
+these cached XMLReader objects, so the benefit of reusing an XMLReader is now
+conferred upon both XSLTC and Xalan-J Interpretive, as well as upon references
+to the document() function.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom ForwardPositionIterator.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added comments to describe the situation in which this iterator is used.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/12/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Creation of translet's class loader should be wrapped in a doPrivileged block (java.lang.RuntimePermission createClassLoader).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>rameshm@apache.org<b>
+<i> on </i>
+</b>2003/12/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/lib/sql SQLQueryParser.java xml-xalan/java/src/org/apache/xalan/processor 
+XSLProcessorVersion.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util Util.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime Constants.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Adding explicit final keyword to the intended constants which are defined with public static keywords. This will avoid the problem 
+of cross site java sandbox violation. In the case of xsltc/compiler/util/Util.java making the "filesep" variable to private to avoid 
+the  chance of somebody else   changing the value of this static variable.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xalan/xsltc/dom 
+DocumentCache.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Take advantage of DTM pluggability support for XSLTC.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/12/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The getDOM method might be entered more than once during a transformation, so
+the DTMManager that is created the first time in must be saved so that
+subsequent DTM's can be created with respect to it, and then discarded at the
+end of the transformation.<br />
+<br />
+
+This change restores logic that I had foolishly eliminated with my previous
+change to this file.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/12/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java BooleanCall.java CastExpr.java 
+CopyOf.java DocumentCall.java EqualityExpr.java Expression.java FilterExpr.java ForEach.java FunctionCall.java Key.java KeyCall.java 
+NameBase.java NumberCall.java RelationalExpr.java StringCall.java VariableBase.java WithParam.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for XSLTC's parameter optimization introduced in 2.5.2. The problem is that a param's default value can now be compiled multiple 
+times, once for every call to the template for which that param is not specified. This essentially turns the AST into a graph, 
+which requires the state of a param subtree to be reset after the each compilation. In particular, the variable Expression._startReset 
+was not reset and this resulted in calls to setStartNode() to be generated only the first time the param's default value was 
+compiled. After some analysis, I realized that _startReset was no longer necessary, so I removed it. I also renamed 
+Expression.startResetIterator() to Expression.startIterator() since calls to reset() are no longer generated within this method.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/12/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Setting the maximum fraction digits on a DecimalFormat object to Integer.MAX_VALUE causes problems in some JDKs. Since 
+only doubles need to be formatted, I've changed the code to set the maximum to 340. I've also optimized formatNumber(), 
+the new version uses setters on the DecimalFormat object instead of calling toPattern().<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/12/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util BooleanType.java IntType.java RealType.java ReferenceType.java 
+StringType.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Type conversions from internal to external Java types revisited: (1) Type.Int and Type.Real are now treated identically 
+given that the former is an optimization for the latter (i.e. their use should be transparent to the user) (2) Better support 
+Type.Reference, conversions to integral types are now supported. There are still some conversions that are supported by 
+Xalan and not by XSLTC. We need to either revisit the conversion table for XSLTC or document the differences.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/12/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CallTemplate.java Param.java ParameterRef.java 
+Template.java VariableBase.java WithParam.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util NamedMethodGenerator.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The parameter optimization implemented in 2.5.2 does not work in all cases. The problem (see Bugzilla 25449) is that a param's 
+default value needs to be compiled multiples when there are mulitple calls the a template none of which has a correspoding with-param. 
+However, ASTs store an internal state which is not restored after compilation; consequently, only the first compilation is 
+guaranteed to succeed. Stated differently, the AST cannot be operated as a graph because sub-tree sharing causes problems.<br />
+<br />
+
+The optimization has now been changed so that a param default value is compiled only once by the callee instead of multiple 
+times by each caller. A caller will now pass 'null' when there is no with-param; a callee will only initialize a param if 
+its value is 'null'. This ensures that default values are compiled exactly once while at the same time preserving the XSLT semantics.
+<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/01/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+SAXImpl.startDocument was calling SAX2DTM.startDocument followed by
+SAX2DTM.startPrefixMapping for the xml prefix.  However, the
+SAX2DTM.startElement always ensures the xml prefix is declared for the first
+element.  The effect of the startPrefixMapping call was to create two namespace
+nodes on the first element declaring the xml prefix.  This had no discernible
+consequence, except to throw off the numbering of subsequent nodes with the
+generate-id() function.<br />
+<br />
+
+I've eliminated the redundant call to startPrefixMapping, and adjusted the gold
+test output files for the generate-id function.<br />
+<br />
+
+Reviewed by Christine Li (jycli@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/01/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DupFilterIterator.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 25924 by Bhakti Mehta (Bhakti.Mehta@sun.com). Variable _lastNext must be preserved in setMark() and 
+restored in gotoMark().<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/01/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java ForEach.java ForwardPositionExpr.java 
+PositionCall.java xml-xalan/java/src/org/apache/xalan/xsltc/dom ForwardPositionIterator.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing a patch from Bhakti Mehta (Bhakti.Mehta@sun.com). ForwardPositionIterators and ForwardPositionExprs are not 
+needed anymore after the intergration with DTM. Despite that, ForwardPositionIterators were still being used even though 
+they did not provide any additional functionally (they were basically identity iterators). This patch eliminates the need 
+for these iterators (and the corresponding compile-time expressions) and also replaces calls to BasisLibrary.positionF() 
+with calls to currentIterator.getPosition(). The resulting code should be smaller and faster.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/01/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Removing unused constant.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/01/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util NodeSetType.java ResultTreeType.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLT-&gt;Java and Java-&gt;XSLT conversion table revisited. I made sure that two internal types corresponding to the same 
+XSLT type had identical conversion rules (e.g. IntType and RealType). The multi-step conversions NodeSetType-&gt;int and 
+ResultTreeType-&gt;double have been eliminated in order to simplify the table (they can always by implemented externally). 
+The resulting conversion table is still not identical to the interpreter (and perhaps it will never be) so it should be 
+documented separately.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 23046.
+
+For included stylesheet, set the _numberFormattingUsed flag to true
+for its including stylesheet too.<br />
+<br />
+
+Reviewed by Henry Zongaro (zongaro@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/02/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FilterExpr.java Predicate.java Step.java StepPattern.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla 19194. I've made the following changes: (i) re-wrote Predicate.typeCheck() (ii) the predicate optimizations are 
+turned off for FilterExpr, as they don't apply in all cases (iii) sync up Step, StepPattern and FilterExpr to accomodate the new 
+changes. The interaction between these classes is non-trivial, and the code for some optimizations is brittle, to say the least. 
+As part of this patch, I rolled back a patch to FilterExpr and fixed Bugzilla 25783 which wasn't really related despite what the 
+bug report states. For the 2.0 work, it would be nice to place optimization code in separate classes so that it can be easily 
+maintained and also easily deactivated via a command-line flag.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xpath/functions FuncRound.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler 
+RoundCall.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 24111.
+
+The string values for both positive and nagative zero are 0. However,
+a number div 0 returns Infinity, a number div -0 returns -Infinity.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/02/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 24788. NodeValue optimization was too optimistic. Since the value in 'step = value' is not 
+compiled in the predicate's context, it must be limited to expressions that are context independent, but this 
+was not the case as the example in 24788 shows.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2004/02/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2TO.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing patch by Bhakti for XSLTC. If attributes are created without an explicit prefix, then NamespaceMappings.generateNextPrefix 
+will be called to generate a prefix. Also if elements are created using createElementNS(null,localname) then they will be 
+serialized properly without being in default namespace.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+A slightly faster implementation of round function.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a bug introduced during optimizing for the previous code
+Should check for NaN cases.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2004/02/16<br />
+<b>
+<i>Modified: </i>
+</b> Most files in the Xalan Java cvs repository (too many to list)<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New Apache 2.0 license update.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/02/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom AdaptiveResultTreeImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla Bugs 24793.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>bhakti@apache.org<b>
+<i> on </i>
+</b>2004/02/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2TO.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for the bug in DOM2TO where there was a call to _handler.addAttribute
+which was moved to the if clause and hence attributes in no namespace were
+lost when using an identity transformation with DOMSource.<br />
+<br />
+
+Thanks to Henry Z. for pointing it out and Santiago for reviewing.  I have tested it locally. Please let me 
+know if you see any issues with this.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla bug report 26697
+
+XSLTC supports convert a NodeList to an internal DOM iterator.
+Use setAttributeNS method to copy attribute node when an attribute
+has a prefix, which maps to a namespace URI<br />
+<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>jycli@apache.org<b>
+<i> on </i>
+</b>2004/02/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Always use setAttributeNS() method and pass null as its namespace for non-namespaced nodes.
+Thanks Joe Kesselman for pointing it out.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>aruny@apache.org<b>
+<i> on </i>
+</b>2004/02/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java FunctionCall.java Param.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ReferenceType.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime 
+CallFunction.java ObjectFactory.java SecuritySupport.java SecuritySupport12.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Description : Adding the basic functionality for resolving external function dynamically. If static resolution fails then 
+Dynamic resolution is used as last resort.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2004/02/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/res XSLTErrorResources.java xml-xalan/java/src/org/apache/xalan/transformer 
+TransformerIdentityImpl.java TransformerImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util 
+ErrorMsg.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 25368 submitted by Joanne Tong.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CallTemplate.java VariableBase.java WithParam.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla bug reports 24988 and 25368 from Joanne Tong
+(joannet@ca.ibm.com) reviewed by myself.<br />
+<br />
+
+24988:
+Changes required to test whether an attribute value that is required to be
+a QName, NCName or whitespace-separated list of QNames actually meets that
+requirement.<br />
+<br />
+
+25368:
+Code was basing variable and parameter names on the local part of the name,
+rather than including the namespace URI in the name.  This resulted in
+collisions in the generated code between distinct variables that had the same
+local-name.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Number.java Predicate.java Sort.java Variable.java 
+VariableRef.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla bug report 25368 from Joanne Tong (joannet@ca.ibm.com)
+reviewed by myself.<br />
+<br />
+
+Code was basing variable and parameter names on the local part of the name,
+rather than including the namespace URI in the name.  This resulted in
+collisions in the generated code between distinct variables that had the same
+local-name.<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Part of fix for bug report 24985.  The code that resulted for a NodeTest of
+the form "@p:*" or "attribute::p:*" was identical to that for "@*" - in other
+words, the prefix was not being tested.  Fixed this so that
+DOM.getNamespaceAxisIterator is used to create the right kind of iterator.<br />
+<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com).<br />
+<br />
+</li>
+
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2004/02/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java<br />
+<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Part of fix for bug reports 24985 and 24365.<br />
+<br />
+
+Moved the NamespaceChildrenIterator and NamespaceAttributeIterator classes into
+this class from SAX2DTM2, where they can use fields specific to SAXImpl to
+refer to namespace information.<br />
+<br />
+
+Also added a new NamespaceWildcardIterator that handles axes other than the
+child and attribute axes (which are handled by the specific iterators already
+mentioned).<br />
+<br />
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com).<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.5.2</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Expression.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 20685. In startResetIterator(), check see if the
+expression wrapped by the CastExpr is a VariableRef. If so, don't
+generate a call to setStartNode.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix a minor bug in MultiDOM.addDOMAdapter().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOMCache.java xml-xalan/java/src/org/apache/xalan/xsltc/dom 
+DocumentCache.java LoadDocument.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #15828.
+Arguments to URIResolver.resolve method for document function, in XSLTC are now
+href: argument passed to document function
+base: URI of stylesheet<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Putting back LoadDocument.java<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #15828.
+Arguments to URIResolver.resolve method for document function, in XSLTC are now
+href: argument passed to document function
+base: URI of stylesheet<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Putting back TransformerImpl<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #15828.
+Arguments to URIResolver.resolve method for document function, in XSLTC are now
+href: argument passed to document function
+base: URI of stylesheet<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added SAXTransformerFactory.FEATURE and SAXTransformerFactory.FEATURE_XMLFILTER
+to the list of features that are implemented.  Fix for bug 20795.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOM.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler SyntaxTreeNode.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java MultiDOM.java SAXImpl.java SimpleResultTreeImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Performance improvement for XSLTC
+Don't add a simple or adaptive RTF to the DTMManager if the nodeset
+extension is not used. The DOMAdapters are also not created in
+this case. This is a noticeable improvement for stylesheets that use
+many small RTFs but do not use the nodeset extension.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CallTemplate.java Mode.java Param.java Template.java WithParam.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util NamedMethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Performance improvement for XSLTC
+
+New codegen solution for parameter passing in named templates,
+which provides significant improvement for stylesheets that use
+xsl:call-template and xsl:with-param heavily.
+
+The old solution generates code to call Translet.addParameter(),
+which seems to be too expensive. In the new solution, parameters
+are passed to named templates via method arguments. The method
+signature for a named template is not fixed. It depends on the number
+of parameters declared in the template.
+
+The caller (xsl:call-template) is responsible for generating the
+correct parameter list and passes it to the called template. This is
+done in the CallTemplate class, which finds out the corresponding
+called template and processes its own xsl:with-param children together
+with the xsl:params in the called template to generate an effective
+parameter list. In the case where a xsl:param references another xsl:param,
+local variables are generated to hold the temporary parameter value.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #15828.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TrAXFilter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add a "public Transformer getTransformer()" method to XSLTC's TrAXFilter class.
+The Xalan TrAXFilter class already has such an interface.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java XSLTCSource.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for XSLTCSource (see bugzilla 21048).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/xdocs/sources/xsltc xsltc_trax_api.xml<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update documentation about how to use XSLTCSource.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java VariableBase.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/dom CachedNodeListIterator.java ClonedNodeListIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Performance improvement for XSLTC
+
+Introduce two new iterators (CachedNodeListIterator and CloneNodeListIterator).
+They are used by variable/param references that are evaluated to nodesets.
+CachedNodeListIterator traverses the underlying iterator once and caches the
+nodes in an IntegerArray. Its clone() method returns an object of
+CloneNodeListIterator, which also retrieves nodes from the cache.
+
+This mostly improves the case where a variable is referenced multiple times
+in a context. In the old code, the iterator for the variable is traversed
+as many times as the variable is referenced. Using the cached iterators,
+the iterator is only traversed once. All later references retrieve nodes
+from the cache.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java MultiDOM.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java xml-xalan/java/src/org/apache/xalan/xsltc/trax 
+TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Implement a feature to cache the DTM for the stylesheet in
+the Templates object. This improves the case where document('')
+is used. In this case the DTM for the stylesheet is only built
+once per thread. It can be reused by multiple transformers
+created by the sample Templates.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/06/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Christine Li (jycli@ca.ibm.com) for bugzilla 20913, with
+modifications. In UnionIterator, after calling the getLast() method, the
+heap is not restored properly. Recreate the heap in gotoMark(), as well
+as restore _returnedLast and _heapSize.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DocumentCache.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Put back DocumentCache<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java xml-xalan/java/src/org/apache/xalan/xsltc 
+DOMCache.java xml-xalan/java/src/org/apache/xalan/xsltc/dom DocumentCache.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Update the DocumentCache class to be compatible with the DOMCache 
+interface.  Although, with the native interface no longer supported, users
+should not be using the DocumentCache.  Instead they should set a 
+URIResolver on the Transformer in order to resolve arguments
+passed to the document function.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/06/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for 3 trax.localPath failures.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/07/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a memory leak problem with the DTMManager.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/07/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CallTemplate.java Stylesheet.java Template.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a few conformance regressions introduced by the addParameter
+optimization work.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/07/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/util IntegerArray.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 20074. Don't create an IntegerArray of size 0.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/07/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java ErrorMsg.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC: TransformerHandler.setResult should throw an IllegalArgumentException
+when the result argument is null.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/07/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util MethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bug 20256. Remove an unused reference to an
+inexistent class.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/07/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Import.java Include.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for bugzilla #20537.  
+When URIResolver was set for includes/imports, the system id of the included/imported
+files was not always set correctly.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/07/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch from Igor Hersht (igorh@ca.ibm.com) for Bugzilla bug 18821.
+At some point in the recent past, Predicate started trying to optimize filter
+expressions with positional predicates, but the receiving code in FilterExpr
+was always incorrect.  The fixes to FilterExpr and related code aren't so
+straightforward, so the easiest thing to do for now is to disable the
+broken optimization for FilterExpr objects.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/07/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch from Igor Hersht (igorh@ca.ibm.com) for Bugzilla bug 18821.
+Nested iterators in UnionIterator weren't correctly handling multiple calls to
+setStartNode in generated code.  Fixed by ignoring calls after the first.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/07/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler LiteralElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 20832. Also fix testcase attribset19.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/07/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 21805.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added code to create static char[] fields in the translet containing the
+literal text in the source stylesheet.  The code generation for xsl:comment and
+for literal text that constructs text nodes takes advantage of this by using
+the serializer's comment(char[],int,int) and characters(char[],int,int) methods,
+respectively, rather than the comment(String) and characters(String) methods.
+The former pair of methods avoid some potential overhead in the serializer from
+copying the contents of strings to char[] objects.
+
+Code that creates a static initializer method in a translet was written by
+Morris Kwan (mkwan@ca.ibm.com).
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Comment.java Constants.java Text.java XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added code to create static char[] fields in the translet containing the
+literal text in the source stylesheet.  The code generation for xsl:comment and
+for literal text that constructs text nodes takes advantage of this by using
+the serializer's comment(char[],int,int) and characters(char[],int,int) methods,
+respectively, rather than the comment(String) and characters(String) methods.
+The former pair of methods avoid some potential overhead in the serializer from
+copying the contents of strings to char[] objects.
+
+Reviewed by Morris Kwan (mkwan@ca.ibm.com)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>grchiu@apache.org<b>
+<i> on </i>
+</b>2003/08/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Bruno Dumon (bruno@outerthought.org) for bugzilla 20114.
+When using XSLTC's TemplatesHandler to create templates, errors are never
+reported; getTemplates() just returns null.
+Changed behaviour to be inline with Xalan behaviour: stylesheets are
+compiled in the endDocument() event and a SAXException wrapping the real
+exception is thrown.<br />
+<br />
+</li>
+\<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/08/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler AttributeSet.java Constants.java 
+UseAttributeSets.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util AttributeSetMethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 19918<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix bytecode generation problem for extension method calls via
+interfaces for bugzilla 22115.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler LiteralElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 19972	
+Submitted by:	William Lee (william.lee@cognos.com)
+Reviewed by:	Brian Minchau and Gordon Chui
+
+The code loops over elements in a Vector, incrementing the index j.
+Some elements should not be processed so they were removed from the Vector.
+The removal of element "j" shifted all higher elements down and made the
+Vector 1 shorter.  So removal of an element and incrementing "j" actually caused
+elements to be skipped.
+
+It is not quite clear why the element is being removed from the Vector rather
+than just skipped over. For safety sake an iteration over the loop either removes an
+element, or increments "j", but not both in the same iteration.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for bug 19973 from Christine Li (jycli@ca.ibm.com).
+A call to buildKeys (for xsl:key) should be generated before a call to topLevel
+(to handle top-level variable and parameter declarations) because top-level
+variables and parameters can contain references to the key() function, but not
+the other way around.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/09/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler VariableRefBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applied patch for bug 22769 from Christine Li (jycli@ca.ibm.com).  If a
+variable reference occurs inside the definition of another variable, XSLTC adds
+a dependency link upon the referenced variable to the defined variable.
+However, if the referenced variable was overrode by another variable definition
+with higher import precendence, the dependency should be placed on the
+overriding variable instead.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/09/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/trax Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Moved return statements outside of finally block. The compiler correctly points out that when an exception is not caught by a catch, the 
+finally block cannot return normally.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Ensure we set a non-empty name for the translet even when one cannot be obtained from the systemId.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CallTemplate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem in XSLT parameter optimization. The search for the template being called should start from the top-level stylesheet. 
+The incorrect signature was generated when xsl:template and xsl:call-template were located in different stylesheets.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+(Committing this again to get the log message right! - c.f. revision 1.54)
+1. Added Javadoc comments to instance variables.
+2. getAllValidTemplates() now caches result in top-level stylesheet.
+3. setSystemId() maps a file system path to a URI (if needed).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Import.java Include.java xml-xalan/java/src/org/apache/xalan/xsltc/dom 
+SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+1. New code to map relative paths to URIs in Include.java and Import.java.
+2. If SourceLoader returns null, the JAXP API states that the processor
+should attempt to resolve the reference. Changed the logic to do this.
+(1 and 2 should solve some of the problems we have resolving relative
+paths and also using URI resolvers. More testing is needed, though).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CastCall.java Parser.java xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Adding a new extension function for XSLTC. Using this extension function, it is
+possible to recover type information lost by the use of xsl:param (see Bugzilla
+19038). Here is an example:
+
+&lt;xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:java="http://xml.apache.org/xalan/java"
+    xmlns:xsltc="http://xml.apache.org/xalan/xsltc"&gt;
+
+&lt;xsl:param name="object"/&gt;
+
+&lt;xsl:template match="/"&gt;
+    &lt;xsl:value-of select="java:length(xsltc:cast('java.lang.String', $object))"/&gt;
+&lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;
+
+Without using xsltc:cast(), XSLTC will report an error as the type of param
+'object' cannot be determined statically. The type of xsltc:cast() is:
+
+object[T] cast('T', reference | object[R])
+
+where 'T' indicates that the type of the first argument must be a literal
+string. A ClassCastException may be thrown at runtime if R is not convertible
+to T.
+
+I believe we still need a fully-dynamic solution that does not rely on this
+extension function. However, the two solutions can coexists, especially since
+using xsltc:cast() will always be more efficient than any alternative based
+on Java reflection.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>igorh@apache.org<b>
+<i> on </i>
+</b>2003/10/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler xpath.cup XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/dom 
+DOMAdapter.java SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch for Bugzilla Bug 14607<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix the makeNode and makeNodeList methods in SAXImpl for bugzilla 23115.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Sort.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Apply the patch for bugzilla 23271 from Bruno Fernandez-Ruiz (brunofr@olympum.com).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 15901
+Submitted by:	Brian Minchau
+Reviewed by:	John Meyer (bug reporter)
+
+XSLTC now uses properties from the serializer's factory rather than
+setting its own defaults. This makes XSLTC's default serialializer 
+properties (indentation, entity file ... ) the same as Xalan-J.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>minchau@apache.org<b>
+<i> on </i>
+</b>2003/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler BinOpExpr.java LogicalExpr.java Predicate.java 
+RelationalExpr.java UnaryOpExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+PR: bugzilla 15327	
+Submitted by:	Christine Li
+Reviewed by:	Brian Minchau
+Fix for XSLTC problems with [last()] and [last()-1] predicates.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Import.java 
+Include.java Stylesheet.java xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replace ad-hoc code to resolve relative URIs by calls to the xml.utils.SystemIDResolver 
+class. This change fixes a few a regressions and also simplifies the code in XSLTC.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CastCall.java 
+CastExpr.java FunctionCall.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util 
+ObjectType.java StringType.java Type.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Allow conversion between types 'string' and 'object[java.lang.String]'.
+Conversion is trivial as instances of both types have the same runtime
+representation. This was needed in order to write expressions such
+as,
+    string:new(xsltc:cast('java.lang.String', $object))
+where 'object' is a param bound to a value of type 'java.lang.String'.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/10/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/transformer 
+TransformerIdentityImpl.java TransformerImpl.java 
+xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Patch from Christine Li (jycli@ca.ibm.com) for Bugzilla bug report 22167.
+When the zero-argument constructor of DOMSource, StreamSource or SAXSource is
+invoked, and no setter method is called to specify an actual source, the
+source should be treated as if it contained only a root node.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Check for null before setting DTM base URI.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for regression in Resolve002 TCK.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java 
+UnsupportedElement.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime 
+BasisLibrary.java ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Apply Joanne Tong (joannet@ca.ibm.com) patch for bugzilla 23706,
+with my own modifications. I also fixed bug 23896 in the same
+patch.
+
+This patch includes the fixes for the following:
+1. an unsupported XSL element will trigger a syntax error in 1.0 mode.
+2. In forward-compatibility mode, if an unsupported XSL element is in
+a template, has no fallback, it will trigger a runtime error if it is
+instantiated.
+3. All fallback children are called in sequence. The old code only makes
+use of the first fallback child.
+4. Only direct fallback children are processed. The old code finds the fallback
+from all descendants of an unsupported element, which is wrong behavior
+according to the spec.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing path for bugzilla 22438 from Bhakti Mehta (Bhakti.Mehta@sun.com). This patch 
+fixes serialization problems of Templates objects in XSLTC. A user-defined URIResolver 
+associated to a Templates object is also serialized whenever possible (i.e. if it is also 
+serializable).<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.5.1</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/04/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler DocumentCall.java xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patches from Igor Hersht (igorh@ca.ibm.com) for bug 15200 and
+bug 18585.
+
+Fixed up code that processes the document function when it has two arguments,
+the second of which must be a node-set; the code didn't always resolve the
+value of the first argument against the first node in the second argument, as it
+should have.
+
+In addition, in order to simplify run-time processing, added a new
+LoadDocument.documentF method that is used when the second argument to the XSLT
+document function is present; if that argument is an empty node-set, the result
+of the document function should be an empty node-set, and that logic is much
+easier to code in the run-time than via generated code.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/04/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+ Set SourceLocator in stylesheet instead of XSLTC object. This ensures
+ proper use of user-defined URIResolvers in a TemplatesHandler.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/04/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+ Output properties were not properly cleared when reusing the same instance
+ of a TemplatesHandlerImpl. The top-level stylesheet in the XSLTC object
+ referenced by TemplatesHandlerImpl (indirectly via an instance of Parser)
+ was not reset after the first use of the instance.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/05/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a multithread safety issue in the use-classpath option. The old code
+reuses a Translet object for all newTransformer() calls, which is not the
+right thing to do. We should pass in a Class array and let TemplateImpl
+create a new Translet instance for each newTransformer() call.
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.5.0</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/02/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java Message.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+ New implementation of xsl:message that does not use RTFs. Using RTFs
+ is both slow and problematic since the number of RTFs that can be
+ created is limited in XSLTC.
+
+ The new implementation uses a StreamXMLOutput and a StringWriter to
+ output the template body as a string (in some cases, NS declarations
+ will be included and this behavior differs from the old implementation).
+ Additionally, the new implementation optimizes the case where the
+ message is empty and where the message is just a literal string.
+
+ The bug was reported by Mark Brunkhart (mark@matchanalysis.com).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/02/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOM.java xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java DOMImpl.java MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+ Removed the getTreeString() method from the DOM interface (as well as
+ from all the classes that implement this interface). This update will
+ require a sync with the XSLTC_DTM branch, but there was no point in
+ keeping this method when it's no longer used.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/02/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ReferenceType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+ Fix for Bugzilla 17447. Conversion from reference type to string type
+ assumed the existence of the "current" local variable, which is
+ unavailable at top-level.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement for xsl:copy-of. Instead of using the expensive getFirstAttribute()
+and getFirstNamespace() interfaces, increase the element id by 1 to iterate
+through all attribute and namespace nodes.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/02/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Minor cleanup to SAXImpl.copy() and copyElement(). Introduce a new interface
+handleTextEvents() to handle Text nodes more efficiently.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOM.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler SyntaxTreeNode.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ResultTreeType.java xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java DOMImpl.java MultiDOM.java SAXImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java xml-xalan/java/src/org/apache/xalan/xsltc/trax XSLTCSource.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+
+Design a new DOM model (SimpleResultTreeImpl) for simple result tree
+fragment (RTF). A simple RTF is an RTF which has only one Text node.
+It can be generated by a combination of Text, xsl:value-of and xsl:number
+instructions. It can also be generated by xsl:if or xsl:choose, as far
+as the content of the control body is pure Text. The code to detect whether
+an RTF is simple is in SyntaxTreeNode.isSimpleRTF().
+
+Before this change, an RTF is represented by a SAXImpl object. SAXImpl is
+a heavy-weight class in that it allocates a lot of array objects for storage.
+In the case where the RTF is only one Text node, creating a SAXImpl is just
+too expensive.
+
+A SimpleResultTreeImpl has only two nodes, i.e. the root node and the Text
+node. All DOM interfaces are overridden to handle this simplified model.
+SimpleResultTreeImpl has a few internal iterators, which is designed to support
+the nodeset() extension function.
+
+This change brings a significant improvement to stylesheets that create
+a lot of simple RTFs. Some testcases are more than 100% faster after the change.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SimpleResultTreeImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add a new class SimpleResultTreeImpl as the model for simple RTF.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom MultiDOM.java NodeSortRecord.java SAXImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamXMLOutput.java xml-xalan/java/src/org/apache/xalan/xsltc/util IntegerArray.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+
+A few small improvements. More space efficient version of IntegerArray.clone().
+Rearrange the condition checking in StreamXML(HTML)Output.escapeCharacters().
+Only create one default Collator instance in NodeSortRecord.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Small tweaks in DOMAdapter. Invoking a final method is generally faster than
+invoking a method via interface.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement in StreamOutput.escapeString(). Do not create the StringBuffer
+if there is nothing to escape.
+
+This change needs to be put back to the new serializer if it uses the same
+code.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime StringValueHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Use a more sophisticated algorithm in StringValueHandler.
+Do not create new Strings if there is only String value.
+Creating many new Strings is an expensive operation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a bug that causes id function testcases to fail in trax.sax flavor.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Set the namespace feature directly on the XMLReader. SAXParserFactory.setFeature()
+actually creates a temporary SAXParser to verify that feature. So we end up creating
+two SAXParsers per document() call in the old code.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom AdaptiveResultTreeImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+file AdaptiveResultTreeImpl.java was initially added on branch XSLTC_DTM.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOM.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler SyntaxTreeNode.java xml-xalan/java/src/org/apache/xalan/xsltc/dom AdaptiveResultTreeImpl.java DOMAdapter.java DOMImpl.java MultiDOM.java SAXImpl.java SimpleResultTreeImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+
+Design a light-weight DOM model (AdaptiveResultTreeImpl) for RTFs with xsl:call-template.
+
+AdaptiveResultTreeImpl is a adaptive DOM model for result tree fragments (RTF). It is
+used in the case where the RTF is likely to be pure text yet it can still be a DOM tree.
+It is designed for RTFs which have &lt;xsl:call-template&gt; or &lt;xsl:apply-templates&gt; in
+the contents. Example:
+
+    &lt;xsl:variable name = "x"&gt;
+      &lt;xsl:call-template name = "test"&gt;
+         &lt;xsl:with-param name="a" select="."/&gt;
+      &lt;/xsl:call-template&gt;
+    &lt;/xsl:variable&gt;
+
+In this example the result produced by &lt;xsl:call-template&gt; is likely to be a single
+Text node. But it can also be a DOM tree. This kind of RTF cannot be modelled by
+SimpleResultTreeImpl.
+
+AdaptiveResultTreeImpl can be considered as a smart switcher between SimpleResultTreeImpl
+and SAXImpl. It treats the RTF as simple Text and uses the SimpleResultTreeImpl model
+at the beginning. However, if it receives a call which indicates that this is a DOM tree
+(e.g. startElement), it will automatically transform itself into a wrapper around a
+SAXImpl. In this way we can have a light-weight model when the result only contains
+simple text, while at the same time it still works when the RTF is a DOM tree.
+
+All methods in this class are overridden to delegate the action to the wrapped SAXImpl object
+if it is non-null, or delegate the action to the SimpleResultTreeImpl if there is no
+wrapped SAXImpl.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Save the DTMManager in a field in MultiDOM. Don't compute it
+everytime in MultiDOM.getDTMId().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom MultiDOM.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime StringValueHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a bug which causes the docbook testcase to fail.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+Improvement in MultiDOM. Make the nodeHandle to DOMAdapter mapping a
+straight map. The code in getDTMId() is much light-weight than before,
+because the complicated stuff is moved to addDOMAdapter() which is only
+called once per DTM. In the case where the DTM id runs across several
+addressing range (the size of each range is 65536 - an unusal case),
+there will be several items in the adapter array for one DTM.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/03/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ProcessingInstructionPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for bug 15332 from Igor Hersht (igorh@ca.ibm.com).  Ensure that
+patterns of the form processing-instruction() and processing-instruction('name')
+are given the right priorities.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/03/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ProcessingInstructionPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for bug 15332 from Igor Hersht (igorh@ca.ibm.com).  Ensure that
+patterns of the form processing-instruction() and processing-instruction('name')
+are given the right priorities.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/03/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ProcessingInstructionPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Applying patch for bug 15332 from Igor Hersht (igorh@ca.ibm.com).  Ensure that
+patterns of the form processing-instruction() and processing-instruction('name')
+are given the right priorities.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java DOMWSFilter.java KeyIndex.java LoadDocument.java SAXImpl.java XSLTCDTMManager.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java BasisLibrary.java xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2SAX.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC_DTM performance work
+
+New solution for DOM input. Use SAXImpl + DOM2SAX to handle DOM
+input. This is the solution used in the old XSLTC. The DOMImpl
+class is completely deprecated. This solution is better
+than DOMImpl on top of DOM2DTM for the following reasons:
+
+1. DOM2DTM is known to be slow.
+2. DOM2DTM is an incremental model while DOMImpl is not.
+3. There are too much code duplication between DOMImpl and SAXImpl
+
+Under the new solution, any improvement to SAXImpl and SAX2DTM2 will
+also benefit the DOM case. There is no need to have separate optimizations
+for the DOM case.
+
+This solution is a little sophisticated than the old XSLTC solution in
+that we borrow some code from DOM2DTM (e.g. handling for id function
+and unparsed entity). The end result is that conformance in trax.dom
+is better than the old XSLTC.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/03/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util VoidType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+ Override definition of Type.POP() in VoidType to return NOP instead of POP.
+ If type is void, there's nothing to be popped. This problem shows up when
+ invoking an external Java function whose return type is void.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/03/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Import.java Include.java Parser.java SyntaxTreeNode.java XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages_no.java ErrorMessages.java ErrorMsg.java TypeCheckError.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java ErrorMessages_no.java ErrorMessages.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed XSLTC messages to extend ListResourceBundle, and use String keys to
+access messages.  Code used to extend ResourceBundle and used to use integer
+indices to access error messages.
+
+Changes from myself and Gordon Chiu (grchiu@uwaterloo.ca).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/03/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Import.java Include.java Parser.java SyntaxTreeNode.java XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages_no.java ErrorMessages.java ErrorMsg.java TypeCheckError.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java ErrorMessages_no.java ErrorMessages.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed XSLTC messages to extend ListResourceBundle, and use String keys to
+access messages.  Code used to extend ResourceBundle and used to use integer
+indices to access error messages.
+
+Changes from myself and Gordon Chiu (grchiu@uwaterloo.ca).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/03/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java DecimalFormatting.java Constants.java DecimalFormatting.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The generated code for xsl:decimal-format used the no argument constructor of
+DecimalFormatSymbols, which is affected by the default locale.  The default
+attribute values for xsl:decimal-format should not be affected by the default
+locale.  Instead, the en_US Locale should be passed to the constructor, as it
+has settings that are consistent with the defaults for xsl:decimal-format.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2003/03/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java DecimalFormatting.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The generated code for xsl:decimal-format used the no argument constructor of
+DecimalFormatSymbols, which is affected by the default locale.  The default
+attribute values for xsl:decimal-format should not be affected by the default
+locale.  Instead, the en_US Locale should be passed to the constructor, as it
+has settings that are consistent with the defaults for xsl:decimal-format.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/03/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XslAttribute.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+ Fix for Bugzilla 18162. Warnings are still reported if an occurrence of
+ xsl:attribute *may* result in a runtime error.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/03/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing patch by Arun Yadav (Arun.Yadav@sun.com) that fixes the problem
+of using "." or "-" as part of the name of a parameter (Bugzilla 15636).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/03/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler KeyCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing patch from Arun Yadav (arun.yadav@sun.com) for Bugzilla
+15830. Correct handling for id()/key() values of type result-tree.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/03/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+ New implementation for TemplatesHandlerImpl that does not extend
+ xsltc.compiler.Parser. The new implementation has a simpler init()
+ method. Also, instances of the new class can be re-used (previously,
+ there were problems with the output method when an instance was
+ used more than once).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/03/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Remove XSLTC's compile time dependency on Xalan.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+ New implementation of TemplatesHandlerImpl. Fixes output method problem
+ when reusing TemplatesHandler instances.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.xsltc.cmdline.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOM.java DOMCache.java NodeIterator.java Translet.java TransletOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.xsltc.
+
+1. Remove TransletOutputHandler.java
+2. Adapt the XSLTC interfaces to the DTM model.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/util IntegerArray.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.xsltc.util.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler AbsolutePathPattern.java AncestorPattern.java CastExpr.java Constants.java CopyOf.java DocumentCall.java ForEach.java GenerateIdCall.java IdKeyPattern.java Key.java KeyCall.java Message.java Mode.java NameBase.java NodeTest.java Output.java ParentLocationPath.java Predicate.java ProcessingInstructionPattern.java Step.java StepPattern.java Stylesheet.java SyntaxTreeNode.java UnionPathExpr.java UnparsedEntityUriCall.java ValueOf.java xpath.cup XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.xsltc.compiler.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util MethodGenerator.java NodeSetType.java ObjectType.java ReferenceType.java ResultTreeType.java TypeCheckError.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.xsltc.compiler.util.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2SAX.java DOM2TO.java SAX2TO.java TemplatesHandlerImpl.java TransformerHandlerImpl.java TransformerImpl.java XSLTCSource.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.xsltc.trax.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBase.java SAXHTMLOutput.java SAXOutput.java SAXTextOutput.java SAXXMLOutput.java StreamHTMLOutput.java StreamOutput.java StreamTextOutput.java StreamUnknownOutput.java StreamXMLOutput.java TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.xsltc.runtime.output
+Remove the output classes in XSLTC. XSLTC now uses the
+output classes in the common serializer.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java AttributeList.java BasisLibrary.java Constants.java DefaultSAXOutputHandler.java SAXAdapter.java StringValueHandler.java TextOutput.java TransletOutputBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Changes in org.apache.xalan.xsltc.runtime.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java AdaptiveResultTreeImpl.java AnyNodeCounter.java Axis.java BitArray.java CollatorFactoryBase.java CurrentNodeListFilter.java CurrentNodeListIterator.java DocumentCache.java DOMAdapter.java DOMBuilder.java DOMImpl.java DOMWSFilter.java DTDMonitor.java DupFilterIterator.java EmptyFilter.java ExtendedSAX.java Filter.java FilteredStepIterator.java FilterIterator.java ForwardPositionIterator.java KeyIndex.java LoadDocument.java MatchingIterator.java MultiDOM.java MultipleNodeCounter.java NodeCounter.java NodeIteratorBase.java NodeSortRecord.java NodeSortRecordFactory.java NthIterator.java SAXImpl.java SimpleResultTreeImpl.java SingleNodeCounter.java SingletonIterator.java SortingIterator.java StepIterator.java StripWhitespaceFilter.java UnionIterator.java XSLTCDTMManager.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Merging XSLTC_DTM and common serializer to the head
+Adapt all dom classes in org.apache.xalan.xsltc.dom to
+the DTM model.
+
+Removed DOMImpl, DTDMonitor.
+Added a few new classes for the new DOM model. The core
+DOM class is SAXImpl.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>ilene@apache.org<b>
+<i> on </i>
+</b>2003/04/02<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+If there is an error listener registered to a TransformerFactory, and the
+stylesheet cannot be compiled, call fatalError, in addition to throwing 
+the TransformerConfigurationException.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime StringValueHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+According to spec http://www.w3.org/1999/11/REC-xslt-19991116-errata/#E27,
+when element nodes are used in the instantiated content of attribute, comment
+and processing instructions, we should ignore the elements together with
+their content.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom AdaptiveResultTreeImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Need to override more startElement and endElement interfaces
+in AdaptiveResultTreeImpl, because it now extends EmptySerializer,
+which has a few more interfaces than the old TransletOutputHandler.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java SAXImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for a few testcase failures in XSLTC trax.localPath.
+
+Detect the backslash ("\") character in the path in addtional to the
+forward slash ('/') in LoadDocument.document().
+
+The XSLTC conformance result in trax.localPath changed from
+Pass: 1634/Fail: 14/Errr: 35 to Pass: 1657/Fail: 17/Errr: 9
+after this change.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 17448.
+Stylesheet.setIncludingStylesheet() should use _includedFrom
+instead of _importedFrom.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2003/04/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix another problem related to bug 17448.
+Only set the import precedence of an included stylesheet when it
+is directly included by this stylesheet. If it is indirectly
+included via imports, the import precedence will be different.
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.4.1</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Keep track of parameters for built-in identity transform (needed for
+some TCK tests).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java TrAXFilter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed XSLTCs implementation of XMLFilter
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TrAXFilter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added some check for parents of filter chain
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 12125.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler EqualityExpr.java RelationalExpr.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug 12148 fixed, xpath pred and relational expr
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/09/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Change committed on behalf of Igor Hersht: added -DIAG option similar to that
+supported by org.apache.xalan.xslt.Process class (for bug 12261).
+
+Also (on my own behalf) changed calculation of average transform time and
+throughput rate for -n option to use floating-point division, rather than
+integer division; latter yielded meaningless results.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBuffer.java StreamHTMLOutput.java StreamOutput.java StreamTextOutput.java StreamXMLOutput.java StringOutputBuffer.java WriterOutputBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New buffering system for stream output.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeCounter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Support for Greek alphabet in xsl:number.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output WriterOutputBuffer.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Set a larger buffer size for Solaris.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java SyntaxTreeNode.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ResultTreeType.java xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Set different initial sizes for DOMImpl arrays. The new values result
+in better performance for the average case.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler xpath.cup xml-xalan/java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Optimized evaluation of //RelativeLocationPath expressions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ObjectType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For XSLTC extension integration. Support creating ObjectType from a Class
+object. Add an additional field to store the Class.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util BooleanType.java IntType.java NodeSetType.java NodeType.java RealType.java ResultTreeType.java StringType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For XSLTC extension integration. Add more translation rules required by
+extensions. Specifically, all types can be translated to a generic Java Object.
+Numeric types can be translated to their corresponding Java types (e.g. Real to
+java.lang.Double). Node, NodeSet and ResultTree can be translated to a Java String.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Support the append attribute in the redirect/output extension.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For XSLTC extension integration. Implement the object-type extension
+function in the EXSLT commons package. Change the behavior of the
+nodeList2Iterator interface so that it will do a deep copy on the argument
+NodeList, i.e. if a Node in the NodeList is an Element, it will not only
+copy the Node itself, but also copy all children and attributes. This is
+required to get any extension function that returns a NodeList to work in
+XSLTC.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler TransletOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Support the append attribute in the output extension element, so that
+it behavior is more like redirect:write.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add a constant string for the redirect namespace.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CastExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For extension integration. Allow numeric types to be casted to
+Object type.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For extension integration. Add the objectType extension function to the
+Symbol Table. Maps the redirect:write element to the TransletOutPut class.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For extension integration. The nodeset extension function can be used as
+node-set in the http://exslt.org/common namespace.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changes for Java extension and EXSLT extension support.
+For Java extension:
+- support 3 different namespace formats (Java, class and package).
+- fix a bunch of type translation problems
+- fix problems in class/method matching algorithm
+
+For EXSLT extension:
+- support the math, set, strings and datetime extension
+- support using the nodeset extension in 3 different ways (xsltc, xalan and EXSLT commons)
+- support the object-type extension in EXSLT commons as a native XSLTC function
+- Maps the redirect:write element to XSLTC's output element
+- extension function name translation (e.g. node-set to nodeSet)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Additional optimizations in expansion of '//'.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Removed "-DIAG" option as it is similar to "-n 1". XSLTC's command line
+options are single letters, so -DIAG does not really fit in the synopsis.
+Morris K. is working on an extension for Xalan's Process class to allow
+the compilation and execution of translets (once that work is completed
+the -DIAG option will be available for XSLTC too).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Compile.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Change default policy for template inlining.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replaced attribute "disable-inlining" by attribute "enable-inlining".
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Lazy computation of mappings and reverse mappings.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+(1) Synchronize access to static variable.
+(2) Pre-allocate static objects for attribute and element types.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Changed setting to speed up DOM building process.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Return a fresh XMLReader for each call to getXMLReader(). Returning the
+same instance is incorrect in multi-threaded apps where a single
+transformer factory is shared by all threads.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2TO.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 12924. Add handling code for DocumentType Node.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+For Bugzilla 12924. In constructor SAX2DOM(Node), the Node might not always
+be a Document. Add additional handling code so that SAX2DOM can work with a
+non-Document root.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/09/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use a thread variable to cache an XMLReader.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionAvailableCall.java FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+EXtension work. Make function-available work with external Java and EXSLT
+extension functions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionAvailableCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Handle dots in the local part, e.g.
+xmlns:ext="http://xml.apache.org/xalan/java/java.lang
+function-available('ext:Thread.currentThread') return true.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionAvailableCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Minor cleanup in class name handling.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/09/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java TypeCheckError.java xml-xalan/java/src/org/apache/xalan/xsltc/dom DocumentCache.java DOMImpl.java DTDMonitor.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java TransformerImpl.java xml-xalan/java/src/org/apache/xalan/xsltc/cmdline/getopt GetOpt.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Include.java TransletOutput.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing changes from Gordon Chiu (grchiu@ca.ibm.com), with some tweaks from
+me, to move some hard-coded XSLTC messages into the compiler and run-time
+ErrorMessages classes, as appropriate.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/09/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing changes from Gordon Chiu (grchiu@ca.ibm.com), with some tweaks from
+me, to move some hard-coded XSLTC messages into the compiler and run-time
+ErrorMessages classes, as appropriate.
+
+Also, added copious comments to assist anyone who might translate these
+resources in the future.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/09/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Removed a duplicate error message number I inadvertently entered.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/09/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bugzilla 12813 fixed
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java ErrorMsg.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add debug messages for -XX option in the Process command line. These messages
+tell the user whether they are transforming using XSLTC.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix problems in the baseName() interface so that it can handle system ids like
+file:abc.xsl and file:///c:\test\abc.xsl.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC support in the Process command line - phase 2
+Add two new output types:
+- BYTEARRAY_AND_FILE_OUTPUT: return a byte array and generate the translet class
+- BYTEARRAY_AND_JAR_OUTPUT:  return a byte array and generate the jar file
+
+Add a new compile() interface which accepts the output type as the third
+parameter. Use different Vectors to store bytecodes and JavaClass objects.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Add a wrapper for the noExtName() method in compiler.util.Util.
+The transformerFactoryImpl class makes use of it.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The member name _defaultTransletName in TransformerFactoryImpl
+has been changed to _transletName.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/09/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+XSLTC support in the Process command line - phase 2
+Most of the changes appear in this class. The changes not only allow you
+to use the new XSLTC options in the Process command line. It also give
+you the ability to customize the XSLTC behavior using the standard TRAX API.
+Previously, the XSLTC TRAX API is not aware of translets. You cannot tell it
+to use translets for do transformations. Now you can customize the XSLTC bevaior
+using the new attributes. For example, the following code will allow you
+to use translets for transformations when the translet is newer than the xsl.
+
+TransformerFactory tf;
+tf.setAttribute("auto-translet", "true");
+Templates templates = tf.newTemplates(xslSource);
+
+The following attributes are added:
+Attributes		Corresponding Process command line options
+use-translet
+translet-name		-XO
+destination-directory	-XD
+package-name		-XP
+jar-name		-XJ
+auto-translet		-XT
+
+Four of the new attributes (translet-name, destination-directory, package-name and
+jar-name) are transient. They only apply to the next newTemplates() or newTransformer()
+call. Their values are reset to the default after the call.
+
+There is also a makefile like feature when you set the "auto-translet" attribute. It will
+use the translet to do transformation when the translet is newer than the xsl. If the xsl
+is modified, it will use the xsl to transform and regenerate the translet.
+
+Unlike the XSLTC Transform command line, the new code will NOT use the existing
+ClassLoader to load the translet or jar file. It directly reads the file content into a
+byte array. This makes the Process command line capable of loading the translet from
+any directory the xsl file might be in or any user specified destination directory, without
+the need on the user to add that directory to the CLASSPATH first.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Multi-thread protection for the new attributes.
+The four transient attributes are now stored in ThreadLocal objects to prevent
+multi-thread contention problems. This ensures that each thread will have a
+different copy of the attributes and no collision issue will occur.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/01<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Change the four attributes to be instance variables and remove
+the ThreadLocal protection. TransformerFactory is not guaranteed
+to be thread-safe. We will leave the synchronization issues up
+to the user if they want to use one TransformerFactory in multiple
+threads.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Param.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+The default type of a &lt;xsl:param&gt; should be result tree.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mkwan@apache.org<b>
+<i> on </i>
+</b>2002/10/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix a problem in class namespace format and also cleanup the indentation.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Param.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Set default type of parameters to be reference. The type of a parameter
+cannot be determined statically in XSLT 1.0.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc DOM.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java Constants.java ForEach.java LastCall.java Parser.java PositionCall.java Step.java xml-xalan/java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java CurrentNodeListIterator.java DOMAdapter.java DOMImpl.java DupFilterIterator.java FilteredStepIterator.java FilterIterator.java ForwardPositionIterator.java KeyIndex.java MatchingIterator.java MultiDOM.java NodeIteratorBase.java NthIterator.java ReverseIterator.java StepIterator.java xml-xalan/java/src/org/apache/xalan/xsltc/util IntegerArray.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+(1) Eliminated the need for a ReverseIterator.
+(2) Added a ForwardPositionIterator as a temporary solution for some
+cases.
+(3) Added several javadoc-type comments.
+(4) Fixed a number of cloneIterator() implementations that were broken.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ForwardPositionExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Expression wrapper to compute positions properly.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBase.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 13304.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/10/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix 12644, Santiago found that the clone iterator was doing a shallow copy
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Key.java KeyCall.java xml-xalan/java/src/org/apache/xalan/xsltc/dom KeyIndex.java xml-xalan/java/src/org/apache/xalan/xsltc/util IntegerArray.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+(1) Fixed some dynamic typing problems with idkeys. Values are now properly
+converted to strings before they are compared.
+(2) Eliminated the use of BitArrays in KeyIndex (better space efficiency).
+(3) All idkey tests now pass with flavor=stream (the 6 failures that are
+reported are due to the use of a different algorithm to generate ids).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix 13550, for multiple &lt;xsl:output&gt; elements, cdata-section-elements attrs are now merged
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XslElement.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New implementation of xsl:element that properly handles the case where
+the namespace URI computed at runtime is "". Some of the code implementing
+the xsl:element instruction has been factored out from the translet into
+the basis library.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix 12317, serialization of Templates is fixed
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+A RuntimeException cannot be constructed from a Throwable with JDKs
+prior to 1.4.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Clear dom index flag before passing node to DOMAdapter. Bug reported by
+Prakash Sridharan.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Switch order of calls to startElement() and namespace() in startXslElement().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/10/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix 12308, typeCheck, nodeset to node optimization is turned off if node has context
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added support for all EBCDIC flavors in xsl:output.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Moved EBCDIC support from Output to StreamOutput to ensure correct
+serialization of XML header.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler PositionCall.java xml-xalan/java/src/org/apache/xalan/xsltc/dom CurrentNodeListIterator.java DOMImpl.java FilterIterator.java NthIterator.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Committing patch from Henry Zongaro. This patch moves the logic from
+XPath's position() function from NodeIterator.getPosition() to
+BasisLibrary.positionF(). This change simplifies the integration
+between XSLTC and DTM.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom ForwardPositionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Adding XSLTC_DTM version of file to branch.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom ForwardPositionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Whoops!  Checked in file on MAIN branch that was meant for XSLTC_DTM branch.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom ForwardPositionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Adding DTM version of ForwardPositionIterator to XSLTC_DTM branch.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>zongaro@apache.org<b>
+<i> on </i>
+</b>2002/10/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom ForwardPositionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Aarrrgggghhhhh\!\!  Checked in file on MAIN branch that was meant for XSLTC_DTM branch, again\!
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 13826. A problem in reset() was the cause of duplicate
+nodes in the resulting nodeset.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util NodeSetType.java ReferenceType.java ResultTreeType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 13850 provided by Morris Kwan.
+
+Morris Kwan wrote:
+
+Changes in NodeSetType.java:
+Allow a org.w3c.dom.Node to be converted to a XSLTC internal nodeset
+
+Changes in ReferenceType.java:
+Allow conversions from Reference to Java String, double, w3c Node/NodeList
+
+Changes in ResultTreeType.java:
+The result tree when converted to a nodeset, should contain only one node
+starting from the root. If you replace &lt;xsl:param&gt; with &lt;xsl:variable&gt; in
+the attached testcase, you will see a problem in "ext:nodelistTest
+($a)/h1/h2" because of this problem.
+
+Changes in BasisLibrary.java:
+Added interfaces referenceToNodeList, referenceToNode and node2Iterator.
+The changes in copyNodes() fix a problem with the document node. In the
+case of an RTF, the NodeList passed to nodeList2Iterator() contains only
+one Node, which is a Document Node. The changes try to create a dummy
+element for the Document and copy all Nodes under it.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+  Fix for Bugzilla 13850 provided by Morris Kwan.
+
+  Changes in BasisLibrary.java:
+  Added interfaces referenceToNodeList, referenceToNode and node2Iterator.
+  The changes in copyNodes() fix a problem with the document node. In the
+  case of an RTF, the NodeList passed to nodeList2Iterator() contains only
+  one Node, which is a Document Node. The changes try to create a dummy
+  element for the Document and copy all Nodes under it.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler LocationPathPattern.java Mode.java Step.java StepPattern.java xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Distinguish between child::node() and attribute::node() both in patterns
+and expressions. This patch also fixes Bugzilla 11433.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/10/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem in DOMImpl$ChildrenIterator.getLast(). It now returns 0
+when the nodeset is empty.
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.4.0</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added new method 'setDocumentLocator()' to TemplatesHandlerImpl so that SAX parser can inform handler of doc location- thanks to Scott Boag and Shane Curcuru for the insight into this
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler UnresolvedRef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Assigned type to _type.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java AttributeSet.java CallTemplate.java DecimalFormatting.java EqualityExpr.java FormatNumberCall.java Key.java KeyCall.java Parser.java QName.java SymbolTable.java Template.java UseAttributeSets.java VariableBase.java xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem with default namespace in XPath expressions and XSLT's
+named objects (e.g. templates, keys, variables, etc.).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed StepPattern production to include named PIs.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Text.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Optimized calls to setEscaping().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Simple code optimizations.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replaced Vector by ArrayList (synchronization is not needed here).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed looping problem reported by Girish.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc TransletOutputHandler.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Text.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime SAXAdapter.java StringValueHandler.java TextOutput.java TransletOutputBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added characters(String) to TextOutputHandler.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+avoid printing standalone attr if it is set to 'no'
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/14<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Step.java xml-xalan/java/src/org/apache/xalan/xsltc/dom NodeIteratorBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for conf test axes113.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed a regression in output66 test
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Text.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for attribset49.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for axes127.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/16<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Do not add the standalone attribute to the XML header unless requested.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output DOMOutput.java OutputBase.java SAXHTMLOutput.java SAXOutput.java SAXXMLOutput.java StreamOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New output handlers.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix bug in Attr iterator.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output HtmlOutput.java StreamOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXHTMLOutput.java SAXOutput.java SAXXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+updated new code, on-going development
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXHTMLOutput.java SAXOutput.java SAXXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added new methods, on-going
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc TransletOutputHandler.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java SAXAdapter.java TransletOutputBase.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output HtmlOutput.java OutputBase.java StreamOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New methods added to the translet output handler.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output HtmlOutput.java StreamHTMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Renamed module.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output DOMOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+temporarily moved out of the way
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXOutput.java SAXXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+updated namespace support
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXHTMLOutput.java SAXOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed uninitialized stack
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Experimental output system.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Experimental output system.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added "-n" option to Transform.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamOutput.java StreamUnknownOutput.java StreamXMLOutput.java TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamTextOutput.java TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Insert XML header at the beginning.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added sax case support
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+updated
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/trax SAX2DOM.java TemplatesHandlerImpl.java TemplatesImpl.java TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added 'experimental-output' attribute to transformer factory.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/05/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added processing instruction support
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Bug fixes after testing.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added DOCTYPE.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler LiteralElement.java Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem with 'xmlns' reported as attribute.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/05/31<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem with offset in characters().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/03<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBase.java SAXHTMLOutput.java SAXOutput.java SAXXMLOutput.java StreamOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Moved common methods to base classes.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBase.java SAXHTMLOutput.java SAXOutput.java SAXXMLOutput.java StreamOutput.java StreamTextOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+updating work in progress
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXOutput.java SAXXMLOutput.java StreamXMLOutput.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBase.java SAXXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problems with id/key.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBase.java SAXOutput.java SAXXMLOutput.java StreamOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/04<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamOutput.java StreamUnknownOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+reset output flag
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+updated xsl:vendor string
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+updated xsl:vendor string
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/05<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix 9179, leading zero in localized formatting
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/06<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Include attributes in xsl:message template body.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/07<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Set a new buffer size.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed memory leak in AbstractTranslet and moved replace() method
+to BasisLibrary.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXOutput.java SAXTextOutput.java TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New class.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed processing instruction call
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added text case for SAX
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Typo.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXHTMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Do not insert &lt;META&gt;.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/10<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem in the implementation of setOutputProperties().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added comment() support.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output TransletOutputHandlerFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added support for comment handling in DOM
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed getTemplates() to return null when compilation fails.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime DefaultRun.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+No longer in use.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/11<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Transform.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java Output.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java TextOutput.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXOutput.java StreamHTMLOutput.java StreamUnknownOutput.java StreamXMLOutput.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java TemplatesImpl.java TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New output system installed.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix for copy32.xsl unit test; cdata handling
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed file creation for xsltc:output extension.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom BitArray.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added default constructor.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed insertion of META when HEAD is empty.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom CurrentNodeListIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replaced eager by lazy computation of last.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom StepIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Very minor optimization.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Simple hand optimizations.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java Parser.java Stylesheet.java XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java TemplatesImpl.java TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed layering of output properties in Trax.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replaced getProperty() by get() in setOutputProperties().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Include.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+catching file not found exception fixed
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added ability to detect/flag superfluous attributes
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+removed commented out code
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed bug that passes warnings to listener
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamUnknownOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added support for XHTML in output system (c.f. embed04).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed bug with number formatting, richmark test
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed escaping of quote in href attribute
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem in creation of output handler.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBase.java SAXOutput.java SAXXMLOutput.java StreamHTMLOutput.java StreamOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem with cdata-section-elements in xsl:output and namespaces.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed nit for Tom
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed unescaped quote in attribute, namespace110 unit test
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Ignore default properties in setOutputProperties().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXHTMLOutput.java StreamHTMLOutput.java StreamOutput.java StreamUnknownOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix to set output properties correctly in the new output system.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed indentation when output method is HTML.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/19<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamUnknownOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed indentation when output method is HTML.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Rollback to revision 1.39
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+whitespace13.xsl fix for trax.dom case
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed regression.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler NameBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+_type renamed to _paramType to avoid shadowing of protected vars.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Replaced _type by getType().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMAdapter.java MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed evaluation of "parent::*" with multiple DOMs.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 9068.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Better fix for Bugzilla 9068.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 8551.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzillas 3238 and 10137.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 6925.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>2002/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionAvailableCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fix check for extension functions
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionAvailableCall.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for function-available() needed to handle XSLTC's extension functions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ParentLocationPath.java Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for axes122.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed regression.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/util IntegerArray.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed bug in clone().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ElementAvailableCall.java Expression.java FunctionAvailableCall.java If.java LogicalExpr.java When.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added support for function-available()/element-available() in logical
+expressions (note that these functions are resolved at compile time
+in XSLTC).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamOutput.java StreamUnknownOutput.java TransletOutputHandlerFactory.java xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java TemplatesImpl.java TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added 'indent-number' attribute to the transformer factory. The value
+of this attribute is the number of spaces that will be used by the
+output system when indentation is turned on.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Step.java xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for node21 and some position tests.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix problem in copyElement().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use doubles instead of longs for big ints.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler LongExpr.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util LongType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+removed unused class, compiler will now use doubles
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/06/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CastExpr.java Constants.java Parser.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util Type.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+removed references to the LongExpr classes that were removed
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Copy namespace nodes of an element in xsl:copy.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler ElementAvailableCall.java FunctionAvailableCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Better error reporting when argument is not a literal.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/06/28<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use a BufferedOutputStream to write classes.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/07/08<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed conf tests copy21, copy22, expression02, idkey04, numbering91 with introduction of setSystemId on InputSource
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Compile.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Updated XSLTC's version number from 1.0 to 1.1
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler AttributeSet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 4603 (thanks to Henri Zongaro)
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Print warning message for superfluous attributes that have a null URI only.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/07/09<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Constants.java Sort.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug 5941 fixed, &lt;clinit&gt; access chged to ACC_STATIC from ACC_FINAL
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util TypeCheckError.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Enhanced error reporting in calls to external Java functions.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug 10832 fix, relational expressions with RTFs
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 9174.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed error message in defineTransletClasses() method.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/17<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Import.java Include.java Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 9171.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed problem in error reporting code.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/18<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Ignore default NS when expanding calls to position().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Accept null as a possible return value from URIResolver.resolve()
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/20<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Import.java Include.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Report a decent error when the URI cannot be resolved.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added a few getters to this class.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use the superclass to determine the main class of a translet.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/22<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 10715.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output StreamHTMLOutput.java StreamXMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed a regression.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesHandlerImpl.java TemplatesImpl.java TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed for Bugzilla 10625. URIResolvers were being dropped in several places.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Util class for the TrAX package.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Synchronize calls to Stylesheet.translate() using class' lock.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Ensure synchronization for Templates objects.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/24<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added safety net to getDOM().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/07/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ObjectType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+added new type for support of ext java functions
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/07/25<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc Translet.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler CastExpr.java FunctionCall.java Parser.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ErrorMessages.java ErrorMsg.java NodeSetType.java NodeType.java ReferenceType.java StringType.java Type.java xml-xalan/java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java BasisLibrary.java xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix 10837, support of ext java functions
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/29<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Expression.java FlowList.java Mode.java StepPattern.java TestSeq.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 11166.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed loop exit condition in prepareTestSequences().
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/07/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ReferenceType.java ResultTreeType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Added type promotion from result-tree to object (used in call to nodeset()).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/07/30<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler CastExpr.java FunctionCall.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util MultiHashtable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+improved selection algorithm for overloaded methods and constructors in ext java funct calls
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionAvailableCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fixed regression of test function-available('xalan:nodeset').
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use factory class methods to instantiate default decimal formatter.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output SAXHTMLOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+1. Report attributes with non-empty local names.
+2. Ignore attributes reported as content.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Use unmodified URI when retrieving the document via the DOM cache.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/12<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc TransletOutputHandler.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime SAXAdapter.java TextOutput.java TransletOutputBase.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output OutputBase.java SAXXMLOutput.java StreamHTMLOutput.java StreamOutput.java StreamXMLOutput.java xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2SAX.java DOM2TO.java SAX2TO.java TemplatesHandlerImpl.java TemplatesImpl.java TransformerFactoryImpl.java TransformerHandlerImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+New implementation of identity transform. Fix for Bugzilla 11345.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/13<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler Expression.java ParameterRef.java VariableRef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix for bugzilla 11221, MK053
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/15<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug 11704, fixed ErrorMsg to include name information
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/21<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixed bug that was calling an inappropriate compare method when the right side of the comparison was a DOM
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2TO.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+fixes conf tests lre02, lre03, lre11, namespace125, namespace126
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler RelationalExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for bugzilla 11987. Missing case in typeCheck() method.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Very minor optimization.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+conf test string134 fix
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/23<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for namespace102 (this test worked with Crimson but failed with
+Xerces).
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ResultTreeType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Removed debugging message.
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/26<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/cmdline Compile.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler Closure.java Constants.java Number.java ParameterRef.java Predicate.java Sort.java SyntaxTreeNode.java Template.java Variable.java VariableRef.java VariableRefBase.java XSLTC.java xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util NodeSortRecordFactGenerator.java xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 11828. A new closure conversion algorithm has been
+designed and implemented. The old algorithm did not work in some edge
+cases (c.f. description of Bugzilla 11828). Closure variables in an
+inner class are now accessed locally instead of via the AbstractTranslet
+class. Also, we have set the new version to be "XSLTC 1.2".
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Allow the default namespace to be redefined as "".
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+*** empty log message ***
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+bug fix for output13 conf test
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>2002/08/27<br />
+<b>
+<i>Modified: </i>
+</b> xml-xalan/java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+Fix for Bugzilla 12075.
+<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.3.2</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/21/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 6417, removed extra root element in DOM,
+ contributed by Tim Elcott<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>02/21/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-beta-branch SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fix DOMResult SOAP bug 4641035<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/26/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 6636, Transformers forgets output properties
+ fix contributed by Tim Elcott (bigfoot.com)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/28/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6751, null properties are now set properly,
+ fix contributed by Derek Sayeau- thanks Derek.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TransletLoader.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Tomcat 4.x external Java class bug fix, Tomcat 4.x
+ could not find external java classes, contrib by Santiago Pericas<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Tomcat 4.x external Java class bug fix, Tomcat 4.x
+ could not find external java classes, contrib by Santiago Pericas<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime Tag:
+ jaxp-ri-1_2_0-beta-branch TransletLoader.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bugtraq #4644811, Tomcat and ext java classes, Santiago Pericas<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-beta-branch TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bugtraq #4644811, Tomcat and ext java classes, Santiago Pericas<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-beta-branch TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>backed out chg<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-beta-branch TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bugtraq #4644811, Tomcat and ext java classes, Santiago Pericas<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom SortingIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6693- fix by Santiago Pericas, implement a
+ iterator clone method.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax DOM2SAX.java
+ SAX2DOM.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6620 fix: DOMSource no longer requires
+ Document nodes, fix contrib by Santiago Pericas-Geersten<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>re-entered bug fix 6751, last putback inadvert.
+ removed this fix<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fixes for 6257,6851,6665,6809; Santiago Pericas-Geerston<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 6850, Santiago Pericas-Geerston<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/07/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TemplatesHandlerImpl.java
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6312, TemplatesHandler and XMLReader, fix
+ by Santiago Pericas<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>03/11/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler StepPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>just minor change to syntax<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>03/11/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java
+ java/src/org/apache/xalan/xsltc/dom UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fix 5573 for XSLTMark alphabetize test<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>03/11/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom
+ CurrentNodeListIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fix bug 5577 XSLTMark trend test<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>03/11/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>got rid of call to forceNaturalOrder code, Santiago Pericasgeersten<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>03/11/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Expression.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fix XSLTMark test dbonerow slow performance, Santiago P.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/12/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ FormatNumberCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6692, fix by Santiago Pericas-Geersen<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/12/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ ProcessingInstruction.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 5141, fix by Santiago Pericas-Geersen<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/12/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ StringValueHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 5141, fix by Santiago Pericas-Geersen<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/12/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6413, fix by Santiago Pericas-Geersen<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/13/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6963, omit header needs to be set before output
+ occurs, fix by Santiago Pericas-Geersen<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/14/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ ParentLocationPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 5576, had to add a new test case in translate()
+ to set includeself for step iterator, thanks to Santiago Pericas-Geersen<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/15/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LiteralElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6819, variables translated before attrs to fix
+ problems with dependency, fix by Santiago Pericas-Geertsen<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/18/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 6935, fixed char escaping in non-URL HTML
+ attribute case; also added recognition for URL escaping in HTML4 cite attrs.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/19/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fix for unit test customer/murphy3.xsl<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/27/2002<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/dom ExtendedSAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 2951, new class<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMBuilder.java
+ DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 2951 fix<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/27/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime SAXAdapter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 2951 fix<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>03/28/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix for output31, output32 tests, esc chars<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/02/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 7679, xsl:vendor fix<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/03/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch ApplyTemplates.java
+ Constants.java Expression.java
+ FormatNumberCall.java LiteralElement.java
+ ParentLocationPath.java Parser.java
+ ProcessingInstruction.java Step.java
+ StepPattern.java Stylesheet.java SymbolTable.java
+ SyntaxTreeNode.java XslAttribute.java
+ XslElement.java
+ java/src/org/apache/xalan/xsltc/compiler/util Tag:
+ jaxp-ri-1_2_0-fcs-branch Util.java
+ java/src/org/apache/xalan/xsltc/dom Tag:
+ jaxp-ri-1_2_0-fcs-branch
+ CurrentNodeListIterator.java DOMBuilder.java
+ DOMImpl.java SortingIterator.java
+ UnionIterator.java
+ java/src/org/apache/xalan/xsltc/runtime Tag:
+ jaxp-ri-1_2_0-fcs-branch AbstractTranslet.java
+ BasisLibrary.java Constants.java
+ DefaultSAXOutputHandler.java SAXAdapter.java
+ StringValueHandler.java TextOutput.java
+ TransletLoader.java
+ java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-fcs-branch DOM2SAX.java SAX2DOM.java
+ TemplatesHandlerImpl.java TemplatesImpl.java
+ TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/dom Tag:
+ jaxp-ri-1_2_0-fcs-branch ExtendedSAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>merged the latest xsltc subtree with the xalan 2.3.1 fcs branch<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed problem with attribute URI<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bugzilla 7721<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/04/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix related to bugzilla 7721<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-fcs-branch DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed attr namespace.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-fcs-branch SAX2DOM.java
+ TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed problem when a DOMResult is created with a root node.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Bugzilla 7721.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/08/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add support for user-specified root node.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/08/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Add support for user-specified root node.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/09/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch FunctionAvailableCall.java
+ FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 7375 fixed, handles ext java functions now<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/09/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-fcs-branch SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed regression.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/09/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Regression fixed.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/15/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax Tag:
+ jaxp-ri-1_2_0-fcs-branch TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 8017, translet class name fixed in getTemplates<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/15/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch AttributeValue.java
+ AttributeValueTemplate.java Number.java
+ XslAttribute.java XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>New implementation of xsl:element<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/15/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime Tag:
+ jaxp-ri-1_2_0-fcs-branch BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>New implementation of xsl:element<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/15/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom Tag:
+ jaxp-ri-1_2_0-fcs-branch DOMAdapter.java
+ DOMImpl.java MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>New implementation of xsl:element<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>Tom.Amiro@Sun.COM<b>
+<i> on </i>
+</b>04/15/2002<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+&gt; bug 8017, translet class name fixed in getTemplates
+&gt;
+&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/16/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 8017, translet class name fixed in getTemplates<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/16/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom Tag:
+ jaxp-ri-1_2_0-fcs-branch DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Check for localName == null.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/16/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch Include.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 7835, patch from Stefan Kost to better handle
+ empty strings and local paths in xsl:include<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/16/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Include.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 7835, integrated patch by Stefan Kost which
+ better handles empty strings and local paths in xsl:include<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/16/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch DocumentCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Santiago: fixed type check error when 2nd arg (base-uri) is node instead
+ of node-set.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag: XSLTC_DTM
+ Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>get rid of debug line<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch FunctionCall.java
+ Parser.java Stylesheet.java SyntaxTreeNode.java
+ XSLTC.java xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for extension function nodeset().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom Tag:
+ jaxp-ri-1_2_0-fcs-branch DOMAdapter.java
+ DOMImpl.java MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for extension function nodeset().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/17/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime Tag:
+ jaxp-ri-1_2_0-fcs-branch BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for extension function nodeset().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/18/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch CastExpr.java
+ java/src/org/apache/xalan/xsltc/compiler/util Tag:
+ jaxp-ri-1_2_0-fcs-branch ReferenceType.java
+ java/src/org/apache/xalan/xsltc/runtime Tag:
+ jaxp-ri-1_2_0-fcs-branch BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed problem with extension function nodeset() and parameters.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>mmidy@apache.org<b>
+<i> on </i>
+</b>04/18/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime Tag: XSLTC_DTM
+ SAXAdapter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Pass in the local name of the element<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/19/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch FunctionAvailableCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>JAVA_EXT_PREFIX renamed to JAVA_EXT_XSLTC<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util Tag:
+ jaxp-ri-1_2_0-fcs-branch MethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed bug in addLocalVariable() when the slot allocator was already 
+initialized.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch ElementAvailableCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added namespace support to the implementation of element-available().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch LiteralExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Namespace support for element-available().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/22/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Tag:
+ jaxp-ri-1_2_0-fcs-branch Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed bug in resolveReferences().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/23/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime Tag:
+ jaxp-ri-1_2_0-fcs-branch TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>escaped character handling improved by Santiago<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/23/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime Tag:
+ jaxp-ri-1_2_0-fcs-branch TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>escaped character handling improved by Santiago, again<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/23/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util Tag:
+ jaxp-ri-1_2_0-fcs-branch ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed command line synopsis.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/24/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOM.java
+ java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java
+ AttributeValue.java AttributeValueTemplate.java
+ CastExpr.java Constants.java DocumentCall.java
+ ElementAvailableCall.java Expression.java
+ FormatNumberCall.java FunctionAvailableCall.java
+ FunctionCall.java Include.java LiteralElement.java
+ LiteralExpr.java Number.java
+ ParentLocationPath.java Parser.java
+ ProcessingInstruction.java Step.java
+ StepPattern.java Stylesheet.java SymbolTable.java
+ SyntaxTreeNode.java XSLTC.java XslAttribute.java
+ XslElement.java xpath.cup
+ java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java MethodGenerator.java
+ ReferenceType.java Util.java
+ java/src/org/apache/xalan/xsltc/dom
+ CurrentNodeListIterator.java DOMAdapter.java
+ DOMBuilder.java DOMImpl.java ExtendedSAX.java
+ MultiDOM.java SortingIterator.java
+ UnionIterator.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java BasisLibrary.java
+ Constants.java DefaultSAXOutputHandler.java
+ SAXAdapter.java StringValueHandler.java
+ TextOutput.java TransletLoader.java
+ java/src/org/apache/xalan/xsltc/trax DOM2SAX.java
+ SAX2DOM.java TemplatesHandlerImpl.java
+ TemplatesImpl.java TransformerFactoryImpl.java
+ TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Commit after syncing trunk with branch jaxp-ri-1_2_0-fcs-04.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/25/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated compiler usage statement<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/25/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added a -v option to compiler,prints out version<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/25/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated cmdline.Transform usage statement<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/25/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.lex<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for the full Unicode char set.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/25/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Replacing '/' by '$slash$' and ':' by '$colon$' in escape() (bugzilla 6289)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/26/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java
+ java/src/org/apache/xalan/xsltc/compiler XSLTC.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added -n option to disable template inlining. This is useful to avoid
+ getting very long methods (the limit set by the JVM is 64K). The same
+ option can be passed to a TransformationFactory via Trax using
+ the "disable-inlining" attribute.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/26/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler VariableBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added check to avoid duplicate dependencies.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/26/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Constants.java
+ FilterParentPath.java ParentLocationPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Replaced STEP_ITERATOR by NODE_ITERATOR_BASE when calling includeSelf().<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/26/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Ensured that global vars are initialized in the order in which they
+ were defined, whenever possible. This order may be altered due to
+ the existence of dependencies between the vars.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler FunctionCall.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ ReferenceType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a type mapping between 'reference' and 'java.lang.Object' and
+ vice versa. With this addition, a stylesheet can pass a parameter
+ to an external Java function without getting a type check error.
+ (see Bugzilla 8595).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>04/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fixed null ptr exception with sax sources that did
+ not specify an xml reader<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/29/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed Bugzilla 8489.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>04/30/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed a bug in replace() by writting a new (and more efficient) version.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>Tom.Amiro@Sun.COM<b>
+<i> on </i>
+</b>04/30/2002<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+&gt; Fixed a bug in replace() by writting a new (and more efficient) version.
+&gt;
+&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/02/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed file-not-found problem with flavor=trax.sax by propagating
+ the systemId.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/03/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed for Bugzilla 2886 (node15).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/03/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyImports.java
+ Include.java Stylesheet.java TestSeq.java
+ XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Disabling template inlining for included stylesheets.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ AncestorPattern.java Mode.java ParentPattern.java
+ StepPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed a few problems with ancestor patterns (//) and patterns with
+ explicit priorities.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Rewrote a couple of if statements as if expressions.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ VariableBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Better error reporting for syntax errors in XPath expressions.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for Bugzilla 8041.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java ErrorMessages_no.java
+ ErrorMsg.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for Bugzilla 8041.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>santiagopg@apache.org<b>
+<i> on </i>
+</b>05/06/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ AbsolutePathPattern.java AncestorPattern.java
+ ParentPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for Bugzilla 2836 (modes15).<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>05/08/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fixes a set of trax.dom conf tests<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>05/08/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fixes a set of trax.dom conf tests<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.3 and 2.3.1</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>01/24/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 1520 fix, escape chars over 0080 instead of 00FF<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>01/24/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 1520, adjusted 0080 to 007F in ASCII cutoff<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ AttributeValueTemplate.java
+ AbsoluteLocationPath.java AbsolutePathPattern.java
+ AlternativePattern.java AncestorPattern.java
+ ApplyImports.java ApplyTemplates.java
+ AttributeSet.java BooleanCall.java BinOpExpr.java
+ BooleanExpr.java CallTemplate.java CastExpr.java
+ CeilingCall.java Choose.java Comment.java
+ DecimalFormatting.java ConcatCall.java
+ Constants.java ContainsCall.java Copy.java
+ CopyOf.java CurrentCall.java DocumentCall.java
+ EqualityExpr.java Import.java If.java
+ ElementAvailableCall.java Expression.java
+ Fallback.java FilterExpr.java FilterParentPath.java
+ FloorCall.java FlowList.java ForEach.java
+ FormatNumberCall.java FunctionAvailableCall.java
+ FunctionCall.java GenerateIdCall.java
+ IdKeyPattern.java Include.java IntExpr.java
+ Key.java KeyCall.java LangCall.java LastCall.java
+ LiteralAttribute.java LiteralElement.java
+ LiteralExpr.java LocalNameCall.java
+ NamespaceAlias.java LogicalExpr.java Message.java
+ Mode.java NameBase.java NameCall.java
+ NamespaceUriCall.java NotCall.java Number.java
+ NumberCall.java Output.java Param.java
+ ParentLocationPath.java ParameterRef.java
+ ParentPattern.java PositionCall.java
+ RelationalExpr.java Predicate.java Sort.java
+ ProcessingInstruction.java RealExpr.java
+ VariableRef.java RoundCall.java ValueOf.java
+ SimpleAttributeValue.java StartsWithCall.java
+ Stylesheet.java StringCall.java
+ StringLengthCall.java StepPattern.java
+ Template.java TestSeq.java Text.java
+ TopLevelElement.java TransletOutput.java
+ UnaryOpExpr.java UnionPathExpr.java
+ UnparsedEntityUriCall.java UseAttributeSets.java
+ LongExpr.java Variable.java Whitespace.java
+ XslAttribute.java WithParam.java XSLTC.java
+ XslElement.java UnsupportedElement.java
+ VariableBase.java VariableRefBase.java
+ FilteredAbsoluteLocationPath.java
+ SyntaxTreeNode.java Step.java UnresolvedRef.java
+ ProcessingInstructionPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>changed de.fub.bytecode to org.apache.bcel<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ NamedMethodGenerator.java NodeCounterGenerator.java
+ NodeSetType.java NodeSortRecordGenerator.java
+ NodeType.java RealType.java ReferenceType.java
+ ResultTreeType.java RtMethodGenerator.java
+ SlotAllocator.java StringType.java
+ TestGenerator.java Util.java LongType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>changed de.fub.bytecode to org.apache.bcel<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/01/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ AttributeSetMethodGenerator.java BooleanType.java
+ ClassGenerator.java CompareGenerator.java
+ FilterGenerator.java IntType.java
+ MatchGenerator.java MethodGenerator.java
+ MethodType.java Type.java VoidType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>changed de.fub.bytecode to org.apache.bcel<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/05/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 1520, spec chars in href attributes<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/07/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 1520, updating href attr spec char handling<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/13/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 6189, ArrayIndexOutOfBoundsException, contrib
+ by Mirko Seifert<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>02/14/2002<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc
+ javax.xml.transform.TransformerFactory<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added a service provide source file to be copied into
+ xsltc.jar (bundled jar)<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix to the XPath parser to make sure (again!) that non-prefixed elements
+ in XPath expressions/patterns are not assigned the default namespace but
+ rather the null namespace.
+ PR: bugzilla 4904
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modified the order in which top-level elements are parsed. This to make sure
+ that xsl:namespace-alias elements are parsed before xsl:import and include,
+ so that namespace aliases are global to all included stylesheets.
+ PR: bugzilla 4876
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java
+ xpath.lex<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc NodeIterator.java
+ java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java
+ CurrentNodeListIterator.java DOMImpl.java
+ FilterIterator.java FilteredStepIterator.java
+ KeyIndex.java MatchingIterator.java MultiDOM.java
+ NodeIteratorBase.java NthIterator.java
+ StepIterator.java UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for the various node iterators cloneIterator() method. This method
+ should clear the _isRestartable flag to prevent iterators contained within
+ variables and parameters from changing their value. This flag is now wrapped
+ inside a setRestartable(boolean flag) method so that the call can be
+ propagated down a stack of iterators. This seems to solve many of our
+ iterator problems.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apaceh.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler SyntaxTreeNode.java
+ XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a method to the SyntaxTreeNode base class that can be used to check
+ the existence of an attribute in the input document: hasAttribute(String 
+name).
+ This method is used in the XslElement class to verify the existence of a
+ 'namespace' attribute with an empty value.
+ PR: bugzilla 4983
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated the realToString() method in the runtime library to always output
+ numbers on decimal form (and not on Java's "computerized scientific notation."
+ PR: bugzilla 4199
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/04/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ RoundCall.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the return-type of the round() function form int to double. The result
+ is still rounded (of course), but it is returned as a double to be able to
+ return NaN and infinite values.
+ PR: bugzilla 2805
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>I am still fiddling around with predicates containing variable references
+ and position filters.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.lex<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Reverting previous putback.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Output.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java ErrorMessages_no.java
+ ErrorMsg.java
+ java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a warning message for unsupported output encodings.
+ PR: bugzilla 5139
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.lex<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fixed typo<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for global parameters whose names contain dots or dashes.
+ PR: bugzilla 5328
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for a bug in the XPath parser. The parser would choke on some XPath
+ expressions that contained references to element names that were identical
+ to axis names.
+ PR: bugzilla 3502
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added another fix to properly convert ver small floating point numbers to
+ strings.
+ PR: bugzilla 4199
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a fix for global variables declared in included/imported stylesheets.
+ PR: bugzilla 5327
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ MethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for use of XPath expressions in contexts where there is no 'current'
+ node (ie. in top-level elements such as variables and attribute sets).
+ PR: bugzilla 5194
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added factory creation methods and checks<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new prototype class, work in progress<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added factory creation methods and checks<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new prototype class, work in progress<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ResultTreeType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for passing result tree fragments and node-sets to external Java
+ methods. Node sets and RTFs can both be handled as org.w3c.dom.Node or
+ org.w3c.dom.NodeList in the called method.
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added factory creation methods and checks<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new prototype class, work in progress<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added factory creation methods and checks<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new prototype class, work in progress<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ResultTreeType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for passing result tree fragments and node-sets to external Java
+ methods. Node sets and RTFs can both be handled as org.w3c.dom.Node or
+ org.w3c.dom.NodeList in the called method.
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added factory creation methods and checks<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new prototype class, work in progress<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added factory creation methods and checks<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new prototype class, work in progress<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added factory creation methods and checks<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new prototype class, work in progress<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>look for xsltc specific attributes<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>store error listener and or uri resolver locally
+ set in real factory when needed<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>12/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ SmartTransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fixed scope of internal method<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed some stupid debug timing-loop in the command line Transform tool.
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed the main() method from the XSLTC class. This class represents the
+ native API of the compiler.
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>12/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Transform.java
+ java/src/org/apache/xalan/xsltc/dom DTDMonitor.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A small cleanup in our native API.
+ Submitted by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>01/07/2002<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fixed problem with output content handler creation
+ (while running xalan conf tests) in method getOutputHandler(Result).<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D14</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslAttribute.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed bug for xsl:attribute
+ PR: 4175
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for properly creating a SAX InputSource from a TrAX InputStream for
+ encapsulating a stylesheet before it is compiled.
+ PR: bugzilla 4711 (I hope to God)
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for last putback.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>This fix should take care of a regression introduced by the code that was
+ added on the 29.10.2001 to take care of forward referenced variables.
+ This little patch ensures that variables that do not have any dependencies
+ are kept in order.
+ PR: bugzilla 4779
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed a minor regression after the fix for 3592. A literal number zero was
+ always interpreted as an integer zero and never as a double -0 opr 0.0.
+ PR: bugzill 4810
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the code that prevents escaping of text inside &lt;script&gt; and &lt;style&gt;
+ elements in HTML. The code did not handle upper case element names.
+ PR: bugzilla 2517
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>11/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 4906<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java
+ Template.java xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for nested parent location paths / filter parent paths with key() or
+ id() root. These paths would in some case returnt he root node when they
+ should not.
+ PR: bugzilla 4781
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Sort.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for a big in the &lt;xsl:sort&gt; implementation. The element would not always
+ work properly in the innermost loop in nested &lt;xsl:for-each&gt; elements.
+ PR: bugzilla 4921
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java
+ Sort.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for a regression introduced by a fix for &lt;xsl:sort/&gt; and nested
+ &lt;xsl:for-each/&gt; elements.
+ PR: bugzilla 4921
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to ensure that double quotes are escaped inside attribute values in
+ HTML output.
+ PR: bugzilla 4845
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for a bug caused by &lt;xsl:apply-templates/&gt; not always passing parameters 
+to
+ the invoked template(s). Parameters would not be put on the stack if the
+ 'select' attribute contained wildcards.
+ PR: bugzilla 4718
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ StringType.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed conversion between strings and numbers. Empty strings should return
+ 0 and not NaN.
+ PR: bugzilla 4783
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Choose.java
+ Parser.java SyntaxTreeNode.java Text.java
+ java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for a whole wack of bugs related to text-nodes and handling of whitespace
+ and special characters.
+ PR: bugzilla 1403, 1520, 3005, 3418 and 3690
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Prevented the namespace-uri() from returning anything for namespace nodes.
+ PR: bugzilla 4896
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added test in &lt;xsl:element&gt; to verify that the local name of the created
+ element is legal (must have contents, but no whitespaces or colon).
+ PR: bugzilla 4894
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A small fix for the substring() function to output an empty string if the
+ start index is an infinite value.
+ PR: bugzilla 4813
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Constants.java
+ Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for XHTML output.
+ PR: bugzilla 4904
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Message.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A cleanup in the Message class. Making way for a fix for 4874
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for position predicates used within parameters and variables.
+ PR: bugzilla 4783
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslAttribute.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A small fix needed after a fix for stripping/preserving text nodes. The fix
+ for text-nodes caused us to insert text nodes before &lt;xsl:attribute&gt; elements
+ in the AST, which again caused the XslAttribute class to complain.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOM.java
+ java/src/org/apache/xalan/xsltc/compiler Message.java
+ java/src/org/apache/xalan/xsltc/dom DOMAdapter.java
+ DOMImpl.java MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a new method to the DOM interface for retrieving the DOM as a single
+ string. This method is different from the existing getStringValue() in the
+ way that it generates element brackets and copies PIs and comments.
+ PR: bugzilla 4874
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ FilteredStepIterator.java StepIterator.java
+ UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated the StepIterator and FilteredStepIterator's cloneIterator() and
+ reset() methods so that the _isRestartable flag is set correctly.
+ PR: bugzilla 4905
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Another fix for 3005 (special characters inside CDATA).
+ PR: bugzilla 3005
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for decimal formatting
+ PR: bugzilla 4901
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler AttributeSet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for a regression introduced by a fix for whitespace handling.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler FilterExpr.java
+ Predicate.java VariableRefBase.java
+ java/src/org/apache/xalan/xsltc/dom
+ CurrentNodeListIterator.java DOMImpl.java
+ FilteredStepIterator.java KeyIndex.java
+ MatchingIterator.java MultiDOM.java
+ NthIterator.java StepIterator.java
+ UnionIterator.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for trees of step iterators stored inside variables.
+ Also some fixes for recently introduced regressions.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.iorg<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for the TrAX API when used from within an environment that does _not_
+ use one of the standard classloaders.
+ PR: bigzilla 5130
+ Obtained from: n/a
+ Submitted by: Jochen.Cordes@t-online.de
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Sort.java
+ java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for multilevel sort-keys. If a set of translets (representing different
+ stylesheets) are running one the same JVM, and two or more of these translets
+ use NodeSortRecord objects to represent &lt;xsl:sort/&gt; elements, then the number
+ of sort keys would be set in the NodeSortRecord _class_ constructor instead of
+ being set locally for each occurance of &lt;xsl:sort/&gt;.
+ PR: bugzilla 4755
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler CastExpr.java
+ EqualityExpr.java Expression.java LastCall.java
+ Predicate.java VariableRefBase.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ StepIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for resetting the source iterator of a node-value iterator.
+ PR: bugzilla 5152
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ DecimalFormatting.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for a few regressions from yesterday.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix to the XPath parser to make sure (again!) that non-prefixed elements
+ in XPath expressions/patterns are not assigned the default namespace but
+ rather the null namespace.
+ PR: bugzilla 4904
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modified the order in which top-level elements are parsed. This to make sure
+ that xsl:namespace-alias elements are parsed before xsl:import and include,
+ so that namespace aliases are global to all included stylesheets.
+ PR: bugzilla 4876
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D12 and 2.2.D13</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the values for the output properties "OMIT_XML_DECLARATION" and
+ "INDENT" from "true" and "false" to "yes" and "no".
+ PR: bugzilla 4039
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated the getAttribute() method to throw an IllegalArgumentException
+ for unknown attributes.
+ PR: bugzilla 4046
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler NameBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed a bug in the name() and local-name() functions. The functions would
+ use the current node and not the context node when no arguments were given.
+ PR: bugzilla 3322
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated Mode.java to properly handle patterns matching on node(), comment() 
+and
+ processing-instruction(). Also had to make a small change to the 
+setStartNode()
+ method in the FollowingIterator (inner class of DOMImpl.java) to properly
+ handle attribute-nodes as start nodes. Also, I had to change 
+ParentLocationPath
+ to remove duplicates that can be produced by the FollowingIterator when
+ started with an attribute node.
+ PR: bugzilla 2551
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A small for for the output property OMIT_XML_DECLARATION
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to the transformer implementation to allow for namespace-prefixed
+ output properties (output property extensions).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>included a more portable way to create an URI from a File<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime DefaultRun.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>ncluded a more portable way to create an URI from a File<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>ncluded a more portable way to create an URI from a File<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>10/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>ncluded a more portable way to create an URI from a File<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java
+ ParentLocationPath.java Parser.java
+ RelationalExpr.java SyntaxTreeNode.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for a few regressions.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for the "*" pattern. Made it include comment and PI nodes.
+ PR: bugzilla 4050
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for the last fix.
+ PR: bugzilla 4050
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for the last fix.
+ PR: bugzil.la 4050
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>10/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added catch for malformed url<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modified error handling to extract messages from SAXException. This tool
+ will also print the stack trace of the SAXException if the '-x' flag is
+ specified (debug turned on).
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added code to prevent index-out-of-bounds exception in the output handler.
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOM.java
+ java/src/org/apache/xalan/xsltc/compiler XSLTC.java
+ xpath.cup
+ java/src/org/apache/xalan/xsltc/dom DOMAdapter.java
+ DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for the namespace axis.
+ PR: bugzilla 1379
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Missing file from last putback.
+ PR: bugzilla 1379
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A few add'ons to the namespace axis implementation. Added support for
+ the namespace-uri() function when applied to namespace nodes.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Code cleanup.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to prevent attribute nodes to be included by the node() pattern.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for the following:: iterator when started with an attribute node.
+ PR: bugzilla 2551
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LiteralElement.java
+ Mode.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix to a recent regression after a fix for some axis iterators.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup xpath.lex<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added 4 symbols to the lexiographical analyser (xpath.lex) to recognise
+ name-tests with whitespace between the NCName and the "()" brackets.
+ PR: bugzilla 4208
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslAttribute.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to prevent xsl:attributes from not compiling itself into the translet 
+code.
+ PR: bugzilla 4175
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ FilterParentPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Enabled node ordering for certain filtered parent paths.
+ PR: bugzilla 4178
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the node sort record base class so that it places NaN values first
+ in the sorted list/node-set.
+ PR: bugzilla 3517
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the DOM's copy() function to always copy the necessary namespace
+ declaration to the output handler.
+ PR: bugzilla 3409 (not complete fix)
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler CallTemplate.java
+ DecimalFormatting.java Param.java SymbolTable.java
+ Template.java Variable.java VariableBase.java
+ WithParam.java
+ java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Cleaned up the compiler's symbol table. Added support for detecting multiple
+ defined decimal formatting symbols.
+ PR: bugzilla 3872
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler CallTemplate.java
+ Template.java VariableBase.java WithParam.java
+ XSLTC.java
+ java/src/org/apache/xalan/xsltc/compiler/util Util.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added/checked proper escaping of 
+template/variable/parameter/attribute-set/etc.
+ names. Occurances of the characters '.' and '-' are replaced by '$dot$' and
+ '$dash$' respectively in method/variable names. The characters are both
+ replaced by an underbar ('_') in the translet class name.
+ PR: 2399
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for getting all attributes from the Xerces parser. Xerces and Crimson
+ report attributes differently, and we have to take that into account.
+ PR: bugzilla 2465
+ Obtained from: n/a
+ Submitted by: Douglas Sellers &lt;douglasjsellers@hotmail.com&gt;
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ FilterParentPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added node ordering to FilterParentPath
+ PR: bugzilla 4248
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed one of the compare() methods in the basis library to properly
+ compare node sets.
+ PR: bugzilla 4242
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the registerAttribute() method so that it always uses the same
+ id for an attribute name.
+ PR: bugzilla 4243
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Param.java.orig<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed file Param.java.orig
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ VariableBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the variable base class to allow variables to be re-defined in
+ a different scope.
+ PR: bugzilla 3268
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a node-value iterator to the DOM multiplexer to allow for predicates
+ in combination with the document() function.
+ PR: bugzilla 3402
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for variables and parameters containing node sets in stylesheets that
+ use the document() function. This fix completes the cloneIterator() method
+ of the axis iterators returned by the DOM multiplexer.
+ PR: bugzilla 3501
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added the default xml=http://www.w3.org/XML/1998/namespac namespace
+ declaration to the root node of our internal DOM.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom LoadDocument.java
+ MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for determining the current working directory when loading XML
+ documents using the document() function. The base URI (that gives you
+ the CWD) should normally be taken from the context node, but can also
+ be determined by the node/node-set defining the document URI.
+ PR: bugzilla 3471
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Gave the parent/sibling stacks in the DOM builder dynamic length.
+ PR: bugzilla 3066
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a '-i' option to the command-line compiler to allow stylesheets to be
+ passed in through stdin. The '-i' option must be used with the '-o' option
+ to specify a translet name.
+ PR: bugzilla 4253
+ Obtained from: n/a
+ Submitted by: johnh@schemasoft.com (John Howard)
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Include.java
+ Stylesheet.java XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Cleaned up the include/import precedence code in Import and Include
+ PR: bugzilla 2695
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed output formatting of some floating point numbers.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LogicalExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for logical expressions that have combinations of not() and "and".
+ PR: bugzilla 2351
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>10/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added a empty string systemId in cases where it was
+ set to null, slight rearrangment of StreamSource handling code as well.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler header.txt<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for names templates. Dashes and dots in template names are now
+ escaped using '$dash$' and '$dot$'.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for a recent regression. A no major change. Just a one-line if to
+ test for a potential NPE.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyImports.java
+ Mode.java Stylesheet.java Template.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A major fix for &lt;xsl:apply-imports/&gt;. This element was previously treated
+ as &lt;xsl:apply-templates/&gt; but is now handled similar to Java's 'super()'
+ method. Note that this is not a complete fix. The rest will come tomorrow
+ or the day after. I just wanted to make sure that today's efforts were not
+ lost and that they are tested overnight.
+ PR: bugzilla 1397
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyImports.java
+ DocumentCall.java Stylesheet.java
+ SyntaxTreeNode.java
+ java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the document() function so that it will load documents relative to
+ either the currently loaded document, or if that fails, relative to the
+ location of the original stylesheet.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerHandlerImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the TransformerHandler so that it's Transformer instance can be used
+ separateely from the handler itself.
+ PR: bugzilla 3873
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Import.java
+ Include.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for resulving relative URIs when using &lt;xsl:include/&gt; and &lt;xsl:import/&gt;
+ through TrAX without using a URIResolver.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for a bug that seemed to be triggered by the sequence in which Xerces'
+ lexical handler and content handler were set. The lexical handler must be
+ set before the content handler, otherwise Xerces will keep generating the
+ first startElement() event over and over again.
+ PR: bugzilla 2465
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the general handling of the XML namespace mapping.
+ PR: bugzilla 4331
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyImports.java
+ Mode.java Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for setting the scope of templates for an &lt;xsl:apply-imports/&gt; element.
+ This fix allows for proper "multiple inheritance" in XSLTC.
+ PR: bugzilla 1397
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to ensure that the order of the -o and -p command line options is
+ not significant.
+ PR: bugzilla 4343
+ Obtained from: n/a
+ Submitted by: johnh@schemasoft.com (John Howard)
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler FunctionCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed our extension for calling external static Java methods to allow
+ both the "http://xml.apache.org/xalan/xsltc/java" namespace and the
+ "http://xml.apache.org/xslt/java" namespace (Xalan's namespace for Java
+ function calls).
+ PR: bugzilla 3994
+ Obtained from: n/a
+ Submitted by: after numerous requests/suggestions on xalan-dev
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler BinOpExpr.java
+ Choose.java DocumentCall.java Number.java
+ Otherwise.java StepPattern.java Stylesheet.java
+ VariableBase.java VariableRef.java
+ VariableRefBase.java When.java XSLTC.java xpath.cup
+ java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implemented code to resolve forward references and dependencies between
+ global variables and parameters.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/30/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler UnresolvedRef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Missing file from last putback.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyTemplates.java
+ AttributeSet.java AttributeValueTemplate.java
+ BinOpExpr.java CallTemplate.java ConcatCall.java
+ ContainsCall.java CopyOf.java
+ DecimalFormatting.java DocumentCall.java
+ ElementAvailableCall.java Expression.java
+ ForEach.java FormatNumberCall.java
+ FunctionAvailableCall.java FunctionCall.java
+ If.java Import.java Include.java Instruction.java
+ Key.java Output.java Param.java Parser.java
+ ProcessingInstruction.java RelationalExpr.java
+ StartsWithCall.java StringCall.java Stylesheet.java
+ Template.java TopLevelElement.java
+ TransletOutput.java UnsupportedElement.java
+ UseAttributeSets.java ValueOf.java Variable.java
+ VariableBase.java When.java Whitespace.java
+ WithParam.java XslAttribute.java XslElement.java
+ xpath.cup
+ java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Moved all error messages from the various source files into the ErrorMsg
+ class in the compiler/util directory.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java
+ Transform.java
+ java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java
+ SlotAllocator.java
+ java/src/org/apache/xalan/xsltc/dom LoadDocument.java
+ NodeSortRecordFactory.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java BasisLibrary.java
+ SAXAdapter.java TextOutput.java
+ java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java
+ TransformerFactoryImpl.java
+ TransformerHandlerImpl.java TransformerImpl.java
+ XSLTCSource.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java ErrorMessages_en.java
+ ErrorMessages_no.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A first stab at i18n'ing XSLTC. Error and warning messages from the compiler
+ and TrAX are handled by the compiler/util/ErrorMsg class, while messages
+ from the DOM and runtime/translet are handled by the Basis Library class.
+ Only the ErrorMsg class has so far been updated to dynamically read its
+ messages from a ResourceBundle. Bundles for British English and Norwegian
+ are implemented.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ BooleanType.java ErrorMessages.java
+ ErrorMessages_no.java ErrorMsg.java IntType.java
+ NodeSetType.java NodeType.java RealType.java
+ ReferenceType.java ResultTreeType.java
+ StringType.java Type.java VoidType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Code cleanup.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java
+ CurrentNodeListIterator.java DOMImpl.java
+ FilterIterator.java FilteredStepIterator.java
+ MatchingIterator.java MultiDOM.java
+ NodeIteratorBase.java StepIterator.java
+ UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Final code cleanup after i18n work.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed a typo in console output.
+ Submitted by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added "Compiler Warning" text to output.
+ Submitted by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Import.java
+ Include.java StepPattern.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages_no.java
+ java/src/org/apache/xalan/xsltc/dom LoadDocument.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java
+ java/src/org/apache/xalan/xsltc/trax
+ TemplatesHandlerImpl.java
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages_en.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Localised the runtime/dom packages into Norwegian. This proves that the
+ internationalisation work is completed. I also fixed a regression that
+ was caused by the error handling being changed.
+ PR: n/a (i18n and l10n work)
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Integrated a fix from John Howard for forcing forward slashes in file paths
+ in JAR files and in manifests in JAR files.
+ PR: bugzilla 4464
+ Obtained from: n/a
+ Submitted by: John Howard (johnh@schemasoft.com)
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for simplified stylesheets. A namespace declaration on the root element
+ in the stylesheet (xmlns="http://www.w3.org/TR/xhtml1/strict") caused XSLTC
+ to try to match elements in this namespace instead of elements in the null
+ namespace.
+ PR: bugzilla 3664
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed a regression from yesterday ('version' attribute missing).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed default behaviour of text() and "*" in &lt;xsl:apply-imports/&gt;.
+ (this element should not invoke built-ins).
+ PR: bugzilla 1397
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ java/src/org/apache/xalan/xsltc/runtime SAXAdapter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated the SAXAdapter used to build result tree fragments to handle comments.
+ PR: bugzilla 4172
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for the XPath substring() function.
+ PR: bugzilla 4201
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Number.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed the last putback - should never have been done. Big mistake!!!
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DTDMonitor.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for generating IDs for implied attributes.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Enabled character escaping by default for HTML output. We are now able to
+ generate the XSLT and XPath specs without any errors at all.
+ PR: bugzilla 3065
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime ErrorMessages.java
+ ErrorMessages_no.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Missing resource bundles for error messages for XSLTC's dom and runtime lib.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>10/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed pattern matching on namespace qualified wildcards, such
+ as match="@blob:*".
+ PR: bugzilla 2582
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a fix for predicates that test on node values, where the value to
+ test agains is stored in a variable or predicate.
+ PR: bugzilla 3501
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for re-definitions of variables inside templates (in different scopes).
+ PR: bugzilla 3406
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Potential fix for bug 3416. Will not integrate for performance reasons.
+ Code change is commented.
+ PR: bugzilla 3416
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed a desperately bad piece of code that caused XSLTC to misinterpret
+ some combinations of parent location paths and predicates.
+ PR: bugzilla 4249
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom NodeCounter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for the formatter used with the xsl:count element.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Sort.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for sort-elements used with apply-templates elements with no select
+ attribute.
+ PR: bugzilla 3519
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler PositionCall.java
+ java/src/org/apache/xalan/xsltc/dom NodeCounter.java
+ SingleNodeCounter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for the &lt;xsl:number&gt; element.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org / todd.miller@sun.com
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Sort.java
+ java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java
+ NodeSortRecordFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the 'order' and 'data-type' attributes of the &lt;xsl:sort&gt; element
+ from plain attributes to attribute value templates. This required a change
+ not inly in the way we interpret these attributes but also in the time at
+ which these attributes are intrepreted. Since these are not treated as AVTs
+ we need to wait until runtime before reading the values of the attributes.
+ PR: bugzilla 3835
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOM.java
+ java/src/org/apache/xalan/xsltc/compiler PositionCall.java
+ StepPattern.java
+ java/src/org/apache/xalan/xsltc/dom DOMAdapter.java
+ DOMImpl.java MultiDOM.java NodeSortRecord.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java.old<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for patterns on the format "/foo/*/bar" and "/foo/*[n]/bar".
+ PR: bugzilla 4604
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java
+ java/src/org/apache/xalan/xsltc/dom
+ CurrentNodeListIterator.java DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the last() function for the typed and untyped ancestor iterators.
+ I also updated our node list iterator (used to implement some predicates)
+ to handle the last() function properly for reverse-order axes.
+ PR: bugzilla 4602
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslAttribute.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for a regression after a previous fix for bug 3320.
+ PR: bugzilla 4656
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler BinOpExpr.java
+ CastExpr.java EqualityExpr.java Expression.java
+ LastCall.java LogicalExpr.java PositionCall.java
+ Predicate.java RelationalExpr.java Step.java
+ StepPattern.java UnaryOpExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for compound predicates used in patterns.
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ AttributeValueTemplate.java Constants.java
+ FilterParentPath.java LiteralAttribute.java
+ LiteralElement.java LiteralExpr.java Mode.java
+ ParentLocationPath.java Parser.java
+ SimpleAttributeValue.java SyntaxTreeNode.java
+ Text.java UnionPathExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A bit of a code cleanup. I also added a small fix for ensuring document order
+ of node sets returned by union expressions.
+ PR: bugzilla 4677
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Sort.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ ErrorMessages.java ErrorMessages_no.java
+ ErrorMsg.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a test to verify that &lt;xsl:sort/&gt; elements are only used within
+ &lt;xsl:apply-templates/&gt; or &lt;xsl:for-each/&gt; elements.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom Axis.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added an array to the Axis class to give an easy indication to the direction
+ of an axis.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOMCache.java
+ java/src/org/apache/xalan/xsltc/cmdline Transform.java
+ java/src/org/apache/xalan/xsltc/compiler FunctionCall.java
+ java/src/org/apache/xalan/xsltc/dom
+ NodeSortRecordFactory.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TransletLoader.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a new TransletLoader class to the runtime package. This class will
+ be used only when the default Class.forName() call fails. The forName()
+ call will fail if XSLTC is packed in a JAR and installed under
+ $JAVA_HOME/jre/lib/ext. This is because the extensions class
+ loader is used instead of the bootstrap class loader, and that the
+ extensions class loader does not load classes for the default class path.
+ But, if the extensions class loader is being used, then we know two things:
+
+ (1) XSLTC is running on Java 1.2 or later (when extensions were introduced)
+ (2) XSLTC has access to the ClassLoader.getSystemClassLoader() method
+
+ This class takes advantage of this and uses a privileged call to this
+ method to get a reference to the bootstrap class loader. It then uses this
+ class loader to load the desired class.
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a "debug" attribute to the TransformerFactory implementation.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed a debug statement that was left behind after last putback.
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java
+ StepPattern.java XSLTC.java xpath.cup xpath.lex<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for processing-instruction() with a literal parameter for
+ use in node tests in expressions and patterns.
+ PR: bugzilla 2583
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ ProcessingInstructionPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Forgot this in last putback.
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LongExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3592, new class to handle Long expresssion<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ xpath.cup xpath.lex Constants.java CastExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3592, handles long now<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util LongType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3592, added new class for Long types<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>11/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util Type.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3592, handles Long types<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Changes for Xalan-Java 2.2.D11</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix # 3424, memory retension fixed, John Howard contributed fix.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 2807, seth ford's fix<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Include.java
+ Import.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3426, gunnlaugur briem's fix<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslAttribute.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3320, gunnlaugur briem's fix<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>"Gunnlaugur Thor Briem" &lt;gthb@dimon.is&lt;<b>
+<i> on </i>
+</b>09/06/2001<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+&gt; bug fix 3320, gunnlaugur briem's fix
+&gt;
+&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>"G. Todd Miller - XML Tech Ctr - Development" &lt;Glenn.Miller@Sun.COM&gt;<b>
+<i> on </i>
+</b>09/06/2001<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+ &gt;&gt;&gt; bug fix 3320, gunnlaugur briem's fix
+ &gt;&gt;&gt;
+ &gt;&gt;&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated comments from bug fix 2553<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3360, predicate handling added<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>I have updated out output handler to treat this in the same manner as XT does.
+ We allow AVT's to create namespace mappings between some prefix and the null
+ URI. But, whenever an attribute or element uses a prefix that maps to the null
+ URI we replace the prefix with the default prefix. So insead of outputting an
+ illegal namespace declaration xmlns:ns1="" and ns1:Attr1="Whatsup" we simply
+ output Attr1="Whatsup"
+ PR: bugzilla 1518
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modified some of the error messages that are reported by this command-line
+ tool to include full and correct error messages.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMBuilder.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for comment nodes in the DOM. This support disappeared when
+ we upgraded the DOMBuilder's interface from SAX to SAX2. Added a new
+ interface for the DOMBuilder that includes SAX's ContentHandler _and_
+ LexicalHandler.
+ PR: bugzilla namespace30
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated the output handler to URL encode href attributes in HTML output.
+ I used the URLEncoder class in java.net
+ PR: bugzilla 1512
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the default output SAX handler so that it does not indent empty HTML
+ tags such as &lt;col&gt; and &lt;br&gt;
+ PR: bugzilla 1525
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to prevent character escaping inside &lt;script&gt; and &lt;style&gt; elements in
+ HTML output.
+ PR: bugzilla 2517
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Transform.java
+ java/src/org/apache/xalan/xsltc/compiler BooleanCall.java
+ StepPattern.java Variable.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ ResultTreeType.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to always return 'true' when result tree fragments are converted to
+ boolean values (because a result tree always has at least one node - root).
+ PR: bugzilla 2595
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added some code to the DOM builder to make sure that text nodes are not
+ broken up into smaller fragments.
+ PR: bugzilla 3506
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom NodeIteratorBase.java
+ UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for the count() function and union iterators. Union iterators would not
+ reset all the iterators it contained, and it needed a reset() method.
+ PR: bugzilla 3504
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3312, //xx/descendant works now<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom NodeIteratorBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed a debug statement that was left in here by mistake. Bad, bad, bad!
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ ParentLocationPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added test for ParentLocationPath instance<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 3312 completed<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LiteralElement.java
+ Param.java ParameterRef.java
+ ParentLocationPath.java Variable.java
+ VariableBase.java VariableRef.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ MatchingIterator.java ReverseIterator.java
+ StepIterator.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java
+ TextOutput.java
+ java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Several bugfixes and fixes for regressions recently introduced by other
+ bugfixes.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for parameter references used within predicates.
+ PR: bugzilla 3405
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added '-s' option to command-line compilaton tool to precent calls to
+ System.exit(); This is needed when the command-line tool is invoked by
+ our Java-based test harness.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added test in the method that handles stylesheet PIs in embedded stylesheets.
+ This method did not properly test for the existence of stylesheets referenced
+ in these PIs (ref. Sun's test embed09).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java
+ StepPattern.java TestSeq.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for predicates used in complex match patterns. The compiler failed to
+ produce code that would match on patterns like "blob/*[@attr='str']". It
+ would also fail to identify some position predicates such as "blob[$param]".
+ Nested parameters were not handled properly either. A pattern such as
+ "foo[bar[starts-with(@attr, 'baz')]]" would be broken up and actually
+ compiled twice - the outer predicate would be compiled first and the inner
+ one after that. This fix makes sure that the predicates are handled together
+ as one test, and not as two separate tests.
+ PR: bugzilla 1376 (was an id/key problem, now predicates)
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modified the output handler and SAX handler to produce proper HTML output.
+ Special characters in &lt;script&gt; and &lt;style&gt; elements are no longer escaped,
+ and end-tags are properly produced (sometimes we would forget the last '&gt;').
+ PR: bugzilla 2517
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ MatchingIterator.java StepIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Verious fixes for iterators.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom BitArray.java
+ DupFilterIterator.java KeyIndex.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix in the duplicate filter iterator to ensure that the iterator can be
+ reset properly. The iterator was using its own variable for tracking the
+ current node (not the base class' _position variable) but did not
+ implement the reset() method).
+ PR: bugzilla 1430
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler VariableRef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Forgot to add this file with my fix for bug 1430.
+ PR: bugzilla 1430
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LastCall.java
+ ParameterRef.java PositionCall.java Predicate.java
+ RoundCall.java VariableRefBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for combination of wildcards and position predicates in match patterns.
+ PR: bugzilla 1532
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>09/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler RelationalExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 2838, (namedtemplate test)<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to prevent escaping of the '"' character. This character should only
+ be escaped inside attribute values, and not in text nodes.
+ PR: bug 2952
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for ChildrenIterator to speed up last() and position() calls.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>This fix may affect a series of bugs. The AbsoluteIterator (/foo/bar/... etc.)
+ did not update its _position variable, causing position() to return wrong
+ values if called more than once.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ MethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added shortcut to call the reset() method on any iterator.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to ensure that node iterators stored inside parameters are clones for
+ each time the parameter is referenced. If this is not done then the node
+ iterator will be in an unstable state after it has been referenced once.
+ PR: bugzilla 3238
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for layers of parent location paths and steps representing an
+ XPath pattern/expression like /foo/*/bar
+ PR: bugzilla 3311
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ParameterRef.java
+ ParentLocationPath.java Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed a change from yesterday that caused a pretty bad regression in
+ the position() and last() functions. Also changed a line un Param.java
+ to add more information in debug outout.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to prevent complaints about illegal namespace declarations in output.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler VariableBase.java
+ WithParam.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added escaping of special characters in parameter names when passed to a
+ template using &lt;xsl:with param/&gt;.
+ PR: bugzilla 3324
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>minor edit to usuage for -s option<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added functionality behind the '-s' flag in the Transform command-line tool.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java
+ Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed two compile errors (bad, bad, bad).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOM.java
+ java/src/org/apache/xalan/xsltc/compiler LastCall.java
+ PositionCall.java
+ java/src/org/apache/xalan/xsltc/dom DOMAdapter.java
+ DOMImpl.java MultiDOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the getTypedPosition() and getTypedLast() methods of the DOM. These
+ were used to implement XPath patterns such as /foo/bar[8]/baz.
+ PR: bugzilla 2803
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a little method to the output post-processor to replace whitespaces
+ in URLs by "%20" sequences. This is all the escaping I think we should
+ bother our heads doing.
+ PR: bugzilla 1512
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOM.java
+ java/src/org/apache/xalan/xsltc/compiler Constants.java
+ Step.java
+ java/src/org/apache/xalan/xsltc/dom DOMAdapter.java
+ DOMImpl.java MultiDOM.java NthIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Two fixes in this one. One to make sure that the context-node is set correctly
+ when applying templates using an iterator that has a predicate that tests on
+ '.' (the current node), such as select="foo/bar[. = 'blob']". The other fix
+ is for the nth position iterator, that failed to count to n backwards in
+ cases when the underlying iterator was reverse.
+ PR: bugzilla 2954 (two bugs in one, really)
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for CDATA elements. The tags of CDATA sections were passed through the
+ output post-processor's character escaping function but should be passed
+ directly to the SAX handler.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ NthIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>The fix for 2954 introduced a regression, so I am pulling out the fix.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom NthIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A revised fix for bug 2954, that does not cause the regressions previously
+ sown by some tests.
+ PR: bugzilla 2954 (revised fix)
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for the last() function for children iterators.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the descendant iterator so that it does not return text-nodes
+ for descendant::*
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Import.java
+ Param.java Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for resolving mutiple defined global parameters and variables. The
+ Import class has been fixed to set import precedences properly, and the
+ Param class has been changed to use the import precedence to resolve
+ between multiple definitions of the same variable/parameter.
+ PR: bugzilla 3404
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ ClassGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Forgot this file in my last update.
+ Submitted by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/24/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ NthIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Another fix for the preceding-sibling iterator. It appeared that this
+ iterator returned its nodes in the wrong order, and this was the reason
+ why the position iterator (used to implement preceding-siblling::*[n])
+ did not return the correct node. It is quite amazing that this iterator
+ has been returning nodes in the wrong order for so long without any of
+ us notising, and hopefully this fix will help eliminate a few of our
+ open bugs.
+ PR: bugzilla 2954
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Param.java
+ Stylesheet.java Variable.java VariableBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to resolving multiple defined global variables or parameters.
+ PR: bugzilla 3404
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Optimisation for string-2-int and real-2-int conversions.
+ PR: bugzilla 3448
+ Obtained from: n/a
+ Submitted by: John Howard (johnh@schemasoft.com)
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+  <li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Param.java
+ Step.java Variable.java VariableBase.java xpath.cup
+ java/src/org/apache/xalan/xsltc/dom DOMAdapter.java
+ DOMImpl.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for nth-position typed descendant iterators (previously not fully
+ implemented).
+ PR: bugzilla 3468
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for our handling of the &lt;xsl:comment? element.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Param.java
+ Variable.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed previous attempt to fix forward references in globar vars.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for allowing LRE as top-level elements in the stylesheet (they will be
+ ignored).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to make sure all num-numeric values are grouped last in numeric sorts.
+ PR: bugzilla 3517
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ NodeIteratorBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix to ensure that the current position of any iterator is always kept
+ updated. The returnNode() method of the NodeIteratorBase base class updates
+ the _position variable for each returned node. This method should be called
+ by the next() method of any iterator, except for next() methods that call
+ super.next() (because this method calls returnNode() and so _position
+ would be incremented twice or more for one returned node).
+ PR: bugzilla 3816
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated the information returned by the system-property() function.
+ xsl:verision returns "1.0"
+ xsl:vendor returns "Apache Xalan XSLTC" - must be different from Xalan!!!"
+ xsl:vendor-url returns "http://xml.apache.org/xalan-j"
+ PR: bugzilla 3470
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to allow indentation to be turned off XML/HTML output.
+ PR: bugzilla 3469
+ Obtained from: n/a
+ Submitted by: Douglas J. Sellers (douglasjsellers@hotmail.com)
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Output.java
+ Parser.java Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to make sure the one, and only one, xsl:output element is compiled
+ per translet (import precedence taken into account).
+ PR: bugzilla 3099
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed BasisLibrary.formatNumer() (this is the implementation of
+ format-number()) so that it correctly formats NaNs into "NaN".
+ PR: bugzilla 2890
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Another little update to format-number() to make sure it returns
+ "Infinity" and "-Infinity" for infinite numbers.
+ PR: bugzilla 2889
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Stylesheet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changed the order in which a stylesheet parses its top-level elements.
+ PR: bugzilla 3812
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java
+ java/src/org/apache/xalan/xsltc/dom NthIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed a bug in the NthIterator iterator that prevented the iterator from
+ properly being reset. This bug manifested itself if the Nth iterator was
+ wrapped inside a step iterator.
+ PR: bugzilla 3419
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added node-ordering for preceding iterators when used in apply-templates
+ or value-of elements.
+ PR: bugzilla 3463
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed debug statement in Step.java
+ Submitted by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DupFilterIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modified the DupFilterIterator so that it also orders nodes.
+ PR: bugzilla 3466
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/26/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Step.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix after a regression for preceding-sibling::* iterator.
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+ <li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>09/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc Translet.java
+ java/src/org/apache/xalan/xsltc/cmdline Transform.java
+ java/src/org/apache/xalan/xsltc/dom
+ NodeSortRecordFactory.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java
+ java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java
+ TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for the problem with loading auxiliary classes for sorting when
+ called from TrAX API.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC source code updates for Xalan-Java 2.2.D10</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>I added a flag to the compiler/Parser class that is set if the outermost 
+element
+ in the stylesheet contains a definition of the XSL namespace. The parser 
+already
+ has a global variable '_target' that is set if the stylesheet contains a
+ &lt;?xml-stylesheet?&gt; PI or not. The compiler will now flag an error if neither
+ flags are set after the whole XSL/XML input document has been parsed.
+ PR: bugzilla 1780
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler UnionPathExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a small fix that orders the expressions inside a union in such a way 
+that
+ expressions with an attribute axis or attribute node type will be put first.
+ PR: bugzilla 2921
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A small fix that will allow top-level elements of an unknown URI.
+ XSLTC now ignored the element(s), while it previously reported an error
+ of an unsupported XSLT extension.
+ PR: bugzilla 2840
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java DefaultSAXOutputHandler.java
+ TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A start on a fix for output DOCTYPE declarations based on the attributes
+ of the &lt;xsl:output&gt; element. I also added a fix for bug 2863, to prevent
+ us from outputting namespace delcaration that point a prefix to the null
+ URI (such as 'xmlns:blob=""').
+ PR: bugzilla 2863
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug 2553, fixes AbbreviatedAbsoluteLocationPath,
+ some relative location paths still give duplicates, will need to filter.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Transform.java
+ java/src/org/apache/xalan/xsltc/compiler Output.java
+ java/src/org/apache/xalan/xsltc/runtime DefaultRun.java
+ DefaultSAXOutputHandler.java TextOutput.java
+ java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implemented support for the doctype-system and doctype-public attributes
+ of the &lt;xsl:output/&gt; element. The translet post-processor (TextOutput) can
+ now be instanciated with a ContentHandler and an optional LexicalHandler.
+ The LexicalHandler will receive notofications of the DOCTYPE declaration.
+ The default SAX output handler now implements both ContentHandler and
+ LexicalHandler. The LexicalHandler only handles the startDTD() method,
+ by outputting the DOCTYPE declaration, and all other methods are empty.
+ The trax.Transformer implementation has also been updated to use the
+ LexicalHandler, but I still have not found any way in which a SAX client
+ can set the LexicalHandler.
+ PR: bugzilla 1504
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A minor change to the class handling the &lt;xsl:element&gt; element to be more
+ in-sync with the XSLT 1.0 spec (and M.Kay's book). This in order to make
+ it more readable and maintainable. I was trying to debug the code for
+ something I thought was a bug, and it was just impossible to navigate.
+ This change was necessary, even though the code functioned as it should.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LiteralElement.java
+ Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for outputting all necessary namespace declarations with LREs.
+ PR: bugzilla 2863
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom ReverseIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix to allow reverse iterators to be reset (inside nested for-each loops).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/15/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DupFilterIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 2553, new iterator to get rid of dups<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/15/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ FilteredAbsoluteLocationPath.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 2553, new abs location path<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup
+ Constants.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 2553, updated Constants for dup processing
+ and updated CUP rule for AbbreviatedAbsoluteLocationPaths<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java
+ DOMImpl.java DupFilterIterator.java
+ StepIterator.java UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Implementation of id() and key() pattern - finally!
+ Added a small fix to the DOMImpl$DescendantIterator to prevent NPEs.
+ PR: bugzilla 1376
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler IdKeyPattern.java
+ KeyCall.java Mode.java Output.java Parser.java
+ TestSeq.java xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Forgot an 'import' in DupFilterIterator
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc TransletOutputHandler.java
+ java/src/org/apache/xalan/xsltc/dom DupFilterIterator.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java DefaultSAXOutputHandler.java
+ SAXAdapter.java TextOutput.java
+ TransletOutputBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>missing file<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added another fix for the missing DOCTYPE declaration. XSLTC will now output
+ DOCTYPE declarations for HTML output if either doctype-system or doctype-
+ public is declared in the &lt;xsl:output&gt; element. XSL output will get a
+ DOCTYPE declaration only if doctype-system is declared.
+ PR: 1504
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom AbsoluteIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>turning on filtering, bug 2553<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DupFilterIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed a bad optimisation in the duplicate filter iterator.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>re-activated the no dups filtering, dont know how
+ this got reverted back to no filtering, but it is fixed again.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler IdKeyPattern.java
+ Key.java KeyCall.java Parser.java Sort.java
+ xpath.cup
+ java/src/org/apache/xalan/xsltc/compiler/util
+ CompareGenerator.java NodeSortRecordGenerator.java
+ java/src/org/apache/xalan/xsltc/dom DTDMonitor.java
+ DupFilterIterator.java KeyIndex.java
+ NodeSortRecord.java NodeSortRecordFactory.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Major update for id() and key(). Patterns containing id() and key() are
+ now 100% supported (about time), and id() and key() expressions should
+ now work in all (at least most) combinations.
+ PR: bugzilla 1376 (!!!) and 2624
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A small fix for a cleanup I did in the basis library (it broke the
+ substring() function)&gt;
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added small fix to prevent NPE in output handler.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc TransletOutputHandler.java
+ java/src/org/apache/xalan/xsltc/compiler Variable.java
+ VariableRef.java VariableRefBase.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ MultiHashtable.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java
+ TextOutput.java TransletOutputBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added element/attribute prefix information in the internal DOM.
+ This should fix some problems we have had with the copy and copy-of
+ elements. Added a few lines of code in an attempt to speed up the DOM builder.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DTDMonitor.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>An attempt to optimise the building of the ID index. The previous version of
+ this code would traverse the DOM once for each type of element that had a
+ defined ID attribute. The new version traverses the DOM once, and looks up
+ each element's type in a hashtable to determine its ID attribute type (if 
+any).
+ The new version of the code does not use string comparisons, like the old one.
+ This update was done to compensate for the possible performance degradation of
+ having implemented an element/attribute prefix array in the internal DOM.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/21/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TemplatesHandlerImpl.java TemplatesImpl.java
+ TransformerHandlerImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Protected some methods in our TrAX code that are not defined in the TrAX API.
+ These methods were never intended for public use and should have been defined
+ as "protected" to begin with.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/22/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for a problem with some combinations of &lt;xsl:element&gt; and namespace
+ aliasing. The output lacked the necessary namespace definitions when an
+ element created with &lt;xsl:element&gt; was given a qname with a prefix that
+ was mapped to some other prefix.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ParameterRef.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>removed typeCheck(), uses the base classes method now<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ VariableRefBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added default typeCheck() to this base class<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler RelationalExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 2838, cast to type real if both operands are
+ ResultTreeType<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOM.java
+ java/src/org/apache/xalan/xsltc/compiler
+ AbsoluteLocationPath.java AbsolutePathPattern.java
+ AncestorPattern.java ApplyTemplates.java
+ BooleanExpr.java CallTemplate.java CastExpr.java
+ Constants.java Copy.java CopyOf.java
+ DocumentCall.java FilterExpr.java
+ FilteredAbsoluteLocationPath.java ForEach.java
+ FunctionCall.java Key.java KeyCall.java
+ LastCall.java LocalNameCall.java Mode.java
+ NameCall.java NamespaceUriCall.java Number.java
+ Param.java ParameterRef.java
+ ParentLocationPath.java ParentPattern.java
+ PositionCall.java Predicate.java
+ RelationalExpr.java Sort.java Step.java
+ StepPattern.java Stylesheet.java
+ SyntaxTreeNode.java Template.java TestSeq.java
+ Text.java TransletOutput.java ValueOf.java
+ Variable.java VariableRef.java Whitespace.java
+ XSLTC.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ ClassGenerator.java ErrorMsg.java
+ MethodGenerator.java NodeSetType.java NodeType.java
+ ResultTreeType.java
+ java/src/org/apache/xalan/xsltc/dom Axis.java
+ DOMAdapter.java DOMImpl.java LoadDocument.java
+ MultiDOM.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Changes all calls from the compiled translet code to the DOM to be calls
+ to the DOM interface (and not to a specific DOM class). I did this to make
+ it possible to plugi in any DOM implementation.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc TransletOutputHandler.java
+ java/src/org/apache/xalan/xsltc/compiler Constants.java
+ TransletOutput.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java DefaultSAXOutputHandler.java
+ TextOutput.java TransletOutputBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added an &lt;xsltc:output&gt; extension to allow for multiple output files. I know
+ that this is not a prioritised task, but I need this for a little project I
+ am working on.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Param.java
+ ParameterRef.java Variable.java VariableBase.java
+ VariableRef.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ NodeSetType.java NodeType.java ReferenceType.java
+ ResultTreeType.java StringType.java Type.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A few fixes for the regression caused by my last (huge) putback.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DupFilterIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for the position() function when using duplicate filter iterators.
+ PR: n/
+ Obtained from: N/A
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+ <li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>08/30/2001<br />
+<b>
+<i>Modified: 
+ </i>
+</b>java/src/org/apache/xalan/xsltc/runtime SAXAdapter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+ Submitted by: Tom Amiro  
+ I just added an empty close method to resolve the build problem.<br />
+<br />
+</li> 
+ </ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC source code updates for Xalan-Java 2.2.D9</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Integrated fix for problem with count() function for certain iterators.
+ PR: Bugzilla 1407
+ Obtained from: n/a
+ Submitted by: John Howard &lt;johnh@schemasoft.com&gt;
+ Reviewed by: Morten Jorgensen &lt;morten@xml.apache.org&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/30/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc DOM.java
+ java/src/org/apache/xalan/xsltc/compiler EqualityExpr.java
+ FilterParentPath.java Parser.java Predicate.java
+ Step.java SyntaxTreeNode.java Variable.java
+ XSLTC.java
+ java/src/org/apache/xalan/xsltc/dom DOMAdapter.java
+ DOMImpl.java MultiDOM.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java DefaultSAXOutputHandler.java
+ TextOutput.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added code that will speed up predicates such as //foo[@attr=$var],
+ //foo[bar = $var] and //foo/[@attr = 'str'].
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Expression.java
+ Param.java ParameterRef.java Predicate.java
+ Stylesheet.java SyntaxTreeNode.java Variable.java
+ VariableRef.java WithParam.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for parameter and variable handling. This fix makes sure variable slots
+ are released once a variable goes out of scope. I have also extracted common
+ functionality from Variable and Param into VariableBase, and similarly
+ extracted some functionality from VariableRef and ParameterRef into a new
+ class VariableRefBase. This can potentially make some code more efficient as
+ one can test for 'if (blob instanceof VariableBase)' instead of testing on
+ both Variable and Param.
+ PR: Bugzilla 2661 and 2699
+ Obtained from: n/a
+ Submitted by: John Howard &lt;JohnH@schemasoft.com&gt;
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler VariableBase.java
+ VariableRefBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Forgot to add these two in my last putback.
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java
+ Step.java Stylesheet.java XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed type-cast error in Stylesheet.java
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler VariableBase.java
+ java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed some of the linefeeds we output in the default SAX output handler
+ to produce output more similar to Saxon (for testing purposes).
+ Added a test for null-pointers in the new VariableBase class.
+ PR: bugzilla 2922 &amp; 2598
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org`<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/31/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom NodeCounter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a small fix to prevent unwanted output when using the xsl:number
+ element.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Constants.java
+ If.java Key.java Predicate.java Step.java When.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ CompareGenerator.java
+ java/src/org/apache/xalan/xsltc/dom NodeCounter.java
+ java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A few changes to make our output look more like Saxon's (to simplyfy
+ test diffs).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/01/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java
+ DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>add support for DOMResult handling<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/01/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>work in progress, converted needed for DOMResult<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added setting of systemId in DOMSource handling<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax SAX2DOM.java
+ TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added an implementation of the TransformerHandler interface of TrAX/JAXP.
+ Implemented the 4 methods in TransformerFactory to instanciate this
+ TransformerHandler implementation.
+ Added an attribute of the TransformerFactory which contains the default
+ name for generated translet classes (the default name is GregorSamsa from
+ Kafka's Metemorphosis), but should be set by the user in cases where the
+ Templates implementation cannot get the systemId from the Source object.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java
+ TransformerHandlerImpl.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TemplatesHandlerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added missing TemplatesHandlerImpl file (implementation of the TrAX
+ TemplatesHandler interface).
+ Added initial implementation of getAssociatedStylesheet() in
+ the TransformerFactoryImpl class.
+ Changed behaviour of TransformerHandlerImpl class with regard to
+ the setResult() method. This method now has to be called before
+ startDocument() is called, which gives XSLTC the same behaviour
+ as Xalan.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/02/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ XSLTC.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for the TransformerFactory's getAssociatedStylesheet()
+ method. Added similar methods to the native XSLTC API, as they can come
+ in handy.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Constants.java
+ DocumentCall.java
+ java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for the document() function. The code compiled by DocumentCall now
+ passes the context URI to the LoadDocument.document() method, and the
+ document() method resolves the base/new URIs and constructs an absolute
+ path/URI to the document to load.
+ PR: bugzilla 2832
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new recursive parse(InputSource) implemented<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>upated<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated again<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ java/src/org/apache/xalan/xsltc/trax SAX2DOM.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to get around problem with Crimson. Crimson does not like attribute-
+ nodes to be created with 'null' or "" namespace URI. Added an if-test to
+ invoke setAttribute(name, value) instead of setAttributeNS(uri, name, value).
+ Had to add a little test to DOMImpl$DOMBuilder.makeAttributeNode() to get
+ around an internal NPE problem.
+ PR: n/a
+ Obtained from: n.a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/03/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler CopyOf.java
+ Step.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ UnionIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for union-iterators wrapping one or more attribute-iterators.
+ Attributes should be wrapped in TypedAttributeIterator objects and not
+ SingletonIterator objects when they occur insude unions.
+ Fix for copying attribute nodes using &lt;xsl:copy&gt; and &lt;xsl:copy-of&gt;
+ PR: bugzilla 2603
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom LoadDocument.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added code behind the document() function to force the parser to be
+ namespace aware (Crimson is pr. default, Xerces is not).
+ PR: bugzilla 2862
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to prevent escaping of attribute values in HTML output.
+ PR: bugzilla 3003
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for grouping a sequence of text nodes inside one CDATA section.
+ PR: bugzilla 3005
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ForEach.java
+ xpath.cup
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for passing node-sets as parameters into a template with a for-each loop.
+ The ForEach class resets its node iterator by default. This behaviour is not
+ desierd for iterators that are passed in through a parameter, so I added an
+ it-test that checks if the iterator is of type 'Reference'.
+ PR: bugzilla 2468
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ AbsolutePathPattern.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for a certain combination of absolute path patterns and ancestor patterns,
+ such as &lt;xsl:template match="/foo//*"/&gt;.
+ PR: bugzilla 2836
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler DocumentCall.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for document() function. Prevents run-time error.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a test to the &lt;xsl:element&gt; element to verify that the element name
+ given in the 'name' attribute contains something other than an empty string.
+ PR: bugzilla 2794
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LiteralElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Applied a fix to our class for handling literal result elements. The only
+ attributes in the XSLT namespace we handle in LREs are exclude-result-prefixes
+ and extension-element-prefixes. We have a test to check if an attribute is
+ in the XSLT namespace, and if it is we ignore the attribute. This test was
+ placed before the test for the two XSLT attributes we do want to handle,
+ causing us to ignore all xsl:exclude-result-prefixes attributes in LREs.
+ PR: bugzilla 1506
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Attribute.java
+ AttributeSet.java Copy.java UseAttributeSets.java
+ XslAttribute.java
+ java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix and performance improvement for attribute sets.
+ PR: bugzilla 2536
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>08/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Copy.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for use of attribute sets with the xsl:copy element. We were a bit too
+ restrictive in our tests to see if it was safe to send the attributes to
+ the output handler. We only compiled in a test to see if the copied node
+ was an elment, but should also have tested if the xsl:copy element's
+ parent node was a LRE or a xsl:element element.
+ PR: bugzilla 2538
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC source code updates for Xalan-Java 2.2.D8</h3>
+<p>XSLTC source code updates:</p>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for SAXSource and SAXResult in TransformerFactoryImpl
+ and TransformerFactory. I had to add a new consturctor the the
+ default SAX output handler (in the xsltc runtime library) to acommodate
+ the SAXResult TrAX output handler.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added default error-reporting behaviour for our trax code (error messages
+ are dumped to System.err).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>in progress, adding DOMSource support<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>new class, DOM2SAX, supports DOMSources, in progress<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Import.java
+ Include.java Stylesheet.java XSLTC.java
+ java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler SourceLoader.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a SourceLoader interface to the compiler package. This interface can
+ be used to plug in an external document loader for imported and/or
+ included stylesheets. The trax.TransformerImpl class is updated to
+ implement this interface and act as an adapter between the internal XSLTC
+ SourceLoader interface and TrAX's URIResolver interface.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@apache.org
+ Reviewed by: morten@apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime Constants.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added the NAMESPACE_FEATURE constant. Checked to see if it was in
+ org.xml.sax first, but it wasn't. Since this constant is used both
+ at compile and runtime, it should be in the runtime Constants class
+ as well as the compile Constants class. Runtime code needs to be
+ kept separate from the compile time code.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime DefaultRun.java
+ java/src/org/apache/xalan/xsltc/cmdline Transform.java
+ java/src/org/apache/xalan/xsltc/dom DocumentCache.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added import for org.apache.xalan.xsltc.runtime.Constants;
+ to the runtime classes that need to use the NAMESPACE_FEATURE constant
+ and had them reference it rather than define it themselves.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>minor changes for DOMSource impl support<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added DOMSource support for stylesheet<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>07/20/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax DOM2SAX.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>updated convertor which supports DOMSource impl<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a small fix to the compiler (XSLTC.java) to make sure that the SAX
+ parser reference was not reset prior to compiling the translet.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added support for DOMSource as input to our Transformer implementation<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Import.java
+ Sort.java
+ java/src/org/apache/xalan/xsltc/dom NodeSortRecord.java
+ NodeSortRecordFactory.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>For some reason I decided to optimise the &lt;xsl:sort&gt; functionaility. The
+ sort records we used has some global values stored behind methods, but are
+ now static fields. Somewhat faster.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Import.java
+ Include.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for problem with import &amp; include introduced with the latest updated
+ for TrAX URIResolvers.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Integrated fix for problem with count() function for certain iterators.
+ PR: Bugzilla 1407
+ Obtained from: n/a
+ Submitted by: John Howard &lt;johnh@schemasoft.com&gt;
+ Reviewed by: Morten Jorgensen &lt;morten@xml.apache.org&gt;<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC source code updates for Xalan-Java 2.2.D7</h3>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/09/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Constants.java
+ Param.java StepPattern.java Stylesheet.java
+ SyntaxTreeNode.java Variable.java WithParam.java
+ java/src/org/apache/xalan/xsltc/dom KeyIndex.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java BasisLibrary.java
+ DefaultRun.java Parameter.java TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Loads of small fixes and a good few comments added to the source code.
+ The major fixes are one fix for variable/parameter handlingi and one for
+ key/id index handling. XSLTC now correctly updates the value of parameters
+ with changing default values, such as with
+ &lt;xsl:param name="foo" select="current()"/&gt;.
+ Also updated bit-arrays to correctly return single node ids, so that the
+ key() and id() functions return the correct number of nodes (they would
+ sometimes skip the first node in the defined node set for the key/id).
+ Added some structure and loads of comments to the Translet base class.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/10/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ AncestorPattern.java AttributeSet.java
+ CallTemplate.java CastExpr.java EqualityExpr.java
+ Expression.java FunctionCall.java If.java
+ Import.java Include.java Mode.java NameBase.java
+ Param.java ParameterRef.java Parser.java
+ StepPattern.java SyntaxTreeNode.java Template.java
+ TestSeq.java Variable.java VariableRef.java
+ XSLTC.java XslAttribute.java
+ java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java
+ ReferenceType.java
+ java/src/org/apache/xalan/xsltc/dom MultiDOM.java
+ StepIterator.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A wide range of fixes provided by Erwin Bolwidt.
+ o) fix for long IF and GOTO instructions inside translets.
+ 'wide' GOTOs are now used (GOTO_W) instead of plain GOTO
+ to allow longer jump offsets
+ o) fix for illegal field/method names in the translet.
+ Methods and fields no longer contain the '.' or '-' characters
+ o) source filenames (and if possible also line numbers) are now
+ provided with error and warning messages
+ o) external functions that are not supported by XSLTC do not cause
+ compile errors. They will still cause a warning message at
+ compile-time if they are not wrapped in proper &lt;xsl:if&gt; or
+ &lt;xsl:when&gt; elements that test on the availability of the function,
+ and will cause a runtime error if the function is attempted called.
+ o) added type cast from reference-type to node-type
+ o) some other smaller fixes to prevent null-pointer exceptions
+ Other changes:
+ o) code cleanup and some added comments
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: Erwin Bolwidt &lt;ejb@klomp.org&gt;
+ Reviewed by: Morten Jorgensen &lt;morten@xml.apache.org&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ SyntaxTreeNode.java XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Cleaned up the XSLTC compiler class in an attempt to make it more flexible.
+ This class was originally written as a command-line interface, but it has
+ now grown huge and messy. I separated the command-line stuff from the
+ methods that make up the actual functionality and made some methods public.
+ This is part of the preparation for our new implementation of the JAXP
+ Templates object.
+ PR: n/a
+ Obtained from: n.a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime DefaultRun.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java
+ Transform.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Extracted the command-line stuff from the core XSLTC packages. The command-
+ line handling is now in xalan.xsltc.cmdline.Compile and
+ xalan.xsltc.cmdline.Transform. The command-line stuff is still left in
+ xalan.xsltc.compiler.XSLTC and xalan.xsltc.runtime.DefaultRun for backwards
+ compatability. This should be removed shortly.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline Compile.java
+ java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/cmdline/getopt GetOpt.java
+ GetOptsException.java IllegalArgumentException.java
+ MissingOptArgException.java
+ java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java
+ TransformerImpl.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/util/getopt GetOpt.java
+ GetOptsException.java IllegalArgumentException.java
+ MissingOptArgException.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Moved the org.apache.xalan.xsltc.util.getopt package to
+ org.apache.xalan.xsltc.cmdline.getopt. Also added some skeleton
+ code in a new org.apache.xalan.xsltc.trax directory.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransletTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>minor adjustment
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>removed obselete try/catch<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java
+ java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java
+ TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransletTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A first stab at our new TrAX design.`
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java
+ java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java
+ TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A few minor adjustments to yesterdays JAXP/TrAX implementation. These is one
+ change in the way the compiler (XSLTC) generates bytecode arrays, and the
+ rest is basically a cleanup of error reporting and a few added comments.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/16/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DocumentCache.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax OutputSettings.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Reduced the refresh rate of the DocumentCache to 1 second.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>amiro@apache.org<b>
+<i> on </i>
+</b>07/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DocumentCache.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Submitted by: Tom Amiro
+ Fixes bug 1591. Changed the lastModified() method to return
+ the correct timestamp for local files beginnig with the "file:"
+ protocol. Incorporated Brian Ewin's suggestion to use URLdecode.
+ Todd Miller and Morten Jorgensen<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java
+ java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java
+ TransformerFactoryImpl.java TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added some javadoc comments to our trax stuff. Added preliminary support
+ for getting/setting output properties, and for getting/setting URL resolvers.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc TransletOutputHandler.java
+ java/src/org/apache/xalan/xsltc/cmdline Transform.java
+ java/src/org/apache/xalan/xsltc/compiler Output.java
+ Stylesheet.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java DefaultRun.java
+ DefaultSAXOutputHandler.java SAXAdapter.java
+ StringValueHandler.java TextOutput.java
+ TransletOutputBase.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A series of changes to the XSLTC output handling to accomodate the
+ set/getOutputSettings() methods in the TrAX API.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the handling of the 'cdata-section-elements' attribute of the
+ &lt;xsl:output&gt; element. Previously we output the whole element, including
+ all contents, child elements and the start- and end-tags in one big
+ CDATA section. We now correctly output only immediate text child-nodes
+ as CDATA sections.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc Translet.java
+ java/src/org/apache/xalan/xsltc/dom LoadDocument.java
+ java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java
+ java/src/org/apache/xalan/xsltc/trax TransformerImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added implementation of get/setOutputProperties() of the Transformer
+ implementation.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>07/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DocumentCache.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added (a rather brutal) handling of all Exceptions thrown in the
+ DocumentCache.getLastModified() method. This class is provided only
+ as an example/skeleton, but should still - for various reasons -
+ be provided in the base 'xsltc.dom' package.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+</ul>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC source code updates for the Xalan-Java 2.2.D releases up to and including 2.2.D6</h3>
+<ul>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>05/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Text.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 1403, output escaping fixed<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>05/23/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>bug fix 1403, output escaping fixed<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>stylesheet compilation error listening added for
+ TrAX support<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>stylesheet compilation error listening added for
+ TrAX support<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>stylesheet compilation error listening added for
+ TrAX support<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Transformer factory's setErrorListener() now throws
+ IllegalArgumentException is listener is null<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>translet transformation errors now forwarded to
+ TrAX error listener when applicable<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/05/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>translet transformation errors now forwarded to
+ TrAX error listener when applicable<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime AttributeList.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a constructor for copying an org.xml.sax.Attributes to our
+ org.apache.xalan.xsltc.runtime.AttributeList.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ApplyImports.java
+ ApplyTemplates.java Attribute.java
+ AttributeSet.java AttributeValueTemplate.java
+ BinOpExpr.java CallTemplate.java Comment.java
+ ConcatCall.java Constants.java Copy.java
+ CopyOf.java DecimalFormatting.java
+ DocumentCall.java Expression.java Fallback.java
+ ForEach.java FormatNumberCall.java
+ FunctionAvailableCall.java FunctionCall.java
+ If.java Import.java Include.java Key.java
+ LiteralAttribute.java LiteralElement.java
+ LiteralExpr.java LogicalExpr.java Message.java
+ NamespaceAlias.java Number.java Output.java
+ Param.java Parser.java ProcessingInstruction.java
+ QName.java RelationalExpr.java Sort.java
+ Stylesheet.java SymbolTable.java
+ SyntaxTreeNode.java Template.java Text.java
+ TransletOutput.java UnaryOpExpr.java ValueOf.java
+ Variable.java When.java Whitespace.java
+ WithParam.java XSLTC.java XslAttribute.java
+ XslElement.java xpath.cup
+ java/src/org/apache/xalan/xsltc/compiler/util
+ MethodType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removed the intermediate DOM used to contain the input document (the
+ stylesheet) for the compiler. The compiler now uses SAX2 to import
+ the stylesheet, and all references to DOM interfaces have been removed.
+ This means that most classes representing XSL elements have been
+ changed, but most classes representing XPath functions, expressions
+ and patterns are unchanged.
+ PR: After suggestion from Scott Boag
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/06/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ UnsupportedElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Adding a class for handling unsupported stylesheet elements
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor fix to make sure that attributes are processed in the correct order.
+ PR: n/a
+ Obtained from: n.a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor change in output indentation/line feeds.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xmp.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ LocationPathPattern.java Parser.java Template.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fixed the code that resolves conflicts between templates with identical
+ patterns. The order of the templates is not taken into account - after
+ import precedence and priority has been checked.
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ DefaultSAXOutputHandler.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Reverted changes to SAX output handler.
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/06/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ Template.java xpath.cup<br />
+<b>
+<i>Committer's log entry: </i>
+</b>unified Parser error reporting to use Mortens
+ reportError routine<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/07/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler BinOpExpr.java
+ FunctionCall.java Otherwise.java Param.java
+ RelationalExpr.java Stylesheet.java
+ SyntaxTreeNode.java Variable.java When.java
+ XSLTC.java XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Updated a few classes that were still calling Parser.addError(),
+ Parser.addWarning() and Parser.addFatalError() to use the new common
+ error handler Prarser.reportError(int category, ErrorMsg message).
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Parser.java
+ java/src/org/apache/xalan/xsltc/runtime DefaultRun.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added two lines of code to explicitly set the feature
+ "http://xml.org/sax/features/namespaces" of the SAXParser to "true".
+ The default is "true" but xerces seems to set it to "false", and this
+ caused some problems for our Stylesheet and XML doc parsers (which are
+ both using SAX2).
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Constants.java
+ Parser.java
+ java/src/org/apache/xalan/xsltc/runtime DefaultRun.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A few more changes to make sure the parsers used are namespace aware.
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/08/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LiteralElement.java
+ SyntaxTreeNode.java XslAttribute.java
+ XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>The change from using DOM to using SAX in the stylesheet input caused some
+ of the elements in the Abstract Syntax Tree (AST) to be out of order. I
+ added a few lines of code to the xsl:element/attribute handling code to
+ fix this.
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler AttributeSet.java
+ Choose.java Constants.java If.java
+ LiteralElement.java Stylesheet.java
+ UseAttributeSets.java When.java XSLTC.java
+ XslAttribute.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>This putback contains three fixes:
+ o) fix for complex &lt;xsl:attribute-set&gt; inheritance structures
+ o) fix for xsl:element-available() function used in &lt;xsl:when&gt; or
+ &lt;xsl:if&gt; to test support for various extension elements
+ o) fix for preserving namespace prefixes for &lt;xsl:attribute&gt; output.
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Constants.java
+ UseAttributeSets.java ValueOf.java
+ XslAttribute.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ AttributeSetMethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to allow iterator access within attribute sets. This is necessary for
+ attribute sets that contain attributes whose values are generated by XSL
+ functions such as position() and last().
+ Obtained from: test mk013
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added output character escaping for non-breaking space characters.
+ I cannot believe we've waited this long before doing this. Madness!
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java
+ Parser.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>support for java.io.InputStream StreamSources<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/11/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ TransletTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>support for java.io.InputStream StreamSources<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LogicalExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for bug 1511. Predicates on the format ((a or b) and c) are not
+ handled correctly. I added a small piece of code to direct the true-list
+ of the OR expression to the beginning of the AND test.
+ PR: Bugzilla 1511
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java
+ TextOutput.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix attribute node-set comparisons. There was a bug in one of the compare()
+ methods of the BasisLibrary class which prevented attribute values from
+ being compared. The method compared node IDs instead of node values.
+ Pretty stupid bug, but now it is solved anyway.
+ PR: Bugzilla 1409
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Mode.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to make sure that the implicit "text()" pattern is run when templates
+ containing "text()" in their pattern fail. XSLTC would not previously
+ invoke the built-in pattern for "text()" if a stylesheet contained a
+ template such as &lt;xsl:template pattern="foo/bar/text()" .../&gt;
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XslElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Modified test for legal element names in &lt;xsl:element&gt;. The element name is
+ treated as an attribute value. Whitespaces are not allowed in plain text
+ element names, but should be allowed inside "{...}" attribute values.
+ PR: Bugzilla 1489
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>A fix for the preceding:: iterator
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom DOMImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Minor re-adjustment to last fix for preceding:: iterator
+ PR: 1407
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ForEach.java
+ XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to prevent compiler warnings to be output more than once.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler AttributeSet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Final fix (for now) for attribute sets. In cases where multiple
+ &lt;xsl:attribute-set.../&gt; elements make up one attribute set (ie. they share
+ the same name) attributes that occured last in the stylesheet will take
+ precedence.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/12/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added support for java.io.InputStream StreamSources<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LogicalExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for code handling logical expressions and combinations of logical
+ expressions. Mindblowing stuff, but it now seems to work as it should.
+ Added another few lines of code to properly direct the program flow in
+ compiled predicates with various combinations of "and" and "or" expressions.
+ PR: Bugzilla 1511
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/13/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/dom SingletonIterator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for singleton iterators encapsulating variable references.
+ PR: Bugzilla 1412
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/14/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LiteralElement.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added one-line fix to prevent null-pointer error. Simple code cleanup.
+ PR: n/a
+ Obtained from: suggestion by Guoliang Cao &lt;cao@ispsoft.com&gt;
+ Submitted by: cao@ispsoft.com
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/15/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler LogicalExpr.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix to prevent compile-time null-pointer exceptions for certain logical
+ expressions. Some nexted AND-expressions would cause this error because
+ their true-list would not be backpatched. This would result in an
+ instruction list with one or more branch instructions with no target,
+ such as a GOTO(null) or an IFEQ(null) instruction.
+ PR: none, bug found in test run and fixed immediately
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>curcuru@apache.org<b>
+<i> on </i>
+</b>06/17/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler
+ AbsoluteLocationPath.java ApplyImports.java
+ ApplyTemplates.java CastExpr.java CopyOf.java
+ DocumentCall.java EqualityExpr.java Expression.java
+ FilterExpr.java FilterParentPath.java ForEach.java
+ FunctionCall.java IdKeyPattern.java Key.java
+ KeyCall.java NameBase.java ParentLocationPath.java
+ Parser.java Predicate.java RelationalExpr.java
+ Step.java UnionPathExpr.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ NodeSetType.java NodeType.java ReferenceType.java
+ ResultTreeType.java Type.java
+ java/src/org/apache/xalan/xsltc/dom UnionIterator.java
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>OK, I'm going to make a wild guess and assume that sboag's recent commit
+ of /NodeSet/NodeSetDTM/ got a little out of control and shouldn't have
+ gone down into org.apache.xalan.xsltc - undone to fix compile error<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/18/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ NodeSetType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Removing NodeSetType (renamed to NodeSetDTMType).
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util Type.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ NodeSetDTMType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/18/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util Type.java<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ NodeSetType.java<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler/util
+ NodeSetDTMType.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+
+
+<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/19/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ContainsCall.java
+ FunctionCall.java If.java LogicalExpr.java
+ Param.java QName.java StartsWithCall.java
+ SymbolTable.java SyntaxTreeNode.java Template.java
+ Variable.java xpath.cup
+ java/src/org/apache/xalan/xsltc/runtime BasisLibrary.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for function calls used as clauses in logical expressions.
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>Tom.Amiro@Sun.COM<b>
+<i> on </i>
+</b>06/19/2001<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+&gt; Fix for function calls used as clauses in logical expressions.
+&gt; Submitted by: morten@xml.apache.org
+&gt; Reviewed by: morten@xml.apache.org
+&gt;
+&gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>Morten.Jorgensen@sun.com<b>
+<i> on </i>
+</b>06/19/2001<br />
+<b>
+<i>Committer's log entry: </i>
+</b>
+&gt; &gt; Fix for function calls used as clauses in logical expressions.
+&gt; &gt; Submitted by: morten@xml.apache.org
+&gt; &gt; Reviewed by: morten@xml.apache.org
+&gt; &gt;
+&gt; &gt;<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added check to see if stylesheet is already an URL<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ TransletTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added check to see if stylesheet is already an URL<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/25/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TrAXFilter.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>proto<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/25/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>removed debug statements<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/26/2001<br />
+<b>
+<i>Removed: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime TrAXFilter.java
+ TransformerFactoryImpl.java TransletTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>in process of moving these to new subdir<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/26/2001<br />
+<b>
+<i>Added: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TrAXFilter.java
+ TransformerFactoryImpl.java TransletTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>moved from runtime subdir to its own trax subdir<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>fixed bug with deriving translet name from
+ stylesheet name that included paths, e.g. /tmp/foo.xsl<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>This update allows variables that contain references to result-tree fragments
+ to be used inside position filters.
+ PR: n/a
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/runtime
+ AbstractTranslet.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added url handling in doTransform<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax
+ TransformerFactoryImpl.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added a new sys property called 'transletPool'
+ to allow user to set the destination directory for generated translets<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/trax TransletTemplates.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>added a new sys property called 'transletPool'
+ to allow user to set the destination directory for generated translets<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>tmiller@apache.org<b>
+<i> on </i>
+</b>06/27/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler XSLTC.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>made private method setDestDirectory() public to
+ support the new transletPool system property.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/28/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Predicate.java
+ Step.java Stylesheet.java VariableRef.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ MethodGenerator.java NodeSortRecordGenerator.java
+ ResultTreeType.java TestGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Various bugfixes in the way auxiliary classes access variables/fields in
+ the main translet class. Fixes a few VAR tests and customer tests.
+ Pmorten@xml.apache.org:<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler Choose.java
+ ElementAvailableCall.java
+ FunctionAvailableCall.java Parser.java When.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Fix for element-available() and function-available() calls. Ties these
+ calls to tables in the XSL parser and the symbol-table (the actual
+ implementation) instead of using redundant and not-up-to-date tables
+ in the classes that implement the X-avaiable() calls.
+ I also cleaned up the Choose call so that it now properly handles
+ all types of function calls in the xsl:when elements' test clause.<br />
+<br />
+</li>
+<li>
+<b>
+<i>Committed by </i>
+</b>morten@apache.org<b>
+<i> on </i>
+</b>06/29/2001<br />
+<b>
+<i>Modified: </i>
+</b>java/src/org/apache/xalan/xsltc/compiler ForEach.java
+ Param.java Variable.java
+ java/src/org/apache/xalan/xsltc/compiler/util
+ MethodGenerator.java<br />
+<b>
+<i>Committer's log entry: </i>
+</b>Added a fix for local variables inside nested xsl:for-each elements.
+ Local variables are usually not initialized to any default value (such as
+ with general Java classes), because code compiled for &lt;xsl:variable&gt;
+ elements always assign values to variable slots before they are accessed.
+ But the code structure generated by nested &lt;xsl:for-each&gt; elements is too
+ much for the JVMs verifier to get around, so we have to initialize all
+ local variables inside such loops to zero, false, null, whatever.
+ This takes care some of our runtime-errors caused by apparent corrupt code.
+ (The JVMs verifier thinks that it is corrupt, but it isn't really.)
+ PR: none
+ Obtained from: n/a
+ Submitted by: morten@xml.apache.org
+ Reviewed by: morten@xml.apache.org<br />
+<br />
+</li>
+</ul>
+ 
+ <p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>XSLTC Changes for Xalan-Java 2.1.0</h3>
+<p>The Sun XSLTC team (david.hofert@east.sun.com, tom.amiro@east.sun.com, todd.miller@east.sun.com, 
+morten.jorgensen@Ireland.sun.com) has checked <a href="xsltc_usage.html">XSLTC</a> into the Xalan
+source tree, and we have begun the process of merging XSLTC into Xalan. XSLTC provides a compiler for compiling
+stylesheets into translets, and a streamlined runtime environment for using translets to transform XML input. 
+In the near term, XSLTC will appear in a separate JAR file (xsltc.jar) with its own API and command-line
+utilities. You can already use the same JAXP interfaces to perform
+transformations with the Xalan transformer and with translets. Over time, we plan to merge the two codebases.
+<b>
+<i>See <a href="xsltc/index.html">XSLTC Design Documents</a>.</i>
+</b>
+</p>
+<p>Since this is the first release of XSLTC on Apache (xml.apache.org), changes are  
+relative to Preview 5 of XSLTC posted on www.sun.com/xml/developers.</p>
+<ul>
+  <li>Simplified stylesheets are now implemented.</li>
+  <li>Base package name has changed from <code>com.sun.xslt</code> to <code>org.apache.xalan.xsltc</code>
+</li>
+  <li>You no longer have to get the BCEL.jar file; it is included in the distribution.</li>
+  <li>The Project X parser components and APIs have all been replaced with JAXP equivalents. 
+  Consequently, you may deploy XSLTC with JAXP-conformant parsers, such as Xerces or Crimson.</li>
+  <li>Previously undocumented feature: -x. You can use the -x option on the java command line when you
+  compile translets or run them to get more detailed information on errors.</li>
+  <li>Addition of -s to DefaultRun - a new -s option has been added to the DefaultRun class 
+  for use with test auotmation. When you use the option, it prevents System.exit() from being called when 
+  and exception is encountered.</li>
+</ul>
+ 
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
diff --git a/xalan-j/xsltc_usage.html b/xalan-j/xsltc_usage.html
new file mode 100644
index 0000000..9f1d923
--- /dev/null
+++ b/xalan-j/xsltc_usage.html
@@ -0,0 +1,992 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<title>ASF: Getting Started with XSLTC</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
+</head>
+<!--
+ * 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.
+ -->
+<body>
+<div id="title">
+<table class="HdrTitle">
+<tbody>
+<tr>
+<th rowspan="2">
+<a href="../index.html">
+<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
+</a>
+</th>
+<th text-align="center" width="75%">
+<a href="index.html">Xalan XSL Transformer User's Guide</a>
+</th>
+</tr>
+<tr>
+<td valign="middle">Getting Started with XSLTC</td>
+</tr>
+</tbody>
+</table>
+<table class="HdrButtons" align="center" border="1">
+<tbody>
+<tr>
+<td>
+<a href="http://www.apache.org">Apache Foundation</a>
+</td>
+<td>
+<a href="http://xalan.apache.org">Xalan Project</a>
+</td>
+<td>
+<a href="http://xerces.apache.org">Xerces Project</a>
+</td>
+<td>
+<a href="http://www.w3.org/TR">Web Consortium</a>
+</td>
+<td>
+<a href="http://www.oasis-open.org/standards">Oasis Open</a>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div id="navLeft">
+<ul>
+<li>
+<a href="resources.html">Resources</a>
+<br />
+</li>
+<li>
+<a href="http://xalan.apache.org/index.html">Home</a>
+</li></ul><hr /><ul>
+<li>
+<a href="index.html">Xalan-J 2.7.2</a>
+</li>
+<li>
+<a href="charter.html">Charter</a>
+</li></ul><hr /><ul>
+<li>
+<a href="whatsnew.html">What's New</a>
+</li>
+<li>
+<a href="readme.html">Release Notes</a>
+</li></ul><hr /><ul>
+<li>
+<a href="overview.html">Overview</a>
+</li>
+<li>
+<a href="downloads.html">Download/Build</a>
+</li>
+<li>
+<a href="getstarted.html">Getting Started</a>
+</li>
+<li>Using XSLTC<br />
+</li></ul><hr /><ul>
+<li>
+<a href="faq.html">FAQs</a>
+</li></ul><hr /><ul>
+<li>
+<a href="samples.html">Sample Apps</a>
+</li>
+<li>
+<a href="commandline.html">Command Line</a>
+</li></ul><hr /><ul>
+<li>
+<a href="features.html">Features</a>
+</li>
+<li>
+<a href="trax.html">Transform API</a>
+</li>
+<li>
+<a href="xpath_apis.html">XPath API</a>
+</li>
+<li>
+<a href="usagepatterns.html">Usage Patterns</a>
+</li></ul><hr /><ul>
+<li>
+<a href="apidocs/index.html">Xalan-J API</a>
+</li>
+<li>
+<a href="public_apis.html">Public APIs</a>
+</li>
+<li>
+<a href="dtm.html">DTM</a>
+</li></ul><hr /><ul>
+<li>
+<a href="extensions.html">Extensions</a>
+</li>
+<li>
+<a href="extensionslib.html">Extensions Library</a>
+</li>
+<li>
+<a href="extensions_xsltc.html">XSLTC Exts</a>
+</li></ul><hr /><ul>
+<li>
+<a href="design/design2_0_0.html">Xalan 2 Design</a>
+</li>
+<li>
+<a href="xsltc/index.html">XSLTC Design</a>
+</li></ul><hr /><ul>
+<li>
+<a href="builds.html">Building a release</a>
+</li>
+<li>
+<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
+</li>
+<li>
+<a href="bugreporting.html">Bug Reporting</a>
+</li></ul><hr /><ul>
+<li>
+<a href="contact_us.html">Contact us</a>
+</li>
+</ul>
+</div>
+<div id="content">
+<h2>Getting Started with XSLTC</h2>
+
+<ul>
+  <li>
+<a href="#intro">Introduction</a>
+</li>
+  <li>
+<a href="#classpath">Setting the system classpath for XSLTC</a>
+</li>
+  <li>
+<a href="#compile">Compiling translets from the command line</a>
+</li>
+  <li>
+<a href="#run">Running translets from the command line</a>
+</li>
+  <li>
+<a href="#api">Calling XSLTC with the JAXP API</a>
+</li>
+  <li>
+<a href="#xsltcsmart">Smart Transformer Switch</a>
+</li>
+  <li>
+<a href="#native_api">Calling XSLTC with the native API</a>
+</li>
+  <li>
+<a href="#constraints">Usage constraints</a>
+</li>
+  <li>
+<a href="samples.html#translets">Sample translets</a>
+</li>
+  <li>
+<a href="extensions_xsltc.html">Extensions for XSLTC</a>
+</li>  
+</ul>
+<p>See also: <a href="xsltc/index.html">XSLTC Design</a>
+</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Unless otherwise specified, the usage discussed in this section refers to 
+the Xalan-Java Compiling processor, XSLTC. See <a href="usagepatterns.html">Basic Usage 
+Patterns</a> for information on using the Xalan-Java Interpretive processor.</td>
+</tr>
+</table>
+<br />
+
+<a name="intro">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Introduction</h3>
+<p>XSLTC provides a compiler and a runtime processor. 
+Use the compiler to compile an XSL stylesheet into a translet (i.e., a set of
+Java classes). Use the runtime processor to apply the translet to an XML
+document and perform a transformation.</p>
+
+
+<a name="classpath">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Setting the system classpath for XSLTC</h3>
+<p>The xalan.jar contains support for both Xalan-Java processors.  You
+can use the JAXP <code>javax.xml.transform.TransformerFactory</code> property
+(see <a href="#api">"Calling XSLTC with the JAXP API"</a> below) to
+select which processor to use:  the Interpretive or the Compiling processor.</p>
+<p>To use XSLTC, simply put xalan.jar, serializer.jar, xml-apis.jar, and xercesImpl.jar on
+your classpath.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">To compile and run translets, you must use JDK (or JRE) 1.3.1 or higher.</td>
+</tr>
+</table>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">Although the XSLTC developers make every effort to avoid changes that
+affect binary compatibility, we cannot guarantee that a translet will work with
+any version of the run-time processor other than the one that corresponds to
+the version of the XSLTC compiler that was used to create the translet.</td>
+</tr>
+</table>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Bundled System Classpath</h4>
+<p>
+To use this newer approach, simply put xalan.jar, serializer.jar, xml-apis.jar and 
+xercesImpl.jar in your classpath.  There is no need to include xsltc.jar, BCEL.jar, JLex.jar,
+regexp.jar, java_cup.jar or runtime.jar as required in previous releases.
+</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">In order to compile and run translets you must have a JAXP 1.3 compliant XML
+parser installed. Our distribution includes <a href="http://xerces.apache.org/xerces2-j/index.html">Xerces-Java 2.11.0</a>.
+Include xercesImpl.jar and xml-apis.jar in your class path.</td>
+</tr>
+</table>
+
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Unbundled System Classpath</h4>
+<p>The binary distribution contains XSLTC and all its support classes bundled 
+into xalan.jar. To use the unbundled approach, rebuild 
+the xsltc.jar file using the xsltc.unbundledjar target. The support jars that 
+you'll need to add to your classpath are available in the Xalan Java lib 
+directory.</p>
+<p>To compile translets, run translets, and use the XSLTC API, using
+the unbundled jar approach, put the following on the system classpath:</p>
+<table border="1">
+<tr>
+  <th class="content" rowspan="1" colspan="1">Classes or JAR</th>
+  <th class="content" rowspan="1" colspan="1">To compile a translet</th>
+  <th class="content" rowspan="1" colspan="1">To run a translet</th>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">the translet</td>
+  <td class="content" rowspan="1" colspan="1" />
+  <td class="content" rowspan="1" colspan="1">required</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">xsltc.jar</td>
+  <td class="content" rowspan="1" colspan="1">required</td>
+  <td class="content" rowspan="1" colspan="1">required</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">runtime.jar</td>
+  <td class="content" rowspan="1" colspan="1">required</td>
+  <td class="content" rowspan="1" colspan="1">required</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">BCEL.jar</td>
+  <td class="content" rowspan="1" colspan="1">required</td>
+  <td class="content" rowspan="1" colspan="1" />
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">JLex.jar</td>
+  <td class="content" rowspan="1" colspan="1">required</td>
+  <td class="content" rowspan="1" colspan="1" />
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">java_cup.jar</td>
+  <td class="content" rowspan="1" colspan="1">required</td>
+  <td class="content" rowspan="1" colspan="1" />
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">regexp.jar</td>
+  <td class="content" rowspan="1" colspan="1">required</td>
+  <td class="content" rowspan="1" colspan="1" />
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">xml-dtm.jar</td>
+  <td class="content" rowspan="1" colspan="1" />
+  <td class="content" rowspan="1" colspan="1">required</td>
+</tr>
+</table>
+<p>The translet is the set of class files or the JAR file that you generate with
+the compiler; see <a href="#compile">Compiling translets</a>.</p>
+
+
+<a name="compile">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Compiling translets from the command line</h3>
+    <ul>
+      <li>
+<a href="#comp-synopsis">Synopsis</a>
+</li>
+      <li>
+<a href="#comp-args">Flags and arguments</a>
+</li>
+      <li>
+<a href="#comp-examples">Examples</a>
+</li>
+    </ul>
+    <p>The XSLT Compiler is a Java-based tool for compiling XSLT
+    stylesheets into lightweight and portable Java byte codes 
+    called translets.</p>  
+
+    <p>To run the compiler from the command line or from a script, 
+    <a href="#classpath">set the classpath</a> and 
+    run the class <code>org.apache.xalan.xsltc.cmdline.Compile</code>. The
+    synopsis of the options and arguments accepted by this class is shown below.
+    </p>
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">You can also use the
+    <a href="commandline.html">Xalan-Java command-line utility</a>, to
+          compile or run XSLTC translets.</td>
+</tr>
+</table>
+
+<a name="comp-synopsis">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Synopsis</h4>
+<p>
+<code>java org.apache.xalan.xsltc.cmdline.Compile</code>
+<br />
+<code>    [-o &lt;output&gt;] [-d &lt;directory&gt;] [-j &lt;jarfile&gt;]</code>
+<br />
+<code>    [-p &lt;package name&gt;] [-n] [-x] [-v] [-u] [-h]<br />
+    {&lt;stylesheet&gt; | -i }</code>
+</p> 
+
+
+<a name="comp-args">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Flags and arguments</h4>
+    <p>The following flags and arguments are supported:</p>
+
+<blockquote class="source">
+<pre>-o &lt;output&gt;
+   Specifies the name of the generated translet class.
+   If you omit this argument, the translet class is
+   named &lt;stylesheet&gt;.  Translets are written as 
+   .class files.
+
+-d &lt;directory&gt;
+   Specifies the destination directory.  If you omit
+   this argument, the translet class files are placed
+   in the current working directory.
+
+-j &lt;jarfile&gt;
+   Outputs the generated translet class files into a 
+   jar file named &lt;jarfile&gt;.jar. When this option is 
+   used, only the jar file is output.
+
+-p &lt;package name&gt;
+   Specifies a package name for the generated translet
+   classes.
+
+-n Enables template inlining (default behavior better on average).
+
+-x Turns on additional debugging messages.
+
+-s Disables calling System.exit
+
+-u  &lt;stylesheet&gt;
+  Specifies the stylesheet with a URI such as 
+  'http://myserver/stylesheet1.xsl'.
+
+   &lt;stylesheet&gt;
+   (No flag) The pathname of the stylesheet file.
+
+-i Force stylesheet to be read from stdin
+
+-v Prints version of compiler
+
+-h Prints usage statement</pre>
+</blockquote>
+
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The translet name is the same as the name of the Java class that
+implements the translet.  If the name specified by the <code>-o</code> option
+or derived from the URL for the stylesheet contains characters that are not
+permitted in a Java class name, any such character will be replaced with an
+underscore.  For example, if the translet name specified by the <code>-o</code>
+option is <code>my-stylesheet</code>, or if the URL of the stylesheet is
+<code>http://example.org/my-stylesheet.xsl</code>, the translet will actually
+be named <code>my_stylesheet</code>.
+</td>
+</tr>
+</table>
+
+
+<a name="comp-examples">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Examples</h4>
+    <p>The following examples assume that you have already set the
+           classpath to include the translet and the required JAR
+    files (see <a href="#classpath">setting the system classpath</a>).</p>
+
+    <p>
+<b>Example 1:</b>  Creating a translet from the hamlet.xsl
+       stylesheet.</p>
+    <p>
+<code>java org.apache.xalan.xsltc.cmdline.Compile</code>
+<br />
+    <code>     hamlet.xsl</code>
+</p>    
+    <p>Example 1 produces a set of class files such as hamlet.class, hamlet$0.class, hamlet$1.class.</p>
+
+    <p>
+<b>Example 2:</b>  Outputting to a JAR file.</p>
+    <p>
+<code>java org.apache.xalan.xsltc.cmdline.Compile</code>
+<br />
+    <code>     -j hamlet.jar hamlet.xsl</code>
+</p>
+    <p>Example 2 produces hamlet.jar, which contains the translet class
+       files.</p>
+
+    <p>
+<b>Example 3:</b> Specifying the translet class name. </p> 
+    <p>
+<code>java org.apache.xalan.xsltc.cmdline.Compile</code>
+<br />
+    <code>     -o newhamlet hamlet.xsl</code>
+</p>
+    <p>Example 3 produces a set of class files such as newhamlet.class,
+       newhamlet$0.class, etc., rather than hamlet.class, hamlet$0.class,
+       etc.</p>
+
+
+    <p>
+<b>Example 4:</b> Compiling multiple stylesheets.</p>
+    <p>
+<code>java org.apache.xalan.xsltc.cmdline.Compile</code>
+<br />
+    <code>     hamlet1.xsl hamlet2.xsl hamlet3.xsl</code>
+</p>
+    <p>Example 4 produces three translets and set of class files derived from the three stylesheets.</p>
+
+    <p>
+<b>Example 5:</b> Package Specification.</p>
+    <p>
+<code>java org.apache.xalan.xsltc.cmdline.Compile</code>
+<br />
+    <code>     -p com.mycompany.translets hamlet.xsl</code>
+</p>
+    <p>Example 5 produces a set of class files such as com/mycompany/translets/hamlet.class,
+    com/mycompany/translets/hamlet$0.class', etc.</p>
+
+
+
+<a name="run">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Running translets from the command line</h3>
+    <ul>
+      <li>
+<a href="#run-synopsis">Synopsis</a>
+</li>
+      <li>
+<a href="#run-args">Flags and arguments</a>
+</li>
+      <li>
+<a href="#run-examples">Examples</a>
+</li>
+    </ul>
+
+    <p>The XSLTC runtime processor is a Java-based tool for 
+    transforming XML document files using a translet (compiled 
+    stylesheet). </p>
+
+    <p>The XSLTC processor can be run on any platform including UNIX,
+    Windows, NT, Mac that supports Java, including a Palm Pilot
+    with J2ME CLDC (Java 2 Micro Edition, Connected Limited Device
+    Configuration).</p>
+
+    <p>To run a translet from the command line or a script,
+     <a href="#classpath">set the classpath</a> (be sure to include
+     the translet) and run the translet with the appropriate flags and arguments
+     (described below).</p>
+
+    <table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">You can also use the
+    <a href="commandline.html">Xalan-Java Command-line Utility</a>, to
+          compile or run XSLTC translets.</td>
+</tr>
+</table>
+
+<a name="run-synopsis">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Synopsis</h4>
+<p>
+<code>java org.apache.xalan.xsltc.cmdline.Transform</code>
+<br />
+<code>     [-j &lt;jarfile&gt;] [-x] {-u &lt;document_url&gt; | &lt;document&gt;} &lt;class&gt;</code>
+<br />
+<code>     [&lt;name1&gt;=&lt;value1&gt; ...]</code>
+</p>
+
+
+<a name="run-args">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Flags and arguments</h4>
+
+    <p>The following flags and arguments are supported:</p>
+
+<blockquote class="source">
+<pre>
+
+-j Specifies &lt;jarfile&gt; from which to load translet.
+
+-x Turns on debugging messages.
+
+-s Disables calling System.exit
+
+-u Specifies the XML input &lt;document&gt; with a URI,
+   such as 'http://myserver/hamlet.xml'.
+
+Arguments without flags:
+
+   &lt;document&gt;
+   Filename of the XML input document. 
+   
+   &lt;document_url&gt;
+   URI of the XML input document (see the -u flag above). 
+
+   &lt;class&gt;
+   The translet that performs the transformation. The translet
+   may take a set of stylesheet parameters specified as
+   name-value pairs. The format for a name-value pair is
+   &lt;name&gt;=&lt;value&gt;.</pre>
+</blockquote>
+
+
+<a name="run-examples">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Examples</h4>
+
+    <p>The following examples assume that you have already set the classpath to include the translet and the required JAR
+    files (see <a href="#classpath">setting the system classpath</a>).</p>
+    <p>A possible variation: You have set the classpath to include the required JAR files, but when you run the translet,
+    you use the java -cp flag to add the current working directory (containing the translet class files you have just generated)
+    to the classpath.</p>
+    <p>
+<b>
+<i>Windows:</i>
+</b>
+<code> java -cp .;%CLASSPATH% ...</code>
+<br />
+       <b>
+<i>UNIX:     </i>
+</b>
+<code> java -cp .:$CLASSPATH ...</code>
+</p>
+    
+    <p>
+<b>Example 1:</b> Processing an XML document.</p>
+
+    <p>
+<code>java org.apache.xalan.xsltc.cmdline.Transform</code>
+<br />
+       <code>      hamlet.xml hamlet</code>
+</p> 
+
+    <p>Example 1 uses the specified translet (hamlet) to transform the specified XML input document (hamlet.xml). 
+    The XML input document is in the current working directory. The translet was created by using
+    org.apache.xalan.xslt.cmdline.Compile to compile an XSL stylesheet (hamlet.xsl). </p>
+
+    <p>
+<b>Example 2:</b> Passing stylesheet parameters to the translet.</p>
+
+    <p>
+<code>java org.apache.xalan.xsltc.cmdline.Transform</code>
+<br />
+       <code>     hamlet.xml hamlet</code>
+<br />
+       <code>     speaker=HAMLET 'scene=SCENE IV'</code>
+</p>
+
+    <p>Example 2 passes "HAMLET" to the stylesheet for the stylesheet parameter named speaker, and "SCENE IV" for the
+    stylesheet parameter named scene. The second name-value pair was placed in single quotes to 
+    specify a value containing a space.</p>
+    
+    <p>
+<b>Example 3:</b> Processing an XML input document specified with a URI.</p>
+
+    <p>
+<code>java org.apache.xalan.xsltc.cmdline.Transform</code>
+<br />
+       <code>      -u http://zarya.east/test.xml hamlet</code>
+</p>
+
+    <p>Example 3 applies the translet (hamlet) to the XML input document (http://zarya.east/test.xml hamlet). Inclusion of
+    the flag (-u) is optional.</p>
+
+
+
+<a name="api">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Calling XSLTC with the JAXP API</h3>
+<ul>
+<li>
+<a href="#api-attributes">XSLTC TransformerFactory attributes</a>
+</li>
+<li>
+<a href="#api-examples">Examples</a>
+</li>
+</ul>
+<p>XSLTC translets are integrated with the JAXP 1.3 API. Accordingly, it is now possible to set a 
+system property and use a TransformerFactory to generate a Transformer that performs a transformation by compiling 
+and running a translet.</p>
+
+<p>When you use the JAXP 1.3 API to run Xalan-Java, the
+<code>javax.xml.transform.TransformerFactory</code> system property is set to
+<code>org.apache.xalan.processor.TransformerFactoryImpl</code>. As it currently
+stands, this Xalan-Java implementation of TransformerFactory always uses the Xalan-Java
+Interpretive processor to perform transformations.  To use translets to perform
+transformations, set this system property to
+<code>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</code>. For
+information on setting this and related system properties designating XML
+parsers and XSL transformers, see
+<a href="usagepatterns.html#plug">Plugging in a Transformer and XML
+parser</a>.</p>
+
+<p>To use the JAXP 1.3 API to perform transformations with translets do the
+   following:</p>
+<ol>
+  <li>Set the <code>javax.xml.transform.TransformerFactory</code> system
+      property as indicated above.<br />
+<br />
+</li>
+  <li>Instantiate a <code>TransformerFactory</code>.<br />
+<br />
+</li>
+  <li>Instantiate a <code>Transformer</code> object either directly from
+      the <code>TransformerFactory</code> or through a <code>Templates</code>
+      object.  A <code>Transformer</code> is a processed instance of a
+      stylesheet (a translet) that can be used to perform a
+      transformation.  See below for more information on when you should use
+      a <code>Templates</code> object.<br />
+<br />
+</li>
+  <li>Perform the transformation, using a StreamSource object for the XML
+      input and a StreamResult object to hold the transformation output.</li>
+</ol>
+<p>Both a <code>Templates</code> object and a <code>Tranformer</code> object are
+   processed representations of a stylesheet, but you cannot use a
+   <code>Templates</code> object to perform transformations.  Instead,
+   you can use a <code>Templates</code> object to create new
+   <code>Transformer</code> instances, without having to reprocess the
+   stylesheet each time.  You can use a <code>TransformerFactory</code> to
+   generate a <code>Templates</code> object or a <code>Transformer</code>
+   object directly.  You can use a <code>Transformer</code> more than once,
+   but you cannot use it concurrently on more than one thread.  If you need
+   to use the same stylesheet to perform transformations on more than one
+   thread at the same time, use a <code>Templates</code> object and create
+   as many <code>Transformer</code> objects as you require.</p>
+
+<p>XSLTC also defines a set of attributes that you can set on the
+<code>TransformerFactory</code> in order to save and subsequently use those
+translets by way of the JAXP Transform API - without having to recompile the
+stylesheet each time.</p>
+
+<a name="api-attributes">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>XSLTC TransformerFactory attributes</h4>
+The JAXP Transform API defines a <code>
+<a href="apidocs/javax/xml/transform/TransformerFactory.html#setAttribute(java.lang.String, java.lang.Object)">TransformerFactory.setAttribute</a>
+</code> method that you can use to set implementation-defined attributes.
+<table border="1">
+<tr>
+  <th class="content" rowspan="1" colspan="1">Attribute</th>
+<th class="content" rowspan="1" colspan="1">Purpose</th>
+  <th class="content" rowspan="1" colspan="1">Type of value</th>
+<th class="content" rowspan="1" colspan="1">Default value</th>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">translet-name</td>
+  <td class="content" rowspan="1" colspan="1">Specifies the name of the translet</td>
+  <td class="content" rowspan="1" colspan="1">String</td>
+  <td class="content" rowspan="1" colspan="1">"GregorSamsa"</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">destination-directory</td>
+  <td class="content" rowspan="1" colspan="1">Specifies where to save translet class files</td>
+  <td class="content" rowspan="1" colspan="1">String</td>
+  <td class="content" rowspan="1" colspan="1">null</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">package-name</td>
+  <td class="content" rowspan="1" colspan="1">Specifies which package translet class files will be in</td>
+  <td class="content" rowspan="1" colspan="1">String</td>
+  <td class="content" rowspan="1" colspan="1">null</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">jar-name</td>
+  <td class="content" rowspan="1" colspan="1">Specifies the name of a jar file in which translets should be saved</td>
+  <td class="content" rowspan="1" colspan="1">String</td>
+  <td class="content" rowspan="1" colspan="1">null</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">generate-translet</td>
+  <td class="content" rowspan="1" colspan="1">Specifies whether translet class files should be generated</td>
+  <td class="content" rowspan="1" colspan="1">Boolean</td>
+  <td class="content" rowspan="1" colspan="1">Boolean.FALSE</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">auto-translet</td>
+  <td class="content" rowspan="1" colspan="1">Specifies that time-stamp of translet file, if any, should be compared with that of stylesheet to decide whether to recompile the stylesheet</td>
+  <td class="content" rowspan="1" colspan="1">Boolean</td>
+  <td class="content" rowspan="1" colspan="1">Boolean.FALSE</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">use-classpath</td>
+  <td class="content" rowspan="1" colspan="1">Specifies that precompiled translet classes should be looked up from the classpath when a new transformer or templates is created</td>
+  <td class="content" rowspan="1" colspan="1">Boolean</td>
+  <td class="content" rowspan="1" colspan="1">Boolean.FALSE</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">enable-inlining</td>
+  <td class="content" rowspan="1" colspan="1">Specifies whether methods that represent templates should be inlined.  See <a href="#constraints">Usage constraints</a>
+</td>
+  <td class="content" rowspan="1" colspan="1">Boolean</td>
+  <td class="content" rowspan="1" colspan="1">Boolean.FALSE</td>
+</tr>
+<tr>
+  <td class="content" rowspan="1" colspan="1">debug</td>
+  <td class="content" rowspan="1" colspan="1">Enables debugging messages</td>
+  <td class="content" rowspan="1" colspan="1">Boolean</td>
+  <td class="content" rowspan="1" colspan="1">Boolean.FALSE</td>
+</tr>
+</table>
+<p>The <code>translet-name</code>, <code>destination-directory</code>,
+<code>package-name</code> and <code>jar-name</code> attributes are transient.
+They only apply to the next invocation of either the <code>newTemplates</code>
+or the <code>newTransformer</code> method on that
+<code>TransformerFactory</code>.</p>
+<table class="note">
+<tr>
+<td class="noteImg">
+<img src="resources/note.gif" alt="note" />
+</td>
+<td class="noteTxt">The translet name is the same as the name of the Java class that
+implements the translet.  If the value specified for the
+<code>translet-name</code> attribute contains characters that are not
+permitted in a Java class name, any such character will be replaced with an
+underscore.  For example, if the translet name specified was
+<code>my-stylesheet</code>, the translet will actually be named
+<code>my_stylesheet</code>.</td>
+</tr>
+</table>
+
+
+<a name="api-examples">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h4>Examples</h4>
+<p>
+<b>Example 1:</b> Using a translet/Templates object for multiple
+concurrent transformations</p>
+<blockquote class="source">
+<pre>import java.util.Properties;
+import javax.xml.transform.Transformer;
+import java.io.FileOutputStream;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.Templates;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.transform.stream.StreamResult;
+...
+// Set the TransformerFactory system property.
+// Note: For more flexibility, load properties from a properties file.
+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);
+...
+String xslInURI;
+// Instantiate the TransformerFactory, and use it with a StreamSource
+// XSL stylesheet to create a translet as a Templates object.
+TransformerFactory tFactory = TransformerFactory.newInstance();
+Templates translet = tFactory.newTemplates(new StreamSource(xslInURI));
+...
+String xmlInURI;
+String htmlOutURI;
+String xmlInURI2;
+String htmlOutURI2;
+...
+// For each thread, instantiate a new Transformer, and perform the
+// transformations on that thread from a StreamSource to a StreamResult;
+Transformer transformer = translet.newTransformer();
+transformer.transform(new StreamSource(xmlInURI),
+                  new StreamResult(new FileOutputStream(htmlOutURI)));
+transformer.transform(new StreamSource(xmlInURI2),
+                  new StreamResult(new FileOutputStream(htmlOutURI2)));
+...</pre>
+</blockquote>
+<p>For a working sample that illustrates this usage pattern, see <a href="samples.html#xsltc1">JAXPTransletOneTransformation</a>.</p>
+<p>
+<b>Example 2:</b> Compiling a translet/Templates object for a single transformation</p>
+<blockquote class="source">
+<pre>import java.util.Properties;
+import javax.xml.transform.TransformerFactory;
+import java.io.FileOutputStream;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.transform.stream.StreamResult;
+...
+// Set the TransformerFactory system property.
+// Note: For more flexibility, load properties from a properties file.
+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);
+...
+String xslInURI;
+String xmlInURI;
+String xmlInURI2;
+String htmlOutURI;
+String htmlOutURI2;
+// Instantiate the TransformerFactory, and use it along with a StreamSource
+// XSL stylesheet to create a Transformer.
+TransformerFactory tFactory = TransformerFactory.newInstance();
+Transformer transformer =
+                 tFactory.newTransformer(new StreamSource(xslInURI));
+// Perform the transformation from a StreamSource to a StreamResult;
+transformer.transform(new StreamSource(xmlInURI),
+                  new StreamResult(new FileOutputStream(htmlOutURI)));
+// Re-use the same transformer for a second transformation
+transformer.transform(new StreamSource(xmlInURI2),
+                  new StreamResult(new FileOutputStream(htmlOutURI2)));</pre>
+</blockquote>
+<p>For a working sample that illustrates this usage pattern, see <a href="samples.html#xsltc2">JAXPTransletMultipleTransformations</a>.</p>
+
+
+
+<a name="xsltcsmart">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Smart Transformer Switch</h3>
+<p>As part of the JAXP API, a "Smart Transformer Switch" enables automatic switching 
+between Xalan-Java Interpretive and XSLTC processors within your application. It uses Xalan-Java Interpretive 
+processor to create your <code>Transformer</code> objects, and uses XSLTC to create your 
+<code>Templates</code> objects.</p>
+<p>To use the switch, you set the JAXP system property,
+<code>javax.xml.transform.TransformerFactory</code>, to
+<code>org.apache.xalan.xsltc.trax.SmartTransformerFactoryImpl</code>. 
+For one-time transformations or transformations that require extensions
+supported by Xalan-Java Interpretive, and not XSLTC, you would use the
+<code>SmartTransformerFactoryImpl</code> to create <code>Transformer</code>
+objects. For a repeated transformation where performance is critical, you would
+create a <code>Templates</code> object from which you would create your
+<code>Transformer</code> objects.</p> 
+
+
+<a name="native_api">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Calling XSLTC with the native API</h3>
+<p>The XSLTC Native API is no longer supported.  Instead, you should always
+use XSLTC with the JAXP Transform API.</p>
+
+
+<a name="constraints">‌</a>
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+<h3>Usage constraints</h3>
+<ul>
+  <li>The default for template inlining has been changed. Previously,
+    by default, inlining (putting all the templates into one big method) was on and 
+    the <code>"-n"</code> option to the compile command line disabled inlining. 
+    With inlining on, XSLTC can generate methods that are too long (<b>&gt; 64K length</b>) 
+    to run, or contain jump offsets that are too large for the JVM to handle. 
+    Now the default is not to inline templates. Instead, compilation creates separate 
+    methods for each template. Inlining was thought to improve performance, 
+    but with recent hotspot technology in the Java 1.4.x JVM, performance is better with 
+    inlining off. From the command line, you would use <code>"-n"</code> 
+    to turn on inlining, or with JAXP set the "enable-inlining" attribute to the TransformerFactory. 
+    For example, 
+      <blockquote class="source">
+<pre>TransformerFactory tfac = new TransformerFactory(); 
+tfac.setAttribute("enable-inlining", Boolean.TRUE);</pre>
+</blockquote>
+<br />
+</li>
+  <li>XSLTC tries to determine the order in which global variables are initialized 
+    by tracking the dependencies between them. In some cases, the value of a variable 
+    may depend on a template, e.g., if <code>xsl:call-template</code> is used to initialized
+    a variable whose type is RTF. If this happens, a
+    <code>NullPointerException</code> may be thrown at run-time 
+    when the translet attempts to access a variable that has not been properly 
+    initialized. In most cases, this problem can be avoided by reordering the 
+    variable declarations.<br />
+</li>
+</ul>
+<p>To check on the open bugs in the current Apache xml-xalan/java repository, 
+  follow the instructions below:</p>
+<ol>
+  <li>Go to <a href="http://issues.apache.org/jira">http://issues.apache.org/jira</a>.</li>
+  <li>Select project <b>XalanJ2</b>.</li>
+  <li>Select <b>XSLTC</b> from the Components list.</li> 
+</ol>
+
+<p align="right" size="2">
+<a href="#content">(top)</a>
+</p>
+</div>
+<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
+</div>
+</body>
+</html>
