On 27 Sep 2005 08:39:30 +0100, Colin Paul Adams
<colin(_at_)colina(_dot_)demon(_dot_)co(_dot_)uk> wrote:
"Eric" == Eric van der Vlist <vdv(_at_)dyomedea(_dot_)com> writes:
Eric> Hi Colin, Le dimanche 25 septembre 2005 à 15:26 +0100,
Eric> Colin Paul Adams a écrit :
>> 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/EML2003Novatchev01.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.
--~------------------------------------------------------------------
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>
--~--