The Big Picture

<<< Here's the entire RELAX document to describe the weather report:

<module
      moduleVersion="1.2"
      relaxCoreVersion="1.0"
      targetNamespace=""
      xmlns="http://www.xml.gr.jp/xmlns/relaxCore">
<interface>
    <export label="report"/>
</interface>

<elementRule role="report">
    <tag name="report"/>
    <sequence>
        <ref label="datestamp"/>
        <ref label="station"/>
        <ref label="temperature"/>
        <ref label="wind"/>
    </sequence>
</elementRule>

<tag name="report"/>

<!--
    The datestamp should have type="date", but the
    current Java validator does not recognize that
    datatype yet.
-->
<elementRule role="datestamp" type="string"/>
<tag name="datestamp"/>

<elementRule role="station">
    <sequence>
        <ref label="latitude"/>
        <ref label="longitude"/>
    </sequence>
</elementRule>

<tag name="station">
    <attribute name="fullname" type="string" required="true">
        <maxlength value="75"/>
    </attribute>
    <attribute name="abbrev" type="string">
        <length value="4"/>
    </attribute>
</tag>

<elementRule role="latitude" type="decimal">
    <minInclusive value="-90"/>
    <maxInclusive value="90"/>
</elementRule>

<tag name="latitude"/>

<elementRule role="longitude" type="decimal">
    <minInclusive value="-180.0"/>
    <maxInclusive value="180.0"/>
</elementRule>

<tag name="longitude"/>

<elementRule role="temperature">
    <sequence>
        <ref label="min"/>
        <ref label="max"/>
        <ref label="forecast-low"/>
        <ref label="forecast-high"/>
    </sequence>
</elementRule>
<tag name="temperature"/>

<elementRule role="min" type="integer">
    <tag name="min"/>
    <minInclusive value="-70"/>
    <maxInclusive value="70"/>
</elementRule>

<elementRule role="max" type="integer">
    <tag name="max"/>
    <minInclusive value="-70"/>
    <maxInclusive value="70"/>
</elementRule>

<elementRule role="forecast-low" type="integer">
    <tag name="forecast-low"/>
    <minInclusive value="-70"/>
    <maxInclusive value="70"/>
</elementRule>

<elementRule role="forecast-high" type="integer">
    <tag name="forecast-high"/>
    <minInclusive value="-70"/>
    <maxInclusive value="70"/>
</elementRule>

<elementRule role="wind">
    <sequence>
        <ref label="direction" occurs="?" />
        <ref label="speed"/>
    </sequence>
</elementRule>
<tag name="wind"/>

<elementRule role="direction" type="string">
    <enumeration value="N"/>
    <enumeration value="NNE"/>
    <enumeration value="NE"/>
    <enumeration value="ENE"/>
    <enumeration value="E"/>
    <enumeration value="ESE"/>
    <enumeration value="SE"/>
    <enumeration value="SSE"/>
    <enumeration value="S"/>
    <enumeration value="SSW"/>
    <enumeration value="SW"/>
    <enumeration value="WSW"/>
    <enumeration value="W"/>
    <enumeration value="WNW"/>
    <enumeration value="NW"/>
    <enumeration value="NNW"/>
</elementRule>
<tag name="direction"/>

<elementRule role="speed" type="nonNegativeInteger"/>
<tag name="speed"/>

</module>

Some final thoughts >>>

  1. Validating XML with RELAX
  2. Validity and the DTD
  3. Validity and RELAX
  4. Specifying Elements
  5. Making Validation More Specific
  6. Further Specifications
  7. Enumerations
  8. The Big Picture
  9. Summary