Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


[xsl] MatTS, an alternate syntax for XSLT

From: "Sean M. Burke" <sburke@-------->
To:
Date: 4/1/2006 12:26:00 PM
[NB: at http://use.perl.org/~TorgoX/journal/29175 I have pasted a copy 
of this message, in case the Unicode characters don't show up right in 
your email client.]



For some time now, the syntax of XSLT has bothered me -- its verbosity, 
that gushing typographic clutter, clearly encumbers best-practices 
programming.



XLove [http://www.cs.rit.edu/~dpl1926/] suggests an alternate syntax 
that emphasizes the functional nature of XSLT; and SXML 
[http://okmij.org/ftp/Scheme/SXML.scm] posits a representation of 
general XML data as Lisp forms. But both of these, aside from reducing 
close-tags to a single character, do very little to solve XSLT's clutter 
problem.



I think it's time for a better alternate syntax for viewing and writing 
XSLT. In this document I will propose such a system, which I call MatTS 
(Matryoshka Transformation Syntax).



XLove and SXML start out with an implementation of alternate syntax as 
an input which becomes conventional XSLT.  But so as to better tune the 
alternate syntax as a visual artifact, I instead choose to implement the 
alternate syntax as a view of XSLT, which XSLT becomes.  (As such, I 
have left the development of an editing environment as a mere 
implementational detail which I am sure the marketplace will provide for 
in due time, as it has done for UML, that other recent breakthrough in 
informatic display.)



Most hierarchy-based notations display their structure with bits of 
matching punctuation, whether parens, brackets, or braces.  However, I 
view this as a holdover from the days of daisywheel printers and other 
forms of mere movable type. With our modern bitmap displays and LASER 
printers, it is far easier and clearer to display structure as series of 
matryoshka-like [http://en.wikipedia.org/wiki/Matryoshka_doll] nested 
shapes -- say, boxes.  Clearly, (foo ((bar) baz)) is inferior to the 
clarity of this diagram:



    +---------------+
    |foo +---------+|
    |    |+---+    ||
    |    ||bar|    ||
    |    |+---+    ||
    |    |baz      ||
    |    +---------+|
    +---------------+

[presented as ASCII art for ease of transmission]



This sort of matryoshka notation is the basis of my new variant syntax 
for XSLT, and it in fact gives the syntax its name. But in and of 
itself, this notation would go no further than Xlt and SXML at relieving 
XSLT's clutter problem.  The greatest benefit of MatTS is in providing a 
terse syntax for all important XSLT constructs.  In the best tradition 
of modern higher mathematical notation and typography

[http://math.berkeley.edu/~ilya/papers/PL_Grassmannian/gel_dikf.pdf], I 
have chosen well-known Greek letters and various printers' symbols for 
the operators.



The following table illustrates and specifies this formalism:



    N1 apply-imports
    N2 apply-templates
    O attribute
    N attribute-set
    N; call-template
    N> choose
    O comment
    N< copy
    N3 copy-of
    N decimal-format
    O element
    N8 fallback
    N6 for-each
    O if
    N) import
    N include
    N key
    N< message
    N namespace-alias
    N= number
    O otherwise
    N output
    N' param
    N preserve-space
    N5 sort
    N? strip-space
    N# stylesheet
    N template
    N9 text
    N$ transform
    N: value-of
    N4 variable
    O when
    O with-param
    N  processing-instruction

    B?... test="..."
    b... name="..."
    b	... match="..."
    B'... select="..."
    B+...B; (general attribute value)

The preceding explanation aside, the best way to appreciate MatTS is by 
simply trying it out -- MatTS as a visualization application is itself 
implemented in browser-accessible XSLT, and so can be used to view other 
XSLTs as well as itself:

 http://interglacial.com/~sburke/pub/xsl/matts_usage_example.xsl

 http://interglacial.com/~sburke/pub/xsl/matts.xsl

Compare with the clutter of those XSLs when viewed in conventional XSLT 
notation:

 http://interglacial.com/~sburke/pub/xsl/matts_usage_example.xsl.txt

 http://interglacial.com/~sburke/pub/xsl/matts.xsl.txt




--
Sean M. Burke   http://search.cpan.org/~sburke/


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent