diff --git a/xdocs/sources/xalan/bugreporting.xml b/xdocs/sources/xalan/bugreporting.xml
index 9db30b0..604c114 100644
--- a/xdocs/sources/xalan/bugreporting.xml
+++ b/xdocs/sources/xalan/bugreporting.xml
@@ -29,32 +29,40 @@
       <link idref="downloads">latest code</link>
       and check if you can reproduce the bug.</li>
   <li>Report bugs against the newest release.</li>
-  <li>Read <jump href="http://issues.apache.org/jira">JIRA Notes</jump>.</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>
-  <note>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.</note>
+     active participation in the ongoing development of Xalan Java.</p>  
   </s2>
   
   <s2 title="Bugzilla is not used">
     <p>
-      The old bug tracking system, bugzilla, is still available at
-      <resource idref="old-bugzilla"/> but please don't use bugzilla except to
-      look up old issues. Bugzilla has been replaced by JIRA.
+      The old bug tracking system, 
+      <jump href="http://issues.apache.org/bugzilla/">bugzilla</jump>,
+      is still available but please only use it to look up old bugs.
+      Bugzilla has been replaced by <jump href="http://issues.apache.org/jira/browse/XALANJ">JIRA</jump>
+      and old bugzilla <em>bugs</em> have been migrated to JIRA as <em>issues</em>.
     </p>
   </s2>
   
-  <s2 title="Report a bug">  
+<s2 title="Report a bug">  
   <p>After reading the instructions above, click 
-     <jump href="http://issues.apache.org/jira/browse/XALANJ">here</jump> to submit a bug report using JIRA.</p>
+     <jump href="http://issues.apache.org/jira/browse/XALANJ">here</jump> to submit a bug report using JIRA.
+  </p>
+  <p>
      Note that the functionality shown by the JIRA user interface changes depending on whether
      you <em>Log In</em> or not. In particular, to have the <em>CREATE NEW ISSUE</em> link 
      you will need to click the <em>Log In</em> in small font, in the top right corner
-     of the page.
-  </s2>
+     of the page and log in.
+  </p>
+  <p>
+     <note>
+       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.
+     </note>
+  </p>
+</s2>
 </s1>
diff --git a/xdocs/sources/xalan/builds.xml b/xdocs/sources/xalan/builds.xml
index 7fb7a36..76b4f04 100644
--- a/xdocs/sources/xalan/builds.xml
+++ b/xdocs/sources/xalan/builds.xml
@@ -19,24 +19,40 @@
  
 <!-- apologies in advance for the brief writing style! -sc -->
 
-<s1 title="&xslt4j; Builds">
+<s1 title="&xslt4j; Release builds">
 <ul>
 <li><link anchor="intro">Introduction</link></li>
 <li><link anchor="developers">Developer Guidelines</link></li>
 <li><link anchor="builds">Running Product Builds - Overview</link></li>
 <li><link anchor="builds2">Running Product Builds - Details</link></li>
 </ul>
-<note>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!</note> 
 
 
 <anchor name="intro"/>
 <s2 title="Introduction">
-  <p>A selection of brief checklists for committers and developers 
-  about build procedures for the &xslt4j; community.  Community input 
-  is appreciated; if you have questions, please ask on xalan-dev.</p> 
+  <p>
+    This page is <em>not</em> for users
+    who want to download pre-built jars of &xslt4j; or download 
+    the source code for &xslt4j; and build from that.
+    Users who want to do that 
+    should see the <link idref="downloads">Download/Build</link> 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 &xslt4j; community.  Community input 
+    is appreciated; if you have questions, please ask on
+    <link idref="contact_us">xalan-dev</link>.
+  </p> 
+  <p>
+    <note>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!
+    </note> 
+  </p>
+  
 </s2>
 
 
@@ -145,7 +161,7 @@
 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 xercesImpl.jar, ant.jar, etc.  Note that occasionally we will have a specific 
+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>
 </s3>
 
@@ -181,7 +197,7 @@
 &lt;property name="parser.version.MINOR" value="1"/><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 xercesImpl.jar or xml-apis.jar, add a new entry in
+<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>
@@ -211,7 +227,7 @@
 </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 xalan.jar file.  All the samples and the documentation
+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>
@@ -226,7 +242,7 @@
 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; xalan.jar and xsltc.jar respectively.  All the samples and 
+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>
@@ -308,6 +324,59 @@
 
 </s3>
 
+
+
+  <anchor name="doc"/>
+  <s3 title="Rebuilding the &xslt4j; documentation">
+    <p>&xslt4j; 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 &xslt4j;
+      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>
+        <tr><td><em>XML source file</em></td><td><em>Description of contents</em></td></tr>
+        <tr><td>downloads.xml</td><td>how to download releases</td></tr>
+        <tr><td>readme.xml</td><td>has the release notes for each release (most recent to the oldest release)</td></tr>
+        <tr><td>whatsnew.xml</td><td>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
+      <em>whatesnew.xml</em> page needs to be moved into the appropriate
+      section of the <em>readme.xml</em> 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>
+       <tr><td><em>Ant Target</em></td><td><em>What Ant does</em></td></tr>
+       <tr><td>javadocs</td><td>creates the API documentation</td></tr>
+       <tr><td>serializer.javadocs</td><td>creates the API documetation for the serializer</td></tr>
+       <tr><td>site</td><td>creates the HTML pages for the site http://xml.apache.org/xalan-j</td></tr>
+       <tr><td>xalan.apache.org.site</td><td>creates the HTML pages for the site http://xalan.apache.org</td></tr>
+  </table>
+  </s3>  
+
+
+
+
+
+
+
+
 <s3 title="Post-Build Docs and Email">
 <p>Update the live website doc and let the community know you're done!</p>
 <ul>
diff --git a/xdocs/sources/xalan/commandline.xml b/xdocs/sources/xalan/commandline.xml
index bb2ef02..0376f9c 100644
--- a/xdocs/sources/xalan/commandline.xml
+++ b/xdocs/sources/xalan/commandline.xml
@@ -32,8 +32,8 @@
     do the following:</p>
  		<ol>
     <li>Download &xslt4j;.<br/><br/></li> 
