XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] XML Schema quiz: 3 elements and at least one must be present

Won't this allow invalid instances according to Roger's spec, that is,
it allows a 'B' followed by and 'A' and a 'C' followed by an 'A' or
'B' ???

2008/8/14 bryan rasmussen <rasmussen.bryan@gmail.com>:
> no but a fun variation , more sequences valid than you specify, but all you
> specify are valid - using XSV.
>
>
>         <xs:complexType>
>             <xs:choice>
>        <xs:sequence>
>            <xs:element name="A" type="xs:string" />
>            <xs:element name="B" type="xs:string" minOccurs="0" />
>            <xs:element name="C" type="xs:string" minOccurs="0" />
>        </xs:sequence>
>        <xs:sequence>
>     <xs:element name="B" type="xs:string" />
>     <xs:element name="A" type="xs:string" minOccurs="0" />
>     <xs:element name="C" type="xs:string" minOccurs="0" />
>        </xs:sequence>
>        <xs:sequence>
>     <xs:element name="C" type="xs:string" />
>     <xs:element name="A" type="xs:string" minOccurs="0" />
>     <xs:element name="B" type="xs:string" minOccurs="0" />
>
>        </xs:sequence>
>    </xs:choice>
>         </xs:complexType>
>
> the limits of of XML Schema could make an amusing parlor game.
>
> Cheers,
> Bryan Rasmussen
>
>
> On Thu, Aug 14, 2008 at 2:02 PM, Costello, Roger L. <costello@mitre.org>
> wrote:
>>
>> Hi Folks,
>>
>> Consider this problem: you have 3 elements - A, B, C - and you need at
>> least one of them to be present in your XML instance document.
>>
>> Here are the valid instances:
>>
>> <A>...</A>
>> <B>...</B>
>> <C>...</C>
>>
>> or
>>
>> <A>...</A>
>> <B>...</B>
>>
>> or
>>
>> <A>...</A>
>> <C>...</C>
>>
>> or
>>
>> <B>...</B>
>> <C>...</C>
>>
>> or
>>
>> <A>...</A>
>>
>> or
>>
>> <B>...</B>
>>
>> or
>>
>> <C>...</C>
>>
>> Question: will this XML Schema definition work:
>>
>> <complexType name="ThreeElements">
>>    <choice>
>>        <sequence>
>>            <element name="A" type="string" />
>>            <element name="B" type="string" minOccurs="0" />
>>            <element name="C" type="string" minOccurs="0" />
>>        </sequence>
>>        <sequence>
>>            <element name="A" type="string" minOccurs="0" />
>>            <element name="B" type="string" />
>>            <element name="C" type="string" minOccurs="0" />
>>        </sequence>
>>        <sequence>
>>            <element name="A" type="string" minOccurs="0" />
>>            <element name="B" type="string" minOccurs="0" />
>>            <element name="C" type="string" />
>>        </sequence>
>>    </choice>
>> </complexType>
>>
>> Notice that in the first choice A is required and B, C are optional.
>> In the second choice B is required and A, C are optional.  In the third
>> choice C is required and A,B are optional.
>>
>> Scroll down for the answer ...
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> Answer:
>>
>> Let's play schema validator:  You are parsing the instance document and
>> encounter this element:
>>
>> <A>...</A>
>>
>> How shall you validate it?  In the above schema there are three
>> declarations for the <A> element.  The only way for you to know which
>> declaration to use is to "look ahead" in the instance document.  For
>> example, if there is no <B> element then you can eliminate the second
>> choice.
>>
>> Requiring an XML Schema validator to "look ahead" is not allowed (it is
>> allowed with Relax NG).
>>
>> The technical term for the above content model is: non-deterministic
>> content model.  XML Schema 1.0 does not allow non-deterministic content
>> models.
>>
>> Thus, the above complexType definition is not valid.
>>
>> /Roger
>>
>> _______________________________________________________________________
>>
>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>> to support XML implementation and development. To minimize
>> spam in the archives, you must subscribe before posting.
>>
>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
>> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
>> subscribe: xml-dev-subscribe@lists.xml.org
>> List archive: http://lists.xml.org/archives/xml-dev/
>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>>
>
>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS