<?xml version="1.0" encoding="windows-1251"?>

<!-- Пример требования уникальности значения элемента -->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:complexType name="TemperatureType">
  <xsd:simpleContent>
    <xsd:extension base="xsd:int">
       <xsd:attribute name="scale" type="xsd:string" use="required"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

<xsd:simpleType name="ConditionsType">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="Sunny"/>
    <xsd:enumeration value="Cloudy"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="ForecastType">
    <xsd:sequence minOccurs = "1"
                maxOccurs = "unbounded">
         <xsd:element name = "location" 
                      type = "LocationWithWindType"/>
    </xsd:sequence>
    <xsd:attribute name="date" 
           type="xsd:date" use="optional"/>
</xsd:complexType>

<xsd:complexType name="LocationType">
     <xsd:sequence>
         <xsd:element name="name" type="xsd:string"/>
         <xsd:element name="temperature" type="TemperatureType"/>
         <xsd:element name="conditions" type="ConditionsType"/>
     </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="LocationWithWindType">
  <xsd:complexContent>
    <xsd:extension base="LocationType">
      <xsd:sequence>
        <xsd:element name="wind" 
                     type="xsd:int"
                     minOccurs="0"
                     maxOccurs="1"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:element name="forecast" type="ForecastType">

  <!-- Ограничение уникальности -->
  <xsd:unique name="UniqueNameOfLocation">
    <xsd:selector xpath="location"/>  <!-- Все элементы location -->
    <xsd:field xpath="name"/>     <!-- должны иметь разные значения элемента name -->
  </xsd:unique>

</xsd:element>

</xsd:schema>