Subject: RE: 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: 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/
|