<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
<!--
 * Copyright 1999-2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<!-- $Id$ -->
<s1 title="What's new in &xslt4j2;">

  <s2 title="What's new in &xslt4j-current;">  
<p> &nbsp; </p>  

    <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>