-    <li><link idref="getstarted" anchor="classpath">Set the Java classpath</link> to include xalan.jar, serializer.jar, xml-apis.jar, and
-    &xml4j-jar; -- or another conformant XML Parser -- (see <link idref="usagepatterns" anchor="plug">Plugging in 
+    <li><link idref="getstarted" anchor="classpath">Set the Java classpath</link> to include <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, and
+    <code>&xml4j-jar;</code> -- or another conformant XML Parser -- (see <link idref="usagepatterns" anchor="plug">Plugging in 
     the Transformer and XML parser</link>).<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,
diff --git a/xdocs/sources/xalan/contact_us.xml b/xdocs/sources/xalan/contact_us.xml
index d386984..7fa6074 100644
--- a/xdocs/sources/xalan/contact_us.xml
+++ b/xdocs/sources/xalan/contact_us.xml
@@ -55,10 +55,13 @@
     it might be a usage problem, or if you have other questions about Xalan 
     post a note to
     <jump href="mailto:xalan-j-users@xml.apache.org">xalan-j-users&#64;xml.apache.org</jump>
+    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
-    <jump href="http://marc.theaimsgroup.com/?l=xalan-j-users">xalan-j-users archives at MARC</jump>.
+    <jump href="http://mail-archives.apache.org/mod_mbox/xml-xalan-j-users/">
+    xalan-j-users mail archives at Apache</jump> or
+    <jump href="http://marc.theaimsgroup.com/?l=xalan-j-users">xalan-j-users mail archives at MARC</jump>.
    </p>
 </s2>
 
@@ -67,16 +70,15 @@
   <p>
     The participating developers of the Xalan meet and discuss issues, 
     code changes/additions, etc. at 
-    <jump href="mailto:xalan-dev@xml.apache.org">xalan-dev@xml.apache.org</jump>
-    To see how to subscribe or unsubscribe to this mailing list go to
-    <jump href="http://xml.apache.org/mail.html#xalan-dev">xalan-dev</jump>.
+    <jump href="mailto:xalan-dev@xml.apache.org">xalan-dev@xml.apache.org</jump>.
     This mailing list pertains to both the Java and C++ versions of Xalan.
   </p>
   <p>
-    To view a history of posts to xalan-j-users you can go to
-    <jump href="http://marc.theaimsgroup.com/?l=xalan-j-users">xalan-j-users archives at MARC</jump>.
-   </p>
- 
+    To view a history of posts to xalan-dev you can go to
+    <jump href="http://mail-archives.apache.org/mod_mbox/xml-xalan-dev/">
+    xalan-dev mail archives at Apache</jump> or
+    <jump href="http://marc.theaimsgroup.com/?l=xalan-dev">xalan-dev mail archives at MARC</jump>.
+   </p> 
 </s2>
 <anchor name='subscribe'/>
 <s2 title="Subscribe to a mailing list">
@@ -87,20 +89,16 @@
   <p>
     To subscribe an email account to the Xalan user mailing list send a note to 
     xalan-j-users-subscribe&#64;xml.apache.org from that account. To unsubscribe
-    do the same, except replace subscribe with unsubscribe.
+    do the same, except replace <em>subscribe</em> with <em>unsubscribe</em>.
   </p>
   <p>
     To subscribe to the Xalan developer mailing list send a note to 
     xalan-dev-subscribe&#64;xml.apache.org. To unsubscribe
-    do the same, except replace subscribe with unsubscribe.
-  </p>
+    do the same, except replace <em>subscribe</em> with <em>unsubscribe</em>.
+  </p>  
   <p>
     For more information on XML related Apache mailing lists go to
     <jump href="http://xml.apache.org/mail.html">Apache mailing lists</jump>. 
-  </p>
-  
+  </p>  
 </s2>
-
-
-
 </s1> 
diff --git a/xdocs/sources/xalan/downloads.xml b/xdocs/sources/xalan/downloads.xml
index 134b67b..7322ca7 100644
--- a/xdocs/sources/xalan/downloads.xml
+++ b/xdocs/sources/xalan/downloads.xml
@@ -16,82 +16,131 @@
  * limitations under the License.
 -->
 <!-- $Id$ -->
-<s1 title="Downloads &amp; Dependencies">
+<s1 title="Download/Build &amp; Dependencies">
 <ul>
-  <li><link anchor="download">Downloading what you need</link></li>
-  <li><link anchor="previous-releases">Where do I download previous releases?</link></li>
+  <li><link anchor="latest-release">Downloading the latest release</link></li>
+  <li><link anchor="download">Downloading what else you might need</link></li>
   <li><link anchor="whereis_xml4j">Where do I get &xml4j;? </link></li>
   <li><link anchor="viewcode">How do I view Xalan code in a browser?</link></li>
   <li><link anchor="buildmyself">How do I download the latest development code to build myself?</link></li>
+  <li><link anchor="using-ant">Using ant</link></li>
+  <li><link anchor="samples">Rebuilding a sample application</link></li>
+  <li><link anchor="previous-releases">Where do I download previous releases?</link></li>
 </ul>
-<anchor name="download"/>
-<s2 title="Downloading what you need">
-<p>To use &xslt4j;, you need the following:</p> 
-  <ul>
-    <li>The JDK or JRE 1.3.x, 1.4.x, or 5.x</li>
-    <p>You can get the JDK or JRE from <jump href="http://www-128.ibm.com/developerworks/java/jdk/index.html">
-       IBM developerWorks</jump> or <jump href="http://www.java.sun.com">java.sun.com</jump>.</p> 
-    <li>xml-apis.jar (JAXP APIs)</li>
-    <li>&xml4j-jar; (or another <link idref="usagepatterns" anchor="plug">XML Parser</link>)</li>
-    <li>xalan.jar or xsltc.jar</li>
-    <li>serializer.jar</li>
-    <li>(Optional) Xalan Java source code</li>    
-    <li>(Optional) Packages to support extension functions and elements</li>    
-  </ul>    
+<anchor name="latest-release"/>
+<s2 title="Downloading the latest release">
+  <p> You can download the pre-built binary distributions from one of the
+      mirror sites at <resource-ref idref="xslt4j-distdir"/>.
+  </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 xml-apis.jar and &xml4j-jar; from <resource-ref idref="xml4j-used"/>.</p>
+  Both binary distributions contain <code>xml-apis.jar</code> and <code>&xml4j-jar;</code> from <resource-ref idref="xml4j-used"/>.</p>
   <ul>
-    <li>The first binary distribution, &xslt4j-dist-bin;.zip or &xslt4j-dist-bin;.tar.gz, 
+    <li>The first binary distribution, <code>&xslt4j-dist-bin;.zip</code> or 
+      <code>&xslt4j-dist-bin;.tar.gz</code>,
       contains the Xalan Interpretive processor, the Xalan Compiled processor (XSLTC) and the 
-      runtime support packages in a single jar, called xalan.jar.
+      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, &xslt4j-dist-bin;-2jars.zip or &xslt4j-dist-bin;-2jars.tar.gz
-      contains the Xalan Interpretive processor in xalan.jar, and the Xalan Compiled 
-      processor (XSLTC) and the runtime support packages in xsltc.jar.
+    <li>The second binary distribution, <code>&xslt4j-dist-bin;-2jars.zip</code> or 
+      <code>&xslt4j-dist-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 xsltc.jar on the classpath
-      and not xalan.jar. If you are using just the interpretive processor
-      you can put xalan.jar on the classpath and not xsltc.jar. Of course
-      you can put both xalan.jar and xsltc.jar from this distribution
+      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>There is an optional source distribution available for doing your own &xslt4j; builds; see 
-     <link idref="readme" anchor="build">Build notes</link>. You can download the source distribution from 
-     the <resource-ref idref="xslt4j-distdir"/>.</p>     
-  <p>If you plan to run <link idref="extensions">XSLT extensions</link> implemented in languages
+
+  
+  <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 <resource-ref idref="xslt4j-distdir"/>. The difference
+    is that a binary distribution contains <em>-bin</em> in its name,
+    whereas a source distribution contain <em>-src</em> in its name.
+  </p>
+
+   <p>To use &xslt4j;, 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>&xml4j-jar;</code> (or another <link idref="usagepatterns" anchor="plug">XML Parser</link>)</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
+    &xslt4j;</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 &xslt4j;, 
+    including <code>xalan.jar</code>, <code>xsltc.jar</code>, <code>serializer.jar</code>
+    and other things, see <link anchor="using-ant">Using ant</link> for more
+    details.
+  </p>  
+    
+    
+</s2>
+<anchor name="download"/>
+<s2 title="Downloading what else you might need">
+  <p>To use &xslt4j;, 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 <jump href="http://www-128.ibm.com/developerworks/java/jdk/index.html">
+    IBM developerWorks</jump> or <jump href="http://www.java.sun.com">java.sun.com</jump>.
+  </p> 
+  <p>If you plan to run <link idref="extensions">XSLT extensions</link> 
+     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 
      <jump href="http://jakarta.apache.org/bsf/index.html">Apache Jakarta
      BSF project</jump>. If you plan to run XSLT extensions implemented in scripting 
-     languages, you will need bsf.jar and one or more additional files as indicated in 
+     languages, you will need <code>bsf.jar</code> and one or more additional files as indicated in 
      <link idref="extensions" anchor="supported-lang">extensions language requirements</link>.
   </p>
 </s2>
-<anchor name="previous-releases"/>
-<s2 title="Where do I download previous releases?">
-  <p>
-    To access previous releases, see the <resource-ref idref="xslt4j-distdir-previous"/>.
-  </p>
-</s2>
+
 <anchor name="whereis_xml4j"/>
 <s2 title="Where do I get &xml4j;?">
   <p>
-    The &xslt4j; download includes &xml4j-jar; from &xml4j-used;. In conjunction with xml-apis.jar, 
+    The &xslt4j-current; has been tested with &xml4j-used;.
+  </p>
+  <p><em>Important:</em> You may experience unpredictable anomalies
+    if your &xslt4j; and &xml4j; builds are not in synch.
+    If you download an update to &xslt4j;, check the
+    <link idref="readme">release notes</link>
+    to determine which version of &xml4j; you should use.
+  </p>
+  <note>
+    You can use &xslt4j; with other XML parsers that implement
+    the <resource-ref idref="jaxp13-longname-withacronym"/>. 
+    See <link idref="usagepatterns" anchor="plug">Plugging in the Transformer and XML parser</link>.
+  </note>
+  <p>
+    The &xslt4j; download includes <code>&xml4j-jar;</code> from &xml4j-used;. In conjunction with <code>xml-apis.jar</code>, 
     this is all you need to run &xslt4j; with the &xml4j; XML parser. You can, however, download the 
     complete &xml4j; binary or source distribution from the <resource-ref idref="xml4j-distdir"/>.
     If you cannot find &xml4j-used; at that location, have a look at the 
     <jump href="http://archive.apache.org/dist/xml/xerces-j/">Apache archive location for
     Xerces Java</jump>.
   </p>
-<note>If you plan to use a different XML parser, see <link idref="usagepatterns" anchor="plug">Plugging 
-in a Transformer and XML parser</link>.</note> 
+  <note>
+    If you plan to use a different XML parser, see <link idref="usagepatterns" anchor="plug">Plugging 
+    in a Transformer and XML parser</link>.
+  </note> 
 </s2>
 
 <anchor name="viewcode"/>
@@ -109,9 +158,14 @@
   </p>
 </s2>
 
+
 <anchor name="buildmyself"/>
 <s2 title="How do I download the latest development code to build myself?">
   <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.
@@ -127,14 +181,14 @@
   </p>
   <p>
     Once the subverion client is installed on your local machine you
-    can use the command line client program <code>svn</code>
+    can use the command line client program <em>svn</em>
     to get the latest Xalan-J using a command line something like this:
     <source>
     svn checkout http://svn.apache.org/repos/asf/xalan/java/trunk java    
     </source>
-    where the argument after <code>checkout</code> is the Subversion repository location,
+    where the argument after <em>checkout</em> is the Subversion repository location,
     in this case the location of the latest development code, and the last argument,
-    in this case <code>java</code> is the location of the local directory that the repository is
+    in this case <em>java</em> is the location of the local directory that the repository is
     copied to.   
   </p>
   <p>
@@ -146,29 +200,36 @@
   </p>
   <p>
     Those two commands will put a copy of the latest parts in the local
-    directories <code>java</code> and <code>test</code>,
+    directories <em>java</em> and <em>test</em>,
     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 <code>java</code>
+    as suggested. With your paths set up to compile Java code, go into the local <em>java</em>
     directory and issue these two commands:
     <source>
   build clean
   build  
   </source>
+  </p>
+  <p>
+  The <em>build.bat</em> batch file, or <em>build.sh</em> shell script (depending on
+  your operating system use <em>ant</em> and the buildfile <em>build.xml</em>. See
+  the section <link anchor="jar">Using ant</link> 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 <code>java/build</code>, change to
-  directory <code>test</code> and issue this command:
+  If you want to test the jars you just built in the directory <em>java/build</em>, change to
+  directory <em>test</em> and issue this command:
   <source>
   build jar
   build smoketest
     </source>
-    The first target, <code>jar</code> builds the test harness and only needs to be done
-    once after the <code>test</code> repository is checked out. The second target, <code>smoketest</code>,
+    The first target, <em>jar</em> builds the test harness and only needs to be done
+    once after the <em>test</em> repository is checked out. The second target, <em>smoketest</em>,
     runs the Xalan-J intepretive smoketest. 
-    Running the <code>build smoketest</code> or other targets in the <code>test</code> directory
-    automatically looks for the jars in the directory <code>../java/build</code>
+    Running the <em>build smoketest</em> or other targets in the <em>test</em> directory
+    automatically looks for the jars in the directory <em>../java/build</em>
     and that is why it is easiest to download the projects into suggested sibling
     directories with the given names.
   </p>
@@ -198,8 +259,92 @@
   </p>
   <p>
     Don't be fooled by the <em>BUILD SUCCESSFUL</em> messages, look for the two CONGRATULATIONS!
-    messages. If you run the smoketest for XSLTC with <code>build smoketest.xsltc</code> you wil
+    messages. If you run the smoketest for XSLTC with <em>build smoketest.xsltc</em> you wil
     only get one CONGRATULATIONS! message if all goes well.
   </p>  
 </s2>
+
+<anchor name="using-ant"/>
+<s2 title="Using Ant To Build">
+    <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 <resource-ref idref="ant"/> is a flexible, powerful, and easy-to-use Java build tool that we include with the
+     &xslt4j; 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><em>Instructions for using Ant</em></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 &xslt4j;. 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 &xslt4j; 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 &xslt4j; 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 <ref>target</ref></code><br/><br/>
+     where <ref>target</ref> is nothing (for the default target) or one of the following.</p>
+     <table>
+       <tr><td><em>Ant Target</em></td><td><em>What Ant does</em></td></tr>
+       <tr><td>compile</td><td>compiles &xslt4j; in build/classes.</td></tr>
+       <tr><td>jar (the default)</td><td>creates xalan.jar and serializer.jar in the build directory</td></tr>
+       <tr><td>serializer.jar</td><td>creates serializer.jar in the build directory</td></tr>
+       <tr><td>xsltc.jar</td><td>creates xsltc.jar in the build directory</td></tr>
+       <tr><td>samples</td><td>compiles and jars the sample apps in build/xalansamples.jar</td></tr>
+       <tr><td>servlet</td><td>compiles and jars the sample servlet in build/xalanservlet.jar</td></tr>
+       <tr><td>docs</td><td>creates the HTML User's Guide in build/docs</td></tr>
+       <tr><td>javadocs</td><td>generates the API documentation in ./build/docs/apidocs</td></tr>
+       <tr><td>fulldist</td><td>generates a complete distribution tree with zip and tar.gz distribution files in build</td></tr>
+       <tr><td>clean</td><td>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><em>Building without Ant</em></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>&xml4j-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>
+
+</s2>
+
+<anchor name="samples"/>
+<s2 title="Rebuilding a sample application">
+   <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>&xml4j-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 <resource-ref idref="tomcat"/> ).</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 <link anchor="ant">Using Ant</link>.</p>
+    <note>To rebuild (and to run) the sample servlet, the javax.servlet and javax.servlet.http packages must be on your
+    classpath.</note>
+</s2>
+
+<anchor name="previous-releases"/>
+<s2 title="Where do I download previous releases?">
+  <p>
+    To access previous releases, see the <resource-ref idref="xslt4j-distdir-previous"/>.
+  </p>
+</s2>
+
 </s1>
diff --git a/xdocs/sources/xalan/getstarted.xml b/xdocs/sources/xalan/getstarted.xml
index d33bcb4..2f17c8f 100644
--- a/xdocs/sources/xalan/getstarted.xml
+++ b/xdocs/sources/xalan/getstarted.xml
@@ -28,12 +28,12 @@
 </link> for information on using the &xslt4j; Compiling processor.</note><br></br>
 <anchor name="classpath"/>
 <s2 title="Setting up the system classpath">
-  <p>At the very minimum, you must include xalan.jar, serializer.jar, xml-apis.jar, 
-     and &xml4j-jar; -- or another conformant XML parser -- see <link idref="usagepatterns" 
+  <p>At the very minimum, you must include <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, 
+     and <code>&xml4j-jar;</code> -- or another conformant XML parser -- see <link idref="usagepatterns" 
      anchor="plug">Plugging in a Transformer and XML parser</link>) on the system classpath. 
