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.