<<< Here's the <temperature> part of the weather report:
<temperature>
<min>20</min>
<max>29</max>
<forecast-low>21</forecast-low>
<forecast-high>30</forecast-high>
</temperature>
A <temperature> has four sub-elements. We want them all to be within a reasonable range of Celsius temperatures. Rather than typing the information into our schema four times, we'll create a new simple type called DegreeRange as follows:
<simpleType name="DegreeRange" base="decimal">
<minInclusive value="-70"/>
<maxInclusive value="80"/>
</simpleType>
Once this is defined, we can use it just as if it were one of the built-in types like decimal or string.
<element name="temperature">
<complexType>
<element name="min" type="ewe:DegreeRange"/>
<element name="max" type="ewe:DegreeRange"/>
<element name="forecast-low" type="ewe:DegreeRange"/>
<element name="forecast-high" type="ewe:DegreeRange"/>
</complexType>
</element>
It's necessary to prefix the DegreeRange with ewe:, since that type belongs to the new markup language, not to the XML Schema markup language.
Now, we need only define the <wind> portion of the weather report. >>>