-     To run the &xslt4ji; processor sample applications, include xalansamples.jar 
-     (all samples other than the servlet) and xalanservlet.jar. All these JAR files are 
-     distributed with &xslt4j;. To run Javascript extensions, include bsf.jar, which can
+     To run the &xslt4ji; 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 &xslt4j;. To run Javascript extensions, include <code>bsf.jar</code>, which can
      be obtained from the <jump href="http://jakarta.apache.org/bsf/index.html">Apache Jakarta
      BSF project</jump>. For extensions implemented in other scripting language, see 
      <link idref="extensions" anchor="supported-lang"> extensions language requirements</link> 
@@ -42,8 +42,8 @@
      
   <p>If you are using XSLTC, see <link idref="xsltc_usage">Getting Starting with XSLTC</link>.</p>
      
-  <p>If you are using JDK or JRE 1.3.x or 1.4.x, include tools.jar on the classpath.  If you
-     are using JDK or JRE 1.1.8 (supported for runtime only), then include classes.zip on the 
+  <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>
 </s2>
 
@@ -54,8 +54,8 @@
      work.</p>
   <p>To run the samples, do the following:</p>
   <ol>
-    <li>Set up your classpath (see above), including xalansamples.jar and (for the servlet) 
-        xalanservlet.jar.</li>
+    <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>
diff --git a/xdocs/sources/xalan/readme.xml b/xdocs/sources/xalan/readme.xml
index 7cf1d81..df9c185 100644
--- a/xdocs/sources/xalan/readme.xml
+++ b/xdocs/sources/xalan/readme.xml
@@ -19,33 +19,58 @@
 -->
 <!-- $Id$ -->
 <s1 title="Release Notes">
