<?xml version = "1.0" encoding = "UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.mesa.org/xml/B2MML-V0600"
            xmlns="http://www.mesa.org/xml/B2MML-V0600"
            xmlns:Extended="http://www.mesa.org/xml/B2MML-V0600-AllExtensions"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified">

    <!-- Import the Extension Schema into the 'Extended' namespace    -->

    <xsd:import namespace="http://www.mesa.org/xml/B2MML-V0600-AllExtensions"
                schemaLocation="B2MML-V0600-AllExtensions.xsd"/>

    <!-- Include the Common schema   -->

    <xsd:include schemaLocation="B2MML-V0600-Common.xsd"/>
    <xsd:include schemaLocation="B2MML-V0600-ProductionPerformanceTypes.xsd"/>

    <xsd:annotation>
        <xsd:documentation>

            Copyright 2012 MESA International
            All Rights Reserved. http://www.mesa.org

            This MESA International work (including specifications, documents,
            software, and related items) referred to as the Business To
            Manufacturing Markup Language (B2MML) is provided by the copyright
            holders under the following license.

            Permission to use, copy, modify, or redistribute this Work and its
            documentation, with or without modification, for any purpose and
            without fee or royalty is hereby granted provided the World Batch
            Forum is acknowledged as the originator of this Work using the
            following statement:

            "The Business To Manufacturing Markup Language (B2MML) is used
            courtesy of MESA International."

            In no event shall MESA International, its members, or any
            third party be liable for any costs, expenses, losses, damages or
            injuries incurred by use of the Work or as a result of this
            agreement.

            Based upon the ANSI/ISA-95.00.02-2010 Enterprise-Control System
            Integration Part 2: Object Model Attributes Standard and the
            ANSI/ISA-95.00.05-2006 Enterprise-Control System Integration
            Part 5: Business to Manufacturing Transactions.
        </xsd:documentation>

        <xsd:documentation>

            Revision History

            Ver Date Person Note
            --- ---- ------ ----
            V01 7 Apr 2002 D. Emerson Initial release
            V02 23 Sept 2003 D. Emerson Updated filename for V02
            Added Location to resource actual types
            Added SegmentState to SegmentResponseType
            Changed ##any to "Any" element of type "AnyType"
            Added ProductSegmentID to SegmentResponseType
            so it may be associated with process or product
            segments. See comment LD01.
            Added revision to namespace
            V0201 17 Nov 2003 D. Emerson Updated namespace after change to common schema
            v0300 26 Aug 2005 D. Emerson Added substitution groups. One group added just
            before each Any element.
            V0301 29 Dec 2005 D. Brandl Added multivalues Values to match other schemas
            v04 04 Jun 2007 D. Brandl Added transaction elements for ISA 95 Part 5 support.
            Added "cc:" namespace for UN/CEFACT core types.
            Added the UN/CEFACT core components with optional attributes
            and made them the base types for the B2MML types.
            Added ProductionData element to ProductionDataType
            to support recursive definitions and make it
            consistent with ProductionRequest parameters.
            Added "Location" element to ProductionResponse and
            SegmentResponse based on ISA SP95's recommendation and
            planned errata to the standard.
            Added MaterialActual as replacement for MaterialProducedActual,
            MaterialConsumedActual, and ConsumableActual.
            Added ScheduleState, RequestState, and SegmentState elements of
            type RequestStateType.
            Added warning before each use of the AnyType that the extension
            schema should be used instead of the Any element and that in a
            still to be determined future release of B2MML the AnyType and
            Any element will be removed.
            V0500 26 Mar 2011 D. Brandl Updated version for ANSI/ISA95.02 2010 Update
            Added include of ProductionPerformanceTypes to pick upSegmentResponseType
            to eliminate problems in code generation.
            Remove AnyType
            V0600 17 Mar 2013 D. Brandl Changed copyright to MESA International and support for ISA 95 Part 4


        </xsd:documentation>
    </xsd:annotation>

    <!-- Global Elements -->

    <xsd:element name="ProductionPerformance" type="ProductionPerformanceType"/>
    <xsd:element name="ProductionResponse" type="ProductionResponseType"/>

    <!-- Transaction Elements -->

    <xsd:element name="GetProductionPerformance" type="GetProductionPerformanceType"/>
    <xsd:element name="ShowProductionPerformance" type="ShowProductionPerformanceType"/>
    <xsd:element name="ProcessProductionPerformance" type="ProcessProductionPerformanceType"/>
    <xsd:element name="AcknowledgeProductionPerformance" type="AcknowledgeProductionPerformanceType"/>
    <xsd:element name="ChangeProductionPerformance" type="ChangeProductionPerformanceType"/>
    <xsd:element name="RespondProductionPerformance" type="RespondProductionPerformanceType"/>
    <xsd:element name="CancelProductionPerformance" type="CancelProductionPerformanceType"/>
    <xsd:element name="SyncProductionPerformance" type="SyncProductionPerformanceType"/>

    <!-- Simple & Complex Types  -->

    <xsd:complexType name="ProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ID" type="IdentifierType"
                         minOccurs="0"/>
            <xsd:element name="Description" type="DescriptionType"
                         minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="Location" type="LocationType"
                         minOccurs="0"/>
            <!-- HierarchyScope replaces Location, Location is retained for backward compatibility, but is depracated -->
            <xsd:element name="HierarchyScope" type="HierarchyScopeType"
                         minOccurs="0"/>
            <xsd:element name="PublishedDate" type="PublishedDateType"
                         minOccurs="0"/>
            <xsd:element name="ProductionScheduleID" type="ProductionScheduleIDType"
                         minOccurs="0"/>
            <xsd:element name="StartTime" type="StartTimeType"
                         minOccurs="0"/>
            <xsd:element name="EndTime" type="EndTimeType"
                         minOccurs="0"/>
            <xsd:element name="EquipmentElementLevel" type="EquipmentElementLevelType"
                         minOccurs="0"/>
            <xsd:element name="ProductionResponse" type="ProductionResponseType"
                         minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="PerformanceState" type="ResponseStateType"
                         minOccurs="0"/>
            <xsd:group ref="Extended:ProductionPerformance"
                       minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="ProductionResponseType">
        <xsd:sequence>
            <xsd:element name="ID" type="IdentifierType"
                         minOccurs="0"/>
            <xsd:element name="ProductionRequestID" type="ProductionRequestIDType"
                         minOccurs="0"/>
            <xsd:group ref="ProductProductionRuleIDGroup" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="Location" type="LocationType"
                         minOccurs="0"/>
            <!-- HierarchyScope replaces Location, Location is retained for backward compatibility, but is depracated -->
            <xsd:element name="HierarchyScope" type="HierarchyScopeType"
                         minOccurs="0"/>
            <xsd:element name="StartTime" type="StartTimeType"
                         minOccurs="0"/>
            <xsd:element name="EndTime" type="EndTimeType"
                         minOccurs="0"/>
            <xsd:element name="SegmentResponse" type="SegmentResponseType"
                         minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="ResponseState" type="ResponseStateType"
                         minOccurs="0"/>
            <xsd:group ref="Extended:ProductionResponse" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>


    <!-- - - - - - - - - - - - - - - - - - - - - -->
    <!-- ProductionPerformance Transaction Types   -->
    <!-- - - - - - - - - - - - - - - - - - - - - -->

    <xsd:complexType name="GetProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ApplicationArea" type="TransApplicationAreaType"/>
            <xsd:element name="DataArea">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Get" type="TransGetType"/>
                        <xsd:element name="ProductionPerformance"
                                     type="ProductionPerformanceType"
                                     minOccurs="1"
                                     maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="releaseID" type="xsd:normalizedString" use="required"/>
        <xsd:attribute name="versionID" type="xsd:normalizedString" use="optional"/>
    </xsd:complexType>


    <xsd:complexType name="ShowProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ApplicationArea" type="TransApplicationAreaType"/>
            <xsd:element name="DataArea">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Show" type="TransShowType"/>
                        <xsd:element name="ProductionPerformance"
                                     type="ProductionPerformanceType"
                                     minOccurs="1"
                                     maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="releaseID" type="xsd:normalizedString" use="required"/>
        <xsd:attribute name="versionID" type="xsd:normalizedString" use="optional"/>
    </xsd:complexType>


    <xsd:complexType name="ProcessProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ApplicationArea" type="TransApplicationAreaType"/>
            <xsd:element name="DataArea">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Process" type="TransProcessType"/>
                        <xsd:element name="ProductionPerformance"
                                     type="ProductionPerformanceType"
                                     minOccurs="1"
                                     maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="releaseID" type="xsd:normalizedString" use="required"/>
        <xsd:attribute name="versionID" type="xsd:normalizedString" use="optional"/>
    </xsd:complexType>


    <xsd:complexType name="AcknowledgeProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ApplicationArea" type="TransApplicationAreaType"/>
            <xsd:element name="DataArea">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Acknowledge" type="TransAcknowledgeType"/>
                        <xsd:element name="ProductionPerformance"
                                     type="ProductionPerformanceType"
                                     minOccurs="1"
                                     maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="releaseID" type="xsd:normalizedString" use="required"/>
        <xsd:attribute name="versionID" type="xsd:normalizedString" use="optional"/>
    </xsd:complexType>


    <xsd:complexType name="ChangeProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ApplicationArea" type="TransApplicationAreaType"/>
            <xsd:element name="DataArea">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Change" type="TransChangeType"/>
                        <xsd:element name="ProductionPerformance"
                                     type="ProductionPerformanceType"
                                     minOccurs="1"
                                     maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="releaseID" type="xsd:normalizedString" use="required"/>
        <xsd:attribute name="versionID" type="xsd:normalizedString" use="optional"/>
    </xsd:complexType>


    <xsd:complexType name="RespondProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ApplicationArea" type="TransApplicationAreaType"/>
            <xsd:element name="DataArea">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Respond" type="TransRespondType"/>
                        <xsd:element name="ProductionPerformance"
                                     type="ProductionPerformanceType"
                                     minOccurs="1"
                                     maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="releaseID" type="xsd:normalizedString" use="required"/>
        <xsd:attribute name="versionID" type="xsd:normalizedString" use="optional"/>
    </xsd:complexType>


    <xsd:complexType name="CancelProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ApplicationArea" type="TransApplicationAreaType"/>
            <xsd:element name="DataArea">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Cancel" type="TransCancelType"/>
                        <xsd:element name="ProductionPerformance"
                                     type="ProductionPerformanceType"
                                     minOccurs="1"
                                     maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="releaseID" type="xsd:normalizedString" use="required"/>
        <xsd:attribute name="versionID" type="xsd:normalizedString" use="optional"/>
    </xsd:complexType>


    <xsd:complexType name="SyncProductionPerformanceType">
        <xsd:sequence>
            <xsd:element name="ApplicationArea" type="TransApplicationAreaType"/>
            <xsd:element name="DataArea">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="Sync" type="TransSyncType"/>
                        <xsd:element name="ProductionPerformance"
                                     type="ProductionPerformanceType"
                                     minOccurs="1"
                                     maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="releaseID" type="xsd:normalizedString" use="required"/>
        <xsd:attribute name="versionID" type="xsd:normalizedString" use="optional"/>
    </xsd:complexType>

</xsd:schema>