<?xml version="1.0" encoding="UTF-8"?>
<!-- Minor Version 1.1 - 2008-04
	- added WSDL root element names
-->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
    targetNamespace="http://www.nrf-arts.org/UnifiedPOS/ElectronicJournalEvents/"
    xmlns="http://www.nrf-arts.org/UnifiedPOS/ElectronicJournalEvents/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!--============-->
    <!-- Extension mechanism -->
    <!--============-->
    <xs:simpleType name="IXREnumerationExtension">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9A-Za-z][0-9A-Za-z]*:[A-Z][0-9A-Za-z]*"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="TypeCodeExtension">
        <xs:restriction base="IXREnumerationExtension"/>
    </xs:simpleType>
    <!--
		Enumerated type for  CommonData Action Type Codes attribute
	-->
    <xs:simpleType name="ActionCommonDataTypeCodes">
        <xs:union memberTypes="ActionCommonDataTypeCodesEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="ActionCommonDataTypeCodesEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Begin"/>
            <xs:enumeration value="Cancel"/>
            <xs:enumeration value="Complete"/>
            <xs:enumeration value="Create"/>
            <xs:enumeration value="Delete"/>
            <xs:enumeration value="Dispatch"/>
            <xs:enumeration value="Lookup"/>
            <xs:enumeration value="Initiate"/>
            <xs:enumeration value="Instruction"/>
            <xs:enumeration value="Information"/>
            <xs:enumeration value="PartialCancel"/>
            <xs:enumeration value="PartialComplete"/>
            <xs:enumeration value="Read"/>
            <xs:enumeration value="Request"/>
            <xs:enumeration value="Update"/>
            <xs:enumeration value="Add"/>
            <xs:enumeration value="Subtract"/>
            <xs:enumeration value="Replace"/>
        </xs:restriction>
    </xs:simpleType>
    <!--
		Enumerated type for Business Unit Type attribute
	-->
    <xs:simpleType name="BusinessUnitTypeCode">
        <xs:union memberTypes="BusinessUnitTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="BusinessUnitTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="RetailStore"/>
            <xs:enumeration value="DistributionCenter"/>
            <xs:enumeration value="AdministrationCenter"/>
            <xs:enumeration value="CallCenter"/>
            <xs:enumeration value="WebSite"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="BusinessUnitCommonData">
        <xs:annotation>
            <xs:documentation>Business Unit Common Data Node describing the location.     Contains
                one or more of RetailStore, DistributionCenter, InventoryLocation and
                AdminstrativeCenter.</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute form="unqualified" name="Name" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>The name of the business unit</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute default="RetailStore" form="unqualified" name="TypeCode"
                    type="BusinessUnitTypeCode" use="optional"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="OrganizationTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Corporation"/>
            <xs:enumeration value="OperatingCompany">
                <xs:annotation>
                    <xs:documentation> separate legal entity which conducts retail operations for
                        the retail enterprise in some geographical location. It may be treated as a
                        division internally - yet it is still a separate legal
                        entity</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="Concept">
                <xs:annotation>
                    <xs:documentation>a unique line of business within a
                        corporation</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="RevenueCenter">
                <xs:annotation>
                    <xs:documentation>Any area of a store from which particular revenues can be said
                        to derive</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="Region"/>
            <xs:enumeration value="Department">
                <xs:annotation>
                    <xs:documentation>A grouping of items with similar point of sale control and
                        processing attributes. This entity type may also be used to control sales
                        that are not properly identified at the item-level.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="Division">
                <xs:annotation>
                    <xs:documentation>an administrative unit in a large store which certain retail
                        functions have been grouped</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="District"/>
            <xs:enumeration value="Zone"/>
            <xs:enumeration value="DistributionCenter">
                <xs:annotation>
                    <xs:documentation>A warehouse or other storage facility that receives
                        merchandise in bulk from Suppliers and supplies merchandise to RetailStores.
                        It may be co-located at the same Site as a RetailStore or
                        AdministrativeCenter.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="AdministrationCenter">
                <xs:annotation>
                    <xs:documentation>A group of offices at which the retail enterprise conducts
                        administrative (non-selling) operations. May be co-located at a Site with
                        RetailStore, DistributionCenter, or InventoryLocation.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="RetailStore">
                <xs:annotation>
                    <xs:documentation>A retail outlet that sells merchandise and services through
                        either a physical location, catalog, web page or other channel. It may or
                        may not be identical to a Site. It may be co-located at the same Site as a
                        DistributionCenter, InventoryLocation or
                        AdministrativeCenter.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="OrganizationHierarchyCommonData">
        <xs:annotation>
            <xs:documentation>organizational hierarchy so that destination can be targeted to
                individual location, region, division etc, not to be confused with reporting the
                entire hierarchy as is done with the Organizational Hierarchy Structure - i.e. an
                instance of an organization hierarchy at a particular level.</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute form="unqualified" name="Level" type="OrganizationTypeCodeEnumeration"
                    use="optional"/>
                <xs:attribute form="unqualified" name="ID" type="xs:string" use="optional"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <!-- 
		Date Time Enumeration
	-->
    <xs:simpleType name="DateTimeType">
        <xs:union memberTypes="DateTimeTypeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="DateTimeTypeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Message"/>
            <xs:enumeration value="Cancel"/>
            <xs:enumeration value="ActualStart"/>
            <xs:enumeration value="Effective"/>
            <xs:enumeration value="ExpectedDue"/>
            <xs:enumeration value="ExpectedStart"/>
            <xs:enumeration value="Dispatch"/>
            <xs:enumeration value="Expiration"/>
            <xs:enumeration value="Business"/>
            <xs:enumeration value="Start"/>
            <xs:enumeration value="End"/>
            <xs:enumeration value="Receipt"/>
            <xs:enumeration value="Transaction"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="DateTimeCommonData">
        <xs:simpleContent>
            <xs:extension base="xs:dateTime">
                <xs:attribute default="Message" form="unqualified" name="TypeCode"
                    type="DateTimeType" use="optional"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <!-- 
		Severity Type Codes
	-->
    <xs:simpleType name="SeverityCodeType">
        <xs:union memberTypes="SeverityCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="SeverityCodeEnumeration">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Information"/>
            <xs:enumeration value="Warning"/>
            <xs:enumeration value="Error"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="SequenceNumberType">
        <xs:restriction base="xs:unsignedLong">
            <xs:minInclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <!-- 
		email type codes 
	-->
    <xs:simpleType name="IFSFTypeCode">
        <xs:union memberTypes="IFSFTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="IFSFTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Autosafe"/>
            <xs:enumeration value="BankNoteAcceptor"/>
            <xs:enumeration value="CarWash"/>
            <xs:enumeration value="CardHandling"/>
            <xs:enumeration value="CodeGeneratingDevice"/>
            <xs:enumeration value="COPT"/>
            <xs:enumeration value="DeliveryControl"/>
            <xs:enumeration value="Dispenser"/>
            <xs:enumeration value="EnvironmentalMonitor"/>
            <xs:enumeration value="ForecourtPinPad"/>
            <xs:enumeration value="ForecourtPrinter"/>
            <xs:enumeration value="ForecourtPricePole"/>
            <xs:enumeration value="HumanInterfaceDevice"/>
            <xs:enumeration value="LineLeakDetector"/>
            <xs:enumeration value="MagCardReader"/>
            <xs:enumeration value="TankLevelGauge"/>
        </xs:restriction>
    </xs:simpleType>
    <!-- 
		Minor Release V1.1.0 - Oct 2007
		- Added ElectronicValueReaderWriter
	-->
    <xs:simpleType name="UnifiedPOSTypeCode">
        <xs:union memberTypes="UnifiedPOSTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="UnifiedPOSTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Belt"/>
            <xs:enumeration value="BillAcceptor"/>
            <xs:enumeration value="BillDispenser"/>
            <xs:enumeration value="Biometrics"/>
            <xs:enumeration value="BumpBar"/>
            <xs:enumeration value="CashChanger"/>
            <xs:enumeration value="CashDrawer"/>
            <xs:enumeration value="CAT"/>
            <xs:enumeration value="CheckScanner"/>
            <xs:enumeration value="CoinAcceptor"/>
            <xs:enumeration value="CoinDispenser"/>
            <xs:enumeration value="ElectronicJournal"/>
            <xs:enumeration value="ElectronicValueReaderWriter"/>
            <xs:enumeration value="FiscalPrinter"/>
            <xs:enumeration value="Gate"/>
            <xs:enumeration value="HardTotals"/>
            <xs:enumeration value="ImageScanner"/>
            <xs:enumeration value="ItemDispenser"/>
            <xs:enumeration value="Keylock"/>
            <xs:enumeration value="Light"/>
            <xs:enumeration value="LineDisplay"/>
            <xs:enumeration value="MagneticStripeReader"/>
            <xs:enumeration value="MICR"/>
            <xs:enumeration value="MotionSensor"/>
            <xs:enumeration value="PinPad"/>
            <xs:enumeration value="PointcardReaderWriter"/>
            <xs:enumeration value="POSKeyboard"/>
            <xs:enumeration value="POSPower"/>
            <xs:enumeration value="POSPrinter"/>
            <xs:enumeration value="RemoteOrderDisplay"/>
            <xs:enumeration value="RFIDScanner"/>
            <xs:enumeration value="Scale"/>
            <xs:enumeration value="Scanner"/>
            <xs:enumeration value="SignatureCapture"/>
            <xs:enumeration value="SmartCardReader"/>
            <xs:enumeration value="ToneIndicator"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="NAFEMTypeCode">
        <xs:union memberTypes="NAFEMTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="NAFEMTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Dispensing"/>
            <xs:enumeration value="FoodPreparation"/>
            <xs:enumeration value="FrozenDessertsBeverages"/>
            <xs:enumeration value="FrozenDessertsSteamers"/>
            <xs:enumeration value="GriddlesGrills"/>
            <xs:enumeration value="HoldingCabinets"/>
            <xs:enumeration value="HotBeverages"/>
            <xs:enumeration value="HVAC"/>
            <xs:enumeration value="IceEquipment"/>
            <xs:enumeration value="Measurement"/>
            <xs:enumeration value="Ovens"/>
            <xs:enumeration value="Refrigeration"/>
            <xs:enumeration value="SecuritySystem"/>
            <xs:enumeration value="TemperatureFryer"/>
            <xs:enumeration value="Timers"/>
            <xs:enumeration value="Toasters"/>
            <xs:enumeration value="Ventilation"/>
            <xs:enumeration value="WareWashing"/>
            <xs:enumeration value="WasteSystems"/>
            <xs:enumeration value="Weighing"/>
        </xs:restriction>
    </xs:simpleType>
    <!-- 
		email type codes 
	-->
    <xs:simpleType name="LonMarkTypeCode">
        <xs:union memberTypes="LonMarkTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="LonMarkTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Industrial"/>
            <xs:enumeration value="EnergyManagement"/>
            <xs:enumeration value="HVAC"/>
            <xs:enumeration value="Lighting"/>
            <xs:enumeration value="Refrigeration"/>
            <xs:enumeration value="Sensors"/>
            <xs:enumeration value="MotorControls"/>
            <xs:enumeration value="InputOutput"/>
            <xs:enumeration value="AccessIntrusionMonitoring"/>
            <xs:enumeration value="FireAndSmoke"/>
        </xs:restriction>
    </xs:simpleType>
    <!-- 
		email type codes 
	-->
    <xs:simpleType name="IETFTypeCode">
        <xs:union memberTypes="IETFTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="IETFTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="UPS"/>
        </xs:restriction>
    </xs:simpleType>
    <!-- 
		email type codes 
	-->
    <xs:simpleType name="REMTypeCode">
        <xs:union memberTypes="REMTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="REMTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Heartbeat"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="EventCommonData">
        <xs:sequence>
            <xs:element form="qualified" name="SequenceNumber" type="SequenceNumberType">
                <xs:annotation>
                    <xs:documentation>The event message’s auto-incrementing sequence number so that
                        the messages can be ordered and duplicates can be detected.  Each producer
                        should use its own sequence number, which should
                        rollover.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="EventDateTime">
                <xs:annotation>
                    <xs:documentation>The date, time, and time zone when the event occurred from the
                        producer’s perspective.  Millisecond granularity.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="DateTimeCommonData"/>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element form="qualified" minOccurs="0" name="EventDescription" type="xs:string">
                <xs:annotation>
                    <xs:documentation>A description of the event.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" minOccurs="0" name="SourceName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>Logical name of the event producer.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:choice>
                <xs:element form="qualified" name="SourceURI" type="xs:string"/>
                <xs:element form="qualified" name="SensorID" type="SensorIDType"/>
            </xs:choice>
            <xs:element form="qualified" minOccurs="0" name="Instance" type="xs:string">
                <xs:annotation>
                    <xs:documentation>In the case of multiple instances of a producing application,
                        the instance number so that each producer can be unique.  This may be the
                        process ID for convenience.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" minOccurs="0" name="BusinessUnit">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="BusinessUnitCommonData"/>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element form="qualified" minOccurs="0" name="OrganizationalHierarchy">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="OrganizationHierarchyCommonData"/>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute form="unqualified" name="Priority" type="xs:integer" use="optional">
            <xs:annotation>
                <xs:documentation>Used for prioritizing messages in the queue.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute form="unqualified" name="Severity" type="SeverityCodeType" use="optional">
            <xs:annotation>
                <xs:documentation>The Severity is the basic priority of the message. This is defined
                    in ISO 2382.  Enumeration - Information - data about the condition the event is
                    reporting, e.g.temperature of a freezer or chiller - Warning - an indication of
                    a condition which may develop into a fault at a later time - Fault – Error
                    requiring immediate attention. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute default="Production" form="unqualified" name="Mode" type="EventModeTypeCodes">
            <xs:annotation>
                <xs:documentation>TestMode, TrainingMode, or ProductionMode</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="SensorIDType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute form="unqualified" name="REM" type="REMTypeCode"/>
                <xs:attribute form="unqualified" name="UnifiedPOS"
                    type="UnifiedPOSTypeCodeEnumeration"/>
                <xs:attribute form="unqualified" name="IFSF" type="IFSFTypeCode"/>
                <xs:attribute form="unqualified" name="IETF" type="IETFTypeCode"/>
                <xs:attribute form="unqualified" name="NAFEM" type="NAFEMTypeCode"/>
                <xs:attribute form="unqualified" name="LonMark" type="LonMarkTypeCode"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="EventModeTypeCodes">
        <xs:union memberTypes="EventModeTypeCodesEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="EventModeTypeCodesEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="Test"/>
            <xs:enumeration value="Training"/>
            <xs:enumeration value="Production"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:group name="ElectronicJournalPropertiesGroup">
        <xs:choice>
            <xs:element form="qualified" name="AsyncMode" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, then the print methods will be performed
                        asynchronously.  If false, they will be performed
                        synchronously.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapAddMarker" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the application can use the addMarker method. Usually
                        this property is false for fiscal EJ devices.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapErasableMedium" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the storage medium can be erased. If false, it is
                        impossible.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapInitializeMedium" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the application can initialize the
                        medium.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapMediumIsAvailable" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the application can check whether a recording medium
                        is plugged or not.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapPrintContent" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the device is able to reprint stored journal
                        documents directly on a connected printing device.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapPrintContentFile" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the device is able to print journal documents
                        extracted from the storage medium on a connected printing
                        device.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapRetrieveCurrentMarker" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the application can use the retrieveCurrentMarker
                        method. Usually this property is true for fiscal EJ
                        devices.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapRetrieveMarker" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the application can use the retrieveMarker method.
                        Usually this property is true for fiscal EJ devices</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapRetrieveMarkerByDateTime" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the application can use the retrieveMarkerByDateTime
                        method. Usually this property is true for fiscal EJ
                        devices.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapRetrieveMarkersDateTime" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the application can use the retrieveMarkersDateTime
                        method. Usually this property is true for fiscal EJ
                        devices.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapStation" nillable="true" type="StationTypeCode">
                <xs:annotation>
                    <xs:documentation>This capability indicates the availability of data
                        capturing.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapStorageEnabled" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>This property indicates whether the recording of print data
                        can be controlled by the StorageEnabled property, i.e., can be changed. If
                        false, StorageEnabled is always set to true.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapSuspendPrintContent" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the printing process can be
                        suspended.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapSuspendQueryContent" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the data acquiring process can be
                        suspended.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapWaterMark" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the device is able to print specific predefined
                        background when reprinting journal documents.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="MediumFreeSpace" nillable="true" type="xs:long">
                <xs:annotation>
                    <xs:documentation>Holds the size of the remained free space on the storage
                        medium in bytes. After each storing process caused by printing with
                        POSPrinter device, this value is decreased. It notifies StatusUpdateEvent
                        when free space is near empty or empty.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="MediumID" nillable="true" type="xs:string">
                <xs:annotation>
                    <xs:documentation>This property indicates identification of the currently
                        plugged medium. It holds a value from the physical medium, so is initialized
                        when enabled.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="MediumSize" nillable="true" type="xs:long">
                <xs:annotation>
                    <xs:documentation>Holds the size of the storage medium in
                        bytes.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="Station" nillable="true" type="StationTypeCode">
                <xs:annotation>
                    <xs:documentation>Set the station for subsequent data storing into the
                        medium.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="FlagWhenIdle" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, a StatusUpdateEvent will be enqueued when the device
                        is in the idle state.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="MediumIsAvailable" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Indicates whether a recording medium is attached or
                        not.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="StorageEnabled" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the device is in a recordable
                        state.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="Suspended" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the printing or data acquiring process is being
                        suspended.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="WaterMark" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>This property specifies whether a specific predefined
                        background should be printed or not with journal
                        documents</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:choice>
    </xs:group>
    <xs:simpleType name="StationTypeCode">
        <xs:union memberTypes="StationTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="StationTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="EJ_S_RECEIPT"/>
            <xs:enumeration value="EJ_S_SLIP"/>
            <xs:enumeration value="EJ_S_JOURNAL"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:group name="XMLPOSCommonPropertiesGroup">
        <xs:choice>
            <xs:element default="false" form="qualified" name="AutoDisable" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>if true, the UnifiedPOS Service will set DeviceEnabled to
                        false after it receives and enqueus data as a DataEvent.  Before any
                        additional input can be received, the application must be set DeviceEnabled
                        to true.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapCompareFirmwareVersion" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, then the service/device supports comparing the
                        version of the firmware in the physical device against that of a firmware
                        file.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapPowerReporting" type="CapPowerReportingTypeCode">
                <xs:annotation>
                    <xs:documentation>Identifies the reporting capabilities of the
                        device</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapStatisticsReporting" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the device accumulates and can provide various
                        statistics regarding usage; otherwise no usage statistics are
                        accumulated.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapUpdateFirmware" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, then the device's firmware can be updated via the
                        UpdateFirmware method.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CapUpdateStatistics" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>if true, the device statistics, or some of the statistics, can
                        be reset to zero using the ResetStatistics method, or updated using the
                        UpdateStatistics method.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="CheckHealthText" nillable="true" type="xs:string">
                <xs:annotation>
                    <xs:documentation>Holds the results of the most recent call to the CheckHealth
                        method.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" form="qualified" name="Claimed" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the device is claimed for exclusive access.  If
                        false, the device is released for sharing with other
                        applications.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="0" form="qualified" name="DataCount" nillable="true" type="xs:int">
                <xs:annotation>
                    <xs:documentation>Holds the number of enqueued Data Events.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" form="qualified" name="DataEventEnabled" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, a Data Event will be delivered as soon as input data
                        is enqueued.  If changed to true and some input data is already queued, then
                        a Data Event is delivered immediately.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="DeviceControlDescription" nillable="true"
                type="xs:string">
                <xs:annotation>
                    <xs:documentation>Holds an identifier for the UnifiedPOS Control and the company
                        that produced it.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="DeviceControlVersion" nillable="true" type="xs:int">
                <xs:annotation>
                    <xs:documentation>Holds the UnifiedPOS Control version number</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" form="qualified" name="DeviceEnabled" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the device is in an operational state.  If changed to
                        true, then the device is bought to an operational state.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="DeviceServiceDescription" nillable="true"
                type="xs:string">
                <xs:annotation>
                    <xs:documentation>Holds an identifier for the UnifiedPOS Service and the company
                        that produced it.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="DeviceServiceVersion" nillable="true" type="xs:int">
                <xs:annotation>
                    <xs:documentation>Holds the UnifiedPOS Service version number</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" form="qualified" name="FreezeEvents" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>If true, the UnifiedPOS control will not deliver events.
                        Events will be enqueued until this property is set to
                        false.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="OutputID" nillable="true" type="xs:int">
                <xs:annotation>
                    <xs:documentation>Identifier of the most recently started asynchronous
                        output</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="PhysicalDeviceDescription" nillable="true"
                type="xs:string">
                <xs:annotation>
                    <xs:documentation>Holds an identifier for the physical device</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="PhysicalDeviceName" nillable="true" type="xs:string">
                <xs:annotation>
                    <xs:documentation>Holds a short name identifying the physical
                        device.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="PN_DISABLED" form="qualified" name="PowerNotify"
                type="PowerNotifyTypeCode">
                <xs:annotation>
                    <xs:documentation>Contains the type of power notification selection made by the
                        application.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="PS_UNKNOWN" form="qualified" name="PowerState"
                type="PowerStateTypeCode">
                <xs:annotation>
                    <xs:documentation>Identifies the current power condition of the device, if it
                        can be determined</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element form="qualified" name="State" type="StateTypeCode">
                <xs:annotation>
                    <xs:documentation>Holds the current state of the device</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:choice>
    </xs:group>
    <!--
		Enumerated type for CapPowerReporting Type attribute
	-->
    <xs:simpleType name="CapPowerReportingTypeCode">
        <xs:union memberTypes="CapPowerReportingTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="CapPowerReportingTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="PR_NONE"/>
            <xs:enumeration value="PR_STANDARD"/>
            <xs:enumeration value="PR_ADVANCED"/>
        </xs:restriction>
    </xs:simpleType>
    <!--
		Enumerated type for PowerNotify Type attribute
	-->
    <xs:simpleType name="PowerNotifyTypeCode">
        <xs:union memberTypes="PowerNotifyTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="PowerNotifyTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="PN_DISABLED"/>
            <xs:enumeration value="PN_ENABLED"/>
        </xs:restriction>
    </xs:simpleType>
    <!--
		Enumerated type for PowerState Type attribute
	-->
    <xs:simpleType name="PowerStateTypeCode">
        <xs:union memberTypes="PowerStateTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="PowerStateTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="PS_UNKNOWN"/>
            <xs:enumeration value="PS_ONLINE"/>
            <xs:enumeration value="PS_OFF"/>
            <xs:enumeration value="PS_OFFLINE"/>
            <xs:enumeration value="PS_OFF_OFFLINE"/>
        </xs:restriction>
    </xs:simpleType>
    <!--
		Enumerated type for State Type attribute
	-->
    <xs:simpleType name="StateTypeCode">
        <xs:union memberTypes="StateTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="StateTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="S_CLOSED"/>
            <xs:enumeration value="S_IDLE"/>
            <xs:enumeration value="S_BUSY"/>
            <xs:enumeration value="S_ERROR"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="ElectronicJournalPropertiesType">
        <xs:choice maxOccurs="unbounded" minOccurs="0">
            <xs:group ref="XMLPOSCommonPropertiesGroup"/>
            <xs:group ref="ElectronicJournalPropertiesGroup"/>
        </xs:choice>
    </xs:complexType>
    <!--
		Enumerated type for  CommonData Type Codes attribute
	-->
    <xs:simpleType name="StatusUpdateCommonDataTypeCodes">
        <xs:union memberTypes="StatusUpdateCommonDataTypeCodesEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="StatusUpdateCommonDataTypeCodesEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="SUE_POWER_ONLINE"/>
            <xs:enumeration value="SUE_POWER_OFF"/>
            <xs:enumeration value="SUE_POWER_OFFLINE"/>
            <xs:enumeration value="SUE_POWER_OFF_OFFLINE"/>
            <xs:enumeration value="SUE_UF_PROGRESS1"/>
            <xs:enumeration value="SUE_UF_PROGRESS2"/>
            <xs:enumeration value="SUE_UF_PROGRESS3"/>
            <xs:enumeration value="SUE_UF_PROGRESS4"/>
            <xs:enumeration value="SUE_UF_PROGRESS5"/>
            <xs:enumeration value="SUE_UF_PROGRESS6"/>
            <xs:enumeration value="SUE_UF_PROGRESS7"/>
            <xs:enumeration value="SUE_UF_PROGRESS8"/>
            <xs:enumeration value="SUE_UF_PROGRESS9"/>
            <xs:enumeration value="SUE_UF_PROGRESS10"/>
            <xs:enumeration value="SUE_UF_PROGRESS11"/>
            <xs:enumeration value="SUE_UF_PROGRESS12"/>
            <xs:enumeration value="SUE_UF_PROGRESS13"/>
            <xs:enumeration value="SUE_UF_PROGRESS14"/>
            <xs:enumeration value="SUE_UF_PROGRESS15"/>
            <xs:enumeration value="SUE_UF_PROGRESS16"/>
            <xs:enumeration value="SUE_UF_PROGRESS17"/>
            <xs:enumeration value="SUE_UF_PROGRESS18"/>
            <xs:enumeration value="SUE_UF_PROGRESS19"/>
            <xs:enumeration value="SUE_UF_PROGRESS20"/>
            <xs:enumeration value="SUE_UF_PROGRESS21"/>
            <xs:enumeration value="SUE_UF_PROGRESS22"/>
            <xs:enumeration value="SUE_UF_PROGRESS23"/>
            <xs:enumeration value="SUE_UF_PROGRESS24"/>
            <xs:enumeration value="SUE_UF_PROGRESS25"/>
            <xs:enumeration value="SUE_UF_PROGRESS26"/>
            <xs:enumeration value="SUE_UF_PROGRESS27"/>
            <xs:enumeration value="SUE_UF_PROGRESS28"/>
            <xs:enumeration value="SUE_UF_PROGRESS29"/>
            <xs:enumeration value="SUE_UF_PROGRESS30"/>
            <xs:enumeration value="SUE_UF_PROGRESS31"/>
            <xs:enumeration value="SUE_UF_PROGRESS32"/>
            <xs:enumeration value="SUE_UF_PROGRESS33"/>
            <xs:enumeration value="SUE_UF_PROGRESS34"/>
            <xs:enumeration value="SUE_UF_PROGRESS35"/>
            <xs:enumeration value="SUE_UF_PROGRESS36"/>
            <xs:enumeration value="SUE_UF_PROGRESS37"/>
            <xs:enumeration value="SUE_UF_PROGRESS38"/>
            <xs:enumeration value="SUE_UF_PROGRESS39"/>
            <xs:enumeration value="SUE_UF_PROGRESS40"/>
            <xs:enumeration value="SUE_UF_PROGRESS41"/>
            <xs:enumeration value="SUE_UF_PROGRESS42"/>
            <xs:enumeration value="SUE_UF_PROGRESS43"/>
            <xs:enumeration value="SUE_UF_PROGRESS44"/>
            <xs:enumeration value="SUE_UF_PROGRESS45"/>
            <xs:enumeration value="SUE_UF_PROGRESS46"/>
            <xs:enumeration value="SUE_UF_PROGRESS47"/>
            <xs:enumeration value="SUE_UF_PROGRESS48"/>
            <xs:enumeration value="SUE_UF_PROGRESS49"/>
            <xs:enumeration value="SUE_UF_PROGRESS50"/>
            <xs:enumeration value="SUE_UF_PROGRESS51"/>
            <xs:enumeration value="SUE_UF_PROGRESS52"/>
            <xs:enumeration value="SUE_UF_PROGRESS53"/>
            <xs:enumeration value="SUE_UF_PROGRESS54"/>
            <xs:enumeration value="SUE_UF_PROGRESS55"/>
            <xs:enumeration value="SUE_UF_PROGRESS56"/>
            <xs:enumeration value="SUE_UF_PROGRESS57"/>
            <xs:enumeration value="SUE_UF_PROGRESS58"/>
            <xs:enumeration value="SUE_UF_PROGRESS59"/>
            <xs:enumeration value="SUE_UF_PROGRESS60"/>
            <xs:enumeration value="SUE_UF_PROGRESS61"/>
            <xs:enumeration value="SUE_UF_PROGRESS62"/>
            <xs:enumeration value="SUE_UF_PROGRESS63"/>
            <xs:enumeration value="SUE_UF_PROGRESS64"/>
            <xs:enumeration value="SUE_UF_PROGRESS65"/>
            <xs:enumeration value="SUE_UF_PROGRESS66"/>
            <xs:enumeration value="SUE_UF_PROGRESS67"/>
            <xs:enumeration value="SUE_UF_PROGRESS68"/>
            <xs:enumeration value="SUE_UF_PROGRESS69"/>
            <xs:enumeration value="SUE_UF_PROGRESS70"/>
            <xs:enumeration value="SUE_UF_PROGRESS71"/>
            <xs:enumeration value="SUE_UF_PROGRESS72"/>
            <xs:enumeration value="SUE_UF_PROGRESS73"/>
            <xs:enumeration value="SUE_UF_PROGRESS74"/>
            <xs:enumeration value="SUE_UF_PROGRESS75"/>
            <xs:enumeration value="SUE_UF_PROGRESS76"/>
            <xs:enumeration value="SUE_UF_PROGRESS77"/>
            <xs:enumeration value="SUE_UF_PROGRESS78"/>
            <xs:enumeration value="SUE_UF_PROGRESS79"/>
            <xs:enumeration value="SUE_UF_PROGRESS80"/>
            <xs:enumeration value="SUE_UF_PROGRESS81"/>
            <xs:enumeration value="SUE_UF_PROGRESS82"/>
            <xs:enumeration value="SUE_UF_PROGRESS83"/>
            <xs:enumeration value="SUE_UF_PROGRESS84"/>
            <xs:enumeration value="SUE_UF_PROGRESS85"/>
            <xs:enumeration value="SUE_UF_PROGRESS86"/>
            <xs:enumeration value="SUE_UF_PROGRESS87"/>
            <xs:enumeration value="SUE_UF_PROGRESS88"/>
            <xs:enumeration value="SUE_UF_PROGRESS89"/>
            <xs:enumeration value="SUE_UF_PROGRESS90"/>
            <xs:enumeration value="SUE_UF_PROGRESS91"/>
            <xs:enumeration value="SUE_UF_PROGRESS92"/>
            <xs:enumeration value="SUE_UF_PROGRESS93"/>
            <xs:enumeration value="SUE_UF_PROGRESS94"/>
            <xs:enumeration value="SUE_UF_PROGRESS95"/>
            <xs:enumeration value="SUE_UF_PROGRESS96"/>
            <xs:enumeration value="SUE_UF_PROGRESS97"/>
            <xs:enumeration value="SUE_UF_PROGRESS98"/>
            <xs:enumeration value="SUE_UF_PROGRESS99"/>
            <xs:enumeration value="SUE_UF_PROGRESS100"/>
            <xs:enumeration value="SUE_UF_COMPLETE"/>
            <xs:enumeration value="SUE_UF_COMPLETE_DEV_NOT_RESTORED"/>
            <xs:enumeration value="SUE_UF_FAILED_DEV_OK"/>
            <xs:enumeration value="SUE_UF_FAILED_DEV_UNRECOVERABLE"/>
            <xs:enumeration value="SUE_UF_FAILED_DEV_NEEDS_FIRMWARE"/>
            <xs:enumeration value="SUE_UF_FAILED_DEV_UNKNOWN"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="POSErrorTypeCode">
        <xs:union memberTypes="POSErrorTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="POSErrorTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="E_CLOSED">
                <xs:annotation>
                    <xs:documentation>An attempt was made to access a closed
                        Device.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_CLAIMED">
                <xs:annotation>
                    <xs:documentation>An attempt was made to access a Physical Device that is
                        claimed by another Control instance. The other Control must release the
                        Physical Device before this access may be made. For exclusive-use devices,
                        the application will also need to claim the Physical Device before the
                        access is legal.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_NOTCLAIMED">
                <xs:annotation>
                    <xs:documentation>An attempt was made to access an exclusive-use device that
                        must be claimed before the method or property set action can be used.  If
                        the Physical Device is already claimed by another Control instance, then the
                        status E_CLAIMED is returned instead.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_NOSERVICE">
                <xs:annotation>
                    <xs:documentation>The Control cannot communicate with the Service, normally
                        because of a setup or configuration error.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_DISABLED">
                <xs:annotation>
                    <xs:documentation>Cannot perform this operation while the Device is
                        disabled.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_ILLEGAL">
                <xs:annotation>
                    <xs:documentation>An attempt was made to perform an illegal or unsupported
                        operation with the Device, or an invalid parameter value was
                        used.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_NOHARDWARE">
                <xs:annotation>
                    <xs:documentation>The Physical Device is not connected to the system or is not
                        powered on.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_OFFLINE">
                <xs:annotation>
                    <xs:documentation>The Physical Device is off-line.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_NOEXIST">
                <xs:annotation>
                    <xs:documentation>The file name (or other specified value) does not
                        exist.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_EXISTS">
                <xs:annotation>
                    <xs:documentation>The file name (or other specified value) already
                        exists.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_FAILURE">
                <xs:annotation>
                    <xs:documentation>The Device cannot perform the requested procedure, even though
                        the Physical Device is connected to the system, powered on, and
                        on-line.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_TIMEOUT">
                <xs:annotation>
                    <xs:documentation>The Service timed out waiting for a response from the Physical
                        Device, or the Control timed out waiting for a response from the
                        Service.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_BUSY">
                <xs:annotation>
                    <xs:documentation>The current Service state does not allow this request. For
                        example, if asynchronous output is in progress, certain methods may not be
                        allowed.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_EXTENDED">
                <xs:annotation>
                    <xs:documentation>A device category-specific error condition occurred. The error
                        condition code is held in an extended error code.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E_DEPRECATED">
                <xs:annotation>
                    <xs:documentation>The requested operation can not be performed since it has been
                        deprecated.</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="ElectronicJournalEvent">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="DataEvent"
                    type="DataEventType">
                    <xs:annotation>
                        <xs:documentation>Notifies the application that the storing of the queried
                            Electronic Journal content to a host file is
                            completed.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="DirectIOEvent"
                    type="DirectIOEventType">
                    <xs:annotation>
                        <xs:documentation>Provides Service information directly to the application.
                            This event provides a means for a vendor-specific Electronic Journal
                            Service to provide events to the application that are not otherwise
                            supported by the Control.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="ErrorEvent"
                    type="ErrorEventType">
                    <xs:annotation>
                        <xs:documentation>Notifies the application that an Electronic Journal device
                            error has been detected and that a suitable response by the application
                            is necessary to process the error condition.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="OutputCompleteEvent"
                    type="OutputCompleteEventType">
                    <xs:annotation>
                        <xs:documentation>Notifies the application that the queued output request
                            associated with the OutputID attribute has completed
                            successfully.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="StatusUpdateEvent"
                    type="StatusUpdateEventType">
                    <xs:annotation>
                        <xs:documentation>Notifies the application that there is a change in the
                            status of the Electronic Journal device.</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
            <xs:attribute fixed="1" name="MajorVersion" use="required"/>
            <xs:attribute fixed="15" name="MinorVersion"/>
            <xs:attribute fixed="1" name="FixVersion"/>
            <xs:attribute name="ActionCode" type="ActionCommonDataTypeCodes"/>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="DataEventType">
        <xs:annotation>
            <xs:documentation>Notifies the application that the storing of the queried Electronic
                Journal content to a host file is completed.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="EventCommonData">
                <xs:sequence>
                    <xs:element fixed="0" name="Status" type="xs:int"/>
                    <xs:element minOccurs="0" name="Properties"
                        type="ElectronicJournalPropertiesType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="DirectIOEventType">
        <xs:annotation>
            <xs:documentation>Provides Service information directly to the application. This event
                provides a means for a vendor-specific Electronic Journal Service to provide events
                to the application that are not otherwise supported by the
                Control.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="EventCommonData">
                <xs:sequence>
                    <xs:element name="EventNumber" type="xs:int">
                        <xs:annotation>
                            <xs:documentation>Event number whose specific values are assigned by the
                                Service.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" name="Data" type="xs:int">
                        <xs:annotation>
                            <xs:documentation>Additional numeric data. Specific values vary by the
                                EventNumber and the Service. This property is
                                settable.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Obj">
                        <xs:annotation>
                            <xs:documentation>Additional data whose usage varies by the EventNumber
                                and Service. This property is settable.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:any maxOccurs="unbounded" namespace="##other"
                                    processContents="lax"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Properties"
                        type="ElectronicJournalPropertiesType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="ErrorEventType">
        <xs:annotation>
            <xs:documentation>Notifies the application that an Electronic Journal device error has
                been detected and that a suitable response by the application is necessary to
                process the error condition.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="EventCommonData">
                <xs:sequence>
                    <xs:element name="ErrorCode" type="POSErrorTypeCode">
                        <xs:annotation>
                            <xs:documentation>Error code causing the error event.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="ErrorCodeExtended" type="ErrorCodeExtendedTypeCode">
                        <xs:annotation>
                            <xs:documentation>Extended Error code causing the error event. It may
                                contain a Service-specific value.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="ErrorLocus" type="ErrorLocusTypeCode">
                        <xs:annotation>
                            <xs:documentation>Location of the error.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="ErrorResponse" type="ErrorResponseTypeCode">
                        <xs:annotation>
                            <xs:documentation>Error response, whose default value may be overridden
                                by the application. (i.e., this property is
                                settable).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Properties"
                        type="ElectronicJournalPropertiesType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="OutputCompleteEventType">
        <xs:annotation>
            <xs:documentation>Notifies the application that the queued output request associated
                with the OutputID attribute has completed successfully.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="EventCommonData">
                <xs:sequence>
                    <xs:element name="OutputID" type="xs:int">
                        <xs:annotation>
                            <xs:documentation>The ID number of the asynchronous output request that
                                is complete. </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Properties"
                        type="ElectronicJournalPropertiesType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="StatusUpdateEventType">
        <xs:annotation>
            <xs:documentation>Notifies the application that there is a change in the status of the
                Electronic Journal device.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="EventCommonData">
                <xs:sequence>
                    <xs:element name="Status" type="StatusTypeCode">
                        <xs:annotation>
                            <xs:documentation>Indicates a change in the status of the Electronic
                                Journal device.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Properties"
                        type="ElectronicJournalPropertiesType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="ErrorLocusTypeCode">
        <xs:union memberTypes="ErrorLocusTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="ErrorLocusTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="EL_INPUT"/>
            <xs:enumeration value="EL_INPUT_DATA"/>
            <xs:enumeration value="EL_OUTPUT"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ErrorCodeExtendedTypeCode">
        <xs:union memberTypes="ErrorCodeExtendedTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="ErrorCodeExtendedTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="EEJ_UNINITIALIZED_MEDIUM"/>
            <xs:enumeration value="EEJ_CORRUPTED_MEDIUM"/>
            <xs:enumeration value="EEJ_UNKNOWN_DATAFORMAT"/>
            <xs:enumeration value="EEJ_NOT_ENOUGH_SPACE"/>
            <xs:enumeration value="EEJ_MULTIPLE_MARKERS"/>
        </xs:restriction>
    </xs:simpleType>
    <!--   -->
    <xs:simpleType name="ErrorResponseTypeCode">
        <xs:union memberTypes="ErrorResponseTypeCodeEnumeration TypeCodeExtension"/>
    </xs:simpleType>
    <xs:simpleType name="ErrorResponseTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="ER_RETRY"/>
            <xs:enumeration value="ER_CLEAR"/>
            <xs:enumeration value="ER_CONTINUEINPUT"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StatusTypeCode">
        <xs:union
            memberTypes="StatusTypeCodeEnumeration TypeCodeExtension StatusUpdateCommonDataTypeCodes"
        />
    </xs:simpleType>
    <xs:simpleType name="StatusTypeCodeEnumeration">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="EJ_SUE_MEDIUM_NEAR_FULL"/>
            <xs:enumeration value="EJ_SUE_MEDIUM_FULL"/>
            <xs:enumeration value="EJ_SUE_MEDIUM_REMOVED"/>
            <xs:enumeration value="EJ_SUE_MEDIUM_INSERTED"/>
            <xs:enumeration value="EJ_SUE_SUSPENDED"/>
            <xs:enumeration value="EL_SUE_IDLE"/>
        </xs:restriction>
    </xs:simpleType>
    <!--WSDL Root Element Names-->
    <xs:element name="DataEvent" type="DataEventType"/>
    <xs:element name="DirectIOEvent" type="DirectIOEventType"/>
    <xs:element name="ErrorEvent" type="ErrorEventType"/>
    <xs:element name="OutputCompleteEvent" type="OutputCompleteEventType"/>
    <xs:element name="StatusUpdateEvent" type="StatusUpdateEventType"/>
</xs:schema>
