<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsd:schema SYSTEM "http://www.w3.org/2001/XMLSchema.dtd">
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--
- The top-level element.
-
-->
<xsd:element name="smi">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="module"/>
<xsd:element ref="imports" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="typedefs" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="nodes" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="notifications" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="groups" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="compliances" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!--
- Terminal Elements.
-
-->
<xsd:element name="description">
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="reference">
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="format">
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="units">
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="default">
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="access">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="noaccess"/>
<xsd:enumeration value="notifyonly"/>
<xsd:enumeration value="readonly"/>
<xsd:enumeration value="readwrite"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="range">
<xsd:complexType>
<xsd:attribute name="min" type="xsd:integer" use="required"/>
<xsd:attribute name="max" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="namednumber">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="number" type="xsd:integer" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="parent">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="type">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="syntax">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="type"/>
<xsd:element ref="typedef"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="writesyntax">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="type"/>
<xsd:element ref="typedef"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="linkage">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="index" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element ref="augments"/>
<xsd:element ref="reorders"/>
<xsd:element ref="sparse"/>
<xsd:element ref="expands"/>
</xsd:choice>
<xsd:attribute name="implied" default="false">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="true"/>
<xsd:enumeration value="false"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="index">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="augments">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="reorders">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="sparse">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="expands">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="module">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="organization" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="contact" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="revision" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="identity" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="language" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SMIv1"/>
<xsd:enumeration value="SMIv2"/>
<xsd:enumeration value="SMIng"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="organization">
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="contact">
<xsd:simpleType>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="revision">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="description"/>
</xsd:sequence>
<xsd:attribute name="date" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="identity">
<xsd:complexType>
<xsd:attribute name="node" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="imports">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="import" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="import">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="typedefs">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="typedef" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="typedef">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="parent" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="range" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="namednumber" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="default" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="format" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="units" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" default=""/>
<xsd:attribute name="basetype" type="xsd:string" use="required"/>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="nodes">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="node"/>
<xsd:element ref="scalar"/>
<xsd:element ref="table"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="node">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="oid" type="xsd:string" use="required"/>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="scalar">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="syntax"/>
<xsd:element ref="access"/>
<xsd:element ref="default" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="format" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="units" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="description"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="oid" type="xsd:string" use="required"/>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="table">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="description"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="row"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="oid" type="xsd:string" use="required"/>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="row">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="linkage"/>
<xsd:element ref="description"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="column" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="oid" type="xsd:string" use="required"/>
<xsd:attribute name="create" default="false">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="true"/>
<xsd:enumeration value="false"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="column">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="syntax"/>
<xsd:element ref="access"/>
<xsd:element ref="default" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="format" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="units" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="description"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="oid" type="xsd:string" use="required"/>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="notifications">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="notification" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="notification">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="objects"/>
<xsd:element ref="description"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="oid" type="xsd:string" use="required"/>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="objects">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="object" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="object">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="groups">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="group" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="group">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="members"/>
<xsd:element ref="description"/>
<xsd:element ref="reference" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="oid" type="xsd:string" use="required"/>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="members">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="member" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="member">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="compliances">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="compliance" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="compliance">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="description"/>
<xsd:element ref="requires"/>
<xsd:element ref="refinements" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="oid" type="xsd:string" use="required"/>
<xsd:attribute name="status" default="current">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="current"/>
<xsd:enumeration value="deprecated"/>
<xsd:enumeration value="obsolete"/>
<xsd:enumeration value="mandatory"/>
<xsd:enumeration value="optional"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="requires">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="mandatory"/>
<xsd:element ref="option"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="mandatory">
<xsd:complexType>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="option">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="description"/>
</xsd:sequence>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="refinements">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="refinement" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="refinement">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="syntax" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="writesyntax" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="access" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="description"/>
</xsd:sequence>
<xsd:attribute name="module" type="xsd:string" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>