<?xml version="1.0" encoding="UTF-8"?>
<!--
DMTF - Distributed Management Task Force, Inc. - http://www.dmtf.org

Document number: DSP0228
Date: 2009-10-15
Version: 1.0.1
Document status: DMTF Standard

Title: Message Registry XML Schema

Document type: Specification (W3C XML Schema Document)
Document language: E

Abstract: This document defines the XML schema for DMTF message registries.

Contact group: DMTF Infrastructure Sub-Committee, infrastructure-sc@dmtf.org

Acknowledgements: DMTF acknowledges the contributions of the following individuals to this document:
 - Steve Hand (Symantec)
 - Andreas Maier (IBM)
 - Linda Martinez (Dell)

Copyright (C) 2008,2009 Distributed Management Task Force, Inc. (DMTF).  All rights reserved.
DMTF is a not-for-profit association of industry members dedicated to promoting enterprise and
systems management and interoperability.  Members and non-members may reproduce DMTF specifications
and documents for uses consistent with this purpose, provided that correct attribution is given.  As
DMTF specifications may be revised from time to time, the particular version and release date should
always be noted.  Implementation of certain elements of this standard or proposed standard may be
subject to third party patent rights, including provisional patent rights (herein "patent rights").
DMTF makes no representations to users of the standard as to the existence of such rights, and is
not responsible to recognize, disclose, or identify any or all such third party patent right, owners
or claimants, nor for any incomplete or inaccurate identification or disclosure of such rights,
owners or claimants.  DMTF shall have no liability to any party, in any manner or circumstance,
under any legal theory whatsoever, for failure to recognize, disclose, or identify any such third
party patent rights, or for such party's reliance on the standard or incorporation thereof in its
product, protocols or testing procedures.  DMTF shall have no liability to any party implementing
such standard, whether such implementation is foreseeable or not, nor to any patent owner or
claimant, and shall have no liability or responsibility for costs or losses incurred if a standard
is withdrawn or modified after publication, and shall be indemnified and held harmless by any party
implementing the standard from any and all claims of infringement by a patent owner for such
implementations.  For information about patents held by third-parties which have notified the DMTF
that, in their opinion, such patent may relate to or impact implementations of DMTF standards, visit
http://www.dmtf.org/about/policies/disclosures.php.

Change log:
1.0.0a - 2008-07-15 - Released as Preliminary Standard
1.0.0 - 2009-07-27 - Released as DMTF Standard, with the following changes:
 - WIPCR00489 (Fix spec version patterns in DSP0228);
 - WIPCR00492 (Changes on specification reference in DSP0228);
 - WIPCR00497 (Add capability to define experimental messages to DSP0228);
 - WIPCR00498 (Make EDITOR elements optional and deprecate it in DSP0228);
 - WIPCR00505.001 (Add RECOMMENDED_ACTION element to DSP0228);
 - WIPCR00507.001 (Allow m.n version in SPECIFICATION and CIM_SCHEMA in DSP0228);
 - WIPCR00508.000 (Remove NAME and CONTACT_GROUP of OWNING_ENTITY in DSP0228);
 - Removed the rule that if the OWNING_ENTITY NAME attribute is DMTF, the PREFIX should be the abbreviation of the official working group name that has developed the message registry;
 - WIPCR00509.000 (Documentation improvements in DSP0228)
 - WIPCR00510.000 (Remove EDITOR element in DSP0228) (old version still in comment)
 - WIPCR00511.001 (Limit DESCRIPTION elements in POSSIBLE_VALUE to no more than one in DSP0228)
 - WIPCR00512.000 (Make PERCEIVED_SEVERITY optional in DSP0228)
 - WIPCR00513.000 (Add RECOMMENDED_ACTION also to ERROR in DSP0228)
 - WIPCR00514.001 (Add ERROR_SOUCRE_FORMAT and OTHER_... in DSP0228)
 - WIPCR00515.001 (Add ALERTING_ELEMENT_FORMAT and OTHER_... in DSP0228)
 - WIPCR00516.001 (Add OTHER_ERROR_TYPE in DSP0228)
 - WIPCR00517.001 (Add OTHER_ALERT_TYPE in DSP0228)
 - WIPCR00518.000 (Add 'prohibited' value to EXISTENCE_IS attribute in DSP0228)
 - Added uint8 datatype.
