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

  <xs:attributeGroup name="ColumnAttributeGroup">
    <xs:attribute ref="match"></xs:attribute>
    <xs:attribute ref="regExp"></xs:attribute>
    <xs:attribute ref="incremental"></xs:attribute>
    <xs:attribute ref="condition"></xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="NodeAttributeGroup">
    <xs:attribute ref ="count"></xs:attribute>
    <xs:attribute ref ="netconf:operation"></xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="TableAttributeGroup">
    <xs:attribute ref ="count"></xs:attribute>
    <xs:attribute ref ="netconf:operation"></xs:attribute>
    <xs:anyAttribute namespace="##any" processContents="skip"></xs:anyAttribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="RowAttributeGroup">
    <xs:attribute ref ="netconf:operation"></xs:attribute>
    <xs:anyAttribute namespace="##any" processContents="skip"></xs:anyAttribute>
  </xs:attributeGroup>


  <xs:attribute name="count" >
    <xs:annotation>
            <xs:documentation>Count attribute used by NETCONF. Numerical value must be not less than 1.</xs:documentation>
    </xs:annotation>
    <xs:simpleType >
      <xs:restriction base="xs:unsignedInt">
        <xs:minInclusive value ="1"></xs:minInclusive>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>

  <xs:attribute name="regExp">
    <xs:annotation>
            <xs:documentation>Regular expression attribute used by NETCONF. String length constraints must be not less than 1.</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="1"></xs:minLength>
      </xs:restriction>
    </xs:simpleType> 
  </xs:attribute>

  <xs:attribute name="match">
    <xs:annotation>
      <xs:documentation>
                Match attribute used by NETCONF, for instance:
        match=¡±more:123¡±
        match=¡±less:123¡±
        match=¡±notLess:123¡±
        match=¡±notMore:123¡±
        match=¡±equal:123¡±
        match=¡±notEqual:123¡±
        match=¡±include:abc¡±
        match=¡±exclude:abc¡±
        match=¡±startWith:abc¡±
        match=¡±endWith:abc¡±

      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:pattern value="^(more|less|notLess|notMore|equal|notEqual|include|exclude|startWith|endWith):.+"></xs:pattern>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>

  <xs:attribute name="condition">
    <xs:annotation>
      <xs:documentation>
        for comware module defined event use.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:maxLength value="16"></xs:maxLength>
        <xs:enumeration value ="more"></xs:enumeration>
        <xs:enumeration value ="less"></xs:enumeration>
        <xs:enumeration value ="notLess"></xs:enumeration>
        <xs:enumeration value ="notMore"></xs:enumeration>
        <xs:enumeration value ="equal"></xs:enumeration>
        <xs:enumeration value ="notEqual"></xs:enumeration>
        <xs:enumeration value ="include"></xs:enumeration>
        <xs:enumeration value ="exclude"></xs:enumeration>
        <xs:enumeration value ="startWith"></xs:enumeration>
        <xs:enumeration value ="endWith"></xs:enumeration>
        <xs:enumeration value ="regExp"></xs:enumeration>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>


  <xs:attribute name="incremental" type="xs:boolean">
    <xs:annotation>
      <xs:documentation>incremental attribute</xs:documentation>
    </xs:annotation>
  </xs:attribute>

  <!-- ip v4 type -->
  <xs:simpleType name="_Ipv4Address">
    <xs:annotation>
            <xs:documentation>IPv4 address </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[1-9][0-9]|0{0,2}[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[1-9][0-9]|0{0,2}[0-9])$"></xs:pattern>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Ipv4Address">
    <xs:simpleContent >
      <xs:extension base="_Ipv4Address">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <!-- MAC type -->
  <xs:simpleType name="_MacAddress">
    <xs:annotation>
            <xs:documentation>MAC address</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="^(([a-fA-F0-9]{1,2}-){5})([a-fA-F0-9]{1,2})$"></xs:pattern>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="MacAddress">
    <xs:simpleContent >
      <xs:extension base="_MacAddress">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- ipv6  type -->
  <xs:simpleType name="_Ipv6Address">
    <xs:annotation>
            <xs:documentation>IPv6 address, with validity check inside.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
    </xs:restriction>
  </xs:simpleType>
  
  <xs:complexType name="Ipv6Address">
    <xs:simpleContent >
      <xs:extension base="_Ipv6Address">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- ipv6 or ipv4 -->
  <xs:simpleType name="_IpAddress">
    <xs:annotation>
            <xs:documentation>IPv4 or IPv6 address </xs:documentation>
    </xs:annotation>
    <xs:union memberTypes="_Ipv4Address _Ipv6Address"></xs:union>
  </xs:simpleType>

  <xs:complexType name="IpAddress">
    <xs:simpleContent >
      <xs:extension base="_IpAddress">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- interface name type -->
  <xs:simpleType name="_InterfaceName">
    <xs:annotation>
      <xs:documentation>
        Interface name. String length constraints must be in range(2..47).
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="^([a-zA-Z][-a-zA-Z0-9]{1,18}[a-zA-Z]|((E1|T1|E3|T3) ))(([1-9][0-9]{0,2}|[0-9])/)?(([1-9][0-9]{0,2}|[0-9])/)?(([1-9][0-9]{0,2}|[0-9])/)?([1-9][0-9]{0,4}|[0-9])(:([1-9][0-9]{0,3}|[0-9]))?(\.([1-9][0-9]{0,3}|[0-9]))?$"></xs:pattern>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="InterfaceName">
    <xs:simpleContent >
      <xs:extension base="_InterfaceName">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- OID type -->
  <xs:simpleType name="OID" >
    <xs:annotation>
            <xs:documentation>OID, with validity check inside.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="ObjectIdentifier">
    <xs:simpleContent >
      <xs:extension base="OID">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- other -->  
  <xs:complexType name="UnsignedInteger32">
    <xs:simpleContent >
      <xs:extension base="xs:unsignedInt">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent> 
  </xs:complexType>
  
  <xs:complexType name="Integer32">
    <xs:simpleContent >
      <xs:extension base="xs:int">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="UnsignedInteger64">
    <xs:simpleContent >
      <xs:extension base="xs:unsignedLong">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="Integer64">
    <xs:simpleContent >
      <xs:extension base="xs:long">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="UnsignedShort">
    <xs:simpleContent >
      <xs:extension base="xs:unsignedShort">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="Short">
    <xs:simpleContent >
      <xs:extension base="xs:short">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="UnsignedChar">
    <xs:simpleContent >
      <xs:extension base="xs:unsignedByte">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="Char">
    <xs:simpleContent >
      <xs:extension base="xs:byte">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="OctectString">
    <xs:simpleContent >
      <xs:extension base="xs:string">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

    <!--String must not contain ?, Tab, and  "\r\n" characters, but can contain escape characters. -->
  <xs:complexType name="String">
    <xs:simpleContent >
      <xs:restriction base="OctectString">
        <xs:pattern value="^[^?&#x09;&#x0d;&#x0a;]*$"></xs:pattern>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>

    <!--String must not contain ?, Tab, and  \r\n characters, but can contain escape characters excluding > , >> and |.-->
  <xs:complexType name="NameString">
    <xs:simpleContent >
      <xs:restriction base="String">
        <xs:pattern value="^([^?&#x09;&#x0d;&#x0a;|&gt;]|[^?&#x09;&#x0d;&#x0a;&gt;]{2,2}|[^?&#x09;&#x0d;&#x0a;]{3,})$"></xs:pattern>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

    <!--String must not contain ?, Tab, \r\n and escape characters, and must not begin or end with space character. -->
  <xs:complexType name="Text">
    <xs:simpleContent >
      <xs:restriction base="OctectString">
        <xs:pattern value="^([^?&#x09;&#x0d;&#x0a; ][^?&#x09;&#x0d;&#x0a;]*[^?&#x09;&#x0d;&#x0a; ]|[^?&#x09;&#x0d;&#x0a; ])$"></xs:pattern>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="EncryptString">
    <xs:simpleContent >
      <xs:restriction base="OctectString">
        <xs:pattern value="^[^?]*$"></xs:pattern>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <!--String must not contain Tab, \r\n and escape characters, and must not begin with ? character.-->
  <xs:complexType name="URLString">
    <xs:simpleContent >
      <xs:restriction base="OctectString">
        <xs:pattern value="^[^?&#x09;&#x0d;&#x0a;][^&#x09;&#x0d;&#x0a;]*$"></xs:pattern>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
    
  <xs:complexType name="Boolean">
    <xs:simpleContent >
      <xs:extension base="xs:boolean">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="DateTime">
    <xs:simpleContent >
      <xs:extension base="xs:dateTime">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:simpleType name="_EnableState">
    <xs:restriction base="xs:string">
      <xs:enumeration value="enable"></xs:enumeration>
      <xs:enumeration value="disable"></xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:complexType name="EnableState">
    <xs:simpleContent >
      <xs:extension base="_EnableState">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>


  <xs:complexType name="OctectString255">
    <xs:simpleContent>
      <xs:restriction base="OctectString">
        <xs:annotation>
          <xs:documentation >String[0 ~ 255]</xs:documentation>
        </xs:annotation>
        <xs:minLength value ="0"/>
        <xs:maxLength value ="255"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <!--Binary -->
  <xs:simpleType name="_Binary">
    <xs:annotation>
      <xs:documentation>base64 binary </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:base64Binary">

    </xs:restriction>
  </xs:simpleType>
  
  <xs:complexType name="Binary">
    <xs:simpleContent>
      <xs:extension base="_Binary">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <!--PortList-->
  <xs:complexType name="PortList">
    <xs:simpleContent>
      <xs:restriction base="Binary">
        <xs:maxLength value="10924"></xs:maxLength>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  <!--PortRange-->
  <xs:simpleType name="_PortRange" >
    <xs:annotation>
            <xs:documentation>_PortRange, for example 1, 2-3, 100-200, with validity check inside.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="PortRange">
    <xs:simpleContent >
      <xs:extension base="_PortRange">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <!--VlanList-->
  <xs:complexType name="VlanList">
    <xs:simpleContent>
      <xs:restriction base="Binary">
        <xs:maxLength value="684"></xs:maxLength>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <!--VlanRange-->
  <xs:simpleType name="_VlanRange" >
    <xs:annotation>
            <xs:documentation>_VlanRange, for example 1,2-3,100-200, with validity check inside.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
    </xs:restriction>
  </xs:simpleType>
  
  <xs:complexType name="VlanRange">
    <xs:simpleContent >
      <xs:extension base="_VlanRange">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <!--Counter32-->
  <xs:complexType name="Counter32">
    <xs:simpleContent>
      <xs:restriction base="UnsignedInteger32">

      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  <!--Counter64-->
  <xs:complexType name="Counter64">
    <xs:simpleContent>
      <xs:restriction base="UnsignedInteger64">

      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  <!--Gauge32-->
  <xs:complexType name="Gauge32">
    <xs:simpleContent>
      <xs:restriction base="UnsignedInteger32">

      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  <!--Gauge64-->
  
  <!--TimeTicks-->
  <xs:complexType name="TimeTicks">
    <xs:simpleContent>
      <xs:restriction base="UnsignedInteger32">

      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <!--VRF-->
  <xs:complexType name="VRF">
    <xs:annotation>
      <xs:documentation>The VRF name.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:restriction base="String">
        <xs:minLength value ="0"/>
        <xs:maxLength value ="31"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <!--VRFIndex-->
  <xs:complexType name="VRFIndex">
    <xs:simpleContent>
      <xs:restriction base="UnsignedShort">

      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  <!--IfIndex-->
  <xs:complexType name="IfIndex">
    <xs:simpleContent>
      <xs:restriction base="UnsignedInteger32">

      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
