Did we meet our requirements?

We looked today at how the current state of the spec compares with the requirements document last published in 2010

http://www.w3.org/TR/xslt-21-requirements/ <http://www.w3.org/TR/xslt-21-requirements/>


(A) There are some areas where we didn’t implement the features anticipated in the requirements document, listed below:

2.9 Allowing xsl:variable before xsl:param

When we looked into this we found that there were few practical cases where this would be useful; since the computation of the variable would not have any access to the parameters of the function or template, it would in most cases be just as easy to do the computation in a global variable, or in a sequence constructor child of the xsl:param element.

2.10 Combining group-starting-with and group-ending-with

We decided, particularly in the light of the use cases developed for the new windowing capability in XQuery 3.0, that this proposed feature would deliver only very modest benefits and that if we wanted to tackle the full range of issues with implicit positional grouping, a more powerful solution would be needed, and this was out of scope for XSLT 3.0.

2.11 Improving the schema for stylesheets

The schema for stylesheets has been extensively reviewed and revised. The proposed changes to the definition of QNames were overtaken by events, with the introduction of EQNames in XPath 3.0.

2.13 Invoking XQuery from XSLT

We decided that the best way of meeting this requirement was the load-xquery-modules() function defined in XPath 3.1.

2.14 Enhancements to sorting and grouping

We introduced support for composite grouping keys, but in a less disruptive way than suggested in the original proposal.

Allowing variables to be defined before sort and group key definitions proved problematic, because there would be ambiguity as to whether the focus for evaluation of the variable was the sequence before sorting or the sequence after sorting.

2.15 Enhancements to conditional modes

We decided to retain static binding to modes, especially in the light of new packaging features. The introduction of higher order functions in XPath 3.0 meets most of the requirements for dynamic despatch mechanisms.

(B) There are many features in the spec that were not directly anticipated in the requirements document.

* Many of these (xsl:fork, xsl:iterate, xsl:merge, xsl:where-populated, etc) arose from careful study of use cases for streaming.

* Maps were introduced originally as a solution to certain streaming use cases. They were then found to have many other uses, notably to provide an improved solution for reading and writing JSON data; in turn this created a need for arrays.

Michael Kay
Saxonica

Received on Thursday, 29 October 2015 21:26:54 UTC