1.0.1 - 2009-10-15 - Released as DMTF Standard, with the following changes:
- WIPCR00521.008 (Add recommendations for usage of NAME of registry)
- WIPCR00523.001 (Safe support for leading zeros in PREFIX of messages)
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.dmtf.org/wbem/messageregistry/1" targetNamespace="http://schemas.dmtf.org/wbem/messageregistry/1" elementFormDefault="qualified">
    <xs:annotation>
        <xs:documentation>This XML schema defines the structure of DMTF message registries. A message registry is an XML instance document following this XML schema. A message registry defines messages that can be used to return errors using embedded instances of CIM_Error and indications based on CIM_AlertIndication.
It is recommended that a message registry be created in a single language; the DMTF will publish English message registries only. It is not recommended that the dynamic elements in a message contain translatable text because it would make localization of the message registry difficult. It is also not recommended that the Message property in CIM_Error or CIM_AlertIndication be used for localization. Localization may be performed by clients based on the message ID and local availability of an accordingly translated message bundle.
Except for the REGISTRY element, any global element and type definitions in this schema shall not be used by other XML schemas, in order to allow for structural changes in future updates to this XML schema.</xs:documentation>
    </xs:annotation>
    <xs:element name="REGISTRY">
        <xs:annotation>
            <xs:documentation>The top-level element of the message registry.
Message registries shall contain one occurence of the REGISTRY element as the only top-level element.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="REGISTRY_DECLARATION"/>
                <xs:element ref="REGISTRY_ENTRIES"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="DESCRIPTION" type="xs:string" nillable="false">
        <xs:annotation>
            <xs:documentation>A description of the parent element.
The description is targeted to developers of an implementation that produces or consumes the message. It does not need to be well suited as an explanation for human consumers of the message.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="REGISTRY_DECLARATION">
        <xs:annotation>
            <xs:documentation>Identification and other details about the message registry.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="IDENTIFICATION"/>
                <xs:element ref="SPECIFICATION" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element ref="CIM_SCHEMA" minOccurs="0"/>
                <xs:element ref="OWNING_ENTITY"/>
                <xs:element name="DESCRIPTION" type="xs:string" nillable="false">
                    <xs:annotation>
                        <xs:documentation>A description of the message registry.</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="IDENTIFICATION">
        <xs:annotation>
            <xs:documentation>A unique identification of the message registry, through its attributes NAME and VERSION.
The element also defines the language of the messages through its LANGUAGE attribute.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="NAME" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>The name of the message registry, for human consumption.
The name shall be unique within the owning entity of the message registry (defined by the OWNING_ENTITY element).
It should not contain the owning organization as stated in the OWNING_ENTITY element. It should contain the string "Message Registry" if written in English language, or corresponding translations of this string if written in other languages. Example for the value: "WBEM Operations Message Registry".</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="VERSION" use="required">
                <xs:annotation>
                    <xs:documentation>The version of the message registry.
The attribute value shall conform to the DMTF versioning rules defined in DSP0004.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="[0-9]+\.[0-9]+\.[0-9]+[a-z]{0,2}"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="LANGUAGE" type="xs:string" use="optional" default="en">
                <xs:annotation>
                    <xs:documentation>The language used by all messages defined in the message registry.
