Re: [xsl] RELAX NG validator

Subject: Re: [xsl] RELAX NG validator
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Tue, 27 Sep 2005 19:12:26 +1000
On 27 Sep 2005 08:39:30 +0100, Colin Paul Adams
<colin@xxxxxxxxxxxxxxxxxx> wrote:
> >>>>> "Eric" == Eric van der Vlist <vdv@xxxxxxxxxxxx> writes:
>
>    Eric> Hi Colin, Le dimanche 25 septembre 2005 ` 15:26 +0100,
>    Eric> Colin Paul Adams a icrit :
>    >> Has anyone ever tried writing a RELAX NG validator in XSLT?
>
>    Eric> That's certainly something doable and I have often played
>    Eric> with this idea.
>
>    Eric> XSLT 2.0 would help if you wanted to support W3C XML Schema
>    Eric> datatypes which would be tough to support with XSLT 1.0.
>
>
>    Eric> I remember having submitted the idea as a use case for FXSL
>    Eric> to Dimitre Novatchev after his wonderful presentation at
>    Eric> Extreme Markup Languages 2003
>    Eric>
(http://www.idealliance.org/papers/extreme03/html/2003/Novatchev01/EML2003Nov
atchev01.html).
>
> Well, Dimitre, you were asking for ideas as to what next with FXSL for
> XSLT 2.0 - there you go! :-)


Thanks to Alan, Eric and Colin for the idea :o)

While this is certainly doable (in the distant past I had some
experience extending YACC's table-driven LALR(1) shift-reduce parser
to handle ambiguous (nondeterministic) grammars and thus implemented
Tomita's natural language parsing algorithm, there are tasks for FXSL,
which I consider higher priority.

In general, every useful meta-function (one, which both operates on
functions and returns a function) is of much higher priority than a
non-meta function.

Examples of meta-functions:

   curry   (converts a function that has N arguments to a function of
one argument that returns a function of N - 1 arguments)

   flip       (takes a function of two arguments x, y and returns
another functions that takes arguments y, x and returns the same
result)

   lift

        lift(f, g, h) = z  such that  z(x, y) = f(g(x), h(y))
(something quite similar to functional composition, but note the
parallel composition along the different function arguments)


Of course, a function, which takes a list of grammar rules and returns
another function, which is a parser for this grammar -- such parser
generator *is* of very high importance.

People have done this in Haskell -- look for example for Erik Meijer's
PARSEC -- yes, the same Erik Meijer, who was the mind behind XLINQ.

--
Cheers,
Dimitre Novatchev
---------------------------------------
Getting caught is the mother of invention.

Current Thread