1
0
mirror of https://gitlab.gnome.org/GNOME/libxslt synced 2025-07-31 02:43:06 +03:00

We will need more hackers to understand how this works:

- doc/internals.html doc/node.fig doc/node.gif doc/processing.fig
  doc/processing.gif doc/stylesheet.fig doc/stylesheet.gif
  doc/templates.fig doc/templates.gif: started writing tye doc
  on how libxslt works.
Daniel
This commit is contained in:
Daniel Veillard
2001-05-05 15:56:14 +00:00
parent 371845ef91
commit e1d0209ccc
10 changed files with 710 additions and 0 deletions

View File

@ -1,3 +1,10 @@
Sat May 5 17:52:52 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
* doc/internals.html doc/node.fig doc/node.gif doc/processing.fig
doc/processing.gif doc/stylesheet.fig doc/stylesheet.gif
doc/templates.fig doc/templates.gif: started writing tye doc
on how libxslt works.
Sat May 5 17:13:16 CEST 2001 Bjorn Reese <breese@users.sourceforge.net>
* libxslt/numbersInternals.h libxslt/numbers.c

233
doc/internals.html Normal file
View File

@ -0,0 +1,233 @@
<html>
<head>
<title>The XML C library for Gnome</title>
<meta name="GENERATOR" content="amaya V4.1">
<meta http-equiv="Content-Type" content="text/html">
</head>
<body bgcolor="#ffffff">
<p><a href="http://www.gnome.org/"><img src="smallfootonly.gif"
alt="Gnome Logo"></a><a href="http://www.redhat.com"><img src="redhat.gif"
alt="Red Hat Logo"></a></p>
<h1 align="center">The XSLT C library for Gnome explained</h1>
<h1 style="text-align: center">How does it work ?</h1>
<p></p>
<ul>
<li><a href="#Introducti">Introduction</a></li>
<li><a href="#Basics">Basics</a></li>
<li><a href="#Keep">Keep it simple stupid</a></li>
<li><a href="#libxml">The libxml nodes</a></li>
<li><a href="#XSLT">The XSLT processing steps</a></li>
<li><a href="#XSLT1">The XSLT stylesheet compilation</a></li>
<li><a href="#XSLT2">The XSLT template compilation</a></li>
</ul>
<h2><a name="Introducti">Introduction</a></h2>
<p>This document describes the processing of <a
href="http://xmlsoft.org/XSLT/">libxslt</a>, the <a
href="http://www.w3.org/TR/xslt">XSLT</a> C library developped for the <a
href="http://www.gnome.org/">Gnome</a> project.</p>
<h2><a name="Basics">Basics</a></h2>
<p>XSLT is a transformation language, taking an input document and a
stylesheet document, it generates an ouput document:</p>
<p align="center"><img src="processing.gif"
alt="the XSLT processing model"></p>
<p>Libxslt is written in C. It relies on libxml for the following
operations:</p>
<ul>
<li>parsing files</li>
<li>building the in-memory DOM strucure associated to the documents
handled</li>
<li>the XPath implementation</li>
<li>serializing back the result document to XML, HTML (text is handled
directly)</li>
</ul>
<h2><a name="Keep">Keep it simple stupid</a></h2>
<p>Libxslt is not very specialized, it is build under the assumption that all
nodes from the source and output document can fit in the virtual memory of the
system. There is a big trade-off there, it is fine for reasonably sized
documents but may not be suitable for large sets of data, the gain is that it
can be used in a relatively versatile way, the input or output may never be
serialized, but the size of documents it can handle are limited by the size of
the memory available.</p>
<p>More specialized memory handling approaches are possible, like building the
input tree from a serialization progressively as it is consumed, factoring
repetitive patterns, or even on-the-fly generation of the output as the input
is parsed but it is possible only for a limited subset of the stylesheets. In
general the implementation of libxslt follows the following pattern:</p>
<ul>
<li>KISS (keep it simple stupid)</li>
<li>when there is a clear bottleneck optimize on top of this simple
framework and refine only as much as is needed to reach the expected
result</li>
</ul>
<p>The result is not that bad, clearly one can do a better job but more
specialized too. Most optimization like building the tree on-demand would need
serious changes to the libxml XPath framework, an easy step would be to
serialize the output directly (or call a set of SAX-like ouptut handler to
keep this a flexible interface) and hence avoid the memory consumption of the
result.</p>
<h2><a name="libxml">The libxml nodes</a></h2>
<p>DOM like trees as used and generated by libxml and libxslt are relatively
complex. Most node types follow the given structure except a few variations
depending on the node type:</p>
<p align="center"><img src="node.gif" alt="description of a libxml node"> </p>
<p>Nodes carry a <strong>name</strong> and the node <strong>type</strong>
indicates the kind of node it represents, the most common ones are:</p>
<ul>
<li>document nodes</li>
<li>element nodes</li>
<li>text nodes</li>
</ul>
<p>For the XSLT processing, entity nodes should not be generated (i.e. they
should be replaced by their content). Most nodes also contains the following
"naviagtion" informations:</p>
<ul>
<li>the containing <strong>doc</strong>ument</li>
<li>the <strong>parent</strong> node</li>
<li>the first <strong>children</strong> node</li>
<li>the <strong>last</strong> children node</li>
<li>the <strong>prev</strong>ious sibling</li>
<li>the following sibling (<strong>next</strong>)</li>
</ul>
<p>Elements nodes carries the list of attributes in the properties, an
attribute itself holds the navigation pointers and the children list (the
attribute value is not represented as a simple string to allow usage of
entities references).</p>
<p>The <strong>ns</strong> points to the namespace declaration for the
namespace associated to the node, <strong>nsDef</strong> is the linked list of
namespace declaration present on element nodes.</p>
<p>Most nodes also carry an <strong>_private</strong> pointer which can be
used by the application to hold specific data on this node.</p>
<h2><a name="XSLT">The XSLT processing steps</a></h2>
<p> Basically there is a few steps which are clearly decoupled at the
interface level:</p>
<ol>
<li>parse the stylesheet and generate an DOM tree</li>
<li>take the stylesheet tree and build a compiled version of it it's the
compilation phase</li>
<li>the input and generate a DOM tree</li>
<li>process the stylesheet against the input tree and generate an output
tree</li>
<li>serialize the output tree</li>
</ol>
<p>A few things should be noted here:</p>
<ul>
<li>the steps 1/ 3/ and 5/ are optional</li>
<li>the stylesheet optained at 2/ can be reused by multiple processing 4/
(and this should also work in threaded programs)</li>
<li>the tree provided in 2/ should never be freed using xmlFreeDoc, but by
freeing the stylesheet.</li>
<li>the input tree 4/ is not modified except the _private field which may be
used for labelling keys if used by the stylesheet</li>
</ul>
<h2><a name="XSLT1">The XSLT stylesheet compilation</a></h2>
<p>This is the second step described. It takes a stylesheet tree, and
"compiles" it, basically it associates to each node a structure stored in the
_private field and containing informations computed in the stylesheet:</p>
<p align="center"><img src="stylesheet.gif"
alt="a compiled XSLT stylesheet"></p>
<p>One xsltStylesheet structure is generated per document parsed for the
stylesheet. XSLT documents allows includes and imports of other documents,
imports are stored in the <strong>imports</strong> list (hence keeping the
tree hierarchy of includes which is very important for a proper XSLT
processing model) and includes are stored in the <strong>doclist</strong>
list. An inported stylesheet has a parent link to allow to browse the
tree.</p>
<p>The DOM tree associated to the document is stored in <strong>doc</strong>,
it is preprocessed to remove ignorable empty nodes and all the nodes in the
XSLT namespace are subject to a precomputing. This usually consist of
extrating all the context informations from the context tree (attributes,
namespaces, XPath expressions), and store them in an xsltStylePreComp
structure associated to the <strong>_private</strong> field of the node.</p>
<p>A couple of notable exceptions to this are XSLT template nodes (more on
this later) and attribute value templates, if they are actually templates, the
value cannot be computed at compilation time (some preprocessing could be done
like isolation and preparsing of the XPath subexpressions but it's not done,
yet).</p>
<p>The xsltStylePreComp structure also allow to store the precompiled form of
an XPath expression which can be associated to an XSLT element.</p>
<h2><a name="XSLT2">The XSLT template compilation</a></h2>
<p>A proper handling of templates lookup is one of the key of fast XSLT
processing (given a node in the source document this is the processof finding
which templates should be applied to this node). Libxslt follows the hint
suggested in the 5.2 Patterns section of the XSLT Recommendation, i.e. it
doesn't evaluates it as an XPath expression but tokenize it and compile it as
a set of rules to be evaluated on a candidate node. There is usually an
indication of the node name in the last step of this evaluation and this is
used as a key check for the match. As a result libxslt build a relatively more
complex set of structures for the templates:</p>
<p align="center"><img src="templates.gif"
alt="The templates related structure"></p>
<p>Let's describe a bit more closely what is built. First the xsltStylesheet
structure holds a pointer to the template hash table. All the XSLT patterns
compiled in this stylesheet are indexed by the value of the the target element
(or attribute, pi ...) name, so when a element or an attribute "foo" need to
be processed the lookup is done using the name as a key.</p>
<p>Each of the patterns are compiled into an xsltCompMatch structure, it holds
the set of rules based on the tokenization of the pattern basically stored in
reverse order (matching is easier this way). It also holds some information
about the previous matches used to speed up the process when one iterates over
a set of siblings (this optimization may be defeated by trashing when running
threaded computation, it's unclear taht this si a big deal in practice).
Predicates expression are not compiled at this stage, they may be at run-time
if needed, but in this case they are compiled as full XPath expressions (the
use of some fixed predicate can probably be optimized, they are not yet).</p>
<p>The xsltCompMatch are then stored in the hash table, the clash list is
itself sorted by priority of the template to implement "naturally" the XSLT
priority rules.</p>
<p>Associated to the compiled pattern is the xsltTemplate itself containing
the informations actually required for the processing of the pattern including
of course a pointer to the list of elements used for building the pattern
result.</p>
<p>Last but not least a number of patterns do not fit in the hash table
because they are not associated to a name, this is the case for patterns
applying to the root, any element, any attributes, text nodes, pi nodes, keys
etc. Those are stored independantly in the stylesheet structure as separate
linked lists of xsltCompMatch.</p>
<p></p>
<p><a href="mailto:Daniel.Veillard@imag.fr">Daniel Veillard</a></p>
<p>$Id$</p>
</body>
</html>

91
doc/node.fig Normal file
View File

@ -0,0 +1,91 @@
#FIG 3.2
Landscape
Center
Inches
Letter
100.00
Single
-2
1200 2
6 825 6675 2925 7350
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
825 6975 825 6675 2925 6675 2925 6975
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
825 7050 825 7350
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
2925 7050 2925 7350
-6
6 4500 6675 6600 7350
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
4500 6975 4500 6675 6600 6675 6600 6975
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
4500 7050 4500 7350
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
6600 7050 6600 7350
-6
6 1275 150 3375 825
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
1275 525 1275 825 3375 825 3375 525
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
1275 450 1275 150
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
3375 450 3375 150
-6
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 2025 4500 2025
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 2400 4500 2400
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 3150 4500 3150
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 3525 4500 3525
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 3900 4500 3900
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 4275 4500 4275
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 4650 4500 4650
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 2775 4500 2775
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2400 5025 4500 5025
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
975 1575 1725 1575 1725 5625 1125 5625
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
600 1575 900 1575
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
750 5625 1050 5625
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
5925 1575 5175 1575 5175 5625 5775 5625
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
6300 1575 6000 1575
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
6150 5625 5850 5625
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
2400 1575 4500 1575 4500 5625 2400 5625 2400 1575
2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 3.00 180.00 360.00
2700 3300 1725 3300
2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 3.00 180.00 360.00
3975 2925 5175 2925
2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 3.00 180.00 360.00
2700 2625 2700 825
2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 3.00 180.00 360.00
2700 3750 1575 6675
2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 3.00 180.00 360.00
3975 4125 5475 6675
4 0 0 50 0 0 18 0.0000 4 255 915 2850 1875 _private\001
4 0 0 50 0 0 18 0.0000 4 225 465 2850 2250 type\001
4 0 0 50 0 0 18 0.0000 4 135 255 2850 4500 ns\001
4 0 0 50 0 0 18 0.0000 4 255 1125 2850 4875 properties\001
4 0 0 50 0 0 18 0.0000 4 165 855 2850 5325 content\001
4 0 0 50 0 0 18 0.0000 4 30 180 2850 5550 ...\001
4 0 0 50 0 0 18 0.0000 4 195 495 2850 3375 prev\001
4 0 0 50 0 0 18 0.0000 4 195 390 2850 4200 last\001
4 0 0 50 0 0 18 0.0000 4 165 495 2850 3000 next\001
4 0 0 50 0 0 18 0.0000 4 195 930 2850 3825 children\001
4 0 0 50 0 0 18 0.0000 4 225 720 2850 2625 parent\001

BIN
doc/node.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

137
doc/processing.fig Normal file
View File

@ -0,0 +1,137 @@
#FIG 3.2
Landscape
Center
Inches
Letter
100.00
Single
-2
1200 2
6 5850 225 9675 4500
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
7050 450 7575 450 7575 975 7050 975 7050 450
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6225 1275 6750 1275 6750 1800 6225 1800 6225 1275
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
6225 2175 6750 2175 6750 2700 6225 2700 6225 2175
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
7350 2175 7875 2175 7875 2700 7350 2700 7350 2175
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
8550 1350 9075 1350 9075 1875 8550 1875 8550 1350
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
7350 975 6750 1275
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
6525 1800 6525 2175
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
6750 1575 8550 1575
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
6750 2475 7350 2475
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
7650 2700 7650 3225
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
8175 3225 8700 3225 8700 3750 8175 3750 8175 3225
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
7425 3225 7950 3225 7950 3750 7425 3750 7425 3225
3 1 0 1 0 7 50 0 -1 0.000 0 0 0 10
7650 225 6675 300 6075 1050 5850 2400 6150 3525 7800 4500
9375 4200 9675 2400 9375 1050 8400 375
1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
1.000 1.000
4 0 0 50 0 0 18 0.0000 4 195 720 6150 3075 html:a\001
4 0 0 50 0 0 18 0.0000 4 195 705 8475 2250 TEXT\001
4 0 0 50 0 0 18 0.0000 4 195 705 8100 4125 TEXT\001
-6
2 3 0 2 0 7 50 0 -1 0.000 0 0 0 0 0 7
4875 2400 5180 1878 4880 1353 4275 1350 3970 1872 4270 2397
4875 2400
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
1425 600 1950 600 1950 1125 1425 1125 1425 600
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
450 1650 975 1650 975 2175 450 2175 450 1650
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
1500 1650 2025 1650 2025 2175 1500 2175 1500 1650
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
450 2775 975 2775 975 3300 450 3300 450 2775
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
1500 2775 2025 2775 2025 3300 1500 3300 1500 2775
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
2550 2775 3075 2775 3075 3300 2550 3300 2550 2775
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
1725 1125 975 1650
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
975 1875 1500 1875
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
750 2175 750 2775
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
1800 2175 1800 2775
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2025 3075 2550 3075
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
5175 6525 5700 6525 5700 7050 5175 7050 5175 6525
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
4800 3900 5325 3900 5325 4425 4800 4425 4800 3900
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
4800 4425 4425 4875
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
3225 5625 3750 5625 3750 6150 3225 6150 3225 5625
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
4125 6525 4650 6525 4650 7050 4125 7050 4125 6525
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
3075 6525 3600 6525 3600 7050 3075 7050 3075 6525
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
5175 5625 5700 5625 5700 6150 5175 6150 5175 5625
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
4200 4875 4725 4875 4725 5400 4200 5400 4200 4875
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
4200 5400 3750 5625
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
3450 6150 3300 6525
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
3750 5925 5175 5925
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
3600 6750 4125 6750
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
5475 6150 5475 6525
2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 3.00 180.00 360.00
4650 3675 4650 2400
2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 3.00 180.00 360.00
5175 1875 6150 1875
2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 3.00 180.00 360.00
2625 1875 3975 1875
3 1 0 1 0 7 50 0 -1 0.000 0 0 0 10
1650 300 825 525 225 1350 150 2850 675 3825 2325 3975
3375 3450 3675 2325 2625 975 2025 300
1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
1.000 1.000
3 1 0 1 0 7 50 0 -1 0.000 0 0 0 10
4725 3300 3600 3600 2700 4350 2475 5550 2625 7275 4275 7875
6000 7725 7200 6375 6675 4575 5775 3525
1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
1.000 1.000
4 0 0 50 0 0 18 0.0000 4 255 1470 3225 4200 xsl:stylesheet\001
4 0 0 50 0 0 18 0.0000 4 255 1350 4800 5175 xsl:template\001
4 0 0 50 0 0 18 0.0000 4 195 720 4125 6450 html:a\001
4 0 0 50 0 0 18 0.0000 4 195 705 5400 7350 TEXT\001
4 0 0 50 0 0 20 0.0000 4 285 2115 3525 1200 XSLT Processing\001
4 0 0 50 0 0 18 0.0000 4 255 1140 1350 5250 Stylesheet\001
4 0 0 50 0 0 18 0.0000 4 195 1935 4575 525 Result Document\001
4 0 0 50 0 0 18 0.0000 4 195 1995 2250 525 Source Document\001

BIN
doc/processing.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

104
doc/stylesheet.fig Normal file
View File

@ -0,0 +1,104 @@
#FIG 3.2
Landscape
Center
Inches
Letter
100.00
Single
-2
1200 2
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
2400 3075 2925 3075 2925 3600 2400 3600 2400 3075
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
2025 450 2550 450 2550 975 2025 975 2025 450
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
5400 375 7050 375 7050 3225 5400 3225 5400 375
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 750 7050 750
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 1125 7050 1125
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 1500 7050 1500
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 1875 7050 1875
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 2250 7050 2250
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2025 975 1650 1425
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
450 2175 975 2175 975 2700 450 2700 450 2175
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
1350 3075 1875 3075 1875 3600 1350 3600 1350 3075
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
300 3075 825 3075 825 3600 300 3600 300 3075
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
2400 2175 2925 2175 2925 2700 2400 2700 2400 2175
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
1425 1425 1950 1425 1950 1950 1425 1950 1425 1425
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
1425 1950 975 2175
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
675 2700 525 3075
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
975 2475 2400 2475
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
825 3300 1350 3300
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2700 2700 2700 3075
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
5550 2025 2550 450
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
2100 5025 3750 5025 3750 7425 2100 7425 2100 5025
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
600 3600 2475 5025
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 2850 7050 2850
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
6225 3150 3750 5025
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2100 5325 3750 5325
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2100 5625 3750 5625
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
2100 5925 3750 5925
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2250 5775 450 3600
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
5250 5025 4575 5025 4575 6300
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
5325 5025 5550 5025
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
4575 6375 4575 6600
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
3150 5175 4575 5175
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2925 2700 5100 5025
4 0 0 50 0 0 18 0.0000 4 225 720 5700 675 parent\001
4 0 0 50 0 0 18 0.0000 4 165 495 5700 1050 next\001
4 0 0 50 0 0 18 0.0000 4 255 870 5700 1425 imports\001
4 0 0 50 0 0 18 0.0000 4 195 735 5700 1800 doclist\001
4 0 0 50 0 0 18 0.0000 4 195 390 5700 2175 doc\001
4 0 0 50 0 0 18 0.0000 4 255 1470 450 750 xsl:stylesheet\001
4 0 0 50 0 0 18 0.0000 4 255 1350 2025 1725 xsl:template\001
4 0 0 50 0 0 18 0.0000 4 255 1140 5700 3075 preComps\001
4 0 0 50 0 0 18 0.0000 4 165 495 2475 5250 next\001
4 0 0 50 0 0 18 0.0000 4 225 465 2475 5550 type\001
4 0 0 50 0 0 18 0.0000 4 195 420 2475 5850 inst\001
4 0 0 50 0 0 18 0.0000 4 255 915 1350 4050 _private\001
4 0 0 50 0 0 18 0.0000 4 195 720 1350 3000 html:a\001
4 0 0 50 0 0 18 0.0000 4 195 705 2625 3900 TEXT\001
4 0 0 50 0 0 18 0.0000 4 255 915 3375 3000 _private\001
4 0 0 50 0 0 18 0.0000 4 255 2010 4050 6900 xsltStylePreComp\001
4 0 0 50 0 0 18 0.0000 4 255 1455 3900 600 xslStylesheet\001

BIN
doc/stylesheet.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

138
doc/templates.fig Normal file
View File

@ -0,0 +1,138 @@
#FIG 3.2
Landscape
Center
Inches
Letter
100.00
Single
-2
1200 2
6 3225 5700 4200 7200
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
3900 5700 3225 5700 3225 6825
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
3975 5700 4200 5700
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
3225 6900 3225 7200
-6
6 3150 2475 4125 3975
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
3825 2475 3150 2475 3150 3600
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
3900 2475 4125 2475
2 1 3 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
3150 3675 3150 3975
-6
2 2 0 1 1 1 50 0 20 0.000 0 0 -1 0 0 5
3900 6975 4425 6975 4425 7500 3900 7500 3900 6975
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2175 5850 5400 3075
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2175 7650 4050 6975
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2175 7950 3750 8250
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 750 7050 750
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 1050 7050 1050
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 1350 7050 1350
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 1650 7050 1650
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 1950 7050 1950
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 2250 7050 2250
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
5475 900 2250 900
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
1350 1125 1350 2475
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
750 5700 2400 5700 2400 8100 750 8100 750 5700
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
750 6000 2400 6000
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
750 7500 2400 7500
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
750 7800 2400 7800
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
750 6300 2400 6300
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
1800 6150 3225 6150
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
750 6600 2400 6600
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
750 6900 2400 6900
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
750 7200 2400 7200
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
675 2475 2325 2475 2325 4200 675 4200 675 2475
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
675 2775 2325 2775
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
675 3075 2325 3075
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
675 3900 2325 3900
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
675 3525 2325 3525
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
1875 2625 3150 2625
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
2100 4050 2100 5700
2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
2175 1800 2175 525 675 525 675 1800 2175 1800
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
3675 8250 4125 8250 4125 8700 3675 8700 3675 8250
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
4575 8250 5025 8250 5025 8700 4575 8700 4575 8250
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
4200 7500 3900 8250
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
4125 8475 4575 8475
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
3900 8700 3900 9375
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
3675 9375 4125 9375 4125 9825 3675 9825 3675 9375
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
5400 750 7050 750 7050 3600 5400 3600 5400 750
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
5400 3225 7050 3225
2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
1 1 2.00 120.00 240.00
5550 3450 2400 5775
4 0 0 50 0 0 18 0.0000 4 255 1350 4125 6750 xsl:template\001
4 0 0 50 0 0 18 0.0000 4 255 1545 5475 975 templateHash\001
4 0 0 50 0 0 18 0.0000 4 255 1350 750 1050 hash(name)\001
4 0 0 50 0 0 18 0.0000 4 195 540 1275 7725 elem\001
4 0 0 50 0 0 18 0.0000 4 165 855 1200 8025 content\001
4 0 0 50 0 0 18 0.0000 4 255 510 1125 5925 style\001
4 0 0 50 0 0 18 0.0000 4 165 495 1125 6225 next\001
4 0 0 50 0 0 18 0.0000 4 255 840 1125 6525 priority\001
4 0 0 50 0 0 18 0.0000 4 135 615 1125 6825 name\001
4 0 0 50 0 0 18 0.0000 4 195 615 1125 7140 mode\001
4 0 0 50 0 0 18 0.0000 4 255 975 975 4125 template\001
4 0 0 50 0 0 18 0.0000 4 255 735 1200 3375 steps[]\001
4 0 0 50 0 0 18 0.0000 4 165 495 1200 2700 next\001
4 0 0 50 0 0 18 0.0000 4 195 615 1200 3000 mode\001
4 0 0 50 0 0 18 0.0000 4 255 1470 300 5550 xsltTemplate\001
4 0 0 50 0 0 18 0.0000 4 255 1800 1650 2325 xsltCompMatch\001
4 0 0 50 0 0 18 0.0000 4 255 2250 900 375 Template hash table\001
4 0 0 50 0 0 18 0.0000 4 255 1455 5700 525 xslStylesheet\001
4 0 0 50 0 0 18 0.0000 4 255 2805 4650 7950 Stylesheet document tree\001
4 0 0 50 0 0 18 0.0000 4 195 1185 5550 1575 rootMatch\001
4 0 0 50 0 0 18 0.0000 4 255 1095 5550 1875 keyMatch\001
4 0 0 50 0 0 18 0.0000 4 195 1260 5550 2175 elemMatch\001
4 0 0 50 0 0 18 0.0000 4 195 1125 5550 2490 attrMatch\001
4 0 0 50 0 0 18 0.0000 4 30 180 5550 2805 ...\001
4 0 0 50 0 0 18 0.0000 4 255 1080 5625 3525 templates\001

BIN
doc/templates.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB