<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.temperature.org"
            xmlns="http://www.temperature.org"
            elementFormDefault="qualified">
  <xsd:simpleType name="scaleType">
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="Celsius"/>
            <xsd:pattern value="Fahrenheit"/>
            <xsd:pattern value="Kelvin"/>
        </xsd:restriction>
  </xsd:simpleType>

  <xsd:element name="TempCollection">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="temperature"
                     minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="temperature">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="value"
                     minOccurs="1" maxOccurs="1"/>
        <xsd:element ref="accuracy"
                     minOccurs="1" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attributeGroup ref="TempAttributes"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:attributeGroup name="TempAttributes"> 
    <xsd:attribute name="scale" use="required">
      <xsd:simpleType>
        <xsd:restriction base="xsd:string">
          <xsd:pattern value="Celsius"/>
          <xsd:pattern value="Fahrenheit"/>
          <xsd:pattern value="Kelvin"/>
        </xsd:restriction>
      </xsd:simpleType>
    </xsd:attribute> 
  </xsd:attributeGroup>
  <xsd:element name="value" type="xsd:integer"/>
  <xsd:element name="accuracy"
               type="xsd:nonNegativeInteger"/>
</xsd:schema>
