| <?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: XSLTC Documentation</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">XSLTC Design</a> |
| </th> |
| </tr> |
| <tr> |
| <td valign="middle">XSLTC Documentation</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>Overview<br /> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="xsltc_compiler.html">Compiler design</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="xsl_whitespace_design.html">Whitespace</a> |
| </li> |
| <li> |
| <a href="xsl_sort_design.html">xsl:sort</a> |
| </li> |
| <li> |
| <a href="xsl_key_design.html">Keys</a> |
| </li> |
| <li> |
| <a href="xsl_comment_design.html">Comment design</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="xsl_lang_design.html">lang()</a> |
| </li> |
| <li> |
| <a href="xsl_unparsed_design.html">Unparsed entities</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="xsl_if_design.html">If design</a> |
| </li> |
| <li> |
| <a href="xsl_choose_design.html">Choose|When|Otherwise design</a> |
| </li> |
| <li> |
| <a href="xsl_include_design.html">Include|Import design</a> |
| </li> |
| <li> |
| <a href="xsl_variable_design.html">Variable|Param design</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="xsltc_runtime.html">Runtime</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="xsltc_dom.html">Internal DOM</a> |
| </li> |
| <li> |
| <a href="xsltc_namespace.html">Namespaces</a> |
| </li></ul><hr /><ul> |
| <li> |
| <a href="xsltc_trax.html">Translet & TrAX</a> |
| </li> |
| <li> |
| <a href="xsltc_predicates.html">XPath Predicates</a> |
| </li> |
| <li> |
| <a href="xsltc_iterators.html">Xsltc Iterators</a> |
| </li> |
| <li> |
| <a href="xsltc_native_api.html">Xsltc Native API</a> |
| </li> |
| <li> |
| <a href="xsltc_trax_api.html">Xsltc TrAX API</a> |
| </li> |
| <li> |
| <a href="xsltc_performance.html">Performance Hints</a> |
| </li> |
| </ul> |
| </div> |
| <div id="content"> |
| <h2>XSLTC Documentation</h2> |
| |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h3>User Documentation</h3> |
| <p>The following user documentation is currently available:</p> |
| <ul> |
| <li>Command-line <a href="README.xsltc">compiler</a> and |
| <a href="README.xslt">runtime</a> man pages.</li> |
| <li> |
| <a href="xsltc_native_api.html">XSLTC Native API reference</a> |
| </li> |
| <li> |
| <a href="xsltc_trax_api.html">XSLTC TrAX API reference</a> |
| </li> |
| <li> |
| <a href="xsltc_performance.html">XSLTC Performance Hints</a> |
| </li> |
| </ul> |
| |
| |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h3>Design Documents</h3> |
| <p>The following design documents are currently available:</p> |
| <ul> |
| <li> |
| <a href="#overall">XSLTC overall design</a> |
| </li> |
| <li> |
| <a href="#compiler">XSLTC compiler design</a> |
| </li> |
| <li> |
| <a href="#runtime">XSLTC runtime library design</a> |
| </li> |
| <li> |
| <a href="#runtime">XSLTC internal DOM design</a> |
| </li> |
| <li> |
| <a href="#trax">XSLTC TrAX implementation design</a> |
| </li> |
| </ul> |
| |
| |
| |
| <a name="overall"></a> |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h4>XSLTC overall design</h4> |
| |
| <p>The figure below describes the overall design of XSLTC's compiler:</p> |
| <p> |
| <img src="overall_design.gif" alt="overall_design.gif" /> |
| </p> |
| <p> |
| <b> |
| <i>Figure 1: Architectural overview of XSLTC</i> |
| </b> |
| </p> |
| |
| <p>A client application can use XSLTC either through its |
| <a href="xsltc_native_api.html">native API</a> or through or |
| implementation of the <a href="xsltc_trax_api.html">TrAX API</a>. The |
| <a href="#compiler">compiler</a> generates one or more Java classes |
| (we have chosen to call them 'translets'). |
| The <a href="#runtime">runtime library</a> contains classes that |
| can load these translets and use them to transform XML documents to some |
| markup language or plain text. There is also a detailed document describing |
| <a href="xsltc_namespace.html">namespace handling</a> in all parts of |
| XSLTC (compiler, internal DOM, and output handler).</p> |
| |
| |
| |
| |
| <a name="compiler"></a> |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h4>XSLTC compiler design</h4> |
| |
| <p>The figure below describes the overall design of XSLTC's compiler:</p> |
| <p> |
| <img src="compiler_design.gif" alt="compiler_design.gif" /> |
| </p> |
| <p> |
| <b> |
| <i>Figure 2: Compiler architecture overview</i> |
| </b> |
| </p> |
| |
| <p>There is also a <a href="xsltc_compiler.html">high-level design</a> |
| document for XSLTC's compiler. Apart from that you can also find separate |
| design documents for some XSL elements and XPath expressions, patterns |
| and functions:</p> |
| |
| <h5>XSL elements</h5> |
| <ul> |
| <li> |
| <a href="xsl_sort_design.html"><xsl:sort></a> |
| </li> |
| <li> |
| <a href="xsl_key_design.html"><xsl:key></a> |
| </li> |
| <li> |
| <a href="xsl_whitespace_design.html"><xsl:preserve-space></a> |
| </li> |
| <li> |
| <a href="xsl_whitespace_design.html"><xsl:strip-space></a> |
| </li> |
| <li> |
| <a href="xsl_comment_design.html"><xsl:comment></a> |
| </li> |
| <li> |
| <a href="xsl_comment_design.html"><xsl:message></a> |
| </li> |
| <li> |
| <a href="xsl_if_design.html"><xsl:if></a> |
| </li> |
| <li> |
| <a href="xsl_choose_design.html"><xsl:choose></a> |
| </li> |
| <li> |
| <a href="xsl_variable_design.html"><xsl:variable></a> |
| </li> |
| <li> |
| <a href="xsl_variable_design.html"><xsl:param></a> |
| </li> |
| <li> |
| <a href="xsl_include_design.html"><xsl:include></a> |
| </li> |
| <li> |
| <a href="xsl_include_design.html"><xsl:import></a> |
| </li> |
| </ul> |
| |
| <h5>XPath functions</h5> |
| <ul> |
| <li> |
| <a href="xsl_key_design.html">key()</a> |
| </li> |
| <li> |
| <a href="xsl_lang_design.html">lang()</a> |
| </li> |
| <li> |
| <a href="xsl_unparsed_design.html">unparsed-entity-uri()</a> |
| </li> |
| </ul> |
| |
| <h5>XPath expressons</h5> |
| <ul> |
| <li> |
| <a href="xsltc_predicates.html">Predicates</a> |
| </li> |
| </ul> |
| |
| |
| <h5>XPath patterns</h5> |
| <ul> |
| <li> |
| <a href="xsltc_predicates.html#step-pattern">StepPattern</a> |
| </li> |
| <li> |
| <a href="xsl_key_design.html#patterns">IdPattern</a> |
| </li> |
| <li> |
| <a href="xsl_key_design.html#patterns">KeyPattern</a> |
| </li> |
| </ul> |
| |
| |
| |
| |
| <a name="runtime"></a> |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h4>XSLTC runtime library design</h4> |
| |
| <p>The runtime portion of XSLTC has four main components; the internal DOM |
| implementation (not W3C), the translet class(es), the runtime |
| library and the output processor:</p> |
| |
| <p> |
| <img src="runtime_design.gif" alt="runtime_design.gif" /> |
| </p> |
| <p> |
| <b> |
| <i>Figure 3: Runtime library architecture overview</i> |
| </b> |
| </p> |
| |
| <p>The <a href="xsltc_runtime.html">runtime library design</a> document |
| describes the structure of the compiled translet as well as the translet |
| runtime library.</p> |
| |
| <p>The <a href="xsltc_dom.html">Internal DOM design</a> document |
| describes the components and structure of the internal DOM, support for |
| DOM2 navigation, the DOM adapter, DOM multiplexer, and DOM builder.</p> |
| |
| <p>The <a href="xsltc_iterators.html">iterator design</a> document |
| describes the general design of the internal DOM iterators and describes |
| some of the more complicated iterators in detail.</p> |
| |
| |
| |
| |
| <a name="trax"></a> |
| <p align="right" size="2"> |
| <a href="#content">(top)</a> |
| </p> |
| <h4>XSLTC TrAX Implementation</h4> |
| |
| <p>An implementation of the JAXP/ TrAX interface was added on to XSLTC |
| at a late stage. Special care was taken to preserve the small footprint |
| and high performance of XSLTC. The following design was used to wrap |
| XSLTC behind a lightweight (but complete) TrAX implementation:</p> |
| |
| <p> |
| <img src="trax_translet_wrapping.gif" alt="trax_translet_wrapping.gif" /> |
| </p> |
| <p> |
| <b> |
| <i>Figure 4: XSLTC TrAX interface implementation</i> |
| </b> |
| </p> |
| |
| <p>The <a href="xsltc_trax.html">TrAX design</a> document contains |
| details of XSLTC's TrAX implementation.</p> |
| |
| <p>XSLTC also has a 'smart' TrAX <code>TransformerFactory</code> class |
| that will alternate between using XSLTC and Xalan for transformations. |
| This factory class will make its choices based on usage patterns. This will |
| be described in a separate design document.</p> |
| |
| |
| |
| |
| |
| <p> |
| <b> |
| <i>Design documents by <a href="mailto:morten@xml.apache.org">Morten Jørgensen</a> - updated 13.12.2001</i> |
| </b> |
| </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> |