<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:complexType name="FRAME_CAPABILITY_ENTRY">
    <xsd:sequence>
      <xsd:element name="max_width" type="xsd:float" minOccurs="1" maxOccurs="1"/>
      <xsd:element name="max_length" type="xsd:float" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="RESTRICTOR">
    <xsd:sequence>
      <xsd:element name="restrict_original_size" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_original_orientation" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_image_quality" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_resolution" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_exposure_level" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_duplex_mode" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_color_mode" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_prevent_bleed_through" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_sending_size" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="restrict_contrast" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
   <!--
   when adding restriction in xml file, make sure to put the restrictions in sequence.
   -->
  <xsd:element name="param">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element type="xsd:string" name="model"/>
        <xsd:element name="original_size" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="original_orientation" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="image_quality" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="resolution" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="exposure_level" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="duplex_mode" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="color_mode" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="prevent_bleed_through" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="sending_size" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="contrast" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:complexContent>
                    <xsd:extension base="RESTRICTOR">
                      <xsd:attribute type="xsd:string" name="name"/>
					  <xsd:attribute type="xsd:boolean" name="default"/>
                    </xsd:extension>
                  </xsd:complexContent>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="reverse_image" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
        <xsd:element name="frame_entry" type="FRAME_CAPABILITY_ENTRY" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="rotation" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
        <xsd:element type="xsd:float" name="memory_size"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
