Hi Folks, Here is an example of using xsd:choice. The content of <transportation> is a choice of either <train>, <plane>, or <automobile>. <xsd:element name="transportation"> <xsd:complexType> <xsd:choice> <xsd:element name="train" type="xsd:string"/> <xsd:element name="plane" type="xsd:string"/> <xsd:element name="automobile" type="xsd:string"/> </xsd:choice> </xsd:complexType> </xsd:element> Rather than using xsd:choice, the schema could be designed using xsd:sequence. The sequence consists of an element that ref's to an abstract mode-of-transportation element. The train, plane, and automobile elements are globally declared and are substitutable with mode-of-transportation. <xsd:element name="transportation"> <xsd:complexType> <xsd:sequence> <xsd:element ref="mode-of-transportation" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="mode-of-transportation" abstract="true" type="xsd:string" /> <xsd:element name="train" substitutionGroup="mode-of-transportation"/> <xsd:element name="plane" substitutionGroup="mode-of-transportation"/> <xsd:element name="automobile" substitutionGroup="mode-of-transportation"/> I believe that the two designs produce identical results. Suppose the xsd:choice element were jettisoned from the XML Schema specification. Would there be any loss of functionality? Put another way, can you provide a real-world, compelling example of a schema that uses xsd:choice which cannot be expressed using abstract element plus substitution groups? /RogerReceived on Tuesday, 8 March 2011 14:37:28 GMT
This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 March 2011 14:37:29 GMT