<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2004 The Apache Software Foundation

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License. -->

<xsd:schema
  targetNamespace="http://www.test.bmecat.org"
  xmlns="http://www.test.bmecat.org"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified">

  <xsd:complexType name="dtMLSTRING">
    <xsd:simpleContent>
      <xsd:extension base="dtSTRING">
        <xsd:attribute name="lang" type="xsd:string" use="optional"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="dtSTRING">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>

  <xsd:element name="ARTICLE_STATUS">
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="dtMLSTRING">
          <xsd:attribute name="type" use="required">
            <xsd:simpleType>
              <xsd:restriction base="dtSTRING">
                <xsd:minLength value="1"/>
                <xsd:maxLength value="20"/>
                <xsd:enumeration value="bargain"/>
                <xsd:enumeration value="core_product"/>
                <xsd:enumeration value="new"/>
                <xsd:enumeration value="new_product"/>
                <xsd:enumeration value="old_product"/>
                <xsd:enumeration value="refurbished"/>
                <xsd:enumeration value="used"/>
                <xsd:enumeration value="others"/>
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:attribute>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>
