- From: Michael Kay <mike@saxonica.com>
- Date: Tue, 22 May 2012 11:28:20 +0100
- To: "Henry S. Thompson" <ht@inf.ed.ac.uk>
- CC: "w3c-xsl-query@w3.org" <w3c-xsl-query@w3.org>, "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
On 22/05/2012 11:06, Henry S. Thompson wrote: > Michael Kay writes: > >> I have been implementing a Saxon extension that exposes the Schema >> Component Model to XSLT and XQuery applications > Using functions is cool, but did you consider sticking with XPath? It does stick with XPath, only it's XPath 3.0... I think that attempts to model this information using elements and attributes suffer two main problems: (a) the node identity problem. It's hard to get away from the fact that elements have identity, and if elements have identity and model schema components then there is a strong expectation that node identity reflects component identity, which (a) doesn't reflect the semantics of the model (which explicitly leaves identity undefined), and (b) makes a lazy implementation difficult. (b) the network modelling problem: the schema component model is a network, while XML is best at modelling trees. Any attempt to model a graph in XML leads to (a) to arbitrary decisions about which relationships to model as XML parent/child relationships, and (b) very clumsy navigation when you have to follow the non-hierarchic links. Using a functional model of the information neatly bypasses both these issues. Functions in the XPath 3.0 model have no identity, so there is no way of asking, for example whether two facets with the same properties are "the same facet". All navigation is done using function calls so there is no asymmetry between relationships "within the hierarchy" and relationships "across the hierarchy". Michael Kay Saxonica > > See an old Extreme paper for some work we did in Edinburgh along those > lines a long time back now: > > Uniform access to infosets via reflection > Extreme Markup Languages 2003 > http://www.ltg.ed.ac.uk/~ht/Extreme_2003.html > > ht
Received on Tuesday, 22 May 2012 10:29:10 UTC