|
[XMLSCHEMA-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Derivation by restriction wrt to type inheritance
From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
Date: 26 Nov 2001 10:02:54 +0000 To: "Martin Bernauer" <bernauer@dke.uni-linz.ac.at> Cc: <xmlschema-dev@w3.org> Message-ID: <f5badx9j1dd.fsf@cogsci.ed.ac.uk> The equivalent of templates, which is what you need for your List example, is indeed supported by XML Schema, using substitution groups: <xs:complexType name="List"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element ref="entry"/> </xs:sequence> </xs:complexType> <xs:element name="entry" abstract="true" type="Object"/> Note because this is abstract you will have to declare other elements which have this as their substitution group head. <xs:complexType name="Object"/> [this could be anything you choose] <xs:element name="list" type="List"/> [polymorphic list] <xs:complexType name="Person"> <xs:complexContent> <xs:extension base="Object"> <xs:sequence> <xs:element name="name"/> . . . </xs:sequence> <xs:attribute name="gender" type="xs:token"/> . . . </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name="person" type="Person" substitutionGroup="entry"/> <xs:element name="personList"> <xs:complexType> <xs:complexContent> <xs:restriction base="List"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element ref="person"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> So this will allow <personList><person gender='F'><name>....</person> <person.... </personList> <xs:element name="company" substitutionGroup="entry"> <xs:complexType> <xs:complexContent> <xs:extension base="Object"> . . . </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> </xs:schema> Now you could mix <person> and <company> inside a polymorphic <list>, or define a <companyList> in the same way as <personList>. You could make the 'List' type abstract if you wanted to _require_ restriction to lists of particular sub-types of Object. Hope this helps. ht -- Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh W3C Fellow 1999--2001, part-time member of W3C Team 2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440 Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk URL: http://www.ltg.ed.ac.uk/~ht/Received on Monday, 26 November 2001 05:01:51 GMT |
Subscribe in XML format
|






