W3C home > Mailing lists > Public > xmlschema-dev@w3.org > June 2008

Re: Choice of sub-element or character-data in an element

From: Arshad Noor <arshad.noor@strongauth.com>
Date: Mon, 23 Jun 2008 17:13:24 -0700
Message-ID: <48603C24.5090102@strongauth.com>
To: Michael Kay <mike@saxonica.com>
CC: 'Koray SAKIROGLU' <koray.sakiroglu@gmail.com>, xmlschema-dev@w3.org

Appreciate the feedback, Michael.  I have chosen to use an
attribute with an empty elementB, rather than have two types
with the same name.  I was not clear if XML Schema could do
what I was attempting and thought I'd find out first before
making a decision.  Thanks.

Arshad Noor
StrongAuth, Inc.

Michael Kay wrote:
>>>  From what I understood you want something like this :
>>>
>>>
>>>     <xsd:element name="elementA">
>>>         <xsd:complexType>
>>>             <xsd:choice>
>>>
>>>                 <xsd:element name="elementB">
>>>                     <xsd:complexType>
>>>                         <xsd:sequence>
>>>                             <xsd:element name="elementC" 
>> type="xsd:string"/>
>>>                             <xsd:element name="elementD" 
>> type="xsd:string"/>
>>>                         </xsd:sequence>
>>>                     </xsd:complexType>
>>>                 </xsd:element>
>>>
>>>                 <xsd:element ref="elementB" />
>>>
>>>             </xsd:choice>
>>>         </xsd:complexType>
> 
> You can't have two elementB particles in the same content model with
> different types. When the validator sees an element named elementB in the
> input, it has to be able to go to the schema and discover what its expected
> type is.
> 
> In Schema 1.1 you can do this with assertions. Define a type with mixed
> content and two optional child elements, and then define an assertion to
> make the elements and the text mutually exclusive.
> 
> But I still think it's not a very good document design.
> 
> Michael Kay
> 
Received on Tuesday, 24 June 2008 00:14:10 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:15:47 UTC