<rng:element name="personGrp">
<rng:ref name="att.global.attributes"/>
<rng:optional>
 <rng:attribute name="role">
  <rng:ref name="data.enumerated"/>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="sex">
  <rng:choice>
   <rng:ref name="data.sex"/>
   <rng:value>mixed</rng:value>
  </rng:choice>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="age">
  <rng:ref name="data.enumerated"/>
 </rng:attribute>
</rng:optional>
<rng:optional>
 <rng:attribute name="size">
  <rng:list>
   <rng:oneOrMore>
    <rng:ref name="data.word"/>
   </rng:oneOrMore>
  </rng:list>
 </rng:attribute>
</rng:optional>
<rng:choice>
 <rng:oneOrMore>
  <rng:ref name="model.pLike"/>
 </rng:oneOrMore>
 <rng:zeroOrMore>
  <rng:ref name="model.personPart"/>
 </rng:zeroOrMore>
</rng:choice>
</rng:element>
element personGrp
{
   att.global.attributes,
   attribute role { data.enumerated }?,
   attribute sex { data.sex | "mixed" }?,
   attribute age { data.enumerated }?,
   attribute size { list { data.word+ } }?,
   ( model.pLike+ | model.personPart* )
}