-<p>&xslt4j-current;</p>
-
  <ul>
-  <li><link anchor="status0">Status</link></li>
-  <li><link anchor="build">Build distributions and notes</link></li>
-  <li><link idref="contact_us">Getting in touch</link></li>
-  <li><link idref="history">History of software changes</link></li>
+  <li><link anchor="notes_latest">Release notes for  version 2.7.1</link></li>
+  <li><link anchor="notes_270">Release notes for version 2.7.0</link></li>
+  <li><link anchor="notes_260">Release notes for version 2.6.0</link></li>
+  <li><link anchor="notes_252">Release notes for version 2.5.2</link></li>
+  <li><link anchor="notes_251">Release notes for version 2.5.1</link></li>
+  <li><link anchor="notes_250">Release notes for version 2.5.0</link></li>
+  <li><link anchor="notes_25D1">Release notes for version 2.5.D1</link></li>
+  <li><link anchor="notes_241">Release notes for version 2.4.1</link></li>
+  <li><link anchor="notes_240">Release notes for version 2.4.0</link></li>
+  <li><link anchor="other">Other points of interest</link></li>
  </ul>
- 
-  <anchor name="status0"/>
-  <s2 title="Status">
-   <ul>
-    <li><link anchor="done">Changes in version 2.7.1</link></li>
-    <li><link anchor="other">Other points of interest</link></li>
-    <li><link anchor="status">Version of &xml4j; to use</link></li>
-<!-- <li><link anchor="developer-list">&xslt4j; developers</link></li> -->
-   </ul>
+  
+   <anchor name="notes_latest"/>
+   <s2 title="Release notes for &xslt4j; 2.7.1">
+     <p>&xslt4j; 2.7.1 was released in December 2006.
+     </p>
+      <p>
+      The serializer now has support for DOM Level 3 serialization
+      (<jump href="http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/load-save.html#LS-LSSerializer">LSSerializer</jump>)
+      for an XML parser. These changes are seen in the new class
+      <jump href="apidocs/org/apache/xml/serializer/DOM3Serializer.html">
+      <code>org.apache.xml.serializer.DOM3Serializer</code></jump> 
+      and the new package
+      <code>org.apache.xml.serializer.dom3</code>
+      as well as a new method,       
+      <code>asDOM3Serializer()</code> on the older 
+      <jump href="apidocs/org/apache/xml/serializer/Serializer.html">
+      <code>org.apache.xml.serializer.Serializer</code></jump> 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>
+      <em>Important:</em> You may experience unpredictable anomalies
+      if your &xslt4j; and &xml4j; builds are not in synch.
+    </p>
+
    
-   <anchor name="done"/>
-   <s3 title="Changes in &xslt4j; 2.7.1">
      <p>
        &xslt4j; 2.7.1 contains the following functional enhancements, 
        performance enhancements and bug fixes since 2.7.0:
      </p>
      <ul>
