| <?xml version="1.0" standalone="no"?> |
| <!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd"> |
| <!-- |
| * 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/>. |
| --> |
| <s1 title="What's new in &xslt4j2;"> |
| <p>&xslt4j; 2.5 contains the following new features:</p> |
| <ul> |
| <li><link anchor="XSLTC-DTM">Integration of DTM into the Xalan Compiled processor (XSLTC)</link></li> |
| <li><link anchor="common_serializer">Integration of Xalan Interpretive and Xalan Compiled Serializers</link></li> |
| </ul> |
| |
| <p>These new features have been driven by the need to have a closer integration |
| and better code reuse between the Xalan Interpretive and the Xalan Compiled (XSLTC) |
| processors. Prior to this release, the processors did not share much code and they |
| had different underlying models for the input xml document. Xalan Interpretive used |
| the <link idref="dtm">Document Table Model (DTM)</link> to model the input xml, while |
| XSLTC used its own DOMImpl implementation. The serializers used by the processors were |
| also different. As the project matures sharing more components between the processors |
| becomes increasingly important. This makes the code more maintainable in the future and |
| also eliminates some subtle behavioral differences between the Interpretive and the |
| Compiled processors.</p> |
| |
| <p>In addition to these design benefits, the integration of DTM with XSLTC and the common |
| serializer provide conformance and performance improvements to our users. In a practical |
| environment, the performance improvement for most stylesheets in XSLTC is likely to be |
| in the range of 10-20%. Stylesheets that use a lot of small result tree fragments (RTF) can |
| be a few times faster because of the new light-weight RTF model. Although the performance |
| improvement work focused mainly on the XSLTC side, the enhancements introduced also |
| contributed to performance benefits for the Xalan Interpretive processor. As a result, the |
| Interpretive processor is roughly 5-10% faster in this release.</p> |
| |
| <anchor name="XSLTC-DTM"/> |
| <s2 title="Integration of DTM into the Xalan Compiled processor (XSLTC)"> |
| <p>As of the &xslt4j; 2.5 release, both the Xalan Interpretive and Xalan Compiled (XSLTC) |
| processors use the same <link idref="dtm">Document Table Model (DTM)</link>. XSLTC's |
| underlying document model, DOMImpl, was replaced with DTM and the original DTM was extended |
| so that it could be used more efficiently with XSLTC. Many of the DOM-related classes in |
| XSLTC were adapted to work with the new DTM model and only a few changes were made in the |
| compiler-related classes. However, because of the changes in the core component, the |
| translets generated by the XSLTC in this release are not binary compatible with the |
| translets generated by previous releases of XSLTC (up to and including Xalan Java 2.5.D1). |
| You'll need to recompile your stylesheets when you switch to this new release.</p> |
| </s2> |
| |
| <anchor name="common_serializer"/> |
| <s2 title="Integration of Xalan Interpretive and Xalan Compiled Serializers"> |
| <p>As of the &xslt4j; 2.5 release, a common serializer is shared between the |
| Xalan Interpretive and Xalan Compiled (XSLTC) processors. The common serializer |
| code resides in the org.apache.xml.serializer package. The new serializer is |
| designed to take the benefits of the old serialization mechanisms from both sides. |
| By using the common serializer, many of the output differences between the |
| Interpretive and the Compiled processor go away, and maintenance effort is |
| reduced.</p> |
| <p>During the merge of the Xalan Interpretive and XSLTC serializers, an |
| effort was made to use the best performing features from each serializer. |
| The new class hierarchy is similar to the one used by XSLTC. At the highest |
| level the serializer classes split based on whether the output handler type |
| ("Stream" or "SAX"). At the next level, the hierarchy branches based on |
| the output type (XML, HTML or TEXT). This allows each flavor of serializer |
| to do optimizations based on the output type and whether that output is going |
| to a "Stream" or a "SAX" handler.</p> |
| <p>From a functional point of view, the new serializer's output matches the |
| behavior of the Interpretive processor's old serializer, such as the choice of |
| which HTML entities to write out, and how to escape attribute values in |
| documents written to a stream. </p> |
| </s2> |
| </s1> |