| <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html> |
| <head> |
| <title>ASF: Xalan-Java DTM</title> |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> |
| <meta http-equiv="Content-Style-Type" content="text/css" /> |
| <link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" /> |
| </head> |
| <!-- |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| --> |
| <body> |
| <div id="title"> |
| <table class="HdrTitle"> |
| <tbody> |
| <tr> |
| <th rowspan="2"> |
| <a href="../index.html"> |
| <img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" /> |
| </a> |
| </th> |
| <th text-align="center" width="75%"> |
| <a href="index.html">Xalan XSL Transformer User's Guide</a> |
| </th> |
| </tr> |
| <tr> |
| <td valign="middle">Xalan-Java DTM</td> |
| </tr> |
| </tbody> |
| </table> |
| <table class="HdrButtons" align="center" border="1"> |
| <tbody> |
| <tr> |
| <td> |
| <a href="http://www.apache.org">Apache Foundation</a> |
| </td> |
| <td> |
| <a href="http://xalan.apache.org">Xalan Project</a> |
| </td> |
| <td> |
| <a href="http://xerces.apache.org">Xerces Project</a> |
| </td> |
| <td> |
| <a href="http://www.w3.org/TR">Web Consortium</a> |
| </td> |
| <td> |
| <a href="http://www.oasis-open.org/standards">Oasis Open</a> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div id="navLeft"> |
| <ul> |
| <li> |
| <a href="resources.html">Resources</a> |
| <br /> |
| </li> |
| <li> |
| <a href="http://xalan.apache.org/index.html">Home</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="index.html">Xalan-J 2.7.2</a> |
| </li> |
| <li> |
| <a href="charter.html">Charter</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="whatsnew.html">What's New</a> |
| </li> |
| <li> |
| <a href="readme.html">Release Notes</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="overview.html">Overview</a> |
| </li> |
| <li> |
| <a href="downloads.html">Download/Build</a> |
| </li> |
| <li> |
| <a href="getstarted.html">Getting Started</a> |
| </li> |
| <li> |
| <a href="xsltc_usage.html">Using XSLTC</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="faq.html">FAQs</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="samples.html">Sample Apps</a> |
| </li> |
| <li> |
| <a href="commandline.html">Command Line</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="features.html">Features</a> |
| </li> |
| <li> |
| <a href="trax.html">Transform API</a> |
| </li> |
| <li> |
| <a href="xpath_apis.html">XPath API</a> |
| </li> |
| <li> |
| <a href="usagepatterns.html">Usage Patterns</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="apidocs/index.html">Xalan-J API</a> |
| </li> |
| <li> |
| <a href="public_apis.html">Public APIs</a> |
| </li> |
| <li>DTM<br /> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="extensions.html">Extensions</a> |
| </li> |
| <li> |
| <a href="extensionslib.html">Extensions Library</a> |
| </li> |
| <li> |
| <a href="extensions_xsltc.html">XSLTC Exts</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="design/design2_0_0.html">Xalan 2 Design</a> |
| </li> |
| <li> |
| <a href="xsltc/index.html">XSLTC Design</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="builds.html">Building a release</a> |
| </li> |
| <li> |
| <a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a> |
| </li> |
| <li> |
| <a href="bugreporting.html">Bug Reporting</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="contact_us.html">Contact us</a> |
| </li> |
| </ul> |
| </div> |
| <div id="content"> |
| <h2>Xalan-Java DTM</h2> |
| <ul> |
| <li> |
| <a href="#intro">Introduction</a> |
| </li> |
| <li> |
| <a href="#settings">Performance settings</a> |
| </li> |
| </ul> |
| <a name="intro"></a> |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h3>Introduction</h3> |
| <p>The Document Table Model (DTM) is an interface to a Document Model designed specifically for |
| the needs of our XPath and XSLT implementations. The motivation behind this model is to optimize |
| performance and minimize storage.</p> |
| <p>Specifically, DTM avoids the overhead of instantiating the objects the standard DOM requires to |
| represent a tree of nodes. DTM uses unique integer "handles" to identify nodes, integer ID values |
| to represent URLs, local names, and expanded names, and integer index and length references to a |
| string buffer to represent the text value of each node.</p> |
| <p>In general, the "read" APIs to DTM resemble those of the W3C Document Object Model |
| (<a href="http://www.w3.org/DOM">DOM</a>) interface. However, in place of the DOM object tree of nodes, DTM |
| uses integer arrays and string pools to represent the structure and content of the XML document to |
| be transformed. DTM also structures the document's contents slightly differently, to better match |
| the XPath data model; some details and constraints present in a standard DOM are suppressed, and a |
| few XPath-specific features are added.</p> |
| <p>DTM is intended to be a read-only model, and so does not attempt to replicate the DOM's write or |
| create-node operations.</p> |
| <p>The details of constructing a DTM vary depending on which implementation of this API you are |
| using. Two reference implementations are currently available:</p> |
| <ul> |
| <li>SAX2DTM (built via a SAX stream)</li> |
| <li>DOM2DTM (which provides DTM access to an existing DOM)</li> |
| </ul> |
| <p>Both DTMs can be built incrementally (see <a href="#incremental">incremental transforms</a>). |
| When operating incrementally, the DTM allows the Xalan-Java processor to begin reading the DTM and |
| performing the transformation while the DTM is still being assembled (for example, while the parser |
| is still parsing the XML source), and attempts to do only as much work as is needed to support the |
| read requests actually made by the XPath or XSLT processor.</p> |
| <p>For the convenience of user-written extensions, a proxy mechanism presents the contents of the |
| DTM as a read-only subset of the DOM.</p> |
| |
| |
| <a name="settings"></a> |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h3>DTM performance settings</h3> |
| <p>Xalan-Java implements two DTM performance features that you can control with the TransformerFactory |
| <a href="apidocs/javax/xml/transform/TransformerFactory.html#setAttribute(java.lang.String, java.lang.Object)">setAttribute(String name, Object value)</a> method.</p> |
| <table border="1"> |
| <tr> |
| <th class="content" rowspan="1" colspan="1">Attribute name (URL)</th> |
| <th class="content" rowspan="1" colspan="1">Default setting</th> |
| <th class="content" rowspan="1" colspan="1">Description</th> |
| </tr> |
| <tr> |
| <td class="content" rowspan="1" colspan="1">"http://xml.apache.org/xalan/features/incremental"</td> |
| <td class="content" rowspan="1" colspan="1">false</td> |
| <td class="content" rowspan="1" colspan="1"> |
| <a href="#incremental">incremental transforms</a> |
| </td> |
| </tr> |
| <tr> |
| <td class="content" rowspan="1" colspan="1">"http://xml.apache.org/xalan/features/optimize"</td> |
| <td class="content" rowspan="1" colspan="1">true</td> |
| <td class="content" rowspan="1" colspan="1"> |
| <a href="#optimized">optimized transforms</a> |
| </td> |
| </tr> |
| </table> |
| <p>Both of these DTM settings are described below.</p> |
| |
| <p> </p> |
| <a name="incremental"></a> |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h4>'http://xml.apache.org/xalan/features/incremental'</h4> |
| <p>Set this feature to true to enable incremental transformations. If set to false (the default), |
| the transform and the parse are performed on the same thread.</p> |
| <table class="note"> |
| <tr> |
| <td class="noteImg"> |
| <img src="resources/note.gif" alt="note" /> |
| </td> |
| <td class="noteTxt"> When set to true: If the parser is Xerces, we perform an incremental transform on a single |
| thread using the Xerces "parse on demand" feature. If the parser is not Xerces, we run the |
| transform in one thread and the parse in another. Exception: if the parser is not Xerces |
| and the XML source is a DOMSource, setting this feature to true has no effect.</td> |
| </tr> |
| </table> |
| <table class="note"> |
| <tr> |
| <td class="noteImg"> |
| <img src="resources/note.gif" alt="note" /> |
| </td> |
| <td class="noteTxt"> The incremental feature is not currently supported by the XSLT Compiling processor, XSLTC.</td> |
| </tr> |
| </table> |
| <p>Example: setting incremental transforms to true (for the XSLT Interpretive processor):</p> |
| <blockquote class="source"> |
| <pre>javax.xml.transform.TransformerFactory tFactory = |
| javax.xml.transform.TransformerFactory.newInstance(); |
| // setAttribute() takes a String and an Object. |
| tFactory.setAttribute |
| ("http://xml.apache.org/xalan/features/incremental", |
| java.lang.Boolean.TRUE); |
| ...</pre> |
| </blockquote> |
| |
| |
| <a name="optimized"></a> |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h4>'http://xml.apache.org/xalan/features/optimize'</h4> |
| <p>When set to true (the default), this feature enables optimizations that may involve structural |
| rewrites of the stylesheet. Any tool that requires direct access to the stylesheet structure |
| should set this feature to false.</p> |
| |
| |
| |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h3>DTM node location tracking setting</h3> |
| <p>The DTM also provides a setting that you can use to track location information for each node in |
| the source document. See <a href="features.html#source_location">"http://apache.org/xalan/features/source_location"</a> |
| </p> |
| |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| </div> |
| <div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div> |
| </div> |
| </body> |
| </html> |