<!--Date-->
  <xs:complexType name="Date">
    <xs:simpleContent >
      <xs:extension base="xs:date">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!--Time-->
  <xs:complexType name="Time">
    <xs:simpleContent >
      <xs:extension base="xs:time">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!-- IPv4 Mask type -->
  <xs:simpleType name="_Ipv4Mask">
    <xs:annotation>
            <xs:documentation>ipv4 mask, with validity check inside. </xs:documentation>
    </xs:annotation>
	 <xs:restriction base="xs:string">
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="Ipv4Mask">
    <xs:simpleContent >
      <xs:extension base="_Ipv4Mask">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- ACL -->
  <xs:complexType name="ACLName">
    <xs:simpleContent>
      <xs:annotation>
        <xs:documentation>
         	ACL name:length :1¡«63,case-insensitive,must start with a¡«z or A¡«Z
        </xs:documentation>
      </xs:annotation>
      <xs:restriction base="OctectString">
        <xs:minLength value ="1"/>
        <xs:maxLength value ="63"/>
        <xs:pattern value="^([a-zA-Z]{1}.*)$"></xs:pattern>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="ACLNumberBasic">
    <xs:simpleContent>
    	<xs:annotation>
        <xs:documentation>basic ACL 2000¡«2999 </xs:documentation>
      </xs:annotation>
      <xs:restriction base="UnsignedInteger32">
        <xs:minInclusive value="2000"/>
        <xs:maxInclusive value="2999"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="ACLNumberAdvance">
    <xs:simpleContent>
    	<xs:annotation>
        <xs:documentation>advance ACL 3000¡«3999 </xs:documentation>
      </xs:annotation>
      <xs:restriction base="UnsignedInteger32">
        <xs:minInclusive value="3000"/>
        <xs:maxInclusive value="3999"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="ACLNumberMAC">
    <xs:simpleContent>
    	<xs:annotation>
        <xs:documentation>Mac ACL 4000¡«4999 </xs:documentation>
      </xs:annotation>
      <xs:restriction base="UnsignedInteger32">
        <xs:minInclusive value="4000"/>
        <xs:maxInclusive value="4999"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="ACLNumberCustom">
    <xs:simpleContent>
    	<xs:annotation>
        <xs:documentation>custom-defined ACL 5000¡«5999 </xs:documentation>
      </xs:annotation>
      <xs:restriction base="UnsignedInteger32">
        <xs:minInclusive value="5000"/>
        <xs:maxInclusive value="5999"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType> 
  
  <xs:complexType name="ACLNumber">
    <xs:simpleContent>
    	<xs:annotation>
        <xs:documentation>all ACL 2000-5999 </xs:documentation>
      </xs:annotation>
      <xs:restriction base="UnsignedInteger32">
        <xs:minInclusive value="2000"/>
        <xs:maxInclusive value="5999"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="_NameAndIndexUnion">
    <xs:annotation>
      <xs:documentation>Int32 or String </xs:documentation>
    </xs:annotation>
    <xs:union memberTypes="xs:string xs:unsignedInt"></xs:union>
  </xs:simpleType>

  <xs:complexType name="NameAndIndexUnion">
    <xs:simpleContent >
      <xs:annotation>
        <xs:documentation>Int32 or String </xs:documentation>
      </xs:annotation>
      <xs:extension base="_NameAndIndexUnion">
        <xs:attributeGroup ref="ColumnAttributeGroup"></xs:attributeGroup>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="comwareModuleEvent-Type"/>
  <xs:element name="comwareModuleEvent" abstract="true" type="comwareModuleEvent-Type" />
</xs:schema>
