- From: Mukul Gandhi <gandhi.mukul@gmail.com>
- Date: Wed, 9 Mar 2011 09:42:47 +0530
- To: "Costello, Roger L." <costello@mitre.org>
- Cc: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
Hi Roger, In your 2nd example using substitutionGroup, the schema as a side effect would also allow following documents as valid. [1] <train>..</train> , <plane>..</plane> and <automobile>..</automobile> (i.e your 2nd schema would also allow above elements as top most element of the XML document) But it looks like that your intention is to have a schema for following document structure, <transportation> <train>..</train> </transportation> etc Therefore if you want to avoid the above side effect [1], the example using choice would be more appropriate. On Tue, Mar 8, 2011 at 8:06 PM, Costello, Roger L. <costello@mitre.org> wrote: > 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? > > /Roger -- Regards, Mukul Gandhi
Received on Wednesday, 9 March 2011 04:14:59 UTC