<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2010 (http://www.altova.com) by TONY ALWARDT (BOEING SHARED SERVICES GROUP) -->
<xs:schema xmlns:mi="urn:IEEE-1671:2009.01:MaintenanceInformation" xmlns:c="urn:IEEE-1671:2009.03:Common" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:IEEE-1671:2009.01:MaintenanceInformation" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
	<xs:annotation>
		<xs:documentation xml:lang="en">

This schema is specified in IEEE Std 1671-20XX, "IEEE Standard
for Automatic Test Markup Language (ATML) for Exchanging Maintenance Information via XML."
 
This schema is a World Wide Web Consortium (W3C) Extensible 
Markup Language (XML) binding of the ATML MaintenanceInformation component defined in IEEE
Std 1671-20XX,"IEEE Standard for Automatic Test Markup 
Language (ATML) for Exchanging Maintenance Information via XML."

The purpose of this schema is to allow the creation of IEEE Std 1671-20XX 
MaintenanceInformation instance documents.
This schema uses the W3C XML Schema definition
language as the encoding. This allows for interoperability and 
the exchange of ATML component instances between various systems.
This schema shall not be modified but may be included in 
derivative works. 

Copyright (c) 2009 Institute of Electrical and Electronics 
Engineers, Inc.

USE AT YOUR OWN RISK

</xs:documentation>
	</xs:annotation>
	<xs:import namespace="urn:IEEE-1671:2009.03:Common" schemaLocation="Common.xsd"/>
	<xs:complexType name="Action">
		<xs:annotation>
			<xs:documentation>This element shall be used to identify codes and descriptions that describe a maintenance action.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Description" type="c:NonBlankString" minOccurs="0">
				<xs:annotation>
					<xs:documentation>The description that corresponds to the application specific action code of the maintenance action performed.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="code" type="c:NonBlankString" use="required">
			<xs:annotation>
				<xs:documentation>An application specific identifier that describes the maintenance action performed. </xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="Maintainer">
		<xs:annotation>
			<xs:documentation>A specific person performing the maintenance action on the system or item.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="c:Person">
				<xs:attribute name="category" use="required">
					<xs:annotation>
						<xs:documentation>Identifies the category to which a person belongs with respect to the current maintenance action.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="Authorizer"/>
							<xs:enumeration value="Inspector"/>
							<xs:enumeration value="Performer"/>
							<xs:enumeration value="Supervisor"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="skillLevel" use="required">
					<xs:annotation>
						<xs:documentation>Provides the relative skill of the person as assigned by the responsible maintenance organization.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:int">
							<xs:minInclusive value="1"/>
							<xs:maxInclusive value="5"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="MaintenanceAction">
		<xs:annotation>
			<xs:documentation>This element shall be used to identify the specific action taken in the maintenance of some item or entity.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="c:ItemInstance">
				<xs:sequence>
					<xs:element name="Action" type="mi:Action">
						<xs:annotation>
							<xs:documentation>This element shall be used to identify codes and descriptions that describe a maintenance action.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="MaintenanceReason" type="mi:MaintenanceReason">
						<xs:annotation>
							<xs:documentation>This element shall be used to identify the cause(s) that led to a maintenance action.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="PersonAssigned" type="c:Person" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>This element shall be used to identify the person performing the maintenance action.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="Extension" type="c:Extension" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Element provided to permit extensibility of the schema.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ID" type="xs:ID" use="required">
					<xs:annotation>
						<xs:documentation>A descriptive or common name for the MaintenanceAction. The value of “ID” shall be unique within the context of the containing XML instance document.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="name" type="c:NonBlankString" use="optional">
					<xs:annotation>
						<xs:documentation>A user-friendly textual name for the MaintenanceAction.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="userDefinedType" type="c:NonBlankString" use="optional">
					<xs:annotation>
						<xs:documentation>A user defined textual “type” that will describe the maintenance action.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="startDateTime" type="xs:dateTime" use="required">
					<xs:annotation>
						<xs:documentation>Identifies the date and time when the action was begun.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="endDateTime" type="xs:dateTime" use="optional">
					<xs:annotation>
						<xs:documentation>Identifies the date and time when the action was terminated.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="preventive" use="required">
					<xs:annotation>
						<xs:documentation>Indicates whether or not the maintenance action was performed as part of preventative maintenance.</xs:documentation>
					</xs:annotation>
					<xs:simpleType>
						<xs:restriction base="xs:boolean">
							<xs:whiteSpace value="collapse"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="totalDuration" type="xs:duration" use="required">
					<xs:annotation>
						<xs:documentation>Provides the aggregate personnel time for the actual work duration of a maintenance event.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="relatedEvent" type="c:NonBlankString" use="optional">
					<xs:annotation>
						<xs:documentation>References the related action of the maintenance task.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="MaintenanceReason">
		<xs:annotation>
			<xs:documentation>This element shall be used to identify the cause(s) that led to a maintenance action.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="StandardTestResults">
					<xs:annotation>
						<xs:documentation>Refers to an IEEE 1671 Test Results instance document containing the results of tests performed to identify the cause of the discrepancy.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:complexContent>
							<xs:extension base="c:DocumentReference">
								<xs:attribute name="actionID" type="c:NonBlankString">
									<xs:annotation>
										<xs:documentation>Identifies the ID of the referenced TestResults ResultSet, TestGroup, Test, or SessionAction that identified the cause of the discrepancy.</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:extension>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="NonStandardTestResult">
					<xs:annotation>
						<xs:documentation>Refers to a non-IEEE 1671 Test Results instance document containing the results of tests performed to identify the cause of the discrepancy.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:complexContent>
							<xs:extension base="c:DocumentReference">
								<xs:sequence>
									<xs:element name="MaintenanceReason" type="c:NonBlankString">
										<xs:annotation>
											<xs:documentation>Defines an XPath to an event from a non-IEEE 1671 Test Results instance document which further elaborates the test result.</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:extension>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="ParentFailureCode" type="c:NonBlankString">
					<xs:annotation>
						<xs:documentation>Defines a failure code associated with the parent cause element, including the no fault code. </xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:choice>
			<xs:element name="Extension" type="c:Extension" minOccurs="0">
				<xs:annotation>
					<xs:documentation>This element shall provide a specific extension point for use cases that require elements not provided in the basic structure.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="reportedBy" type="c:NonBlankString" use="required">
			<xs:annotation>
				<xs:documentation>The name of the person or system who reported a discrepancy or cause of the need for a maintenance action</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="whenDiscovered" type="xs:dateTime" use="optional">
			<xs:annotation>
				<xs:documentation>Provides the date and time at which the cause was first determined.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="Warranty">
		<xs:annotation>
			<xs:documentation>This element shall be used to identify a manufacturer's legal responsibility for the support of a component.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="warrantedBy" type="c:NonBlankString" use="required">
			<xs:annotation>
				<xs:documentation>Name of the manufacturer which warrants the unit</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="warrantyDuration" type="xs:duration" use="required">
			<xs:annotation>
				<xs:documentation>Time the unit is covered by the warranty, e.g. one-year warranty, two-year warranty, etc.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="warrantyEffectiveDate" type="xs:date" use="required">
			<xs:annotation>
				<xs:documentation>Date when the manufacturer warranty begins to take effect</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="warrantyExclusion" type="c:NonBlankString" use="required">
			<xs:annotation>
				<xs:documentation>Discrepancy in the unit that is not covered by the warranty</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="MaintenanceInformation">
		<xs:annotation>
			<xs:documentation>The MaintenanceInformation element shall be the container for all information entities utilized in the collection of information associated with actions required for the maintenance of a product at a specific level of maintenance or at a repair facility. </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ParentMaintenanceInformation" type="c:DocumentReference" minOccurs="0">
					<xs:annotation>
						<xs:documentation>This element shall be used to identify the externally reference parent MaintenanceInformation instance document.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="CognizantOrganization" type="c:Organization" minOccurs="0">
					<xs:annotation>
						<xs:documentation>This element shall be used to identify the organization that is responsible for the UUT being maintained.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:choice>
					<xs:element name="HardwareMaintained">
						<xs:annotation>
							<xs:documentation>This element shall be used to identify the hardware component being maintained.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:complexContent>
								<xs:extension base="c:HardwareInstance">
									<xs:sequence>
										<xs:element name="Warranty" type="mi:Warranty" minOccurs="0" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>This element shall be used to identify a manufacturer's legal responsibility for the support of the hardware component.</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:extension>
							</xs:complexContent>
						</xs:complexType>
					</xs:element>
					<xs:element name="SoftwareMaintained">
						<xs:annotation>
							<xs:documentation>This element shall be used to identify the software component being maintained.</xs:documentation>
						</xs:annotation>
						<xs:complexType>
							<xs:complexContent>
								<xs:extension base="c:SoftwareInstance">
									<xs:sequence>
										<xs:element name="Warranty" type="mi:Warranty" minOccurs="0" maxOccurs="unbounded">
											<xs:annotation>
												<xs:documentation>This element shall be used to identify a manufacturer's legal responsibility for the support of the software component.</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:extension>
							</xs:complexContent>
						</xs:complexType>
					</xs:element>
				</xs:choice>
				<xs:element name="MaintenanceActionStatus">
					<xs:annotation>
						<xs:documentation>This element shall be used to identify the state of a maintenance item (i.e. AwaitingMaintenance, Complete, InWork, or UserDefined).</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="value" use="required">
							<xs:annotation>
								<xs:documentation>Shall contain one of the following enumerations: "AwaitingMaintenance", "Complete", "InWork", or "UserDefined" to indicate the current state of the maintenance information. </xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="c:NonBlankString">
									<xs:enumeration value="AwaitingMaintenance"/>
									<xs:enumeration value="Complete"/>
									<xs:enumeration value="InWork"/>
									<xs:enumeration value="UserDefined"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="qualifier" type="c:NonBlankString" use="optional">
							<xs:annotation>
								<xs:documentation>A adjective providing additional descriptive data, such as an application specific string, for the value attribute.</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
				<xs:element name="MaintenanceEvent">
					<xs:annotation>
						<xs:documentation>This element shall be used to identify an occurrence in a maintenance environment that can be decomposed into a series of compound actions.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:choice>
								<xs:choice maxOccurs="unbounded">
									<xs:annotation>
										<xs:documentation>This choice is necessary, as an instance document will either document the action resulting from maintenance or will capture the reason for non-action. For each maintenance element, one or more actions can be taken as a result of the required maintenance.</xs:documentation>
									</xs:annotation>
									<xs:element name="InstallAction" type="mi:MaintenanceAction">
										<xs:annotation>
											<xs:documentation>This element shall be used to identify the installation of a component required to complete the maintenance action.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="RemoveAction" type="mi:MaintenanceAction">
										<xs:annotation>
											<xs:documentation>This element shall identiry the removal of a component required to complete the maintenance action.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="RepairAction" type="mi:MaintenanceAction">
										<xs:annotation>
											<xs:documentation>This element shall be used to identify the work required to restore the unit to an operational state. When something is repaired, this element lists details on the part repaired.</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:choice>
								<xs:element name="NoAction" type="mi:MaintenanceAction">
									<xs:annotation>
										<xs:documentation>This element shall be used to identify the reason for not being able to perform maintenance on the unit. </xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:choice>
							<xs:element name="MaintenanceDelay" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>This element shall be used for record-keeping only and is used after the maintenance is performed to document reason(s) for the awaiting maintenance time. </xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Action" type="mi:Action">
											<xs:annotation>
												<xs:documentation>This element shall be used to identify a code that explains the reason for awaiting maintenance on the unit.  Maintenance organizations typically have a list of organization-unique codes that best describe the reasons for awaiting maintenance on the unit. The meaning and interpretation of the code is implementation-specific..</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="Narrative" type="c:NonBlankString" minOccurs="0">
											<xs:annotation>
												<xs:documentation>This element shall be used to identify the narrative description of reason(s) for the unit to be in the awaiting maintenance condition</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="startDateTime" type="xs:dateTime" use="required">
										<xs:annotation>
											<xs:documentation>Identifies the date and time when the unit was put in the awaiting maintenance condition</xs:documentation>
										</xs:annotation>
									</xs:attribute>
									<xs:attribute name="endDateTime" type="xs:duration" use="required">
										<xs:annotation>
											<xs:documentation>Identifies the date and time when the unit was taken out of the awaiting maintenance condition.</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
							<xs:element name="MaintenanceFacility" type="c:Organization">
								<xs:annotation>
									<xs:documentation>This element shall be used to identify the facility where maintenance was performed.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="TechnicalManuals" type="c:DocumentList" minOccurs="0">
								<xs:annotation>
									<xs:documentation>This element shall be used to identify relevant technical manuals that support maintenance of the UUT.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Extension" type="c:Extension" minOccurs="0">
								<xs:annotation>
									<xs:documentation>This element shall provide a specific extension point for use cases that require elements not provided in the basic structure.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="maintenanceType" use="required">
							<xs:annotation>
								<xs:documentation>Enumerated type defining the type of maintenance being performed on the maintenance item. Valid enumerated values include "Scheduled" and "Unscheduled".</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="c:NonBlankString">
									<xs:enumeration value="Scheduled"/>
									<xs:enumeration value="Unscheduled"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
				<xs:element name="Resources">
					<xs:annotation>
						<xs:documentation>This element shall be used to identify all necessary information (equipment data, personnel, training needs, etc) used during the maintenance action.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="EquipmentData" type="c:ItemDescriptionReference" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>This element shall be used to identify all equipment required to complete the maintenance 
action.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="Personnel" type="mi:Maintainer" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>This element shall be used to identify information about the person(s) performing the maintenance action on the item. </xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="WorkOrder" type="c:WorkOrder">
					<xs:annotation>
						<xs:documentation>This element shall be used to identify a work order related to, or authorizing, the maintenance of the UUT.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Extension" type="c:Extension" minOccurs="0">
					<xs:annotation>
						<xs:documentation>This element shall provide a specific extension point for use cases that require elements not provided in the basic structure.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
			<xs:attributeGroup ref="c:DocumentRootAttributes"/>
			<xs:attribute name="name" type="c:NonBlankString">
				<xs:annotation>
					<xs:documentation>The name of the instance document. Example: Acme Widget Maintenance Information</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="maintenanceStartDateTime" type="xs:dateTime" use="required">
				<xs:annotation>
					<xs:documentation>Provides the date and time when the maintenance action was initiated.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="maintenanceEndDateTime" type="xs:dateTime">
				<xs:annotation>
					<xs:documentation>Provides the date and time when the maintenance action was completed.   The actual duration of the entire process associated with the maintenance action is obtained by subtracting the maintenanceStartDateTime from the maintenanceEndDateTime.</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
</xs:schema>

