Re: Rationale for restricted uses of "all"

Ignoring the question of extension, but focussing on the other 
restrictions, here's the history. 

The workgroup was originally reluctant to do "All" at all (pun intended). 
Reasons:  history of complexity in the SGML & connector, and a concern 
that most existing parsers use DFA's, for which there is a combinatorial 
explosion when modelling All.  So All(A,B,C) becomes

(A , B, C) | (A, C, B) | (B, A, C), etc.

On the other hand, some of us felt that there are important use cases in 
which a simple order independent model is useful, particularly in the data 
world.  "I need these 3 fields, I don't care how you give them to me". By 
restricting All to the top level of a content model, we allow a useful 
level of function, that can be implemented using techniques with size/time 
overhead that is not unduly burdensome (bitmaps, hashtables, etc.) 

Later, we made a decision to allow minOccurs="0", which by the way gives 
All groups of elements about the same expressive power that one has always 
had for attributes:  they can occur at most once, in any order, and any or 
all can be required.  Having an ability to express for elements at least 
what you can do for attributes seems like a good goal to me. 

Anyway, for better or worse, that's my recollection of how it came to be 
this way.  There are lots of types of extension that one might want in 
some future version of schema.  Allowing additions to All groups is one, 
but there are others.  Just to avoid complicating an already overly large 
specification, we decided to tackle extension initially only for 
sequences, which models certain forms of OO single inheritance moderately 
well.  Since All groups aren't sequences, and since we wanted to allow 
implementations in which the All group handling was separate from other 
content model handling, extensions of All groups aren't allowed for now.

------------------------------------------------------------------------
Noah Mendelsohn                                    Voice: 1-617-693-4036
Lotus Development Corp.                            Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------------

Received on Friday, 9 November 2001 13:23:36 UTC