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

Subject: RE: [xsl] MatTS, an alternate syntax for XSLT
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 1 Apr 2006 15:57:25 +0100
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@xxxxxxxx]
> Sent: 01 April 2006 13:26
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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
>      5 copy
>      ? copy-of
>      ? decimal-format
>      p element
>      ? fallback
>      ? for-each
>      f if
>      O import
>      G include
>      T key
>      5 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/

Current Thread