The group element is used both for the definition of a group and for any reference to a named group. You can use a model group to define a set of elements that can be repeated through the document. This is useful for building a complex type definition. Named model groups can be further defined by using sequence, choice, or all child elements.
A named model group consists of element declarations, wildcards, and other model groups. Named model groups must have a name attribute and are declared at the top level of the schema.
An unnamed group element is not declared at the top level and must have a ref attribute that references an existing named group. Unnamed groups must not have a name attribute. A named group can be referenced, multiple times, using an unnamed group in the XML Schema document.
The following example creates a named model group, stationeries
, that allows a limited set of 1-5 books and 1-5 pens to appear in the group.
<xs:group name="stationeries"> <xs:choice> <xs:element name="books" minOccurs="1" maxOccurs="5" /> <xs:element name="pens" minOccurs="1" maxOccurs="5" /> </xs:choice > </xs:group>
You can use the ref attribute to reference a group by name in order to use the group description.
The following example references a model group, stationeries
, inside of the choice element.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > <xs:group name="stationeries"> <xs:sequence> <xs:element name="books" minOccurs="1" maxOccurs="5" /> <xs:element name="pens" minOccurs="1" maxOccurs="5" /> </xs:sequence> </xs:group> <xs:element name="Order"> <xs:complexType> <xs:choice> <xs:element name="table" minOccurs="1" maxOccurs="5" /> <xs:group ref="stationeries" minOccurs="1" /> </xs:choice> </xs:complexType> </xs:element> </xs:schema>