<?xml version="1.0" encoding="UTF-8"?>
<!-- 
    Document Number: DSP8022 
    Document: BIOS Attribute Registry XML Schema Specification
    Date: 27-September-2010
    Version: 1.0.2
    Status: DMTF Standard
   
	Abstract: This document defines the XML schema for DMTF BIOS Attribute registries.
 
Acknowledgements: DMTF acknowledges the contributions of the following individuals to this document:
* Joe Kozlowski (Dell)
* Steve Hand (Symantec)
* Christoph Graham (HP)
* Hemal Shah (Broadcom)

    Description: XML schema specification used for the creation of 
                 BIOS Attribute registries.

    Copyright © 2008-2010 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 History:
2008-07-15: V1.0.0 - Released as Preliminary Standard
2009-04-29: V1.0.1 - Released as DMTF Standard, changes: Added localization support. Corrected m.n.u versioning scheme to remove the letter
2010-09-27: V1.0.2 - Released as DMTF Standard, changes: Corrected regular expression for m.n.u versioning scheme.

-->
<xs:schema xmlns:bios="http://schemas.dmtf.org/wbem/biosattributeregistry/1" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.dmtf.org/wbem/biosattributeregistry/1" elementFormDefault="qualified" version="1.0" xml:lang="en">
	<!-- 
    Registration data for the registry itself.
