[
Lists Home |
Date Index |
Thread Index
]
Hi Ron,
>> You're right with your first reading. Types can't have default
>> values; only elements and attributes can have default or fixed
>> values. The "Schema Information Set Constribution: Element Default
>> Value" is talking about the {value constraint} property on the
>> element declaration schema component.
>
> Just to be crystal clear: elements with complex types can't have
> default values. Correct?
No, that's not correct. Elements with complex types can have default
values, in either of the following situations:
- the complex type of the element has simple content (in which case
the default value must be valid against the type of that simple
content)
- the complex type of the element is mixed, and it's possible for
the element to be valid without containing any elements
As an example of the second, the following element declaration is
fine, because the bar element is optional:
<xs:element name="foo" default="default">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="bar" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
and <foo /> would be the same as <foo>default</foo>.
Whereas the following is invalid:
<xs:element name="foo" default="default">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="bar" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
because even if foo was given the default value, it wouldn't be valid.
See http://www.w3.org/TR/xmlschema-1/#cos-valid-default for the
official wording.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
|