The attribute value shall conform to the definition of Language Tags defined in RFC2616 (HTTP/1.1 specification).</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="SPECIFICATION">
        <xs:annotation>
            <xs:documentation>A reference to a specification document the message registry was created for.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="NAME" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>The title of the document.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="DSP_NUMBER" type="xs:string" use="optional">
                <xs:annotation>
                    <xs:documentation>For documents owned by DMTF, the DSP number of the document, in upper case. For other documents, the attribute shall not be specified.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="VERSION" use="required">
                <xs:annotation>
                    <xs:documentation>The version of the document. For documents owned by DMTF, the version shall contain the major and minor version number, optionally the update version number and if the update version number is present, optionally one or two draft letters. If the version contains only the major and minor version number, the latest published update version number is meant to be referenced. For documents not owned by DMTF, the version number may be an arbitrary string.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:union>
                        <xs:simpleType>
                            <xs:annotation>
                                <xs:documentation>For documents owned by DMTF.</xs:documentation>
                            </xs:annotation>
                            <xs:restriction base="xs:string">
                                <xs:pattern value="[0-9]+\.[0-9]+(\.[0-9]+[a-z]{0,2})?"/>
                            </xs:restriction>
                        </xs:simpleType>
                        <xs:simpleType>
                            <xs:annotation>
                                <xs:documentation>For documents not owned by DMTF.</xs:documentation>
                            </xs:annotation>
                            <xs:restriction base="xs:string"/>
                        </xs:simpleType>
                    </xs:union>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="CIM_SCHEMA">
        <xs:annotation>
            <xs:documentation>The version of the CIM Schema the message registry is dependent on.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="VERSION" use="required">
                <xs:annotation>
                    <xs:documentation>The version of the CIM Schema. The version shall contain the major and minor version number, and optionally the update version number. If the version contains only the major and minor version number, the latest published update version number is meant to be referenced.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="[0-9]+\.[0-9]+(\.[0-9]+)?"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="OWNING_ENTITY" type="xs:string">
        <xs:annotation>
            <xs:documentation>The name of the owning entity of the message registry (i.e. the business entity or standards body that maintains and owns the message registry), for human consumption.
The element content shall include a copyrighted, trademarked or otherwise unique name that is owned by the owning entity.
For message registries owned by DMTF, the element content shall be "DMTF".
The value of the OwningEntity property in CIM_Error and CIM_AlertIndication instances conveying a message from a message registry shall be set to the element content.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="REGISTRY_ENTRIES">
        <xs:annotation>
            <xs:documentation>The list of messages defined in the message registry.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="MESSAGE" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="MESSAGE">
        <xs:annotation>
            <xs:documentation>A message defined in the message registry.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="MESSAGE_ID"/>
                <xs:element ref="MESSAGE_DESCRIPTION" minOccurs="0"/>
                <xs:element ref="MESSAGE_COMPONENTS"/>
                <xs:element ref="FIXED_MESSAGE_INSTANCE_VALUES" minOccurs="0" maxOccurs="2"/>
            </xs:sequence>
            <xs:attribute name="NAME" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>A name of the message, for human consumption.
The attribute value should be unique within the message registry (the MESSAGE_ID is required to be unique, for programmatic access) and should be a brief descriptive text. For example, "HTTP header malformed in POST operation" is preferrable over "protocol error".</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="EXPERIMENTAL" type="xs:boolean" use="optional" default="false">
                <xs:annotation>
                    <xs:documentation>An indicator on whether or not the message is considered experimental.
A value of "true" means the message is experimental.
Experimental messages may be removed or changed incompatibly in future revisions of the message registry.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="MESSAGE_ID">
        <xs:annotation>
            <xs:documentation>The message identifier. The message identifier consists of the PREFIX and SEQUENCE_NUMBER attributes. The combination of these two attribute values shall be unique across all message registries owned by a particular owning entity (as identified by the OWNING_ENTITY element).
The value of the MessageID property in CIM_Error and CIM_AlertIndication instances conveying a message from a message registry shall be set to the concatenation of the PREFIX and SEQUENCE_NUMBER attribute values, as specified in the message registry (i.e. no further padding or adjustment of these values takes place).</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="PREFIX" type="xs:NCName" use="required">
                <xs:annotation>
                    <xs:documentation>The prefix portion of the message identifier.
