- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Mon, 10 Dec 2001 12:02:00 +0000
- To: Maikel Jansen <maikel.jansen@asml.com>
- CC: xmlschema-dev@w3.org
Hi Maikel, > I have a question about overriding fixed values. > > Consider the following complex type definition: > > <xs:complexType name="type0"> > <xs:simpleContent> > <xs:extension base="int"/> > </xs:simpleContent> > <xs:attribute name="description" fixed="a description"/> > </xs:complexType> That isn't a legal complex type definition. The xs:attribute should be within the xs:extension element, giving: <xs:complexType name="type0"> <xs:simpleContent> <xs:extension base="int"> <xs:attribute name="description" fixed="a description" /> </xs:extension> </xs:simpleContent> </xs:complexType> > Now, I want to express a type called type1 in an XML schema, such > that type1 is an inheritance type of type0 and type1 overrides the > (fixed) value of the attribute 'desc' of type0. You cannot derive this type by restriction, as you cannot change the fixed value constraint of the attribute if you derive by restriction. I *think* that you can derive it by extension (I don't see anything banning it in the Rec), as follows: <xs:complexType name="type1"> <xs:simpleContent> <xs:extension base="type0"> <xs:attribute name="description" fixed="another description" /> </xs:extension> </xs:simpleContent> </xs:complexType> But I think that you would get a cleaner hierarchy if you had a general type with the (unfixed) description attribute: <xs:complexType name="type"> <xs:simpleContent> <xs:extension base="int"> <xs:attribute name="description" /> </xs:extension> </xs:simpleContent> </xs:complexType> And then derive the type0 and type1 from that type by restriction: <xs:complexType name="type0"> <xs:simpleContent> <xs:restriction base="type"> <xs:attribute name="description" fixed="a description" /> </xs:restriction> </xs:simpleContent> </xs:complexType> <xs:complexType name="type1"> <xs:simpleContent> <xs:restriction base="type"> <xs:attribute name="description" fixed="another description" /> </xs:restriction> </xs:simpleContent> </xs:complexType> > However, this seems not to be correct because the following XML > document that contains an element ('x') of type1 is not a correct > instance: > > <x> > 3 > </x> <-- unexpected character literal It's hard to tell, but it looks as though that might be a well-formedness error in the XML document. Check that it's well-formed first, and then try validating against the schema. Also, make sure that the schema is valid itself before you try validating the instance. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Received on Monday, 10 December 2001 07:02:02 UTC