Definition: pattern
<define name="pattern">
<choice>
<element name="element">
<choice>
<attribute name="name">
<data type="QName"/>
</attribute>
<ref name="open-name-class"/>
</choice>
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="attribute">
<ref name="common-atts"/>
<choice>
<attribute name="name">
<data type="QName"/>
</attribute>
<ref name="open-name-class"/>
</choice>
<interleave>
<ref name="other"/>
<optional>
<ref name="pattern"/>
</optional>
</interleave>
</element>
<element name="group">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="interleave">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="choice">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="optional">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="zeroOrMore">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="oneOrMore">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="list">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="mixed">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
<element name="ref">
<attribute name="name">
<data type="NCName"/>
</attribute>
<ref name="common-atts"/>
</element>
<element name="parentRef">
<attribute name="name">
<data type="NCName"/>
</attribute>
<ref name="common-atts"/>
</element>
<element name="empty">
<ref name="common-atts"/>
<ref name="other"/>
</element>
<element name="text">
<ref name="common-atts"/>
<ref name="other"/>
</element>
<element name="value">
<optional>
<attribute name="type">
<data type="NCName"/>
</attribute>
</optional>
<ref name="common-atts"/>
<text/>
</element>
<element name="data">
<attribute name="type">
<data type="NCName"/>
</attribute>
<ref name="common-atts"/>
<interleave>
<ref name="other"/>
<group>
<zeroOrMore>
<element name="param">
<attribute name="name">
<data type="NCName"/>
</attribute>
<text/>
</element>
</zeroOrMore>
<optional>
<element name="except">
<ref name="common-atts"/>
<ref name="open-patterns"/>
</element>
</optional>
</group>
</interleave>
</element>
<element name="notAllowed">
<ref name="common-atts"/>
<ref name="other"/>
</element>
<element name="externalRef">
<attribute name="href">
<data type="anyURI"/>
</attribute>
<ref name="common-atts"/>
<ref name="other"/>
</element>
<element name="grammar">
<ref name="common-atts"/>
<ref name="grammar-content"/>
</element>
</choice>
</define>
_____________________________________________