- From: Priscilla Walmsley <priscilla@walmsley.com>
- Date: Mon, 3 Jan 2005 10:25:42 -0500
- To: "'Hans Teijgeler'" <hans.teijgeler@quicknet.nl>, "'xml-schema, developers-forum'" <xmlschema-dev@w3.org>
Hello Hans, When you restrict a complex type and change the type of an attribute, that new type must be a restriction (directly or indirectly) of the base type. In your case, any-enumerated_set_of_class is not derived from any-thing. They are both derived from idref_pattern, so they are "siblings" in the derivation chain. Is there any reason you can't make any-enumerated_set_of_class a restriction of any-thing? Hope that helps, Priscilla ----------------------------------------------------- Priscilla Walmsley priscilla@walmsley.com Author, Definitive XML Schema (Prentice Hall PTR) ----------------------------------------------------- > -----Original Message----- > From: xmlschema-dev-request@w3.org > [mailto:xmlschema-dev-request@w3.org] On Behalf Of Hans Teijgeler > Sent: Friday, December 31, 2004 5:01 AM > To: xml-schema, developers-forum > Cc: thompson, henry > Subject: Re: Changing the type of an attribute > > Folks, > > I sent this request for help ten days ago, but unfortunately > got no reaction > whatsoever. > > Can anybody help? > > regards, > Hans > > ============================== > > Hans Teijgeler wrote: > > > Folks, > > > > Below are the snippets of a schema that are relevant to a > problem I stumbled > > across. > > > > I validated this schema against XSV and got the following error: > > > > file:///usr/local/XSV/xsvlog/tmpchD_tWuploaded:2265:5: > Invalid: restricting > > attribute with type > > {http://www.tc184-s > > 4.org/iso15926-7/datamodel/2005-1.xsd}any-enumerated_set_of_class > > > > not derived from declared base's attribute's type > > {http://www.tc184-sc4.org/iso15926-7/datamodel/2005-1.xsd{any-thing} > > > > The code snippets are: > > > > <xs:simpleType name="id_pattern"> > > <xs:restriction base="xs:NMTOKEN"> > > <xs:pattern > > > value="([a-zA-Z][a-zA-Z0-9]__)*[a-zA-Z0-9\.\-]+(·[a-zA- > Z0-9\.\-]+)?"/> > > </xs:restriction> > > </xs:simpleType> > > <xs:simpleType name="idref_pattern"> > > <xs:restriction base="xs:NMTOKEN"> > > <xs:pattern > > > value="([a-zA-Z][a-zA-Z0-9]__)*[a-zA-Z0-9\.\-]+(·[a-zA- > Z0-9\.\-]+)?"/> > > </xs:restriction> > > </xs:simpleType> > > <!--=====================--> > > <xs:complexType name="thing" abstract="true"> > > <xs:attribute name="id" type="id_pattern" > use="required"/> > > </xs:complexType> > > <xs:simpleType name="any-thing"> > > <xs:restriction base="idref_pattern"/> > > </xs:simpleType> > > <!--=====================--> > > <xs:complexType name="class"> > > <xs:complexContent> > > <xs:extension base="thing"/> > > </xs:complexContent> > > </xs:complexType> > > <xs:simpleType name="any-class"> > > <xs:restriction base="idref_pattern"/> > > </xs:simpleType> > > <!--=====================--> > > <xs:complexType name="enumerated_set_of_class"> > > <xs:complexContent> > > <xs:extension base="class_of_class"/> > > </xs:complexContent> > > </xs:complexType> > > <xs:simpleType name="any-enumerated_set_of_class"> > > <xs:restriction base="idref_pattern"/> > > </xs:simpleType> > > <!--=====================--> > > <xs:complexType name="functional_mapping"> > > <xs:complexContent> > > <xs:extension base="relationship"> > > <xs:attribute name="input" > type="any-thing" > > use="required"/> > > <xs:attribute name="result" > type="any-thing" > > use="required"/> > > </xs:extension> > > </xs:complexContent> > > </xs:complexType> > > <!--=====================--> > > <xs:complexType name="difference_of_set_of_class"> > > <xs:complexContent> > > <xs:restriction base="functional_mapping"> > > <xs:attribute name="input" > > type="any-enumerated_set_of_class"/> <!--problem spot--> > > <xs:attribute name="result" > type="any-class"/> > > > > </xs:restriction> > > </xs:complexContent> > > </xs:complexType> > > <!--=====================--> > > > > I produced this code with an older version (4.4) of XML > Spy, and that seemed > > to > > be correct (perhaps at that time?). > > > > NOTE: From the rest of the schema one can derive that we > deal here with the > > following path through the model hierarchy: > > thing >> class >> class_of_class >> enumerated_set_of_class. > > > > You may wonder what I tried to achieve. That is a kind of > idref constraint, > > where I cannot use idref, because: > > > > * the referenced id's are not part of the XML document > (they are there, > > somewhere on the Internet) > > * the constraint shall be valid for all elements that > are typed with this > > complexType > > * the types like "any-enumerated_set_of_class" are in fact hidden > > Processing > > Instructions, because the id referenced in the > attribute "input" shall > > not > > only follow that pattern, but also belong to an > element (instance) that > > is > > of the type "enumerated_set_of_class". > > > > Any suggestions how to solve this problem? > > > > Regards, > > Hans > > > > >
Received on Monday, 3 January 2005 15:25:56 UTC