<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
<!--
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<!-- $Id$ -->
<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>
