<?xml version="1.0" encoding="gb2312" ?> 
<xs:schema targetNamespace="http://www.h3c.com/netconf/config:1.0"
                  elementFormDefault="qualified"
                  xmlns="http://www.h3c.com/netconf/config:1.0"
                  xmlns:xs="http://www.w3.org/2001/XMLSchema"
                  xmlns:netconf ="urn:ietf:params:xml:ns:netconf:base:1.0" 
                  xmlns:base="http://www.h3c.com/netconf/base:1.0">

  <xs:import namespace="http://www.h3c.com/netconf/base:1.0" schemaLocation="basetype.xsd"></xs:import>
  <xs:import schemaLocation="netconf.xsd" namespace="urn:ietf:params:xml:ns:netconf:base:1.0"></xs:import>

    <!-- Device time zone. Using one of the following formats: "Z", "+HH:MM", "-HH:MM" -->
  <xs:complexType name="DeviceZone">
    <xs:simpleContent >
      <xs:restriction base="base:OctectString">
        <xs:pattern value ="^(Z|[\+\-](2[0-3]|[0-1]?[0-9])(:[0-5]?[0-9]){0,2})$"></xs:pattern>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

    <!-- Name of device time zone. String length constraints must be in range(0..32). -->
  <xs:complexType name="DeviceZoneName">
    <xs:simpleContent >
      <xs:restriction base="base:String">
        <xs:maxLength value ="32"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="month_type">
    <xs:simpleContent>
      <xs:restriction base="base:Integer32">
        <xs:minInclusive value="1"/>
        <xs:maxInclusive value="12"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="day_type">
    <xs:simpleContent>
      <xs:restriction base="base:Integer32">
        <xs:minInclusive value="1"/>
        <xs:maxInclusive value="31"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="hour_type">
    <xs:simpleContent>
      <xs:restriction base="base:Integer32">
        <xs:minInclusive value="0"/>
        <xs:maxInclusive value="23"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="minute_type">
    <xs:simpleContent>
      <xs:restriction base="base:Integer32">
        <xs:minInclusive value="0"/>
        <xs:maxInclusive value="59"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="second_type">
    <xs:simpleContent>
      <xs:restriction base="base:Integer32">
        <xs:minInclusive value="0"/>
        <xs:maxInclusive value="59"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- chassis slot cpu ID(0~65535) -->
  <xs:complexType name="_PositionID">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:annotation>
          <xs:documentation >chassis¡¢slot¡¢CPU ID[0-65535]</xs:documentation>
        </xs:annotation>
        <xs:minInclusive value ="0"></xs:minInclusive>
        <xs:maxInclusive value="65535"></xs:maxInclusive>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="_GroupID">
    <xs:annotation>
	  <xs:documentation >backup group ID[0-31]</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:unsignedInt">
	  <xs:minInclusive value ="0"></xs:minInclusive>
	  <xs:maxInclusive value="31"></xs:maxInclusive>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="_SpecialID">
    <xs:annotation>
      <xs:documentation >backup group ID£¨65535:auto allocated ID£©</xs:documentation>
    </xs:annotation>
	<xs:restriction base="xs:unsignedInt">
      <xs:minInclusive value="65535"></xs:minInclusive>
      <xs:maxInclusive value="65535"></xs:maxInclusive>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="_FailoverGroupID">
    <xs:annotation>
      <xs:documentation>backup group ID[0-31] or SpecialID(65535) </xs:documentation>
    </xs:annotation>
    <xs:union memberTypes="_GroupID _SpecialID"></xs:union>
  </xs:simpleType>
  
  <!-- backup group ID[0,31] or 65535 -->
  <xs:complexType name="FailoverGroupID">
    <xs:simpleContent >
      <xs:extension base="_FailoverGroupID">
        <xs:attributeGroup ref="base:ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  
  <xs:element name="Device">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Base" minOccurs="0">
          <xs:annotation>
            <xs:documentation>This table contains device information.</xs:documentation>
          </xs:annotation>
          <xs:complexType >
            <xs:all>
              <xs:element name="HostName" minOccurs="0" nillable="true" >
                <xs:annotation>
                  <xs:documentation >Device name. String length constraints must be in range(0..64). String must not begin and end with space character.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:restriction base="base:Text">
                      <xs:maxLength value="64"></xs:maxLength>
                    </xs:restriction>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="TimeZone" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Zone" minOccurs="0"  type="DeviceZone" nillable="true" >
                      <xs:annotation>
                        <xs:documentation>
                          Time zone.Using one of the following formats:
                          Z for the UTC.
                          +HH:MM:SS for east time zone.
                          -HH:MM:SS for west time zone.
                        </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ZoneName" minOccurs="0"   type="DeviceZoneName"  nillable="true" >
                      <xs:annotation>
                        <xs:documentation>Time zone name. String length constraints must be in range(0..32).</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
              <xs:element minOccurs="0" name="ClockProtocol" >
                <xs:annotation>
                  <xs:documentation>System time source.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Protocol" minOccurs="0" nillable="true" >
                      <xs:annotation>
                        <xs:documentation>Time protocol</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:annotation>
                          <xs:documentation>
                            Time protocol as follows:
                            2 Manually set the system time (None)
                            3 Use the Network Time Protocol (NTP)
                            4 Use the Precision Time Protocol (PTP)
                          </xs:documentation>
                        </xs:annotation>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:enumeration value="2"></xs:enumeration>
                            <xs:enumeration value="3"></xs:enumeration>
                            <xs:enumeration value="4"></xs:enumeration>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="MDCID" minOccurs="0"  nillable="true">
                      <xs:annotation>
                        <xs:documentation>Identification of the MDC used as the time source.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:annotation>
                          <xs:documentation>
                            Unsigned integer. Numerical value must be in range(1..65535).
                          </xs:documentation>
                        </xs:annotation>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedShort">
                            <xs:minInclusive value="1"></xs:minInclusive>
                          </xs:restriction> 
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:all>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
      
        <!-- Summer Time Begin-->
        <xs:element name="SummerTime" >
          <xs:complexType>
            <xs:all>
              <xs:element name="Name" minOccurs="0"  nillable="true"  >
                <xs:annotation>
                  <xs:documentation >Name for the daylight saving time. String length constraints must be in range(1..32).</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:restriction base="base:Text">
                      <xs:minLength value="1"></xs:minLength>
                      <xs:maxLength value="32"></xs:maxLength>
                    </xs:restriction>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="AddTime" minOccurs="0" nillable="true" type="base:Time">
                <xs:annotation>
                  <xs:documentation>The time to be added to the standard time. </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element  name="DateBased" minOccurs="0" >
                <xs:complexType>
                  <xs:all>
                    <xs:element name="BeginMonth" minOccurs="0" nillable="true" type="month_type">
                      <xs:annotation>
                        <xs:documentation>Begin month. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="BeginDay" minOccurs="0"  nillable="true" type="day_type">
                      <xs:annotation>
                        <xs:documentation>Begin day. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                     <xs:element name="BeginHour" minOccurs="0" nillable="true" type="hour_type">
                      <xs:annotation>
                        <xs:documentation>Begin hour. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="BeginMinute" minOccurs="0"  nillable="true" type="minute_type">
                      <xs:annotation>
                        <xs:documentation>Begin minute. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="BeginSecond" minOccurs="0"  nillable="true" type="second_type">
                      <xs:annotation>
                        <xs:documentation>Begin second.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="EndMonth" minOccurs="0" nillable="true" type="month_type">
                      <xs:annotation>
                        <xs:documentation>End month.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="EndDay" minOccurs="0"  nillable="true" type="day_type">
                      <xs:annotation>
                        <xs:documentation>End day.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="EndHour" minOccurs="0" nillable="true" type="hour_type">
                      <xs:annotation>
                        <xs:documentation>End hour.</xs:documentation>
                      </xs:annotation>
                    </xs:element> 
                    <xs:element name="EndMinute" minOccurs="0"  nillable="true" type="minute_type">
                      <xs:annotation>
                        <xs:documentation>End minute.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="EndSecond" minOccurs="0"  nillable="true" type="second_type">
                      <xs:annotation>
                        <xs:documentation>End second.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
              <xs:element name="WeekBased" minOccurs="0" >
                <xs:complexType>
                  <xs:all>
                    <xs:element name="BeginMonth" minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Begin month.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:Integer32">
                            <xs:minInclusive value="1"/>
                            <xs:maxInclusive value="12"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="BeginWeek" minOccurs="0"  nillable="true">
                      <xs:annotation>
                        <xs:documentation>Begin week of the month.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:Integer32">
                            <xs:minInclusive value="1"/>
                            <xs:maxInclusive value="6"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="BeginWeekDay" minOccurs="0"  nillable="true">
                      <xs:annotation>
                        <xs:documentation>Begin day of week.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:Integer32">
                            <xs:minInclusive value="0"/>
                            <xs:maxInclusive value="6"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="BeginHour" minOccurs="0" nillable="true" type="hour_type">
                      <xs:annotation>
                        <xs:documentation>Begin hour.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="BeginMinute" minOccurs="0"  nillable="true" type="minute_type">
                      <xs:annotation>
                        <xs:documentation> Begin minute.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="BeginSecond" minOccurs="0"  nillable="true" type="second_type">
                      <xs:annotation>
                        <xs:documentation>Begin second.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="EndMonth" minOccurs="0"  nillable="true">
                      <xs:annotation>
                        <xs:documentation>End month.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:Integer32">
                            <xs:minInclusive value="1"/>
                            <xs:maxInclusive value="12"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="EndWeek" minOccurs="0"  nillable="true" >
                      <xs:annotation>
                        <xs:documentation>End week of the month.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:Integer32">
                            <xs:minInclusive value="1"/>
                            <xs:maxInclusive value="6"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="EndWeekDay" minOccurs="0"  nillable="true" >
                      <xs:annotation>
                        <xs:documentation>End day of week.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:Integer32">
                            <xs:minInclusive value="0"/>
                            <xs:maxInclusive value="6"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  <xs:element name="EndHour" minOccurs="0" nillable="true" type="hour_type">
                    <xs:annotation>
                      <xs:documentation>End hour.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EndMinute" minOccurs="0"  nillable="true" type="minute_type">
                    <xs:annotation>
                      <xs:documentation>End minute.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EndSecond" minOccurs="0"  nillable="true" type="second_type">
                    <xs:annotation>
                      <xs:documentation>End second.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:all>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>  
      <!-- Summer Time end -->
        
        <!--FailoverGroup Begin-->
        <xs:element name="FailoverGroups" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="FailoverGroup" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="ID" nillable="true" minOccurs="0" type="FailoverGroupID">
                      <xs:annotation>
                        <xs:documentation>backup group ID,[0,31] or 65535</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Name" nillable="true" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>backup group name£¬1~63£¬index</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:minLength value="1"/>
                            <xs:maxLength value="63"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="PrimaryNode" minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>main node of backup group</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:all>
                          <xs:element name="Chassis" nillable="true" type="_PositionID">
                            <xs:annotation>
                              <xs:documentation>chassis ID</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="Slot" nillable="true" type="_PositionID">
                            <xs:annotation>
                              <xs:documentation>slot ID</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="CPUID" nillable="true" type="_PositionID">
                            <xs:annotation>
                              <xs:documentation>CPU ID</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                        </xs:all>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="SecondaryNode" minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>backup node of backup group</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:all>
                          <xs:element name="Chassis" nillable="true" type="_PositionID">
                            <xs:annotation>
                              <xs:documentation>chassis ID</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="Slot" nillable="true" type="_PositionID">
                            <xs:annotation>
                              <xs:documentation>slot ID</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="CPUID" nillable="true" type="_PositionID">
                            <xs:annotation>
                              <xs:documentation>CPU ID</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                        </xs:all>
                      </xs:complexType>
                    </xs:element>                   
                  </xs:all>
                  <xs:attributeGroup ref="base:RowAttributeGroup"/>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"/>
          </xs:complexType>
        </xs:element>
        <!--FailoverGroup End-->
        <!--TemperatureSensors Begin-->
        <xs:element name="TemperatureSensors" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="Sensor" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Chassis" minOccurs="0" type="base:UnsignedInteger32" nillable="true">
                      <xs:annotation>
                        <xs:documentation>ID of the member device where the entity resides.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Slot" minOccurs="0" type="base:UnsignedInteger32" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Slot number of the device node.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="CPUID" minOccurs="0" type="base:UnsignedInteger32" nillable="true">
                      <xs:annotation>
                        <xs:documentation>CPU ID</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="SensorType" minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Sensor type</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:minInclusive value="0"></xs:minInclusive>
                            <xs:maxInclusive value="2"></xs:maxInclusive>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="SensorIndex" type="base:UnsignedInteger32"  minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Sensor ID</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="LowerLimit" type="base:Integer32" minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Low-temperature threshold</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="WarningLimit" type="base:Integer32" minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>High-temperature warning</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="AlarmLimit" type="base:Integer32" minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>High-temperature alarming threshold</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                  <xs:attributeGroup ref="base:RowAttributeGroup"/>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"/>
          </xs:complexType>
        </xs:element>
        <!--TemperatureSensors End-->
        <!--FanDirections Start-->
        <xs:element name="FanDirections" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="Fan" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Chassis" minOccurs="0" type="base:UnsignedInteger32" nillable="true">
                      <xs:annotation>
                        <xs:documentation>ID of the member device where the entity resides..</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Slot" minOccurs="0" type="base:UnsignedInteger32" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Slot number of the device node.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="CPUID" minOccurs="0" type="base:UnsignedInteger32" nillable="true">
                      <xs:annotation>
                        <xs:documentation>CPU ID</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name ="Direction" minOccurs="0" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Preferred airflow direction</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:enumeration value="1"/>
                            <xs:enumeration value="2"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:all>
                  <xs:attributeGroup ref="base:RowAttributeGroup"/>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"/>
          </xs:complexType>
        </xs:element>
        <!--FanDirections end-->
      </xs:choice>
      <xs:attributeGroup ref="base:NodeAttributeGroup"></xs:attributeGroup>
    </xs:complexType>
  </xs:element>


</xs:schema>
