![]() |
Using XML Schema to Force At Least One Item?
Sorry if this is a newbie question. I couldn't get the correct magic
incantation for Google to get an answer. :-( I'm trying to satisfy a requirement that "at least one of the following *must* be present" in an XML Schema. I have come up with two examples that almost work. Here's the first: <xs:element name="LightExample1" maxOccurs="3"> <xs:complexType> <xs:choice> <xs:element name="A"/> <xs:element name="B"/> <xs:element name="C"/> </xs:choice> </xs:complexType> </xs:element> This doesn't work because it allows multiple A, B, or C elements. Here's the second example: <xs:element name="LightExample2"> <xs:complexType> <xs:sequence> <xs:element name="A" minOccurs="0"/> <xs:element name="B" minOccurs="0"/> <xs:element name="C" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> This *almost* works. The only problem is that it allows an empty <LightExample2/> element which fails the "at least one of" portion of the requirement. Is it possible to do this? Kenneth |
Re: Using XML Schema to Force At Least One Item?
Kenneth Love wrote: > I'm trying to satisfy a requirement that "at least one of the following > *must* be present" in an XML Schema. I have come up with two examples > that almost work. > > Here's the first: > > <xs:element name="LightExample1" maxOccurs="3"> > <xs:complexType> > <xs:choice> > <xs:element name="A"/> > <xs:element name="B"/> > <xs:element name="C"/> > </xs:choice> > </xs:complexType> > </xs:element> > > This doesn't work because it allows multiple A, B, or C elements. Why do multiple elements conflict with your sole requirement "at least one of the following *must* be present"? -- Martin Honnen http://JavaScript.FAQTs.com/ |
Re: Using XML Schema to Force At Least One Item?
Okay. I guess I left out the requirement that no more than one of each
element A, B, or C can appear in the result. ABC is valid. C is valid. AA is not. CBC is not. The order is not that important to me. If I was provided a solution forcing the elements to be in a certain order then that's okay. It's okay if the solution provides for the elements to be in any order. I would prefer the former, actually. I could write a regular expression like this: RE = (A, B?, C?) | (A?, B, C?) | (A?, B?, C) Any thoughts? adTHANKSvance, Kenneth Love |
| All times are GMT. The time now is 02:45 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.