You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by Jo...@lotus.com on 2001/06/15 15:39:40 UTC

dtm.xml

At some point Scott and/or I really should write a "principle of operation"
section for that page. Here's a first draft of a version which starts to
address that. It may be overly detailed; feel free to edit.


  <?xml version="1.0" standalone="no"?>

  <!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">

  <s1 title="&xslt4j; DTM">
  <s2 title="Introduction">
  <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 (<resource-ref idref="dom"/>) 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. The details of
constructing a DTM vary depending on which implementation of this API you
are using. Two reference implementations are currently available, SAX2DTM
(which is built via a SAX stream) and DOM2DTM (which provided DTM access to
an existing DOM). Both can be built incrementally; in that mode, they allow
the Xalan processor to begin reading the DTM and performing the
transformation while the DTM is still being assembled (eg, while the parser
is still parsing the XML source), and attempt to do only as much work as is
needed to support read requests actually made by the XPath or XSLT
processor.</p>
  <p>A proxy mechanism is also provided which presents the contents of the
DTM as a read-only subset of the DOM, for the convenience of user-written
extensions.</p>
  </s2>
  <s2 title="DTM performance settings">
  <p>&xslt4j; implements two DTM performance features that you can control
with the TransformerFactory
  <jump href
="apidocs/javax/xml/transform/TransformerFactory.html#setAttribute(java.lang.String,

java.lang.Object)">setAttribute()</jump>
  method.</p>
  <table>
  <tr>
    <th>Attribute ID (URL)</th>
    <th>Default setting</th>
    <th>Description</th>
  </tr>
  <tr>
    <td>"http://xml.apache.org/xalan/features/incremental"</td>
    <td>false</td>
    <td>incremental transforms</td>
  </tr>
  <tr>
    <td>"http://xml.apache.org/xalan/features/optimize"</td>
    <td>true</td>
    <td>optimized transforms</td>
  </tr>
  </table>
  <s3 title="http://xml.apache.org/xalan/features/incremental">
   <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>
   <note> 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.</note>
   <p>Example: setting incremental transforms to true:</p>
   <source>javax.xml.transform.TransformerFactory tFactory =
            javax.xml.transform.TransformerFactory.newInstance();
  tFactory.setAttribute
            ("http://xml.apache.org/xalan/features/incremental", true);
  ...</source>
  </s3>
  <s3 title="http://xml.apache.org/xalan/features/optimize">
   <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>
  </s3>
  </s2>
  </s1>


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org