-->
	<xs:element name="REGISTRY">
		<xs:annotation>
			<xs:documentation> A BIOS Attribute registry is a normative expression of CIM_BIOSAttribute
        instance definitions and mappings between vendor-unique implementations of BIOS attribute
        instances and a set of DMTF-specified BIOS attribute instance definitions and behaviors.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="bios:REGISTRY_DECLARATION"/>
				<xs:element ref="bios:REGISTRY_ENTRIES"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="REGISTRY_DECLARATION">
		<xs:annotation>
			<xs:documentation> Collection of detail elements about the registry. </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="bios:IDENTIFICATION"/>
				<xs:element ref="bios:SPECIFICATION" maxOccurs="unbounded"/>
				<xs:element ref="bios:CIM_SCHEMA" minOccurs="0"/>
				<xs:element ref="bios:OWNING_ENTITY"/>
				<xs:element ref="bios:EDITOR" maxOccurs="unbounded"/>
				<xs:element ref="bios:DESCRIPTION"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="IDENTIFICATION">
		<xs:annotation>
			<xs:documentation> The name, version, and language of the registry. The name shall be unique
        within the set of all registry names defined by the owning entity (value of the NAME
        attribute of OWNING_ENTITY element). </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="NAME" type="xs:string" use="required"/>
			<xs:attribute name="VERSION" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="[0-9]{1}\.[0-9]{1}\.[0-9]{1}([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 value for language shall follow the HTTP/1.1 Specification
            description of Language Tags (http://www.ietf.org/rfc/rfc4646.txt). </xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="SPECIFICATION">
		<xs:annotation>
			<xs:documentation> The name and version of the specification document that the registry was
        created for. </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="NAME" type="xs:string" use="required"/>
			<xs:attribute name="VERSION" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="[0-9]{1}\.[0-9]{1}\.[0-9]{1}([a-z]){0,2}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="CIM_SCHEMA">
		<xs:annotation>
			<xs:documentation> The version of the CIM schema that the registry is dependent on.
      </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="VERSION" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="[0-9]{1}\.[0-9]{1}\.[0-9]{1}"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="OWNING_ENTITY">
		<xs:annotation>
			<xs:documentation> The name of the entity that maintains and owns the BIOS attribute registry
        . For registries owned by the DMTF, the name shall be 'DMTF'.
      </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="NAME" type="xs:string" use="required"/>
			<xs:attribute name="CONTACT_URL" type="xs:anyURI" use="optional">
				<xs:annotation>
					<xs:documentation> This attribute is used to specify a URL that is used by consumers of
            this registry to contact the owning entity on the registry. </xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="CONTACT_GROUP" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="EDITOR">
		<xs:annotation>
			<xs:documentation> The name, email, and organization of the BIOS Attribute Registry editor(s).
      </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="EMAIL" type="xs:string" use="required"/>
			<xs:attribute name="NAME" type="xs:string" use="required"/>
			<xs:attribute name="ORGANIZATION" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="DESCRIPTION" type="xs:string" nillable="false"/>
	<xs:complexType name="REGISTRY_ENTRY_TYPE">
		<xs:sequence>
			<xs:element name="Attribute" type="bios:typeAttributeAbstract" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="REGISTRY_ENTRIES" type="bios:REGISTRY_ENTRY_TYPE">
		<xs:annotation>
			<xs:documentation> The list of BIOS attributes defined in this registry. </xs:documentation>
		</xs:annotation>
		<xs:key name="AttributeIDisKey">
			<xs:selector xpath=".//bios:Attribute"/>
			<xs:field xpath="bios:AttributeName"/>
		</xs:key>
		<xs:keyref name="AttributeIDKeyRef" refer="bios:AttributeIDisKey">
			<xs:selector xpath=".//bios:Attribute"/>
			<xs:field xpath="bios:AttributeRef"/>
		</xs:keyref>
	</xs:element>
	<!-- 
    The data definition for instances contained in the registry.
-->
	<xs:complexType name="typeAttributeAbstract" abstract="true">
		<xs:annotation>
			<xs:documentation> Abstract base class representing a BIOS Attribute. </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="bios:AttributeName"/>
			<xs:element ref="bios:DisplayName"/>
			<xs:element ref="bios:HelpText" minOccurs="0"/>
			<xs:element ref="bios:AttributeDescription" minOccurs="0"/>
			<xs:element ref="bios:ModelCorrespondence" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="AttributeValue" type="bios:typeValueAbstract" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="typeAttributeRoot">
		<xs:annotation>
			<xs:documentation> Definition for a BIOS Attribute element that does not reference another
        BIOS Attribute element for derived behaviors. </xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="bios:typeAttributeAbstract">
				<xs:sequence>
					<xs:element name="AttributeType" type="bios:typeAttributeType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="typeAttributeDerived">
		<xs:annotation>
			<xs:documentation> Definition for a BIOS Attribute element that derives behaviors from the
        explicit or implicit inclusion of reference BIOS Attribute element and subcomponent
        behaviors. </xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="bios:typeAttributeAbstract">
				<xs:sequence>
					<xs:element name="ValueBehavior" type="bios:typeValueBehavior"/>
					<xs:element name="AttributeRef" type="xs:string">
						<xs:annotation>
							<xs:documentation> A string identifying the structured element name for a BIOS
                Attribute using the format &lt;OrgID&gt;:&lt;identifier&gt; in which
                &lt;OrgID&gt; SHALL NOT contain a colon ":". The value of
                &lt;OrgID&gt; is a copyrighted, trademarked or otherwise unique name that is
                owned by the entity defining the &lt;identifier&gt;, or is a registered ID
                that is assigned to the entity by a recognized global authority. For DMTF defined
                identifiers, the &lt;OrgID&gt; is set to "CIM". This element shall refer to
                a BIOS attribute whose AttributeName has the same value. </xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="typeValueAbstract" abstract="true">
		<xs:annotation>
			<xs:documentation> Abstract base class representing a value element for a BIOS Attribute.
      </xs:documentation>
		</xs:annotation>
	</xs:complexType>
	<xs:complexType name="typeValueAtomic">
		<xs:annotation>
			<xs:documentation> Value type definition used to express Value element instances that do not
        have interdependencies with Value element definitions in a referenced BIOS Attribute
        instance. </xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="bios:typeValueAbstract">
				<xs:sequence>
					<xs:element ref="bios:ValueID"/>
					<xs:element ref="bios:ValueName"/>
					<xs:element ref="bios:ValueDisplayName"/>
					<xs:element ref="bios:ValueDescription"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="typeValueOverride">
		<xs:annotation>
			<xs:documentation> Value type definition used to express Value element instances that are used
        to override the semantics of a referenced BIOS Attribute Value. This mechanism is used to
        rename Value instances from the referenced BIOS Attribute on the hosting BIOS Attribute
        instance. An example would be used to convert from one set of semantics for BIOS Attribute
        values to another. </xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="bios:typeValueAbstract">
				<xs:sequence>
					<xs:element ref="bios:ValueID"/>
					<xs:element ref="bios:ValueName"/>
					<xs:element ref="bios:ValueDisplayName"/>
					<xs:element ref="bios:ValueDescription"/>
					<xs:element ref="bios:ValueRef"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="typeValueUnsupported">
		<xs:annotation>
			<xs:documentation> This is a Value type definition used to express Value element instances
        that are used to override the semantics of a referenced BIOS Attribute Value. This mechanism
        is used to disclaim support for Value instances from the referenced BIOS Attribute on the
        hosting BIOS Attribute instance by referenced ValueID. This is a value type definition that
        is used to express that lack of support for a particular value that is inherited.
      </xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="bios:typeValueAbstract">
				<xs:sequence>
					<xs:element ref="bios:ValueRef"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="AttributeName" type="xs:string" nillable="false">
		<xs:annotation>
			<xs:documentation> A string identifying the structured element name for a BIOS Attribute using
        the format &lt;OrgID&gt;:&lt;identifier&gt; in which &lt;OrgID&gt;
        SHALL NOT contain a colon ":". The value of &lt;OrgID&gt; is a copyrighted,
        trademarked or otherwise unique name that is owned by the entity defining the
        &lt;identifier&gt;, or is a registered ID that is assigned to the entity by a
        recognized global authority. For DMTF defined identifiers, the &lt;OrgID&gt; is set
        to "DMTF". DMTF identifiers shall remain consistent in all registries.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="DisplayName" type="xs:string" nillable="false">
		<xs:annotation>
			<xs:documentation> A human readable string corresponding to the structured AttributeName 
			element name for a BIOS Attribute in the language defined by the Identification Language tag 
			element.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="HelpText" type="xs:string">
		<xs:annotation>
			<xs:documentation> An optional human readable string of informative text a user may need 
			when setting or interpretating a BIOS Attribute or it's value. Text shall be in the language defined 
			by the Identification Language tag element.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="AttributeDescription" type="xs:string">
		<xs:annotation>
			<xs:documentation> A text string used to describe the purpose of a BIOS Attribute and possible
        expectations of a BIOS Attribute instance's behavior. </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ModelCorrespondence" type="xs:string">
		<xs:annotation>
			<xs:documentation> A text string used to associate a BIOS Attribute element definition with
        other class and property definitions within the CIM Schema. This element provides a hint to
        possible correlating information within the CIMOM, but does not necessarily imply that a
        provider is available to surface the correlating data. </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:simpleType name="typeAttributeType">
		<xs:annotation>
			<xs:documentation> A string identifying the CIM schema class definition that a BIOS Attribute
        registry instance is derived from. </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="CIM_BIOSString"/>
			<xs:enumeration value="CIM_BIOSEnumeration"/>
			<xs:enumeration value="CIM_BIOSInteger"/>
			<xs:enumeration value="CIM_BIOSPassword"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="ValueID" type="xs:string" nillable="false">
		<xs:annotation>
			<xs:documentation> A string identifying the structured element name for a BIOS Attribute Value
        using the format &lt;AttributeID&gt;:&lt;identifier&gt;. </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ValueName" type="xs:string">
		<xs:annotation>
			<xs:documentation> A string identifying the BIOS Attribute Value in a form that is consistent
        with other vendor-specific BIOS management utilities. This value may correspond to a logical
        state of the BIOS Attribute definition used within a ROM-based configuration application.
      </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ValueDisplayName" type="xs:string">
		<xs:annotation>
			<xs:documentation> A human readable string corresponding to the BIOS Attribute Value in the 
			language defined by the Identification Language tag element..
      </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ValueDescription" type="xs:string">
		<xs:annotation>
			<xs:documentation> A text string used to describe the purpose of a BIOS Attribute Value and
        possible expectations of a BIOS Attribute Value instance's behavior. </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ValueRef" type="xs:string">
		<xs:annotation>
			<xs:documentation> A text string used to associate the ValueID of the contained reference BIOS
        Attribute class with the current BIOS Attribute Value instance. </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:simpleType name="typeValueBehavior">
		<xs:annotation>
			<xs:documentation> A string identifying the usage behavior associated to one of the attribute
        Value elements from the referenced BIOS Attribute element. The value of "explicit" is used
        to indicate that referenced values shall have corresponding value definitions in the
        containing instance in order to be valid. The value "implicit" is used to indicate that
        referenced values are passed-through to the containing object. </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="explicit"/>
			<xs:enumeration value="implicit"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