-     <li>Support for DOM Level 3 APIs for store.</li>
-     <li>Upgrade to Xerces-J (2.9.0) and a new version of xml-commons (xml-commons-external-1.3.04).</li>
      <li>XALANJ Jira bug fixes:
        <jump href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-611">611</jump>,
        <jump href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-1324">1324</jump>,
@@ -114,19 +139,96 @@
        <jump href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2343">2343</jump>
      </li>
      </ul>
-   </s3>
+   </s2>
    
-   <anchor name="270"/>
-   <s3 title="Changes in &xslt4j; 2.7.0">
-     <p>&xslt4j; 2.7.0 contains the following functional enhancements, performance enhancements and 
-        bug fixes since 2.6.0:
+   <anchor name="notes_270"/>
+   <s2 title="Release notes for &xslt4j; 2.7.0">
+     <p>&xslt4j; 2.7.0 was released on August 8, 2005.
      </p>
+     <p>&xslt4j; 2.7.0 contains the following functional enhancements, performance enhancements and 
+        bug fixes since 2.6.0.
+     </p>
+
+  <s4 title="Support for JAXP 1.3">
+  <p>Support for JAXP 1.3 has been introduced in this release of &xslt4j;. 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 <link idref="xpath_apis">Using the JAXP 1.3 XPath API</link> for details on how to 
+  use the new XPath API. You can also look at the code in the samples 
+  <link idref="samples" anchor="applyxpathjaxp">ApplyXPathJAXP</link> , 
+  <link idref="samples" anchor="xpathresolver">XPathResolver</link> and 
+  <link idref="samples" anchor="extensionresolver">ExtensionFunctionResolver</link>.</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 
+    <jump href="apidocs/javax/xml/transform/TransformerFactory.html#setFeature(java.lang.String, boolean)">
+    TransformerFactory.setFeature(String name, boolean value)</jump></li>
+    <li>A new method <jump href="apidocs/javax/xml/transform/Transformer.html#reset()">
+    Transformer.reset()</jump></li>
+    <li>A new nextSibling attribute is introduced for 
+    <jump href="apidocs/javax/xml/transform/dom/DOMResult.html">DOMResult</jump>, accessible 
+    by the constructors, getter and setter methods.</li>
+    <li>Support for the <link idref="features" anchor="secureprocessing">secure processing feature</link></li></p>
+  </s4>
+  <s4 title="New default error handling behavior">
+  The behavior of the default <jump href="apidocs/javax/xml/transform/ErrorListener.html">ErrorListener</jump>
+  was changed in this release of &xslt4j;, 
+  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 &xslt4ji; 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 
+  <jump href="apidocs/org/apache/xml/utils/DefaultErrorHandler.html">org.apache.xml.utils.DefaultErrorHandler</jump>
+  as a sample ErrorListener implementation.
+  </s4>
+  <s4 title="Support for XML 1.1">
+  <p>This release of &xslt4j; 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 <jump href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</jump> </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>  
+  </s4>
+  <s4 title="Support for Alternative BSF Implementations">
+  <p>Extensions written in Java are directly supported by &xslt4j;. For extensions written in languages other than 
+     Java, &xslt4j; 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 &xslt4j; distribution.  
+     Some time ago IBM donated their BSF implementation to the <jump href="http://jakarta.apache.org/bsf/index.html">
+     Apache Jakarta BSF</jump> project. As of this release, 
+     the IBM <code>bsf.jar</code> is no longer included in the &xslt4j; 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 <link idref="extensions" 
+     anchor="BSFManager">setting the BSFManager</link>.</p>
+  </s4>
+  <s4 title="New serializer.jar">
+  <p>In this release of &xslt4j; 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 &xslt4j;, 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>
+  </s4> 
+
+   <p>Also the following:</p>
+
      <ul>
-     <li>Support for JAXP 1.3, including new default error handling behaviour.</li>
-     <li>Support for XML 1.1 and Namespaces in XML 1.1.</li>
-     <li>Support for alternate BSF implementations.</li>
      <li>Updates to the SQL extension and SQL samples to support the Apache Derby database.</li>
-     <li>New serializer.jar containing the Serializer component of &xslt4j;.</li>
      <li>Minor restructuring of the source and binary distributions.</li>
      <li>Various performance fixes.</li>
      <li>Various memory leak fixes.</li>
@@ -253,15 +355,15 @@
       <jump href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=XALANJ-2183">2183</jump>
      </li>
      <li>For a list of &xslt4j; commits, see xalan-cvs@xml.apache.org in the
-      <resource-ref idref="apache-mail-archive" />.
-     </li>
-     <li>For more details on the new features of this release, please see the <link idref="whatsnew">What's New</link>  
-         page.</li>     
+      <resource-ref idref="apache-mail-archives"/>.
+     </li>        
      </ul>
-   </s3>
+   </s2>
      
-     
-   <s3 title="Changes in &xslt4j; 2.6.0">
+   <anchor name="notes_260"/>
+   <s2 title="Release notes for &xslt4j; 2.6.0">
+     <p>&xslt4j; 2.6.0 was released on February 29, 2004 (a leap year!).
+     </p>
      <p>&xslt4j; 2.6.0 contains the following functional enhancements, performance enhancements and 
         bug fixes since 2.5.2:</p>
      <ul>
@@ -270,7 +372,7 @@
          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>Changes in the XML Serializer.  The serializer will no longer put a newline after
+     <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 
          <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24304">24304</jump>.</li>     
      <li>Rename of Xalan Java's xalan:doc-cache-off processing instruction to 
@@ -333,13 +435,15 @@
       <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26842">26842</jump>                                                                       
      </li>
      <li>For a list of &xslt4j; commits, see xalan-cvs@xml.apache.org in the
-      <resource-ref idref="apache-mail-archive" />.
+      <resource-ref idref="apache-mail-archives" />.
      </li>         
      </ul>
-   </s3>   
+   </s2>   
    
-      
-   <s3 title="Changes in &xslt4j; 2.5.2">
+   <anchor name="notes_252"/>
+   <s2 title="Release notes for &xslt4j; 2.5.2">
+     <p>&xslt4j; 2.5.2 was released on October 30, 2003.
+     </p>
      <p>&xslt4j; 2.5.2 contains bug fixes and performance enhancements since 2.5.1.</p>
       <p>Fixes in this release include the following: </p>
      <ul>
@@ -432,11 +536,15 @@
       <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24025">24025</jump>      
      </li>
      <li>For a list of &xslt4j; commits, see xalan-cvs@xml.apache.org in the
-      <resource-ref idref="apache-mail-archive" />.
+      <resource-ref idref="apache-mail-archives" />.
      </li>         
      </ul>
-   </s3>       
-   <s3 title="Changes in &xslt4j; 2.5.1">
+   </s2>  
+   
+   <anchor name="notes_251"/>     
+   <s2 title="Release notes for &xslt4j; 2.5.1">
+     <p>&xslt4j; 2.5.1 was released on June 3, 2003.
+     </p>
      <p>&xslt4j; 2.5.1 contains bug fixes and performance enhancements since 2.5.0.</p>
       <p>Fixes in this release include the following: </p>
      <ul>
