<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:ale="urn:epcglobal:ale:xsd:1"
            targetNamespace="urn:epcglobal:ale:xsd:1" elementFormDefault="unqualified"
            attributeFormDefault="unqualified" version="1.0">
  <!-- COMMON ELEMENTS -->

  <!-- COMMON TYPES -->

  <xsd:complexType name="ECFieldSpec">
    <xsd:sequence>
      <xsd:element name="fieldname" type="xsd:string"/>
      <xsd:element name="datatype" type="xsd:string" minOccurs="0"/>
      <xsd:element name="format" type="xsd:string" minOccurs="0"/>
      <xsd:element name="extension" type="ale:ECFieldSpecExtension" minOccurs="0"/>
      <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"
               namespace="##other"/>
    </xsd:sequence>
    <xsd:anyAttribute processContents="lax"/>
  </xsd:complexType>

  <xsd:complexType name="ECFieldSpecExtension">
    <xsd:sequence>
      <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"
               namespace="##local"/>
    </xsd:sequence>
    <xsd:anyAttribute processContents="lax"/>
  </xsd:complexType>

  <xsd:complexType name="ECFilterListMember">
    <xsd:sequence>
      <xsd:element name="includeExclude" type="ale:ECIncludeExclude"/>
      <xsd:element name="fieldspec" type="ale:ECFieldSpec"/>
      <xsd:element name="patList">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="pat" type="xsd:string" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="extension" type="ale:ECFilterListMemberExtension"
                   minOccurs="0"/>
      <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"
               namespace="##other"/>
    </xsd:sequence>
    <xsd:anyAttribute processContents="lax"/>
  </xsd:complexType>

  <xsd:complexType name="ECFilterListMemberExtension">
    <xsd:sequence>
      <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"
               namespace="##local"/>
    </xsd:sequence>
    <xsd:anyAttribute processContents="lax"/>
  </xsd:complexType>

  <!-- The ECIncludeExclude type is an enumerated type.
       The following strings are legal values for this type:
         INCLUDE
         EXCLUDE
        -->
  <xsd:simpleType name="ECIncludeExclude">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>

  <xsd:complexType name="ECReaderStat">
    <xsd:sequence>
      <xsd:element name="readerName" type="xsd:string"/>
      <xsd:element name="sightings" minOccurs="0">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="sighting" type="ale:ECSightingStat" minOccurs="0"
                         maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ECSightingStat"/>

  <xsd:complexType name="ECTime">
    <xsd:simpleContent>
      <xsd:extension base="xsd:long">
        <xsd:attribute name="unit" type="ale:ECTimeUnit" use="required"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

  <!-- The ECTimeUnit type is an enumerated type.
       The following strings are legal values for this type:
         MS
       An implementation may also recognize additional strings as extensions.
        -->
  <xsd:simpleType name="ECTimeUnit">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>

  <xsd:simpleType name="ECTrigger">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>
</xsd:schema>

