- From: <noah_mendelsohn@us.ibm.com>
- Date: Fri, 5 Feb 2010 14:42:45 -0500
- To: "C. M. Sperberg-McQueen" <cmsmcq@blackmesatech.com>
- Cc: Maik Stührenberg <maik.stuehrenberg@uni-bielefeld.de>, www-xml-schema-comments@w3.org
Terrific, thank you. I wasn't particularly worried because I knew we had intended to enforce the restriction, and it seemed the sort of thing that would only have been changed for good reason. FWIW, I believe I was looking in the section on xs:alternative, and I infer from your note that in fact it's with xs:element. Thank you for the clarification. Noah -------------------------------------- Noah Mendelsohn IBM Corporation One Rogers Street Cambridge, MA 02142 1-617-693-4036 -------------------------------------- "C. M. Sperberg-McQueen" <cmsmcq@blackmesatech.com> 02/05/2010 01:17 PM To: noah_mendelsohn@us.ibm.com cc: "C. M. Sperberg-McQueen" <cmsmcq@blackmesatech.com>, Maik Stührenberg <maik.stuehrenberg@uni-bielefeld.de>, www-xml-schema-comments@w3.org Subject: Re: XSD 1.1: xs:alternative only allowed as child of xs:element? On 4 Feb 2010, at 15:16 , noah_mendelsohn@us.ibm.com wrote: > ... I was fairly sure that > when we designed the xs:alternative mechanism it was required that > each of > the alternative types for an element be derived from the explicitly > declared type; I don't see that constraint enforced in the spec. The schema component constraint Element Declaration Properties Correct in section 3.3.6.1 of the spec enforces the rule you are thinking of in its final clause: 7 If E.{type table} exists, then for each {type definition} T in E.{type table}.{alternatives}, and also for E.{type table}.{default type definition}.{type definition}, one of the following is true 7.1 T is ·validly substitutable· for E.{type definition}, subject to the blocking keywords of E.{disallowed substitutions}. 7.2 T is the type ·xs:error·. I hope this helps reassure you. If one looks for this rule only in the section describing type tables (which does not seem an unreasonable place to look), one won't find it; it can't usefully be enforced on type tables in isolation, because it depends crucially on E.{type definition}, which is not part of the type table. That's a consequence of the way the WG chose to integrate conditional type assignment with the existing design; a design less obsessively fixated on compatibility with every quirk and flaw of the 1.0 component layer would have been able to arrange things less confusingly. Michael -- **************************************************************** * C. M. Sperberg-McQueen, Black Mesa Technologies LLC * http://www.blackmesatech.com * http://cmsmcq.com/mib * http://balisage.net ****************************************************************
Received on Friday, 5 February 2010 19:43:18 UTC