xsl-list
[Top] [All Lists]

RE: [xsl] MatTS, an alternate syntax for XSLT

2006-04-01 07:57:55
I find it mildly disappointing that you are still using long-winded names
like "trackNbr" in your XML source documents, and that XPath function names
still have long-winded names like, well, "name". Surely it's time we
established a convention that all elements in user documents should be
denoted by a single Kanji, and that function names should be written in
Hebrew?

Michael Kay
http://www.saxonica.com/ 

-----Original Message-----
From: Sean M. Burke [mailto:sburke(_at_)cpan(_dot_)org] 
Sent: 01 April 2006 13:26
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] MatTS, an alternate syntax for XSLT

[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_dik
f.pdf], I 
have chosen well-known Greek letters and various printers' 
symbols for 
the operators.

The following table illustrates and specifies this formalism:

     a apply-imports
     ß apply-templates
     t attribute
     ? attribute-set
     ? call-template
     ? choose
     ? comment
     µ copy
     ? copy-of
     ? decimal-format
     p element
     ? fallback
     ? for-each
     f if
     O import
     G include
     T key
     µ message
     ? namespace-alias
     ? number
     ? otherwise
     ? output
     ? param
     ? preserve-space
     e sort
     ? strip-space
     S stylesheet
     ? template
     ? text
     ? transform
     ? value-of
     d variable
     s when
     ? with-param
     ? processing-instruction

     ¿... test="..."
     v... name="..."
     ?... match="..."
     §... select="..."
     «...» (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/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--