[Bug 11335] Inappropriate use of MAY in 2.4.1.1

http://www.w3.org/Bugs/Public/show_bug.cgi?id=11335

--- Comment #7 from C. M. Sperberg-McQueen <cmsmcq@blackmesatech.com> 2010-11-26 19:18:36 UTC ---
Mukul Gandhi's remarks have been helpful to me in drawing my attention to a
flaw in the current formulation of section 2.4.4:  the distinction between
built-in and user-defined datatypes assumes that all datatypes are either
defined in this spec or defined by the authors of individual schemas, and that
the first is what we mean by 'built-in' datatypes.

Even in 1.0, a schema processor is allowed to have automatic knowledge of types
other than those defined in the spec; users of such processors may well feel
that they are obviously built-in, in any ordinary-language use of the term, but
in the XSD spec 'built-in' is a technical term and it does not always have its
ordinary-language meaning.

In 1.1, however, implementations are allowed to provide additional primitive
types, and ipso facto they are allowed, if they wish, to pass this freedom on
to their users.  If a schema processor wishes to define a mechanism for
defining new primitive types and allow its users to deploy that mechanism, then
it would not be unreasonable to regard those new primitives as user-defined
types.  But as primitive types, they will typically need to have anyAtomicType
as their base type.  Such user-defined primitives are not meant to be included
in the prohibition on user-defined types having anyAtomicType as their base,
but it does suggest the need for some thinking about our categories and the
terms we use for them.

I think that what is meant by the sentence quoted in the description of the
issue is that user-defined ordinary datatypes cannot have anyAtomicType as
their base.  This follows, I think, from the fact that no ordinary datatype can
have anyAtomicType as its base:  they are either restrictions of primitives or
other ordinary datatypes, or they are constructions by list or union, which
have anySimpleType as their base type.

The statement seems to take as a premise that users can only define ordinary
datatypes.  That's true in XSD as a host language for Datatypes, but nothing in
Datatypes requires host languages to use XSD simple type definitions to
describe datatypes, and I don't believe anything in Datatypes forbids host
languages to allow users to define new 'primitive' types which have
anyAtomicType as their base type.

If the sentence in question is just trying to make explicit something that
readers would otherwise have to glean indirectly from the spec, then we should
recast it to be clearer and more correct, perhaps in non-normative words.  If
it's essential that the statement be normative, we need to figure out just how
to phrase it, given that other host languages are allowed to provide new
primitives, and may choose to allow user-specified primitives.

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Friday, 26 November 2010 19:18:38 UTC