<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="urn:semi-org:xsd.SEDD" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:smn="urn:semi-org:xsd.SMN" targetNamespace="urn:semi-org:xsd.SEDD">
  <!--
NOTICE: SEMI makes no warranties or representations as to the suitability of the standards set forth herein for any particular application. The determination of the suitability of the standard is solely the responsibility of the user. Users are cautioned to refer to manufacturer's instructions, product labels, product data sheets, and other relevant literature, respecting any materials or equipment mentioned herein. These standards are subject to change without notice.

By publication of this standard, Semiconductor Equipment and Materials International (SEMI) takes no position respecting the validity of any patent rights or copyrights asserted in connection with any items mentioned in this standard. Users of this standard are expressly advised that determination of any such patent rights or copyrights, and the risk of infringement of such rights are entirely their own responsibility.
-->
  <xs:annotation>
    <xs:documentation>
      SEDD Schema
      Complementary File for SECS Equipment Data Dictionary (SEDD)

      The name of this file is of the form SEDD-Schema-mmyy.xsd, where mmyy is the publication date of the SEDD specification that first contained this file.

      This XML schema file is the SEDD Schema. It specifies the content and format for a SECS Equipment Data Dictionary (SEDD). An SEDD is a description, in XML format, of all the events, data, and alarms available on the production equipment via the SECS interface. Anyone creating an SEDD is expected to ensure that validation using the SEDD Schema will identify no errors. Please note that XML schemas cannot test for all requirements that are placed on the SEDD. The implementer should also satisfy all additional, related requirements stated within this schema and in the parent Specification.

      This XML schema file references a specific version of the SECS Message Notation schema file, E173-0415-SECSIIMessageNotation-Schema.xsd. This referenced schema must be located
      in the same directory as this schema file.

      The following requirements are not specific to a single XML definition:
      o Enumerations - An ENU element shall be used in the applicable VariableFormat to document any DataVariable, StatusVariable, EquipmentConstant, or RVP that represents an enumeration.
      o Bit Fields - A BIT element shall be used in the applicable VariableFormat to document any DataVariable, StatusVariable, EquipmentConstant, or RVP that represents a bit field.
      o Units - If there are multiple units specified for a data variable, status variable, equipment constant, or RVP, then the first units listed shall apply to any minimum, maximum, and/or default values that are provided.  Note that multiple units may exist in the case where the user can configure the equipment to support different units.  Because the SEDD is intended to be static data, independent of equipment configuration, the SEDD needs to list all possible units.
      o Nillable - Elements defined with nillable="true" included shall be null values only when specifically allowed (see the xs:documentation associated with each element definition below).
      - Note: In this schema, when null values are allowed, it is generally restricted to non-string values, including complex types.
      o Empty Elements - Empty elements shall not be provided except when specifically allowed (see the xs:documentation associated with each element definition below).
      - Note: In this schema, when empty elements are allowed, they are generally string elements.
    </xs:documentation>
    <!--Note: As an example, a null (or nil) value is represented this way: <StateTransition xsi:nil="true"/>-->
    <!--Note: As an example, an empty element is represented this way: <EquipmentID/>, which is equivalent to: <EquipmentID></EquipmentID>-->
  </xs:annotation>
  <xs:import namespace="urn:semi-org:xsd.SMN" schemaLocation="E173-0415-SECSIIMessageNotation-Schema.xsd"/>
  <xs:element name="DataDictionary">
    <xs:annotation>
      <xs:documentation>There shall be one DataDictionary structure per SEDD File</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="SEDDHeader">
          <xs:annotation>
            <xs:documentation>The SEDDHeader section of the SEDD provides information to help identify the contents of the SEDD file and link it to the corresponding equipment.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="MDLN">
                <xs:annotation>
                  <xs:documentation>MDLN - equipment model type. This string shall match the MDLN value obtained from the corresponding equipment in S1F2 or S1F13/F14 communications.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="20"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="SOFTREV">
                <xs:annotation>
                  <xs:documentation>SOFTREV - software revision code. This string shall match the SOFTREV value obtained from the corresponding equipment in S1F2 or S1F13/F14 communications.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="20"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="EquipmentID" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>EquipmentID - equipment supplier assigned equipment identifier.  For some production equipment types, differences in physical configuration can make the SEDD for each instance unique. If the SEDD pertains to a single equipment instance, this field contains the identifier of that equipment as designated by the equipment supplier. If the SEDD pertains to a group of equipment as designated by the MDLN, then this field shall be excluded. </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="80"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Supplier">
                <xs:annotation>
                  <xs:documentation>Supplier - company that makes the equipment</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="80"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="CreateDate" type="xs:date">
                <xs:annotation>
                  <xs:documentation>CreateDate - date the SEDD file was created, in the form “YYYY-MM-DD” where YYYY is the year, MM the month, and DD the day of the month, for example “2013-10-24”</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Description">
                <xs:annotation>
                  <xs:documentation>Description - text describing the SEDD file subject and content</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="4096"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="CollectionEvents">
          <xs:annotation>
            <xs:documentation>The CollectionEvents section of the SEDD holds a definition for each SECS-II collection event that can be reported from the equipment.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="CollectionEvent" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>CollectionEvent describes one event that can be reported from the production equipment.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="CEID" type="xs:unsignedLong">
                      <xs:annotation>
                        <xs:documentation>CEID - collection event identifier, unique within the set of CollectionEvents. The set of CEIDs obtained from the corresponding equipment via S1F23/F24 shall match the set documented in this file, if that message transaction is supported.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="CENAME" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>CENAME - collection event name. This value shall match the CENAME for the corresponding CEID obtained from the corresponding equipment via S1F23/F24, if that message transaction is supported. The maximum length is governed by the SECS-II implementation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="VALIDDVS" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>VALIDDVS - list of one or more identifiers of data variables that are valid for the event. This list of VID values shall match that obtained from the corresponding equipment via S1F23/F24, if that message transaction is supported.  If there are no VIDs in the list, then this shall be included as an empty element. </xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="VID" minOccurs="0" maxOccurs="unbounded">
                            <xs:annotation>
                              <xs:documentation>VID - identifier for a data variable (DV) that is valid for the containing event.</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:unsignedLong">
                                  <xs:attribute name="name" type="xs:string" use="optional"/>
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="RelevantVariables" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>RelevantVariables - List of one or more ECIDs and SVIDs of variables the equipment supplier has designated as relevant to the associated event. The implementer is not required to include this element. </xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="VID" minOccurs="0" maxOccurs="unbounded">
                            <xs:annotation>
                              <xs:documentation>VID - identifier for the StatusVariable or EquipmentConstant that is relevant to the associated event.</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:unsignedLong">
                                  <xs:attribute name="name" type="xs:string" use="optional"/>
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="StateTransition" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>StateTransition - a set of fields that describe the context of the event by associating it with a transition in a state model.  The contents of StateTransition are not required in cases where the event is not associated with a state model or the implementer does not wish to provide the information.  When the contents are not provided, this element shall be excluded.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="StateModel">
                            <xs:annotation>
                              <xs:documentation>StateModel - name of the state model associated with this event, maximum 80 characters</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:maxLength value="80"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="TransitionID">
                            <xs:annotation>
                              <xs:documentation>Transition - identifier of the state model transition associated with the event, maximum 80 characters</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:maxLength value="80"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="PreviousState">
                            <xs:annotation>
                              <xs:documentation>PreviousState - the state from which the system transitioned upon the event, maximum 80 characters</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:maxLength value="80"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="NewState">
                            <xs:annotation>
                              <xs:documentation>NewState - the state to which the system transitioned upon the event, maximum 80 characters</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:maxLength value="80"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Description">
                      <xs:annotation>
                        <xs:documentation>Description - text describing the collection event, maximum 4096 characters</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="4096"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Source" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Source - the part of the equipment to which the event applies, maximum 1024 characters. This might point to the equipment as a whole, a load port, a process chamber, etc. At the implementer's discretion, the Source element may be excluded. </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="1024"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="SEMIStandard" type="SEMIStandardType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>SEMIStandard - the SEMI Standard that specifies the collection event. For example, E30-0418. If the collection event is not associated with a SEMI Standard, then this element shall be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="WellKnownName" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>WellKnownName - Well-known name for the collection event. This value is used to identify the collection event if it is defined as part of another specification. If the collection event is not defined by another specification, this element may be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
          <xs:unique name="UniqueCEID">
            <xs:annotation>
              <xs:documentation>The CEID values defined for CollectionEvent elements shall be unique.  This constraint enforces that requirement.</xs:documentation>
            </xs:annotation>
            <xs:selector xpath="CollectionEvent"/>
            <xs:field xpath="CEID"/>
          </xs:unique>
        </xs:element>
        <xs:element name="DataVariables">
          <xs:annotation>
            <xs:documentation>The DataVariables section of the SEDD holds a definition for each data variable available to be reported with SECS-II collection events.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="DataVariable" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>DataVariable describes one data variable that can be reported in a collection event. A data variable is valid only when collected with certain collection events.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="VID" type="xs:unsignedLong">
                      <xs:annotation>
                        <xs:documentation>VID - data variable identifier, unique within the set of variables (VID, SVID, ECID). The set of VIDs shall match that obtained from the corresponding equipment via S1F21/F22, if that message transaction is supported.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="DVVALNAME" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>DVVALNAME - data variable name. This value shall match the DVVALNAME for the corresponding VID obtained from the corresponding equipment via S1F21/F22, if that message transaction is supported. The maximum length is governed by the SECS-II implementation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="UNITS" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>UNITS - set of zero or more units that may apply to this data variable. If units are present, the set shall contain only one item unless the units are configurable by the user. If the data variable is unitless, then no UNITS shall be included.  If the S1F21/F22 message transaction is supported, the UNITS for this data variable from that message shall match one of this set of units. The maximum length of each string is governed by the SECS-II implementation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Format">
                      <xs:annotation>
                        <xs:documentation>Format - the name of the VariableFormat definition that corresponds to the type and structure of this variable, maximum 80 characters.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="80"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="MinValue" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>MinValue - the minimum value that this variable can contain. The value is represented as a string.  If no minimum applies (e.g., if the variable is not a scalar value), then this field shall be excluded.   If a MinValue is supplied and the data variable supports multiple units, then the first UNITS value listed shall apply to the MinValue.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="MaxValue" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>MaxValue - the maximum value that this variable can contain. The value is represented as a string.  If no maximum applies (e.g., if the variable is not a scalar value), then this field shall be excluded.  This is equivalent to a zero-length string.   If a MaxValue is supplied and the data variable supports multiple units, then the first UNITS value listed shall apply to the MaxValue.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Description">
                      <xs:annotation>
                        <xs:documentation>Description - text describing the data variable, maximum 4096 characters</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="4096"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Source" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Source - the part of the equipment to which the data variable applies, maximum 1024 characters. This might point to the equipment as a whole, a load port, a process chamber, etc. At the implementer's discretion, the Source element may be excluded. </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="1024"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="SEMIStandard" type="SEMIStandardType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>SEMIStandard - the SEMI Standard that specifies the data variable. For example, E30-0418. If the data variable is not associated with a SEMI Standard, then this element shall be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="WellKnownName" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>WellKnownName - Well-known name for the data variable. This value is used to identify the data variable if it is defined as part of another specification. If the data variable is not defined by another specification, this element may be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="StatusVariables">
          <xs:annotation>
            <xs:documentation>The StatusVariables section of the SEDD holds a definition for each status variable available to be reported with SECS-II collection events and trace data messages.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="StatusVariable" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>StatusVariable describes one status variable that can be reported in a collection event. A status variable is valid for collection on any event or at any time.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="SVID" type="xs:unsignedLong">
                      <xs:annotation>
                        <xs:documentation>SVID - identifier of the status variable, unique within the set of variables (VID, SVID, ECID). The set of SVID values shall match that obtained from the corresponding equipment via S1F11/F12.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="SVNAME" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>SVNAME - name of the status variable. This value shall match the SVNAME for the corresponding SVID obtained from the corresponding equipment via S1F11/F12. The maximum length is governed by the SECS-II implementation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="UNITS" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>UNITS - set of zero or more units that may apply to this status variable. If units are present, the set shall contain only one item unless the units are configurable by the user. If the status variable is unitless, then no UNITS shall be included.  If the S1F11/F12 message transaction is supported, the UNITS for this status variable from that message shall match one of this set of units. The maximum length of each string is governed by the SECS-II implementation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Format">
                      <xs:annotation>
                        <xs:documentation>Format - the name of the VariableFormat definition that corresponds to the type and structure of this variable, maximum 80 characters.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="80"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="MinValue" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>MinValue - the minimum value that this variable can contain. The value is represented as a string.  If no minimum applies (e.g., if the variable is not a scalar value), then this field shall be excluded.   If a MinValue is supplied and the status variable supports multiple units, then the first UNITS value listed shall apply to the MinValue.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="MaxValue" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>MaxValue - the maximum value that this variable can contain. The value is represented as a string.  If no maximum applies (e.g., if the variable is not a scalar value), then this field shall be excluded.   If a MaxValue is supplied and the status variable supports multiple units, then the first UNITS value listed shall apply to the MaxValue.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Description">
                      <xs:annotation>
                        <xs:documentation>Description - text describing the status variable, maximum 4096 characters</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="4096"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Source" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Source - the part of the equipment to which the status variable applies, maximum 1024 characters. This might point to the equipment as a whole, a load port, a process chamber, etc. At the implementer's discretion, the Source element may be excluded. </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="1024"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="SEMIStandard" type="SEMIStandardType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>SEMIStandard - the SEMI Standard that specifies the status variable. For example, E30-0418. If the status variable is not associated with a SEMI Standard, then this element shall be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="WellKnownName" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>WellKnownName - Well-known name for the status variable. This value is used to identify the status variable if it is defined as part of another specification. If the status variable is not defined by another specification, this element may be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="EquipmentConstants">
          <xs:annotation>
            <xs:documentation>The EquipmentConstants section of the SEDD holds a definition for each equipment constant available to be reported with SECS-II collection events.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="EquipmentConstant" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>EquipmentConstant describes one equipment constant that can be reported in a collection event. An equipment constant is valid for collection on any event or at any time. It can also be set remotely via the SECS-II interface.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="ECID" type="xs:unsignedLong">
                      <xs:annotation>
                        <xs:documentation>ECID - equipment constant identifier, unique within the set of variables (VID, SVID, ECID). The set of ECIDs shall match that obtained from the corresponding equipment via S2F29/F30.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ECNAME" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>ECNAME - equipment constant name. This value shall match the ECNAME for the corresponding ECID obtained from the corresponding equipment via S2F29/F30. The maximum length is governed by the SECS-II implementation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ECMIN" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>ECMIN - the minimum value that this variable can contain. This value shall match the ECMIN for the corresponding ECID obtained from the corresponding equipment via S2F29/F30. The value is represented as a string.  If no minimum applies (e.g., if the variable is not a scalar value), then this field shall be excluded.   If an ECMIN value is supplied and the equipment constant supports multiple units, then the first UNITS value listed shall apply to the ECMIN value.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ECMAX" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>ECMAX - the maximum value that this variable can contain. This value shall match the ECMAX for the corresponding ECID obtained from the corresponding equipment via S2F29/F30. The value is represented as a string.  If no maximum applies (e.g., if the variable is not a scalar value), then this field shall be excluded.   If an ECMAX value is supplied and the equipment constant supports multiple units, then the first UNITS value listed shall apply to the ECMAX value.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ECDEF" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>ECDEF - the default value of the equipment constant. This value shall match the ECDEF for the corresponding ECID obtained from the corresponding equipment via S2F29/F30.  If no default value applies, then this field shall be excluded.  If the equipment constant supports multiple units, then the first UNITS value listed shall apply to the ECDEF value. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="UNITS" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>UNITS - set of zero or more units that may apply to this equipment constant. If units are present, the set shall contain only one item unless the units are configurable by the user. If the equipment constant is unitless, then no UNITS shall be included.  If the S2F29/F30 message transaction is supported, the UNITS for this equipment constant from that message shall match one of this set of units. The maximum length of each string is governed by the SECS-II implementation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Format">
                      <xs:annotation>
                        <xs:documentation>Format - the name of the VariableFormat definition that corresponds to the type and structure of this variable, maximum 80 characters.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="80"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Description">
                      <xs:annotation>
                        <xs:documentation>Description - text describing the equipment constant, maximum 4096 characters</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="4096"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Source" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Source - the part of the equipment to which the equipment constant applies, maximum 1024 characters. This might point to the equipment as a whole, a load port, a process chamber, etc. At the implementer's discretion, the Source element may be excluded. </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="1024"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="SEMIStandard" type="SEMIStandardType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>SEMIStandard - the SEMI Standard that specifies the equipment constant. For example, E30-0418. If the equipment constant is not associated with a SEMI Standard, then this element shall be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="WellKnownName" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>WellKnownName - Well-known name for the equipment constant. This value is used to identify the equipment constant if it is defined as part of another specification. If the equipment constant is not defined by another specification, this element may be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Alarms">
          <xs:annotation>
            <xs:documentation>The Alarms section of the SEDD holds a definition for each SECS-II Stream 5 alarm.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Alarm" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>Alarm describes a single alarm that may be reported by the equipment.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="ALCD" type="xs:byte">
                      <xs:annotation>
                        <xs:documentation>ALCD - The alarm code provided in the alarm report, unique within the set of Alarm elements; bit 8 is always zero. This value shall match the ALCD for the corresponding ALID obtained from the corresponding equipment via S5F5/F6. Selected predefined ALCD values for bits 1 through 7 are provided in SEMI E5.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ALID" type="xs:unsignedLong">
                      <xs:annotation>
                        <xs:documentation>ALID - identifier of the alarm provided in the alarm report. The set of ALIDs shall match the set of ALIDs obtained from the corresponding equipment via S5F5/F6</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ALTX">
                      <xs:annotation>
                        <xs:documentation>ALTX - Alarm text provided in the alarm report. This value shall match the ALTX for the corresponding ALID obtained from the corresponding equipment via S5F5/F6. The maximum length is specified in SEMI E5 (currently 120 characters).</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="120"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="AlarmName" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>AlarmName - alarm name. This value shall be a human-readable name to the corresponding ALID obtained from the corresponding equipment via S5F5/F6.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="SetEvent" type="xs:unsignedLong" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>SetEvent - CEID of the event that is reported when the alarm is set.  If no CEID is assigned, the SetEvent shall be excluded. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="ClearEvent" type="xs:unsignedLong" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>ClearEvent - CEID of the event that is reported when the alarm is cleared.  If no CEID is assigned, the ClearEvent shall be excluded. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Description">
                      <xs:annotation>
                        <xs:documentation>Description - text describing the alarm, maximum 4096 characters</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="4096"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Source" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Source - the part of the equipment to which the alarm applies, maximum 1024 characters. This might point to the equipment as a whole, a load port, a process chamber, etc. At the implementer's discretion, the Source element may be excluded. </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="1024"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="SEMIStandard" type="SEMIStandardType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>SEMIStandard - the SEMI Standard that specifies the alarm. For example, E30-0418. If the alarm is not associated with a SEMI Standard, then this element shall be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="WellKnownName" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>WellKnownName - Well-known name for the alarm. This value is used to identify the alarm if it is defined as part of another specification. If the alarm is not defined by another specification, this element may be excluded.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
          <xs:unique name="UniqueALID">
            <xs:annotation>
              <xs:documentation>The ALID values defined for Alarm elements shall be unique.  This constraint enforces that requirement.</xs:documentation>
            </xs:annotation>
            <xs:selector xpath="Alarm"/>
            <xs:field xpath="ALID"/>
          </xs:unique>
        </xs:element>
        <xs:element name="RecipeVariableParameters" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>The RecipeVariableParameters section of the SEDD contains a definition for each recipe variable parameter that can be used to adjust the settings in a process recipe for an execution of that recipe. The RecipeVariableParameters element may occur multiple times in the SEDD file. There shall be one RecipeVariableParameters element for each different RecipeType supported by the equipment.  Each RecipeVariableParameters section of the SEDD holds elements that describe the production equipment’s RVPs associated with one RecipeType. Each RecipeType may support a different set of RVPs.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="RVP" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>RVP describes one recipe variable parameter that can be set at runtime via the SECS-II interface (e.g. using E40 job create messages).</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="RVPName">
                      <xs:annotation>
                        <xs:documentation>Name - the name of the RVP, unique within this RecipeVariableParameters element.  SEMI E5 defines the equivalent RCPPARNM to have a maximum length of 256 characters.  The RVPName may be the actual name of the parameter or it may be a pattern containing placeholders.  Please see the documentation for the attribute RVPNamePattern below for more information. </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="256"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="MinValue" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>MinValue - the minimum value that this variable can contain. If no minimum applies (e.g., if the variable is not a scalar value), then this field shall be excluded.   If a MinValue is supplied and the RVP supports multiple units, then the first Units value listed shall apply to the MinValue.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="MaxValue" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>MaxValue - the maximum value that this variable can contain. If no maximum applies (e.g., if the variable is not a scalar value), then this field shall be excluded.   If a MaxValue is supplied and the RVP supports multiple units, then the first Units value listed shall apply to the MaxValue.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Description">
                      <xs:annotation>
                        <xs:documentation>Description - text describing the RVP, maximum 4096 characters</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="4096"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Source" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Source - the part of the equipment to which the RVP applies, maximum 1024 characters. This might point to the equipment as a whole, a load port, a process chamber, etc. At the implementer's discretion, the Source element may be excluded. </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="1024"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Format" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>Format - the name of the VariableFormat definition that corresponds to the type and structure of this variable, maximum 80 characters.  It is possible that an RVP may have multiple allowable formats.  If multiple formats are supported by the production equipment, then multiple Format definitions shall be included.  </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="80"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="Units" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>Units - set of zero or more units that may apply to this RVP. If units are present, the set shall contain only one item unless the units are configurable by the user. If the RVP is unitless, then no UNITS shall be included.  If there are multiple items, then the host is responsible to determine the one currently configured. The maximum length of each string is governed by the SECS-II implementation.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="RVPNamePattern" type="xs:boolean" use="required">
                    <xs:annotation>
                      <xs:documentation>RVPNamePattern - If 'false', the RVPName is the actual name of the RVP.  If 'true', the RVPName represents a collection of names and contains placeholders that, when replaced, result in the actual name of the RVP.  For example, the RVPName might be given as Step%%EtchTime where the step number is represented by the placeholder %% = 01-99.  A placeholder may be one or more reserved characters and may represent a fixed number or a variable number of characters in the actual name of the RVP.  If RVPNamePattern is 'true', then the RVPName pattern and placeholders shall be explained in the RVP Description element or in the interface documentation.</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="RecipeType" use="required">
              <xs:annotation>
                <xs:documentation>RecipeType - a string value that is used to differentiate the instances of RecipeVariableParameters. Members of a recipe type shall all support the same set of RVPs.  Each RecipeType value must be unique within the SEDD. If there is only one recipe type supported by the equipment, the RecipeType attribute can be an empty element.  This is equivalent to a zero-length string. </xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:maxLength value="80"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
          <xs:unique name="UniqueRVPName">
            <xs:annotation>
              <xs:documentation>The RVPName values defined for RVP elements shall be unique.  This constraint enforces that requirement.</xs:documentation>
            </xs:annotation>
            <xs:selector xpath="RVP"/>
            <xs:field xpath="RVPName"/>
          </xs:unique>
        </xs:element>
        <xs:element name="VariableFormats">
          <xs:annotation>
            <xs:documentation>VariableFormats contains a list of detailed definitions of the formats of each variable defined for this production equipment.  Each VariableFormat should be referenced in one or more Format fields for StatusVariables, DataVariables, EquipmentConstants, and/or RecipeVariableParameters. </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="VariableFormat" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>A VariableFormat describes the SECS-II elements that make up the variable value when it is reported in a collection event.  The FormatName field is limited to 80 characters and must be unique for the set of VariableFormat elements. It is referenced in the Format fields for each of the four types of variables described in the SEDD.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="FormatName">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:maxLength value="80"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="SECSData" type="smn:DataItem">
                      <xs:annotation>
                        <xs:documentation>SECS-II data structure. It is used for the structure of a SECS-II data item within a SECS-II message. This refers to the structure for the value of a status variable (SV), equipment constant (ECV), data variable (DVVAL) or recipe variable parameters (RVP). </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
          <xs:unique name="UniqueVariableFormat">
            <xs:annotation>
              <xs:documentation>The VariableFormat values defined in these elements shall be unique.  This constraint enforces that requirement.</xs:documentation>
            </xs:annotation>
            <xs:selector xpath="VariableFormat"/>
            <xs:field xpath="FormatName"/>
          </xs:unique>
        </xs:element>
        <xs:element name="SECSMessages" nillable="true" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              The list and format of SECS-II messages supported by the equipment. Include both host and equipment
              initiated messages. This minOccurs is 0 for this element for backward compatibility.
              The same SECS-II message can be listed more than once. For example, S1,F13 might be listed twice where
              the host-initiated format and equipment-initiated format are listed separately because
              the formats are different.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="smn:SECSMessage" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    Describe a particular supported message. The documentation for one message can include
                    multiple formats. Only documentation elements and attributes are included.
                    Logging-only elements and attributes are not included.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="RemoteCommands" nillable="true" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              The list of S2F21/F41/F49 remote commands supported by the equipment. This minOccurs is 0 for this element for backward compatibility
              as well as for equipment that do not support remote commands and therefore have no remote commands.
              At least one of the useS2F21, useS2F41, useS2F49 attributes must be true.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="RemoteCommand" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    Describes an S2F21/F41/49 remote command supported by the equipment. This minOccurs is 0 to emphasize that there are no remote commands, and
                    not just an older version of the SEDD file.
                  </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>The name of the remote command. This is the RCMD from SEMI E5.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="AssociatedParameters" minOccurs="0" maxOccurs="1">
                      <xs:annotation>
                        <xs:documentation>The available parameters, if any, for the remote command. </xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence minOccurs="1" maxOccurs="unbounded">
                          <xs:element name="Parameter" minOccurs="1" maxOccurs="1">
                            <xs:annotation>
                              <xs:documentation>One available parameter for the remote command. </xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1">
                                  <xs:annotation>
                                    <xs:documentation>The name of the parameter. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="ValueFormat" type="smn:DataItem" minOccurs="1" maxOccurs="1">
                                  <xs:annotation>
                                    <xs:documentation>The format of the parameter value. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="Description" type="xs:string">
                                  <xs:annotation>
                                    <xs:documentation>A description of the command parameter. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                              </xs:sequence>
                              <xs:attribute name="IsRequired">
                                <xs:annotation>
                                  <xs:documentation>Indicate whether the command parameter is required or not for the remote command. </xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                  <xs:restriction base="xs:string">
                                    <xs:enumeration value="Yes">
                                      <xs:annotation>
                                        <xs:documentation>The associated parameter is required for the remote command. </xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="No">
                                      <xs:annotation>
                                        <xs:documentation>The associated parameter is not required for the remote command. </xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="Conditional">
                                      <xs:annotation>
                                        <xs:documentation>Whether or not the associated parameter is required is conditional. The condition shall be documented in the command parameter description. </xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                  </xs:restriction>
                                </xs:simpleType>
                              </xs:attribute>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="ObjectSpecifier" minOccurs="0" maxOccurs="unbounded" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>
                          The name of an object that can be specified. If the object list is determined at runtime, then document how the
                          object names are to be known. This element only applies when message S2F49 is supported.
                          For more information see data item OBJSPEC in message S2F49 defined in SEMI E5.
                        </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Documentation" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>
                          Document the remote command. For example, indicate under what conditions the
                          remote command will be accepted and not accepted.
                        </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="useS2F21" type="xs:boolean" default="false" use="optional">
                    <xs:annotation>
                      <xs:documentation>Indicates whether or not the remote command is supported using message S2F21. </xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="useS2F41" type="xs:boolean" default="false" use="optional">
                    <xs:annotation>
                      <xs:documentation>Indicates whether or not the remote command is supported using message S2F41. </xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="useS2F49" type="xs:boolean" default="false" use="optional">
                    <xs:annotation>
                      <xs:documentation>Indicates whether or not the remote command is supported using message S2F49. Document how the ObjectSpecifier is used. </xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="SEMIStandards" nillable="true" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              The list of SEMI standards supported by the equipment. This minOccurs is 0 for this element for backward compatibility.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="SupportedSEMIStandard" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    Describes the compliance statement for a specific SEMI standard.
                  </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="SEMIStandardName" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>
                          The name of the SEMI standard.
                        </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="SEMIStandard" type="SEMIStandardType">
                      <xs:annotation>
                        <xs:documentation>
                          The SEMI designator for the standard. For example E30-0611.
                        </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="RequirementGroup" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>
                          The compliance statement for most standards organizes requirements into groups, such as E30 which has a
                          "Fundamental Requirements" group and an "Additional Capabilities" group.
                        </xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Name" type="xs:string" minOccurs="0">
                            <xs:annotation>
                              <xs:documentation>The name of the requirement group. </xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="Requirement" minOccurs="0" maxOccurs="unbounded">
                            <xs:annotation>
                              <xs:documentation>
                                A requirement from the compliance statement. Different standards use different
                                methods to specify the compliance statement. Use whichever elements apply to the specific
                                standard.
                              </xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Name" type="xs:string" minOccurs="0">
                                  <xs:annotation>
                                    <xs:documentation>Name of the requirement. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="Section" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                                  <xs:annotation>
                                    <xs:documentation>Documentation section in the standard for the requirement. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="RequirementID" type="xs:string" minOccurs="0">
                                  <xs:annotation>
                                    <xs:documentation>The ID of the requirement. Some standards use this instead of a requirement name. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="ParentRequirementID" type="xs:string" minOccurs="0">
                                  <xs:annotation>
                                    <xs:documentation>The requirement ID of the parent requirement, if any. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="Implemented" type="xs:boolean" minOccurs="0">
                                  <xs:annotation>
                                    <xs:documentation>Indicate whether or not the requirement is implemented by the equipment. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                                <xs:element name="Compliant" minOccurs="0">
                                  <xs:annotation>
                                    <xs:documentation>Indicate whether or not the equipment's implementation is compliant with the requirement. </xs:documentation>
                                  </xs:annotation>
                                  <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:enumeration value="Yes">
                                        <xs:annotation>
                                          <xs:documentation>Complies to the requirement. </xs:documentation>
                                        </xs:annotation>
                                      </xs:enumeration>
                                      <xs:enumeration value="No">
                                        <xs:annotation>
                                          <xs:documentation>Does not comply to the requirement. Provide details in the Note section. </xs:documentation>
                                        </xs:annotation>
                                      </xs:enumeration>
                                      <xs:enumeration value="C">
                                        <xs:annotation>
                                          <xs:documentation>Complies (C) to the requirement. </xs:documentation>
                                        </xs:annotation>
                                      </xs:enumeration>
                                      <xs:enumeration value="NC">
                                        <xs:annotation>
                                          <xs:documentation>Does not comply (NC) to the requirement. Provide details in the Note section. </xs:documentation>
                                        </xs:annotation>
                                      </xs:enumeration>
                                      <xs:enumeration value="WC">
                                        <xs:annotation>
                                          <xs:documentation>Will comply with the requirement. Provide details in the Note section. </xs:documentation>
                                        </xs:annotation>
                                      </xs:enumeration>
                                      <xs:enumeration value="Partial">
                                        <xs:annotation>
                                          <xs:documentation>Partial compliance to the requirement. Provide details in the Note section. </xs:documentation>
                                        </xs:annotation>
                                      </xs:enumeration>
                                      <xs:enumeration value="NA">
                                        <xs:annotation>
                                          <xs:documentation>Not applicable. </xs:documentation>
                                        </xs:annotation>
                                      </xs:enumeration>
                                    </xs:restriction>
                                  </xs:simpleType>
                                </xs:element>
                                <xs:element name="Note" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                                  <xs:annotation>
                                    <xs:documentation>Provide additional notes concerning compliance to the requirement. For example, any exceptions to compliance. </xs:documentation>
                                  </xs:annotation>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Note" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>Provide additional notes concerning implementation of the standard and compliance to the standard. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="DefaultReportDefinitions" nillable="true" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              The list of default reports provided by the equipment. This minOccurs is 0 for this element for backward compatibility as well as for equipment that do not have default report definitions.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="CanBeDeleted" type="xs:boolean" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Indicate whether or not the host is permitted to delete the default report(s) using the standard S2,F33 message. </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="DefaultReportDefinition" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    Describes one default report definition. This minOccurs is 0 to emphasize that there are no default report definitions, and
                    not just an older version of the SEDD file.
                  </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="RPTID" type="xs:unsignedLong">
                      <xs:annotation>
                        <xs:documentation>The default report ID.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="DefaultReportName" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>DefaultReportName - default report name. This value shall be a human-readable name to the corresponding RPTID obtained from the corresponding equipment via S2F51/F52.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="VIDList">
                      <xs:annotation>
                        <xs:documentation>The list of variable IDs in the default report.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="VID" type="xs:unsignedLong" maxOccurs="unbounded">
                            <xs:annotation>
                              <xs:documentation>A variable ID in the default report. </xs:documentation>
                            </xs:annotation>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Description" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>A description of the default report.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="DefaultEventReportLinks" nillable="true" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              The list of default event report links provided by the equipment. This minOccurs is 0 for this element for backward compatibility as well as for equipment that do not have default even report links.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="CanBeDeleted" type="xs:boolean">
                <xs:annotation>
                  <xs:documentation>
                    Indicate whether or not the default event report links can be delete by the host using S2,F35.
                    This minOccurs is 0 to emphasize when there are no default event report links, and
                    not just an older version of the SEDD file.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="EventReportLink" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>One default event report.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="CEID" type="xs:unsignedLong">
                      <xs:annotation>
                        <xs:documentation>The ID of a collection event with predefined linked reports. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="RPTIDList">
                      <xs:annotation>
                        <xs:documentation>A list of report IDs that are linked to the collection event.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="RPTID" type="xs:unsignedLong" maxOccurs="unbounded">
                            <xs:annotation>
                              <xs:documentation>A report ID that is linked to the collection event. </xs:documentation>
                            </xs:annotation>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Description" type="xs:string" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>A description of the event report link. </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
		<xs:element name="EquipmentCharacterization" nillable="true" minOccurs="0" >
			<xs:annotation>
				<xs:documentation>EquipmentCharacterization contains a list of equipment characterization types for this production equipment.  Each section corresponds to multiple instances of an object defined in the production equipment. </xs:documentation>
			</xs:annotation>
			<xs:complexType>
				<xs:sequence>
					<xs:element name="SubstrateLocations" minOccurs="0" maxOccurs="1">
						<xs:annotation>
							<xs:documentation>The SubstrateLocations section describes SEMI E90 Substrate Locations defined for this production equipment.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="SubstrateLocation" minOccurs="0" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>A SubstrateLocation element describes one SEMI E90 Substrate Location for this production equipment.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Instance" type="xs:unsignedLong">
												<xs:annotation>
												<xs:documentation>Instance - substrate location instance number, unique within the set of substrate locations.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="Name" type="xs:string">
												<xs:annotation>
												<xs:documentation>Name - identifies the SEMI E90 substrate location. This value shall match the substrate location's SubstLocID value. The maximum length is governed by the SECS-II implementation.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="BatchLocations" minOccurs="0" maxOccurs="1">
						<xs:annotation>
							<xs:documentation>The BatchLocations section describes SEMI E90 Batch Locations defined for this production equipment.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="BatchLocation" minOccurs="0" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>A BatchLocation element describes one SEMI E90 Batch Location for this production equipment.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Instance" type="xs:unsignedLong">
												<xs:annotation>
												<xs:documentation>Instance - batch location instance number, unique within the set of batch locations.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="Name" type="xs:string">
												<xs:annotation>
												<xs:documentation>Name - identifies the SEMI E90 batch location. This value shall match the batch location's BatchLocID value. The maximum length is governed by the SECS-II implementation.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="EPTModules" minOccurs="0" maxOccurs="1">
						<xs:annotation>
							<xs:documentation>The EPTModules section describes SEMI E116 EPT Modules defined for this production equipment. The equipment EPT is not included in the list of EPT Modules.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="EPTModule" minOccurs="0" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>An EPTModule element describes one SEMI E116 EPT Module for this production equipment.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Instance" type="xs:unsignedLong">
												<xs:annotation>
												<xs:documentation>Instance - EPT module instance number, unique within the set of EPT Modules.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="Name" type="xs:string">
												<xs:annotation>
												<xs:documentation>Name - identifies the SEMI E116 EPT Module. This value is specified by the implementer. The maximum length is governed by the SECS-II implementation.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="ModuleType" type="xs:string">
												<xs:annotation>
												<xs:documentation>ModuleType - identifies the type of EPT Module.  Valid values are Production and EFEMLoadport.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="EquipmentModules" minOccurs="0" maxOccurs="1">
						<xs:annotation>
							<xs:documentation>The EquipmentModules section describes SEMI E157 Equipment Modules defined for this production equipment.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="EquipmentModule" minOccurs="0" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>An Equipment Module element describes one SEMI E157 Equipment Module for this production equipment.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Instance" type="xs:unsignedLong">
												<xs:annotation>
												<xs:documentation>Instance - Equipment module instance number, unique within the set of Equipment Modules.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="Name" type="xs:string">
												<xs:annotation>
												<xs:documentation>Name - identifies the SEMI E157 Equipment Module. This value shall match the equipment module's ModuleID value. The maximum length is governed by the SECS-II implementation.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="Loadports" minOccurs="0" maxOccurs="1">
						<xs:annotation>
							<xs:documentation>The Loadports section describes SEMI E87 load ports defined for this production equipment.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Loadport" minOccurs="0" maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>A Loadport element describes one SEMI E87 Loadport for this production equipment.</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:sequence>
											<xs:element name="Instance" type="xs:unsignedLong">
												<xs:annotation>
												<xs:documentation>Instance - Loadport instance number, unique within the set of load ports. This value shall be the same as the load port's port number.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="LoadUnloadLocation" type="xs:string">
												<xs:annotation>
												<xs:documentation>LoadUnloadLocation - identifies the carrier location for the load port's load/unload location.  This value shall match the carrier location's LocationID. The maximum length is governed by the SECS-II implementation.</xs:documentation>
												</xs:annotation>
											</xs:element>
											<xs:element name="DockOpenLocation" type="xs:string">
												<xs:annotation>
												<xs:documentation>DockOpenLocation - identifies the carrier location for the load port's dock/open location.  This value shall match the carrier location's LocationID. The maximum length is governed by the SECS-II implementation.</xs:documentation>
												</xs:annotation>
											</xs:element>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:complexType>
		</xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:unique name="UniqueRecipeType">
      <xs:annotation>
        <xs:documentation>The RecipeType values defined for RecipeVariableParameters elements shall be unique.  This constraint enforces that requirement.</xs:documentation>
      </xs:annotation>
      <xs:selector xpath="RecipeVariableParameters"/>
      <xs:field xpath="@RecipeType"/>
    </xs:unique>
    <xs:unique name="UniqueVariableID">
      <xs:annotation>
        <xs:documentation>The variable identifier (VID, SVID, and ECID) values defined for the DataVariables, StatusVariables, and EquipmentConstants  elements shall be unique.  This constraint enforces that requirement.</xs:documentation>
      </xs:annotation>
      <xs:selector xpath="DataVariables/DataVariable | StatusVariables/StatusVariable | EquipmentConstants/EquipmentConstant"/>
      <xs:field xpath="VID | SVID | ECID"/>
    </xs:unique>
    <xs:keyref name="SVFormatKeyRef" refer="VariableFormatKey">
      <xs:annotation>
        <xs:documentation>This keyref and the key VariableFormatkey definition below are created to ensure that each variable's Format value is selected from the set of defined VariableFormats (referencing FormatName).</xs:documentation>
      </xs:annotation>
      <xs:selector xpath="StatusVariables/StatusVariable"/>
      <xs:field xpath="Format"/>
    </xs:keyref>
    <xs:keyref name="DVFormatKeyRef" refer="VariableFormatKey">
      <xs:annotation>
        <xs:documentation>This keyref and the key VariableFormatkey definition below are created to ensure that each variable's Format value is selected from the set of defined VariableFormats (referencing FormatName).</xs:documentation>
      </xs:annotation>
      <xs:selector xpath="DataVariables/DataVariable"/>
      <xs:field xpath="Format"/>
    </xs:keyref>
    <xs:keyref name="ECVFormatKeyRef" refer="VariableFormatKey">
      <xs:annotation>
        <xs:documentation>This keyref and the key VariableFormatkey definition below are created to ensure that each variable's Format value is selected from the set of defined VariableFormats (referencing FormatName).</xs:documentation>
      </xs:annotation>
      <xs:selector xpath="EquipmentConstants/EquipmentConstant"/>
      <xs:field xpath="Format"/>
    </xs:keyref>
    <xs:key name="VariableFormatKey">
      <xs:selector xpath="VariableFormats/VariableFormat"/>
      <xs:field xpath="FormatName"/>
    </xs:key>
  </xs:element>
  <xs:simpleType name="SEMIStandardType">
    <xs:annotation>
      <xs:documentation>Use the SEMI standard designation. For example E30-0416 or E37.1-0702. </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
