<?xml version="1.0" encoding="UTF-8"?>
<!-- RELAX NG for RELAX NG -->
<!-- 
  Initial version information
  URL:
    http://relaxng.org/relaxng.rng
  Description:
    http://relaxng.org/#schemas
    RELAX NG 1.0, from the RELAX NG Specification, with errata applied.
-->
<!--
  Contributor:
    Syncro Soft - oXygen XML Editor
  Date:
    July 12, 2005
  Description:
    Annotated with descriptions form Relax NG book by Eric van der Vlist 
    http://books.xmlschemata.org/relaxng/
 -->
<!--
 Original source: http://www.oxygenxml.com/resources/schema/relaxng/relaxng.rng
-->
<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
         ns="http://relaxng.org/ns/structure/1.0"
         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
         xmlns="http://relaxng.org/ns/structure/1.0">
  <start>
    <ref name="pattern"/>
  </start>

  <define name="pattern">
    <choice>
      <element name="element">
        <a:documentation>The element pattern matches elements. 
          The name of the element may be defined either through a name attribute or through a name class.</a:documentation>
        <choice>
          <attribute name="name">
            <a:documentation>When name is specified, the element pattern matches only elements with this name. 
              name is a shortcut to define a single name as a name class for the element pattern.
              name and the definition of a name class can't be specified together (they are exclusive options).</a:documentation>
            <data type="QName"/>
          </attribute>
          <ref name="open-name-class"/>
        </choice>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="attribute">
        <a:documentation>The attribute pattern matches attributes.
          The name of the attribute may be defined by using either a name attribute or a name class.
          After simplification, attribute patterns can contain only patterns relevant for text nodes.
          Attributes can't be duplicated, either directly or by overlapping name classes.
          Attributes that have an infinite name class (anyName or nsName) must be enclosed in a oneOrMore or zeroOrMore pattern.
        </a:documentation>
        <ref name="common-atts"/>
        <choice>
	  <attribute name="name">
	    <a:documentation>When name is specified, the attribute pattern matches attributes with this name only. 
	      This can be a shortcut to define a single name as a name class for the attribute pattern).
	      name and the definition of a name class can't both be specified (they are exclusive options).</a:documentation>
	    <data type="QName"/>
	  </attribute>
          <ref name="open-name-class"/>
        </choice>
        <interleave>
          <ref name="other"/>
          <optional>
            <ref name="pattern"/>
          </optional>
        </interleave>
      </element>
      <element name="group">
        <a:documentation>The group pattern defines an ordered group of subpatterns. 
          Note that when attribute patterns are included in such a group, their order isn't enforced. 
          group patterns are implicit with element and define patterns.</a:documentation>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="interleave">
        <a:documentation>The interleave pattern "interleaves" subpatterns; it allows their leaves to be mixed in any order.
          The interleave pattern can't be used within a list.
          The interleave behavior is applied to attribute patterns even when they are embedded in (ordered) group patterns 
          (the reason for this is that XML 1.0 specifies the relative order of attributes isn't significant).
          Elements within a interleave pattern can't have overlapping name classes.
          There can be at most one text pattern in each set of patterns combined by interleave.          
        </a:documentation>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="choice">
        <a:documentation>The choice pattern defines a choice between different patterns; 
          it matches a node if, and only if, at least one of its subpatterns matches this node.</a:documentation>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="optional">
        <a:documentation>The optional pattern specifies that its subpatterns considered as an 
          ordered group is optional, i.e., be matched zero or one times.</a:documentation>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="zeroOrMore">
        <a:documentation>The zeroOrMore pattern specifies that its subpatterns are considered 
          an ordered group that must be matched zero or more times.
          The zeroOrMore pattern can't contain attribute definitions.</a:documentation>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="oneOrMore">
        <a:documentation>The oneOrMore pattern specifies that its subpatterns considered as an 
          ordered group must be matched one or more times. The oneOrMore pattern can't contain attribute definitions.</a:documentation>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="list">
        <a:documentation>The list pattern splits a text node into tokens separated by whitespace. 
          The splitting allows the validation of these tokens separately. 
          This practice is most useful for validating lists of values.
          interleave can't be used within list.
          The content of a list is only about data: it's forbidden to define element, attribute, or text there.
          It's forbidden to embed list into list.
        </a:documentation>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="mixed">
        <a:documentation>The mixed pattern is a shortcut for interleave with an embedded text pattern. 
          It describes unordered content models in which a text node may be included before and after 
          each element. Note that RELAX NG doesn't allow the addition of constraints on these text nodes.
          The mixed pattern can't be used within a list.
          Elements within a mixed pattern can't have overlapping name classes.
          There must no other text pattern in each set of patterns combined by mixed.
        </a:documentation>
        <ref name="common-atts"/>
        <ref name="open-patterns"/>
      </element>
      <element name="ref">
        <a:documentation>The ref pattern defines a reference to a named pattern defined in the current grammar.</a:documentation>
        <attribute name="name">
          <a:documentation>This attribute specifies the name of the named pattern that is referenced.</a:documentation>
          <data type="NCName"/>
        </attribute>
        <ref name="common-atts"/>
        <ref name="other"/>
      </element>
      <element name="parentRef">
        <a:documentation>The parentRef pattern is a reference to a named pattern belonging 
          to the parent grammar - in other words, the grammar in which the current grammar is included. 
          The scope of a named pattern is usually limited to the grammar in which they are defined. 
          The parentRef pattern provides a way to extend this scope and refer to a named pattern 
          defined in the parent grammar.</a:documentation>
        <attribute name="name">
          <a:documentation>This attribute specifies the name of the named pattern that is referenced.</a:documentation>
          <data type="NCName"/>
        </attribute>
        <ref name="common-atts"/>
        <ref name="other"/>
      </element>
      <element name="empty">
        <a:documentation>Empty content. 
          empty patterns define nodes that are empty, for example, elements that have no child elements, text, or attributes. 
          Note that it is mandatory to use this pattern explicitly in such cases; the simpler-looking form 
          &lt;element name=&quot;foo&quot;/&gt; is forbidden. There is no such thing as an empty attribute. 
          An attribute such as foo=&quot;&quot; is considered to have a value that is the empty string rather 
          than considered empty - i.e., having no value. Therefore, empty applies only to elements.
        </a:documentation>
        <ref name="common-atts"/>
        <ref name="other"/>
      </element>
      <element name="text">
        <a:documentation>The text pattern matches zero or more text nodes.
          A match of more than one text node has no effect when it is used in ordered content models 
          (the data model used by RELAX NG for XML documents is similar to the data model of XPath 1.0, 
          and two text nodes can't be adjacent) but makes a difference when a text pattern is used in interleave. 
          Adding a single text pattern in an interleave pattern has the effect of allowing any number of text nodes, 
          which can interleave before and after each element (note that the mixed pattern is provided as a 
          shortcut to define these content models).
          No more than one text pattern can be included in an interleave pattern.</a:documentation>
        <ref name="common-atts"/>
        <ref name="other"/>
      </element>
      <element name="value">
        <a:documentation>The value pattern matches a text node against a value using the semantic 
          of a specified datatype to perform the comparison. 
          The value pattern is meant for data-oriented applications and can't be used in mixed-content models.
          It is used to define enumerations.</a:documentation>
        <optional>
          <attribute name="type">
            <a:documentation>This attribute specifies which datatype to use to perform the comparison. 
              Note that this isn't an inherited attribute. When it isn't specified, the comparison is done using 
              the default datatype, the token datatype of RELAX NG's built-in type library. Because of this, a string 
              comparison is done on the values after space normalization.</a:documentation>
            <data type="NCName"/>
          </attribute>
        </optional>
        <ref name="common-atts"/>
        <text/>
      </element>
      <element name="data">
        <a:documentation>The data pattern matches a string that represents a value of a named datatype.
          If the children of an element or an attribute match a data pattern, then complete content of the element 
          or attribute must match that data pattern. It is not permitted to have a pattern which allows part of the 
          content to match a data pattern, and another part to match another pattern.
          The restrictions are applied through the type attribute, which defines the datatype and the param and except child patterns.
          The data pattern is meant for data-oriented applications and can't be used in mixed content models.        
        </a:documentation>
        <attribute name="type">
          <a:documentation>The type attribute specifies the name of the datatype in the library identified by the datatypeLibrary attribute.</a:documentation>
          <data type="NCName"/>
        </attribute>
        <ref name="common-atts"/>
        <interleave>
          <ref name="other"/>
          <group>
	    <zeroOrMore>
	      <element name="param">
	        <a:documentation>The param element specifies parameters passed to the datatype library 
	          to determine whether a value is valid per a datatype. When the datatype library is the 
	          W3C XML Schema datatype, these parameters are the facets of the datatype and define 
	          additional restrictions to be applied. The name of the parameter is defined by the name attribute, 
	          and its value is the content of the param element.</a:documentation>
		<attribute name="name">
		  <a:documentation>This attribute specifies the name of the parameter.</a:documentation>
		  <data type="NCName"/>
		</attribute>
                <ref name="common-atts"/>
		<text/>
	      </element>
	    </zeroOrMore>
            <optional>
              <element name="except">
                <a:documentation>The except pattern is used to remove a set of values from a data pattern.
                  The except pattern can be used only in the context of data and can contain only data, value, and choice elements.
                </a:documentation>
		<ref name="common-atts"/>
		<ref name="open-patterns"/>
              </element>
            </optional>
          </group>
        </interleave>
      </element>
      <element name="notAllowed">
        <a:documentation>The notAllowed pattern always fails. It can provide abstract definitions 
          that must be overridden before they can be used in a schema.</a:documentation>
        <ref name="common-atts"/>
        <ref name="other"/>
      </element>
      <element name="externalRef">
        <a:documentation>The externalRef pattern is a reference to an external schema. 
          It has the same effect as replacing the externalRef pattern with the external schema, 
          which is treated as a pattern.</a:documentation>
        <attribute name="href">
          <a:documentation>This attribute defines the location of the external schema.</a:documentation>
          <data type="anyURI"/>
        </attribute>
        <ref name="common-atts"/>
        <ref name="other"/>
      </element>
      <element name="grammar">
        <a:documentation>Defines a grammar pattern. 
          The grammar pattern encapsulates the definitions of start and named patterns.           
          A grammar pattern is matched by matching the pattern contained in the start element.
          The most common use of grammar is to validate XML documents. 
          In these cases, the start pattern specifies which elements can be used as the document root element. 
          The grammar pattern may also be used to write modular schemas. 
          In this case, the start pattern specifies which nodes must be matched by the grammar wherever it appears in the schema.
          In every case, the named patterns defined in a grammar are considered local to this grammar.
        </a:documentation>
        <ref name="common-atts"/>
        <ref name="grammar-content"/>
      </element>
    </choice>
  </define>

  <define name="grammar-content">
    <interleave>
      <ref name="other"/>
      <zeroOrMore>
        <choice>
          <ref name="start-element"/>
          <ref name="define-element"/>
          <element name="div">
            <a:documentation>The div element is provided to define logical divisions in RELAX NG schemas. 
              It has no effect on validation. Its purpose is to define a group of definitions that may be annotated 
              as a whole. The div elements may be embedded in other div elements.
              In the context of a grammar, the content of a div element is the 
              same as the content of a grammar.</a:documentation>
            <ref name="common-atts"/>
            <ref name="grammar-content"/>
          </element>
          <element name="include">
            <a:documentation>The include pattern includes a grammar and merges its definitions with the definitions 
              of the current grammar. The definitions of the included grammar may be redefined and overridden by the 
              definitions embedded in the include pattern. Note that a schema must contain an explicit grammar 
              definition in order to be included.</a:documentation>
            <attribute name="href">
              <a:documentation>This attribute defines the location of the schema and specifies the grammar to be included.</a:documentation>
              <data type="anyURI"/>
            </attribute>
            <ref name="common-atts"/>
            <ref name="include-content"/>
          </element>
        </choice>
      </zeroOrMore>
    </interleave>
  </define>

  <define name="include-content">
    <interleave>
      <ref name="other"/>
      <zeroOrMore>
        <choice>
          <ref name="start-element"/>
          <ref name="define-element"/>
          <element name="div">
            <a:documentation>In the context of an include, the content of a div element is 
              the same as the content of an include.</a:documentation>
            <ref name="common-atts"/>
            <ref name="include-content"/>
          </element>
        </choice>
      </zeroOrMore>
    </interleave>
  </define>

  <define name="start-element">
    <element name="start">
      <a:documentation>The start pattern defines the "start" of a grammar. 
        When this grammar is used to validate a complete document, the start pattern specifies which elements 
        can be used as the document (root) element. When this grammar is embedded in another grammar, the 
        start pattern specifies which pattern should be applied at the location where the grammar is embedded. 
        Like named pattern definitions, start patterns may be combined by choice or interleave and redefined when 
        they are included in include patterns.</a:documentation>
      <ref name="combine-att"/>
      <ref name="common-atts"/>
      <ref name="open-pattern"/>
    </element>
  </define>

  <define name="define-element">
    <element name="define">
      <a:documentation>
        When define is embedded in a grammar, it defines a named pattern or combines a new definition with an existing one. 
        Named patterns are global to a grammar and can be referenced by ref in the scope of their grammar and by parentRef 
        in the scope of the grammars directly embedded in their grammar.        
        When define is embedded in include, the new definition is a redefinition. 
        It replaces the definitions from the included grammar, unless a combine attribute 
        is specified, in which case, the definitions are combined.
      </a:documentation>
      <attribute name="name">
        <a:documentation>This attribute specifies the name of the named pattern.</a:documentation>
        <data type="NCName"/>
      </attribute>
      <ref name="combine-att"/>
      <ref name="common-atts"/>
      <ref name="open-patterns"/>
    </element>
  </define>

  <define name="combine-att">
    <optional>
      <attribute name="combine">
        <a:documentation>This attribute specifies how multiple definitions of a pattern (named pattern or start pattern) 
          should be combined. The possible values are choice and interleave.
           When the combine attribute is specified and set to choice, multiple definitions of a pattern are 
          combined in a choice pattern. When the combine attribute is specified and set to interleave, multiple 
          definitions of a pattern are combined in an interleave pattern.          
          Note that it's forbidden to specify more than one define with the same name and no combine attribute or 
          multiple defines with different values of the combine attribute.
        </a:documentation>
        <choice>
          <value>choice</value>
          <a:documentation>Specifies that multiple definitions of a named pattern are 
            combined in a choice pattern</a:documentation>
          <value>interleave</value>
          <a:documentation>Specifies that multiple definitions of a named pattern are 
            combined in an interleave pattern</a:documentation>
        </choice>
      </attribute>
    </optional>
  </define>
  
  <define name="open-patterns">
    <interleave>
      <ref name="other"/>
      <oneOrMore>
        <ref name="pattern"/>
      </oneOrMore>
    </interleave>
  </define>

  <define name="open-pattern">
    <interleave>
      <ref name="other"/>
      <ref name="pattern"/>
    </interleave>
  </define>

  <define name="name-class">
    <choice>
      <element name="name">
        <a:documentation>The name name class defines a class with a single name.</a:documentation>
        <ref name="common-atts"/>
        <data type="QName"/>
      </element>
      <element name="anyName">
        <a:documentation>Name class accepting any name. 
          The anyName name class matches any name from any namespace. 
          This wide spectrum may be restricted by embedding except name classes.</a:documentation>
        <ref name="common-atts"/>
        <ref name="except-name-class"/>
      </element>
      <element name="nsName">
        <a:documentation>The nsName name class allows any name in a specific namespace.
          Within the scope of an element, the name classes of attributes can't overlap. 
          The same restriction applies to name classes of elements when these elements are combined by interleave. 
          It is impossible to use nsName to produce empty name classes by including nsName in an except name class 
          included in another nsName.</a:documentation>
        <ref name="common-atts"/>
        <ref name="except-name-class"/>
      </element>
      <element name="choice">
        <a:documentation>The choice name class makes a choice between several 
          name classes: a name matches choice if, and only if, it matches at least one 
          of the subname classes.</a:documentation>
        <ref name="common-atts"/>
        <ref name="open-name-classes"/>
      </element>
    </choice>
  </define>

  <define name="except-name-class">
    <interleave>
      <ref name="other"/>
      <optional>
        <element name="except">
          <a:documentation>The except name class can remove a name class from another. Note that this name class has no attributes.</a:documentation>
          <ref name="open-name-classes"/>
        </element>
      </optional>
    </interleave>
  </define>

  <define name="open-name-classes">
    <interleave>
      <ref name="other"/>
      <oneOrMore>
        <ref name="name-class"/>
      </oneOrMore>
    </interleave>
  </define>

  <define name="open-name-class">
    <interleave>
      <ref name="other"/>
      <ref name="name-class"/>
    </interleave>
  </define>

  <define name="common-atts">
    <optional>
      <attribute name="ns"/>
      <a:documentation>This attribute defines the default namespace for the elements defined in a portion of a schema. 
        The value is inherited.</a:documentation>
    </optional>
    <optional>
      <attribute name="datatypeLibrary">
        <a:documentation>The datatypeLibrary attribute contains a URI identifying the library of 
          datatypes being used. The value is inherited. The datatype library defined by W3C XML Schema Datatypes would 
          be identified by the URI http://www.w3.org/2001/XMLSchema-datatypes.</a:documentation>
        <data type="anyURI"/>
      </attribute>
    </optional>
    <zeroOrMore>
      <attribute>
        <anyName>
          <except>
            <nsName/>
            <nsName ns=""/>
          </except>
        </anyName>
      </attribute>
    </zeroOrMore>
  </define>

  <define name="other">
    <zeroOrMore>
      <element>
        <anyName>
          <except>
            <nsName/>
          </except>
        </anyName>
        <zeroOrMore>
          <choice>
            <attribute>
              <anyName/>
            </attribute>
            <text/>
            <ref name="any"/>
          </choice>
        </zeroOrMore>
      </element>
    </zeroOrMore>
  </define>

  <define name="any">
    <element>
      <anyName/>
      <zeroOrMore>
        <choice>
          <attribute>
            <anyName/>
          </attribute>
          <text/>
          <ref name="any"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
</grammar>