Typically, the same prefix is used for all messages in a particular message registry, and different prefixes are used for the messages in different message registries.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="SEQUENCE_NUMBER" use="required">
                <xs:annotation>
                    <xs:documentation>The sequence number portion of the message identifier. The format of the attribute value shall conform to the decimal string representation of an integer value that optionally has leading zeros. It is recommended that the attribute value is padded with leading zeros to a total length of at least four digits.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="[0-9]+"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="MESSAGE_DESCRIPTION" type="xs:string">
        <xs:annotation>
            <xs:documentation>A description of the message.
The description is targeted to developers of an implementation that produces or consumes the message. It does not need to be well suited as an explanation for human consumers of the message. The description should cover the purpose of the message and its usage. A profile may further constrain the purpose or the usage of the message within the domain of the profile. Note that each dynamic element within the message can have a description on its own, so this information should not be repeated in this element.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <!-- Schema for message properties -->
    <xs:element name="MESSAGE_COMPONENTS">
        <xs:annotation>
            <xs:documentation>The components of the message, as an (ordered) sequence of static elements (i.e. static text) or dynamic elements (i.e. computed values).
The value of the Message property in CIM_Error and CIM_AlertIndication instances conveying a message from a message registry shall be set to the concatenation of the message text of all child elements of this element, in the order specified in the message registry.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="DYNAMIC_ELEMENT"/>
                <xs:element ref="STATIC_ELEMENT"/>
                <xs:element ref="REPEAT_DYNAMIC_ELEMENT"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:element name="DYNAMIC_ELEMENT">
        <xs:annotation>
            <xs:documentation>A message component representing a dynamic element within a message.
The message text that the dynamic element contributes to the overall message is a string value that is computed at the time the message is issued.
The (string typed) MessageArguments array property in CIM_Error and CIM_AlertIndication instances conveying a message from a message registry shall be set to have one array entry for each dynamic element defined in the message, in the order specified in the message registry, where the value of the array entry is the message text of the dynamic element.
The message text of the dynamic element should not contain translatable text because it would make localization of the message registry difficult. Instead, any translatable text should go into properly defined static elements.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="false">
            <xs:sequence>
                <xs:element ref="DESCRIPTION" minOccurs="0"/>
                <xs:element ref="POSSIBLE_VALUE" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="NAME" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>The name of the dynamic element, for programmatic use.
The attribute value shall be unique within the message.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="SOURCE_PROPERTY" type="xs:string" use="optional">
                <xs:annotation>
                    <xs:documentation>A reference to a CIM property whose value is to be used as the source for the message text of the dynamic element.
The format of the attribute value shall be classname.propertyname, for example: CIM_Fan.ElementName.
If the attribute is specified, the value of the referenced property at the time the message is issued shall be used as the message text of the dynamic element.
If the attribute is not specified, the DESCRIPTION element of the dynamic element shall specify the source of the message text.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="DATATYPE" use="required">
                <xs:annotation>
                    <xs:documentation>The CIM datatype into which the message text of the dynamic element shall be coercible without loss.
