[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XML Schema quiz: 3 elements and at least one must be prese
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@g...>: > 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@m...> > 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@l... >> subscribe: xml-dev-subscribe@l... >> 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] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|