@@ -456,11 +564,15 @@
       <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=20273">20273</jump>
      </li>
      <li>For a list of &xslt4j; commits, see xalan-cvs@xml.apache.org in the
-      <resource-ref idref="apache-mail-archive" />.
+      <resource-ref idref="apache-mail-archives" />.
      </li>         
      </ul>
-   </s3>
-     <s3 title="Changes in &xslt4j; 2.5.0">
+   </s2>
+   
+    <anchor name="notes_250"/>
+     <s2 title="Release notes for &xslt4j; 2.5.0">
+     <p>&xslt4j; 2.5.0 was released on April 16,2003.
+     </p>
      <p>&xslt4j; 2.5.0 contains a variety of features, bug fixes and 
         performance enhancements since 2.5.D1.</p>
      <p>New features in &xslt4j; 2.5.0 include:
@@ -476,8 +588,12 @@
      <p>Refer to <link idref="whatsnew">What's New</link> for a description of the new function 
         and <link idref="history">History of software changes</link> for a list of the various 
         bug fixes and other enhancements in this release.</p>
-     </s3>
-     <s3 title="Changes in &xslt4j; 2.5.D1">
+     </s2>
+     
+     <anchor name="notes_25D1"/>
+     <s2 title="Release notes for &xslt4j; 2.5.D1">
+     <p>&xslt4j; 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 
@@ -526,14 +642,18 @@
      <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=17030">17030</jump>,
      <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=17136">17136</jump></li>
      <li>Support for and bundling of Xerces Java 2.3.</li>     
-     <li>Support for and bundling of xml-apis.jar from the tck-jaxp-1_2_0 branch of xml-commons.
+     <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 &xslt4j; commits, see xalan-cvs@xml.apache.org in the
-     <resource-ref idref="apache-mail-archive" />.</li>         
+     <resource-ref idref="apache-mail-archives" />.</li>         
      </ul>     
-     </s3>     
-     <s3 title="Changes since &xslt4j; 2.4.0">
+     </s2>  
+     
+     <anchor name="notes_241"/>   
+     <s2 title="Release notes for &xslt4j; 2.4.1">
+     <p>&xslt4j; 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>
@@ -606,14 +726,18 @@
      <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13944">13944</jump>,
      <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14022">14022</jump></li> 
      <li>Support for and bundling of Xerces Java 2.2.</li>
-     <li>Support for and bundling of xml-apis.jar from the factoryfinder-build of the RIVERCOURT1 branch of xml-commons.  This version of the Java
+     <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 &xslt4j; commits, see xalan-cvs@xml.apache.org in the
-     <resource-ref idref="apache-mail-archive" />.</li>
+     <resource-ref idref="apache-mail-archives" />.</li>
      <li>Support building Xalan with JDK 1.4.</li>
      </ul>
-     </s3>
-     <s3 title="Changes since &xslt4j; 2.3.1">
+     </s2>
+     
+     <anchor name="notes_240"/>
+     <s2 title="Release notes for &xslt4j; 2.4.0">
+     <p>&xslt4j; 2.4.0 was released on September 3, 2002.
+     </p>
      <ul>
      <li>Fixes for the following bugzilla defects : 
      <jump href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3238">3238</jump>,
@@ -680,14 +804,14 @@
      <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 xml-apis.jar from the RIVERCOURT1 branch of xml-commons.  This version of the Java
+     <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 &xslt4j; commits, see xalan-cvs@xml.apache.org in the
-     <resource-ref idref="apache-mail-archive" />.</li>
+     <resource-ref idref="apache-mail-archives" />.</li>
      </ul>
-     </s3>
+     </s2>
      <anchor name="other"/>
-     <s3 title="Other points of interest">
+     <s2 title="Other points of interest">
      <ul>
      <li>Xalan Java 2 is integrated with release 2 of &xml4j;. &xslt4j-current; does not include support for the deprecated &xslt4j; 1 compatability API. 
      The &xslt4j; 1 compatability code does NOT compile with &xml4j2;.<br/><br/></li>
@@ -732,101 +856,9 @@
      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>
-     </s3>
-     <anchor name="status"/>
-     <s3 title="Version of Xerces to use"> 
-       <p>The &xslt4j-current; has been tested with &xml4j-used;. &download; For information about including &xml4j-jar; and xml-apis.jar on the system class path, see <link idref="getstarted" anchor="classpath">Setting up the system class path</link>.</p>
-       <p><em>Important</em> You may experience unpredictable anomalies if your &xslt4j; and &xml4j; builds are not in synch. If you download an update to &xslt4j;, check the release notes to determine which version of &xml4j; you should use.</p>
-       <note>You can use &xslt4j; with other XML parsers that implement the <resource-ref idref="jaxp12"/>. See 
-       <link idref="usagepatterns" anchor="plug">Plugging in the Transformer and XML parser</link>.</note>
-     </s3>
-  </s2>
-  <anchor name="build"/>  
-  <s2 title="Build Notes">
-  <p>We provide two distributions: a binary distribution, and a source distribution. See <link idref="getstarted" anchor="download">Downloading
-  what you need</link>. If you have downloaded the binary distribution, you already have a build. If you downloaded the source
-  distribution, you can use Ant to build &xslt4j;, including xalan.jar, serializer.jar, xalansamples.jar, xalanservlet.war, the
-  user documentation, and the Javadoc API documentation. You need the source distribution to do builds. Keep in mind that if you have also
-  downloaded the binary distribution, any builds you run will overwrite that binary distribution.</p>
-<ul>
-<li><link anchor="ant">Using Ant</link></li>
-<li><link anchor="jar">Building xalan.jar and serializer.jar</link></li>
-<li><link anchor="samples">Building sample applications</link></li>
-<li><link anchor="doc">Building the &xslt4j; documentation</link></li>
-</ul>
-<anchor name="ant"/>
-   <s3 title="Using Ant">
-     <p>Apache <resource-ref idref="ant"/> is a flexible, powerful, and easy-to-use Java build tool that we include with the
-     &xslt4j; 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><em>Instructions for using Ant</em></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 &xslt4j;. You must put tools.jar 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 &xslt4j; 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 xalan.jar 
-       (the "jar" target).</li>
-     </ol>
-     <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 <ref>target</ref></code><br/><br/>
-     where <ref>target</ref> is nothing (for the default target) or one of the following.</p>
-     <table>
-       <tr><td><em>Target</em></td><td><em>What Ant does</em></td></tr>
-       <tr><td>compile</td><td>compiles &xslt4j; in build/classes.</td></tr>
-       <tr><td>jar (the default)</td><td>creates xalan.jar and serializer.jar in the build directory</td></tr>
-       <tr><td>samples</td><td>compiles and jars the sample apps in build/xalansamples.jar</td></tr>
-       <tr><td>servlet</td><td>compiles and jars the sample servlet in build/xalanservlet.jar</td></tr>
-       <tr><td>docs</td><td>creates the HTML User's Guide in build/docs</td></tr>
-       <tr><td>javadocs</td><td>generates the API documentation in ./build/docs/apidocs</td></tr>
-       <tr><td>fulldist</td><td>generates a complete distribution tree with zip and tar.gz distribution files in build</td></tr>
-       <tr><td>clean</td><td>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>
-   </s3><anchor name="jar"/> 
-   <s3 title="Building &xslt4j;">
-     <p>The &xslt4j; build is in xalan.jar.  The serializer classes of &xslt4j; are in serializer.jar. The &xslt4j; 
-     source code tree is in the src directory.</p>
-     <p>If you are using Ant, the target is jar (the default). For more information, see <link anchor="ant">Using
-     Ant</link>.</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, &xml4j-jar;, and xml-apis.jar.</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 Sun jar utility to store the resulting .class files in xalan.jar</li>
-     </ul>
-   </s3><anchor name="samples"/>
-   <s3 title="Rebuilding a sample application">
-   <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 xalan.jar, serializer.jar, xml-apis.jar, and &xml4j-jar; 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 servlet.jar file found in Apache Tomcat ( see <resource-ref idref="tomcat"/> ).</p>
-   <p>After recompiling a sample, you can use the Sun jar utility to place your new .class files in
-    xalansamples.jar.</p>
-    <p>You can use Ant with the samples target to recompile the samples and place the unpackaged class files in xalansamples.jar.
-     For more information, see <link anchor="ant">Using Ant</link>.</p>
-    <note>To rebuild (and to run) the sample servlet, the javax.servlet and javax.servlet.http packages must be on your
-    classpath.</note>
-   </s3><anchor name="doc"/>
-   <s3 title="Rebuilding the &xslt4j; documentation">
-     <p>&xslt4j; 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 &xslt4j;
-      HTML User's Guide, and the overview and package-level documents used during the generation of Javadoc.</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 stylebook-1.0-b2.jar. 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. For more information, see <link anchor="ant">Using Ant</link>.</p>
-   </s3>    
- </s2>
+     </s2>
+
+
 
 <!-- We need to overhaul this list if we still want to publish it.  
      It should probably be broken out into active & past contributors.
