- From: Mason Lee <mgl@netspace.org>
- Date: Mon, 3 Dec 2001 18:23:17 -0500 (EST)
- To: "Jeni Tennison" <jeni@jenitennison.com>, <xmlschema-dev@w3.org>
Hi Jeni, Thanks for your reply to my message "Re: Order of elements in a complex-type", below; it was helpful for me to see that example. You answered the question I asked, for sure, but I think my question was badly formed in that it allowed for what looks like a special case answer, including only one element of cardinality=1. Is there a more general way to express varying cardinalities of unordered elements in a complex-type? I guess I'm looking for a simple construct like "all" that allows for >1 occurences. Not being used to functional programming and finding XML Schema somewhat elusive, I just have to ask again then, a slightly different question: How might I use XML Schema to define a complex-type of 1 Element_A, 1 Element_B, 0 or 1 Element_C, and any number of Element_D, all appearing in any order? Thanks in advance. I'm not sure why this seemingly simple situation doesn't appear in any of my books. Regards, Mason -----Original Message----- From: Jeni Tennison [mailto:jeni@jenitennison.com] Sent: Saturday, December 01, 2001 5:39 AM Subject: Re: Order of elements in a complex-type Hi Mason, > Hi all! I saw Erik Beijnoff's good answer to the above question in a > recent thread. I wonder further, however, how could this complex > type be defined such that the elements "TextBox" and "TextArea" may > appear any number of times, but the element "Header" must appear > only once, and while retaining the interesting characteristic that > any of these three clild elements may appear in any order. Any > ideas? Assuming that you don't care if the TextBox and TextArea elements are intermingled, and there's no minimum number of occurrences of TextBox and TextArea, you could use the following: <xs:complexType name="FormType"> <xs:sequence> <xs:group ref="TextBoxOrTextArea" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="Header" type="HeaderType" /> <xs:group ref="TextBoxOrTextArea" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:group name="TextBoxOrTextArea"> <xs:choice> <xs:element name="TextBox" type="TextBoxType" /> <xs:element name="TextArea" type="TextAreaType" /> </xs:choice> </xs:group> (Using a group so that you only have to declare TextBox and TextArea once.) Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Received on Monday, 3 December 2001 18:39:15 UTC