<p><em>Parts of this white paper have been presented to the 2nd
conference on <ahref="http://www.extrememarkup.com">Extreme markup languages</a>, Montréal (CA) ,
pp61-72, 2001</em></p>
<p>
<em>Parts of this white paper have been presented to the 2nd conference on <ahref="http://www.extrememarkup.com">Extreme markup languages</a>, Montréal (CA), pp61-72, 2001</em>
</p>
<i><b>Abstract: </b>
<i>
<b>Abstract:</b>
<p>
The XSLT language is both complex in simple cases (such as attribute renaming or element hiding) and restricted in complex cases (complex information flows require processing multiple stylesheets). We propose a framework which improves on XSLT by providing simple-to-use and easy-to-analyse macros for common basic transformation tasks. It also provides a superstructure for composing multiple stylesheets, with multiple input and output documents, in ways not accessible within XSLT. Having the whole transformation description in an integrated format allows better control and analysis of the complete transformation.
</p>
</i></p><p><i><b>Keywords: </b>XML,
</i></p><p><i><b>Keywords: </b>XML,
XSLT,
Transmorpher,
Transformations,
</i></p>
<H2>1 :
Introduction and motivation</H2>
<H2>1 : Introduction and motivation</H2>
<p>In electronic documentation, the notion of a transformation
is widespread. It is a process that transforms a source document into
...
...
@@ -49,8 +37,7 @@ with the advent of the XML language.</p>
in the expression of transformations. This need is first motivated before telling why, in our
opinion, XSLT falls short of the objectives of simplicity and power. The requirements for such a system are then presented.
</p>
<H3>1.1 :
Motivating example</H3>
<H3>1.1 : Motivating example</H3>
<p>Consider someone wanting to generate part of a web site concerning
bibliographic data. The source of information is a set of XML formatted bibliography
...
...
@@ -75,12 +62,7 @@ elements, of elements marked as private and of mark attributes.
transformation flow does not indicate if it must be processed in a demand-driven
(pull) or data-driven (push) manner.</p>
<H3>1.2 :
Limitations of XSLT</H3>
<H3>1.2 : Limitations of XSLT</H3>
<p>XSLT [<ahref="#clark1999a">clark1999a</a>] is a very powerful
technology for transforming XML
...
...
@@ -144,9 +126,7 @@ design a system that relies on XSLT and attempts to remain compatible with
it but embeds it in a superstructure. This system, called Transmorpher, is
the subject of this paper.</p>
<H3>1.3 :
Requirements</H3>
<H3>1.3 : Requirements</H3>
<p>Transmorpher is an environment for processing generic
transformations on XML documents. It aims at complementing XSLT in order to:
...
...
@@ -170,8 +150,7 @@ of XSLT is detailed. We end with a quick description of the current implementati
a comparison with other work.
</p>
<H2>2 :
Computing model</H2>
<H2>2 : Computing model</H2>
<p>Transformation flows are made of sets of transformations connected
...
...
@@ -199,8 +178,7 @@ a comparison with other work.
describing it in XML.</p>
<H3>2.1 :
Processes</H3>
<H3>2.1 : Processes</H3>
<p>
The transformation flows are described
...
...
@@ -297,8 +275,7 @@ by the figure above.
</p>
<H3>2.2 :
Channels</H3>
<H3>2.2 : Channels</H3>
<p>In Transmorpher the generic processes can have several input and several
output port. These ports are connected to channels that are fed in by the output of a
...
...
@@ -333,8 +310,7 @@ encoded in UTF-8. They thus can only carry XML data (which can be text). Very
few verifications are done so far on the channels, but it is possible to declare their
DTD and statically check that the declarations coincide.</p>
<H2>3 :
Built-in abstract transformations</H2>
<H2>3 : Built-in abstract transformations</H2>
<p>Transmorpher offers a set of abstract transformations which correspond to
a Java interface specifying the number of input and output channels, the other
...
...
@@ -344,8 +320,7 @@ attributes plus an expected behavior. These abstract transformations can be used
<p>We present below the set of these abstract transformations and the
implementations currently provided by Transmorpher.</p>
<H3>3.1 :
Generator and serializers</H3>
<H3>3.1 : Generator and serializers</H3>
<p>When a transformation flow takes input from a source which is not a
stream (file, network, database...) or must output some information directly
...
...
@@ -381,16 +356,14 @@ or the Internet. It can also generate XML from a database.</p>
<H3>3.2 :
Dispatchers and mergers</H3>
<H3>3.2 : Dispatchers and mergers</H3>
<p>It is handy to be able to send the same input to several processes. It
is also useful to be able to gather several process outputs to one output channel.
In order to do so in a simple manner, Transmorpher provides the basic dispatcher and
merger processes.</p>
<H4>3.2.1 :
Dispatcher</H4>
<H4>3.2.1 : Dispatcher</H4>
<p>The dispatcher is an element that has one input and many outputs.</p>
<p>Transmorpher provides a basic implementation of a
...
...
@@ -413,8 +386,7 @@ paper in order to transform the TIFF pictures into JPEG.
that can write any XSLT stylesheet. It is a more concise language
than XSLT but still a complex one.</p>
<H2>7 :
Conclusion</H2>
<H2>7 : Conclusion</H2>
<p>We have presented the Transmorpher system and principles which aim at
complementing XSLT on the issue of simple transformations and complex control
...
...
@@ -945,12 +896,12 @@ Transmorpher.</p>
</p>
<h2>Bibliography</h2><dd><dt><aname="armstrong2001a">[Armstrong 2001a]</a></dt><dd><pub>Eric Armstrong, Working with XML: the Java API for XML Parsing (JAXP) Tutorial, 2001 http://java.sun.com/xml/jaxp-docs-1.0.1/docs/tutorial/</pub></dd><dt><aname="becker2000a">[Becker 2000a]</a></dt><dd><pub>Oliver Becker, XSLT, 2000, http://www.informatik.hu-berlin.de/~obecker/XSLT/</pub></dd><dt><aname="boag2000a">[Boag 2000a]</a></dt><dd><pub>Scott Boag, TRaX and Serialize APIs, 2000, http://trax.openxml.org</pub></dd><dt><aname="borovansky2001a">[Borovansky 2001a]</a></dt><dd><pub>Peter Borovansky, Claude Kirchner, Hélène Kirchner and Christophe Ringeissen,
<h2>Bibliography</h2><dd><dt><aname="armstrong2001a">[Armstrong2001a]</a></dt><dd><pub>Eric Armstrong, Working with XML: the Java API for XML Parsing (JAXP) Tutorial, 2001 http://java.sun.com/xml/jaxp-docs-1.0.1/docs/tutorial/</pub></dd><dt><aname="becker2000a">[Becker 2000a]</a></dt><dd><pub>Oliver Becker, XSLT, 2000, http://www.informatik.hu-berlin.de/~obecker/XSLT/</pub></dd><dt><aname="boag2000a">[Boag 2000a]</a></dt><dd><pub>Scott Boag, TRaX and Serialize APIs, 2000, http://trax.openxml.org</pub></dd><dt><aname="borovansky2001a">[Borovansky 2001a]</a></dt><dd><pub>Peter Borovansky, Claude Kirchner, Hélène Kirchner and Christophe Ringeissen,
Rewriting with strategies in ELAN: a functional semantics, <i>International journal of
foundations of computer science</i> 12(1):69-96, 2001.</pub></dd><dt><aname="clark1999a">[Clark 1999a]</a></dt><dd><pub>James Clark (ed.), XSL transformations (XSLT) version 1.0, W3C Recommendation, 1999 http://www.w3.org/TR/xslt</pub></dd><dt><aname="clark1999b">[Clark 1999b]</a></dt><dd><pub>James Clark, Steve DeRose (ed.), XML Path Language (XPath) version 1.0, W3C Recommendation, 2001 http://www.w3.org/TR/xpath.html</pub></dd><dt><aname="clark2001a">[Clark 2001a]</a></dt><dd><pub>James Clark (ed.), XSL transformations (XSLT) version 1.1, W3C working draft, 2001 http://www.w3.org/TR/xslt11/</pub></dd><dt><aname="drewes2000a">[Drewes 2000a]</a></dt><dd><pub>Frank Drewes and Peter Knirsch and Hans-Jörg Kreowski and
foundations of computer science</i> 12(1):69-96, 2001.</pub></dd><dt><aname="clark1999a">[Clark1999a]</a></dt><dd><pub>James Clark (ed.), XSL transformations (XSLT) version 1.0, W3C Recommendation, 1999 http://www.w3.org/TR/xslt</pub></dd><dt><aname="clark1999b">[Clark 1999b]</a></dt><dd><pub>James Clark, Steve DeRose (ed.), XML Path Language (XPath) version 1.0, W3C Recommendation, 2001 http://www.w3.org/TR/xpath.html</pub></dd><dt><aname="clark2001a">[Clark 2001a]</a></dt><dd><pub>James Clark (ed.), XSL transformations (XSLT) version 1.1, W3C working draft, 2001 http://www.w3.org/TR/xslt11/</pub></dd><dt><aname="drewes2000a">[Drewes 2000a]</a></dt><dd><pub>Frank Drewes and Peter Knirsch and Hans-Jörg Kreowski and
Sabine Kuske, Graph transformation modules and their composition, Proceedings of international workshop ACTIVE 99
(<i>Lecture notes in computer science</i> 1779), pp182-191, 2000</pub></dd><dt><aname="jorgensen2001a">[Jørgensen 2001a]</a></dt><dd><pub>Morten Jørgensen, The XSLT compiler for the JVM, Proc. 1st
XSLT-UK conference, Oxford (UK), 2001</pub></dd><dt><aname="kay2000a">[Kay 2000a]</a></dt><dd><pub>Michael Kay, XSLT Programmer's reference, Wrox press, Birmimgham (UK), 2000</pub></dd><dt><aname="mclaughlin2000a">[McLaughlin 2000a]</a></dt><dd><pub>Brett McLaughlin, Web Publishing Frameworks, in: Brett McLaughlin, Java and XML, O'Reilly and associates, Sebastopol (CA US), 2000, http://www.oreilly.com/catalog/javaxml/chapter/ch09.html</pub></dd><dt><aname="sergeant2000a">[Sergeant 2000a]</a></dt><dd><pub>Matt Sergeant, How AxKit works, O'Reilly and associates, 2000 http://www.xml.com/pub/2000/05/24/axkit/index.html</pub></dd><dt><aname="sergeant2000b">[Sergeant 2000b]</a></dt><dd><pub>Matt Sergeant, AxKit: XML web publishing with Apache and mod_perl, O'Reilly and associates, 2000 http://www.xml.com/pub/2000/05/24/axkit/index2.html</pub></dd><dt><aname="staldal2000a">[Ståldal 2000a]</a></dt><dd><pub>Mikael Ståldal, Presenting XML documents on different media
with stylesheets, Matser's thesis, KTH, Stockholm (SE), 2000</pub></dd><dt><aname="tchistopolskii2000b">[Tchistopolskii 2000b]</a></dt><dd><pub>Paul Tchistopoloskii, XSLScripts, 2000 http://www.pault.com/xsls</pub></dd><dt><aname="visser2000a">[Visser 2000a]</a></dt><dd><pub>Eelco Visser, Strategic Pattern Matching, Proceedings of Rewriting Techniques and Applications, pp30-44, Trento (IT),(<i>Lecture notes in computer science</i> 1631), 1999</pub></dd><dt><aname="wall2000a">[Wall 2000a]</a></dt><dd><pub>Larry Wall, Tom Christiansen, Jon Orwant, Programming Perl, 3rd Edition, O'Reilly and associates, Sebastopol (CA US), 2000</pub></dd></dd>
(<i>Lecture notes in computer science</i> 1779), pp182-191, 2000</pub></dd><dt><aname="jorgensen2001a">[Jørgensen 2001a]</a></dt><dd><pub>Morten Jørgensen, The XSLT compiler for the JVM, Proc. 1st
XSLT-UK conference, Oxford (UK), 2001</pub></dd><dt><aname="kay2000a">[Kay2000a]</a></dt><dd><pub>Michael Kay, XSLT Programmer's reference, Wrox press, Birmimgham (UK), 2000</pub></dd><dt><aname="mclaughlin2000a">[McLaughlin 2000a]</a></dt><dd><pub>Brett McLaughlin, Web Publishing Frameworks, in: Brett McLaughlin, Java and XML, O'Reilly and associates, Sebastopol (CA US), 2000, http://www.oreilly.com/catalog/javaxml/chapter/ch09.html</pub></dd><dt><aname="sergeant2000a">[Sergeant 2000a]</a></dt><dd><pub>Matt Sergeant, How AxKit works, O'Reilly and associates, 2000 http://www.xml.com/pub/2000/05/24/axkit/index.html</pub></dd><dt><aname="sergeant2000b">[Sergeant 2000b]</a></dt><dd><pub>Matt Sergeant, AxKit: XML web publishing with Apache and mod_perl, O'Reilly and associates, 2000 http://www.xml.com/pub/2000/05/24/axkit/index2.html</pub></dd><dt><aname="staldal2000a">[Ståldal 2000a]</a></dt><dd><pub>Mikael Ståldal, Presenting XML documents on different media
with stylesheets, Matser's thesis, KTH, Stockholm (SE), 2000</pub></dd><dt><aname="tchistopolskii2000b">[Tchistopolskii2000b]</a></dt><dd><pub>Paul Tchistopoloskii, XSLScripts, 2000 http://www.pault.com/xsls</pub></dd><dt><aname="visser2000a">[Visser 2000a]</a></dt><dd><pub>Eelco Visser, Strategic Pattern Matching, Proceedings of Rewriting Techniques and Applications, pp30-44, Trento (IT),(<i>Lecture notes in computer science</i> 1631), 1999</pub></dd><dt><aname="wall2000a">[Wall 2000a]</a></dt><dd><pub>Larry Wall, Tom Christiansen, Jon Orwant, Programming Perl, 3rd Edition, O'Reilly and associates, Sebastopol (CA US), 2000</pub></dd></dd>