diff --git a/xdocs/sources/xalan/samples.xml b/xdocs/sources/xalan/samples.xml
index d76acc8..4370073 100644
--- a/xdocs/sources/xalan/samples.xml
+++ b/xdocs/sources/xalan/samples.xml
@@ -84,9 +84,9 @@
 </table>
 <p>With most of the samples, you can use the following procedure:</p>
  <ol>
-   <li>Be sure xalan.jar, serializer.jar, xml-apis.jar, the appropriate samples JAR file, 
-       and &xml4j-jar; are on the system class path. For the extension examples, bsf.jar 
-       and (for the JavaScript extensions) js.jar must also be on the class path.</li>
+   <li>Be sure <code>xalan.jar</code>, <code>serializer.jar</code>, <code>xml-apis.jar</code>, the appropriate samples JAR file, 
+       and <code>&xml4j-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>
@@ -176,8 +176,8 @@
     <p>How to run it: Open appletXMLtoHTML.html in the Internet Explorer 5 browser.</p>
     <note>For information about running &xslt4j; applets in Netscape Communicator, see <link idref="usagepatterns" anchor="netscape">Problems
     with Netscape</link>.<br/><br/>
-    This applet looks for xalan.jar and serializer.jar in the build directory, or the top level directory, and xml-apis.jar and 
-    xercesImpl.jar in the lib subdirectory. If you have placed these JAR files elsewhere, adjust the applet archive setting in 
+    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.</note>
     </s2>
 
@@ -190,7 +190,7 @@
     Copy the xalanservlet.war to %Tomcat_Home%/webapps. For more details about deploying
     servlets on Tomcat, please refer to <jump href="http://tomcat.apache.org/tomcat-4.1-doc/appdev/deployment.html">Deployment Organization</jump>.</p>
     <note>Dependency on Tomcat version. If encountering "java.lang.VerifyError: Cannot inherit from final class" error, 
-    replace xercesImpl.jar under %Tomcat_Home%/common/endorsed with the one included with &xslt4j; .</note>
+    replace <code>xercesImpl.jar</code> under %Tomcat_Home%/common/endorsed with the one included with &xslt4j; .</note>
     <p><link anchor="simplexsltservlet">servlet.SimpleXSLTServlet</link> applies a particular stylesheet to a particular 
     XML document.</p> 
     <p><link anchor="usestylesheetparamservlet">servlet.UseStylesheetParamServlet</link> sets a stylesheet parameter 
