Re: [xsl] The philosophical implications of an XSLT processor implemented in XSLT

Subject: Re: [xsl] The philosophical implications of an XSLT processor implemented in XSLT
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 21 May 2020 16:59:50 -0000
Actually, I have done an XSD validator in XSLT - I got it to a fairly advanced
stage but never released it. It's described here:

 https://www.saxonica.com/papers/markupuk-2018mhk.pdf

XSLT 3.0 gives us most of the data structures needed for this kind of
application, but it still has one significant problem which I've tried hard to
find ways around, with limited success: making a small change to a large tree
is expensive. The techniques used in other functional languages to get around
this -- specifically, data structures such as immutable hash tries -- are
difficult to apply to XML for two main reasons: (a) the tree model has parent
pointers (so children copied to a new parent need to be physically copied),
and (b) nodes have identity -- a copy of a node can be distinguished from the
original. I think that to get this kind of application up to the speed of
equivalents in other languages, we need an XML data model without these
expensive properties. And probably without namespaces as well, because
namespaces make everything three times as expensive.

Michael Kay
Saxonica

> On 21 May 2020, at 17:19, Roger L Costello costello@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi Folks,
>
> Michael Kay reports that, within a few weeks, Saxonica will be releasing an
XSLT processor implemented in XSLT.
>
> That will be a key event.
>
> Here is one philosophical implication of that event.
>
> Philosophical Implication #1
>
> Up to this period in time, it has been believed that "system" applications
-- such as XSLT processors -- which process XML documents must be written in a
non-XML language such as Java, C#, C++, C, or some other imperative language.
It was believed that XML languages such as XSLT were not sufficient in speed
and/or language facilities to handle the complex processing that is required
of a compiler or other system-level application. Those were false beliefs.
Saxonica has created a proof by counterexample that they are false beliefs.
>
> That changes the world.
>
> So ... it's time to do this:
>
> - implement an XML Schema validator using XSLT
> - implement an RDF ontology tool using XSLT
> - implement a DFDL processor using XSLT
> - and many others.
>
> What are the other philosophical implications of an XSLT processor
implemented in XSLT?
>
> /Roger

Current Thread