Note that this constrains the string values in the message text of the dynamic element accordingly. For example, if the attribute value is "sint8", the message text of the dynamic element is constrained to represent an integer value between -128 and +127 in some string representation. As another example, if the attribute value is "reference", the message text of the dynamic element is constrained to be an instance path in some string representation.
Requirements on the specific string representation to be used may be defined in the DESCRIPTION element of the dynamic element, and may be further constrained in management profiles using the message. For example, the DESCRIPTION element of a dynamic element with DATATYPE="sint8" might define that the message text is required to be represented as a decimal integer value that always has a sign.
</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="uint8"/>
                        <xs:enumeration value="sint8"/>
                        <xs:enumeration value="uint16"/>
                        <xs:enumeration value="sint16"/>
                        <xs:enumeration value="uint32"/>
                        <xs:enumeration value="sint32"/>
                        <xs:enumeration value="uint64"/>
                        <xs:enumeration value="sint64"/>
                        <xs:enumeration value="string"/>
                        <xs:enumeration value="boolean"/>
                        <xs:enumeration value="real32"/>
                        <xs:enumeration value="real64"/>
                        <xs:enumeration value="datetime"/>
                        <xs:enumeration value="reference"/>
                        <xs:enumeration value="char16"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="IS_ARRAY" use="optional" default="false">
                <xs:annotation>
                    <xs:documentation>An indicator on whether or not the dynamic element is an array.
A value of "true" means the dynamic element is an array.
If a dynamic element is an array, the DATATYPE attribute shall define the type of each array entry, the message text of the dynamic element array shall be the ordered sequence of array entry values delimited by comma (this is what is put into the array entry of the MessageArguments array property), and the usage of the message text as a component in the Message property should insert curly braces around the message text before being used in the overall message text.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:boolean"/>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="EXPECTED_IN_MESSAGE" use="optional" default="true">
                <xs:annotation>
                    <xs:documentation>An indicator on whether or not the message text of the dynamic element is to be included in the Message property. Note this does not affect the inclusion in the MessageArguments array property.
A value of "true" means the message text of the dynamic element shall be included in the Message property. A value of "false" means that the message text of the dynamic element shall not be included in the Message property. This may be used to convey additional details about the message that are not intended for the end user reading the message text in the Message property.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:boolean"/>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="REPEAT_DYNAMIC_ELEMENT">
        <xs:annotation>
            <xs:documentation>A message component representing a dynamic element within a message. The dynamic element is defined by referencing a previously defined DYNAMIC_ELEMENT element in the same message. Other than that, the dynamic element follows the rules defined for the DYNAMIC_ELEMENT element. Specifically, its message text is put into the MessageArguments and Message properties as defined there.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="false">
            <xs:attribute name="NAME" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>The reference to the previously defined DYNAMIC_ELEMENT element. The attribute value shall be the value of the NAME attribute of a previously defined DYNAMIC_ELEMENT element within the same message.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="POSSIBLE_VALUE">
        <xs:annotation>
            <xs:documentation>A possible value the message text of a dynamic element can have. The possible value is defined by the element content.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element ref="DESCRIPTION" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="STATIC_ELEMENT" type="xs:string" nillable="false">
        <xs:annotation>
            <xs:documentation>A message component representing a static element within a message.
The message text that the static element contributes to the overall message is its element content.
The (string typed) MessageArguments array property in CIM_Error and CIM_AlertIndication instances conveying a message from a message registry shall not be set to have array entries for any static elements defined in the message.
</xs:documentation>
        </xs:annotation>
    </xs:element>
    <!-- Schema for declared message instance properties -->
    <xs:attributeGroup name="STANDARD_ELEMENT_ATTRIBUTES">
        <xs:attribute name="EXISTENCE_IS" default="required">
            <xs:annotation>
                <xs:documentation>The requirement level for implementing the property in CIM_Error or CIM_AlertIndication instances conveying a message from a message registry.
Valid values and their meanings are:
- "required": The property is required to be implemented and it shall be set to the value of the element content.
- "optional": The property is optional to be implemented. If implemented, it shall be set to the value of the element content. If not implemented, the property shall either be set to NULL or not be present in the (embedded) instance.
- "discouraged": The property is discouraged from being implemented and should either be set to NULL or not be present in the (embedded) instance. The element content shall be empty in this case.
"prohibited": The property is prohibited from being implemented and shall be set to NULL or not be present in the (embedded) instance. The element content shall be empty in this case.</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="required"/>
                    <xs:enumeration value="optional"/>
                    <xs:enumeration value="discouraged"/>
                    <xs:enumeration value="prohibited"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:group name="STANDARD_ELEMENTS">
        <xs:sequence>
            <xs:element ref="DESCRIPTION"/>
        </xs:sequence>
    </xs:group>
    <xs:element name="FIXED_MESSAGE_INSTANCE_VALUES">
        <xs:annotation>
            <xs:documentation>Requirements for specific property values to be set in CIM_Error and CIM_AlertIndication instances conveying a message from a message registry.