@@ -302,9 +302,9 @@
     </ul>
     <p>The extensions subdirectory contains six samples with &xslt4j; 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 bsf.jar and js.jar (version 1.5, available from 
+    <p>To run these examples, you must place <code>bsf.jar</code> and <code>js.jar</code> (version 1.5, available from 
      <jump href="http://www.mozilla.org/rhino">http://www.mozilla.org/rhino</jump>) on the classpath. 
-     You do not need js.jar on the classpath for the samples that use Java extensions. <link idref="faq">
+     You do not need <code>js.jar</code> on the classpath for the samples that use Java extensions. <link idref="faq">
      Problems related to JDK 1.4 or higher</link>.</p>
     <p>Use java.org.apache.xalan.xslt.Process, the &xslt4j; command-line utility, to run most of these samples from
      the <link idref="commandline">command line</link>. The command line must include an -in flag with the 
@@ -329,7 +329,7 @@
     <s3 title="2-basicJscript">
     <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>
-     <note>js.jar must be on the classpath.</note>
+     <note><code>js.jar</code> must be on the classpath.</note>
     <p>Run this sample from the extensions subdirectory with</p>
     <p><code>java org.apache.xalan.xslt.Process -in 2-basicJscript.xml</code>
      <br/>&nbsp;&nbsp;<code>-xsl 2-basicJscript.xsl</code></p>     
@@ -357,7 +357,7 @@
     <s3 title="5-numlistJscript">
     <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>
-     <note>js.jar must be on the classpath.</note>
+     <note><code>js.jar</code> must be on the classpath.</note>
     <p>Run this sample from the extensions subdirectory with</p>
     <p><code> java org.apache.xalan.xslt.Process -in numlist.xml</code>
      <br/>&nbsp;&nbsp;<code>-xsl 5-numlistJscript.xsl</code></p>
@@ -386,8 +386,8 @@
     <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 derby.jar and derbytools.jar</li>
-      <li>have the derby.jar and derbytools.jar in your classpath.</li>
+      <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>
@@ -521,8 +521,8 @@
      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 xalansamples.jar.</p>
-    <p><link anchor="dbsetup">Set up the database</link>, be sure xalanxamples.jar is on the 
+     connect to the datasource. The ExternalConnection class is in <code>xalansamples.jar</code>.</p>
+    <p><link anchor="dbsetup">Set up the database</link>, 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, 
diff --git a/xdocs/sources/xalan/usagepatterns.xml b/xdocs/sources/xalan/usagepatterns.xml
index 729b535..6f09215 100644
--- a/xdocs/sources/xalan/usagepatterns.xml
+++ b/xdocs/sources/xalan/usagepatterns.xml
@@ -81,7 +81,7 @@
 </s2><anchor name="plug"/>
 <s2 title="Plugging in a Transformer and XML parser">
 <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>&xslt4j; is distributed with a system property setting for the &xslt4j; processor. This setting is in xalan.jar in META-INF/services (see src/META-INF/services).</p>
+<p>&xslt4j; is distributed with a system property setting for the &xslt4j; processor. This setting is in <code>xalan.jar</code> in META-INF/services (see src/META-INF/services).</p>
 <gloss>
   <label>System property</label>
     <item>Setting</item>
@@ -101,7 +101,7 @@
 <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 xalan.jar or &xml4j-jar;, depending on which entry you have changed.<br/><br/></li>
+  <li>Revise the entry in src/META-INF/services and rebuild <code>xalan.jar</code> or <code>&xml4j-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>
@@ -128,7 +128,7 @@
               indent="yes" 
               xalan:indent-amount="2"/&gt;</source>
   <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 <link idref="readme" anchor="jar">rebuild serializer.jar</link>. Be aware that if you change the default value
+  and use Ant to <link idref="readme" anchor="jar">rebuild <code>serializer.jar</code></link>. 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>
@@ -181,7 +181,7 @@
 alternate Java class it must implement the ContentHandler interface.</note>
 <note>You can also create your own XML entity file (mapping characters to
 entities) or edit src/org/apache/xml/serializer/XMLEntities.properties and
-rebuild serializer.jar.</note>
+rebuild <code>serializer.jar</code>.</note>
 <p><ref>output_html.properties</ref>:</p>
 <table>
   <tr>
@@ -226,7 +226,7 @@
 interface and recieves calls during result tree serialization. If you specify an 
 alternate Java class it must implement the ContentHandler interface.</note>
 <note>You can also create your own HTML entity file (mapping characters to entities) 
-or edit src/org/apache/xml/serializer/HTMLEntities.properties and rebuild serializer.jar.</note>
+or edit src/org/apache/xml/serializer/HTMLEntities.properties and rebuild <code>serializer.jar</code>.</note>
 <p><ref>output_text.properties</ref>:</p>
 <table>  
   <tr>
diff --git a/xdocs/sources/xalan/whatsnew.xml b/xdocs/sources/xalan/whatsnew.xml
index e647bb5..46190bd 100644
--- a/xdocs/sources/xalan/whatsnew.xml
+++ b/xdocs/sources/xalan/whatsnew.xml
@@ -20,80 +20,36 @@
 
   <s2 title="What's new in &xslt4j-current;">  
 <p> &nbsp; </p>  
-  <s3 title="Support for JAXP 1.3">
-  <p>Support for JAXP 1.3 has been introduced in this release of &xslt4j;. 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 <link idref="xpath_apis">Using the JAXP 1.3 XPath API</link> for details on how to 
-  use the new XPath API. You can also look at the code in the samples 
-  <link idref="samples" anchor="applyxpathjaxp">ApplyXPathJAXP</link> , 
-  <link idref="samples" anchor="xpathresolver">XPathResolver</link> and 
-  <link idref="samples" anchor="extensionresolver">ExtensionFunctionResolver</link>.</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 
-    <jump href="apidocs/javax/xml/transform/TransformerFactory.html#setFeature(java.lang.String, boolean)">
-    TransformerFactory.setFeature(String name, boolean value)</jump></li>
-    <li>A new method <jump href="apidocs/javax/xml/transform/Transformer.html#reset()">
-    Transformer.reset()</jump></li>
-    <li>A new nextSibling attribute is introduced for 
-    <jump href="apidocs/javax/xml/transform/dom/DOMResult.html">DOMResult</jump>, accessible 
-    by the constructors, getter and setter methods.</li>
-    <li>Support for the <link idref="features" anchor="secureprocessing">secure processing feature</link></li></p>
-  </s3>
-  <s3 title="New default error handling behavior">
-  The behavior of the default <jump href="apidocs/javax/xml/transform/ErrorListener.html">ErrorListener</jump>
-  was changed in this release of &xslt4j;, 
-  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 &xslt4ji; 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 
-  <jump href="apidocs/org/apache/xml/utils/DefaultErrorHandler.html">org.apache.xml.utils.DefaultErrorHandler</jump>
-  as a sample ErrorListener implementation.
-  </s3>
-  <s3 title="Support for XML 1.1">
-  <p>This release of &xslt4j; 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 <jump href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</jump> </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>  
-  </s3>
-  <s3 title="Support for Alternative BSF Implementations">
-  <p>Extensions written in Java are directly supported by &xslt4j;. For extensions written in languages other than 
-     Java, &xslt4j; 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 (bsf.jar from 2001) has been included in the &xslt4j; distribution.  
-     Some time ago IBM donated their BSF implementation to the <jump href="http://jakarta.apache.org/bsf/index.html">
-     Apache Jakarta BSF</jump> project. As of this release, 
-     the IBM bsf.jar is no longer included in the &xslt4j; 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 <link idref="extensions" 
-     anchor="BSFManager">setting the BSFManager</link>.</p>
-  </s3>
-  <s3 title="New serializer.jar">
-  <p>In this release of &xslt4j; the code related to serialization of output result trees has been pulled out of 
-     xalan.jar and moved into a new jar file, named serializer.jar.</p>
-  <p>The code in serializer.jar has been modified to have no build or runtime dependencies on the rest of the 
-     code in &xslt4j;, therefore, serializer.jar 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>
-  </s3>      
+    <s3 title="Support for DOM Level 3 serialization (LSSerializer)">
+      <p>
+      The serializer now has support for DOM Level 3 serialization
+      (<jump href="http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/load-save.html#LS-LSSerializer">LSSerializer</jump>)
+      for an XML parser. These changes are seen in the new class
+      <jump href="apidocs/org/apache/xml/serializer/DOM3Serializer.html">
+      <code>org.apache.xml.serializer.DOM3Serializer</code></jump> 
+      and the new package
+      <code>org.apache.xml.serializer.dom3</code>
+      as well as a new method,       
+      <code>asDOM3Serializer()</code> on the older 
+      <jump href="apidocs/org/apache/xml/serializer/Serializer.html">
+      <code>org.apache.xml.serializer.Serializer</code></jump> interface.
+      </p>
+      <p>
+      More details are in the javadoc of those classes and interfaces
+      </p>
+    </s3>
+    
+    <s3 title="Upgrade to Xerces-J 2.9.0 and XML Commons External 1.3.04.">
+    The distributions contain upgraded versions of <code>xml-apis.jar</code>
+    (Xerces-J 2.9.0) and <code>xml-apis.jar</code> (XML Commons External 1.3.04).
+    </s3>
+    
+    <s3 title="Bug fixes">
+    Of course the 2.7.1 release contains performance enhancements
+    and other bug fixes since 2.7.0 and a list of these can be found in
+    <link idref="readme" anchor="notes_latest">the release notes</link>.
+    </s3>
+    
   </s2>
 </s1>
