Re: If attribute default present, 'use' must be optional

>
> I think a mandatory attribute with a default is telling an XML creator 
> that if they don't have a specific value for this field then they 
> should set it to the default value.
Except that the XSD spec doesn't have any way of saying that that's what 
it's saying, because it doesn't define semantics for this use case; the 
only semantics defined for the schema is its effect on validation / PSVI 
creation. That means that if XSD allowed this, it would have to say 
"this is allowed but has no recognized meaning".

Now there are in fact plenty of cases where XSD does allow things that 
have no recognized meaning, and there are two schools of thought about 
whether this is good or bad. The debate is generally conducted under the 
name "paternalism": a paternalistic design stops you doing something 
which is apparently pointless but not actively harmful (like creating a 
choice with no members). Another example occurs with facet-based 
restriction, where we prevent you from defining a minInclusive that is 
less than the minInclusive of your base type.

It's hard to get this right consistently. In many cases I think the 
right approach when users do something pointless is a warning (which is 
of course outside the scope of the spec). But should we, for example, 
allow you to specify minInclusive for an xs:QName, given that it will 
have no effect? I think not. And specifying a default for a mandatory 
attribute seems to me to fall into the same category.

Michael Kay
Saxonica

Received on Friday, 23 March 2012 12:09:16 UTC