Such instances may have additional properties set, as defined in the CIM Schema or further constrained in profiles using messages.
Each child element of this element corresponds to a specific property in these instances. The property value to be set is defined as the element content of the child element. The requirement for setting the property to that value is defined in the EXISTENCE_IS attribute of the child element.
There shall be at most one occurence of this element for CIM_Error instances (TYPE="ERROR"), and at most one for CIM_AlertIndication instances (TYPE="ALERT"). If there is no occurence of this element for a particular type of class, instances of that class may be produced, they are just not further constrained to specific property values.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:sequence id="ERROR">
                    <xs:annotation>
                        <xs:documentation>Choice for CIM_Error instances (TYPE="ERROR").</xs:documentation>
                    </xs:annotation>
                    <xs:element ref="CIMSTATUSCODE"/>
                    <xs:element ref="ERROR_TYPE"/>
                    <xs:element ref="OTHER_ERROR_TYPE" minOccurs="0"/>
                    <xs:element ref="ERROR_SOURCE"/>
                    <xs:element ref="ERROR_SOURCE_FORMAT" minOccurs="0"/>
                    <xs:element ref="OTHER_ERROR_SOURCE_FORMAT" minOccurs="0"/>
                    <xs:element ref="RECOMMENDED_ACTION" minOccurs="0" maxOccurs="unbounded"/>
                    <xs:element ref="PERCEIVED_SEVERITY" minOccurs="0"/>
                </xs:sequence>
                <xs:sequence id="ALERT">
                    <xs:annotation>
                        <xs:documentation>Choice for CIM_AlertIndication instances (TYPE="ALERT").</xs:documentation>
                    </xs:annotation>
                    <xs:element ref="ALERTING_MANAGED_ELEMENT"/>
                    <xs:element ref="ALERTING_ELEMENT_FORMAT" minOccurs="0"/>
                    <xs:element ref="OTHER_ALERTING_ELEMENT_FORMAT" minOccurs="0"/>
                    <xs:element ref="ALERT_TYPE"/>
                    <xs:element ref="OTHER_ALERT_TYPE" minOccurs="0"/>
                    <xs:element ref="RECOMMENDED_ACTION" minOccurs="0" maxOccurs="unbounded"/>
                    <xs:element ref="PERCEIVED_SEVERITY" minOccurs="0"/>
                </xs:sequence>
            </xs:choice>
            <xs:attribute name="TYPE" use="required">
                <xs:annotation>
                    <xs:documentation>An indicator for the class type whose instances are constrained by this occurence of the element.
Valid values and their meanings are:
- "ERROR": Instances of CIM_Error are constrained. The child elements shall be those of the choice for CIM_Error (CIMSTATUSCODE, etc.).
- "ALERT": Instances of CIM_AlertIndication are constrained. The child elements shall be those of the choice for CIM_AlertIndication (ALERTING_MANAGED_ELEMENT, etc.).</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="ERROR"/>
                        <xs:enumeration value="ALERT"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="CIMSTATUSCODE">
        <xs:annotation>
            <xs:documentation>A value constraint for the (uint32 typed) CIMStatusCode property in CIM_Error. The element content shall be a decimal string representation of the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.
The element content of the DESCRIPTION child element should contain corresponding value of the Values qualifier defined for the property in the CIM Schema and may contain other text.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="ERROR_TYPE">
        <xs:annotation>
            <xs:documentation>A value constraint for the (uint16 typed) ErrorType property in CIM_Error. The element content shall be a decimal string representation of the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.
The element content of the DESCRIPTION child element should contain the corresponding value of the Values qualifier defined for the property in the CIM Schema and may contain other text.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="OTHER_ERROR_TYPE">
        <xs:annotation>
            <xs:documentation>A value constraint for the (string typed) OtherErrorType property in CIM_Error. The element content shall be the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that according to that description, the property is used only if the ErrorType property has a value of 1 (Other). Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="ERROR_SOURCE">
        <xs:annotation>
            <xs:documentation>A value constraint for the (string typed) ErrorSource property in CIM_Error. The element content shall be the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="ERROR_SOURCE_FORMAT">
        <xs:annotation>
            <xs:documentation>A value constraint for the (uint16 typed) ErrorSourceFormat property in CIM_Error. The element content shall be a decimal string representation of the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.
The element content of the DESCRIPTION child element should contain the corresponding value of the Values qualifier defined for the property in the CIM Schema and may contain other text.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="OTHER_ERROR_SOURCE_FORMAT">
        <xs:annotation>
            <xs:documentation>A value constraint for the (string typed) OtherErrorSourceFormat property in CIM_Error. The element content shall be the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that according to that description, the property is used only if the ErrorSourceFormat property has a value of 1 (Other). Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="RECOMMENDED_ACTION">
        <xs:annotation>
            <xs:documentation>A value constraint for the (string typed) RecommendedActions array property in CIM_Error. Each occurence of the element represents one array entry. The element content shall be the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="ALERTING_MANAGED_ELEMENT">
        <xs:annotation>
            <xs:documentation>A value constraint for the (string typed) AlertingManagedElement property in CIM_AlertIndication. The element content shall be the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="ALERTING_ELEMENT_FORMAT">
        <xs:annotation>
            <xs:documentation>A value constraint for the (uint16 typed) AlertingElementFormat property in CIM_AlertIndication. The element content shall be a decimal string representation of the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.
The element content of the DESCRIPTION child element should contain the corresponding value of the Values qualifier defined for the property in the CIM Schema and may contain other text.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="OTHER_ALERTING_ELEMENT_FORMAT">
        <xs:annotation>
            <xs:documentation>A value constraint for the (string typed) OtherAlertingElementFormat property in CIM_AlertIndication. The element content shall be the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that according to that description, the property is used only if the AlertingElementFormat property has a value of 1 (Other). Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="ALERT_TYPE">
        <xs:annotation>
            <xs:documentation>A value constraint for the (uint16 typed) AlertType property in CIM_AlertIndication. The element content shall be a decimal string representation of the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.
The element content of the DESCRIPTION child element should contain the corresponding value of the Values qualifier defined for the property in the CIM Schema and may contain other text.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="OTHER_ALERT_TYPE">
        <xs:annotation>
            <xs:documentation>A value constraint for the (string typed) OtherAlertType property in CIM_AlertIndication. The element content shall be the value to be used for the property, if implemented.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that according to that description, the property is used only if the AlertType property has a value of 1 (Other). Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="PERCEIVED_SEVERITY">
        <xs:annotation>
            <xs:documentation>A value constraint for the (uint16 typed) PerceivedSeverity property in CIM_Error and CIM_AlertIndication. The element content shall be a decimal string representation of the value that is recommended to be used for the property, if implemented. Note that the specified value is not required to be used, rather it is advisory and implementations may use other values.
The specified value shall be a valid value according to the description of the property in the CIM Schema. Note that a message can only specify a single property value, so if there is a need to use different values depending on some condition, the message needs to be split up into multiple messages.
The element content of the DESCRIPTION child element should contain the corresponding value of the Values qualifier defined for the property in the CIM Schema and may contain other text.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:group ref="STANDARD_ELEMENTS"/>
            <xs:attributeGroup ref="STANDARD_ELEMENT_ATTRIBUTES"/>
        </xs:complexType>
    </xs:element>
</xs:schema>
