OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Streaming Transformations for XML

[ Lists Home | Date Index | Thread Index ]

I'm playing with an idea of a streaming transformation language. I don't 
mean things like forward-only streamable subsets of XSLT or building 
subtrees on request only, but an alternative language designed for 
streaming transformations. From a bit different point of view, it would 
be a language to define SAX filters.

Such a hypothetic languge (let me call it STX) could use an XML, 
XSLT-like syntax with templates. However, the meaning of templates would 
be quite different from this of XSLT. Matching expressions could 
consists of SAX-related axes and simple, XPath-like identifier, for example.

STX transformations will be, of course, much less powerful than XSLT; it 
will be as powerful as a SAX filter can be. On the other hand, the new 
language could provide an memory inexpensive way to handle simplier 

Instead of a BNF definition, I append an example processed by 
non-existing STX processor. It should provide you with some very basic 
feeling about a possible syntax and semantics of the language.

I wonder whether the benefits of having simple streaming transformations 
worth to learn a new language (and to implement a processor). Also, I 
haven't been able to find a similar solution or idea on the Net, but I 
expect there must a similar effort in the huge XML community. So, any 
pointers are welcome to prevent me from reinventing the wheel.



* Example

** Transformation:

<stx:transform xmlns:stx="some_namespace_here">

  <stx:variable name="date" select="'Monday'"/>

  <stx:template match="element-start::list">
    <stx:copy-of attributes="all">
      <stx:attribute name="date" select="$date"/>

  <stx:template match="element-end::list">

  <stx:template match="element-start::item">
    <id><stx:value-of select="@id"/></id>
    <stx:if test="@id=2">
      <note>the item we have been looking for</note>

  <stx:template match="element-end::item">
    <date><stx:value-of select="$date"/></date>

  <stx:template match="character::*">


** Input data:

<list id="19">
  <item id="1">A</item>
  <item id="2">B</item>
  <item id="3">C</item>

** Output:

<list id="19" date="Monday">
    <note>the item we have been looking for</note>	

Petr Cimprich
Ginger Alliance


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS