Some primitive value besides a conrete data-type may have a predefined set of values. And the value can be set only to one of that variants, like enumerations. XML schema allows us to restrict the value of a given type by a set of enumerated values. From the other hand we can restrict some value by defining its min/max bounds:

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="purchase-order">
  ...
////////////// order number should be an integer in range (0;1000):
    <xs:attribute name="number" use="required">
    <xs:simpleType>
      <xs:restriction base="xs:integer">
        <xs:maxExclusive value="1000"/>
        <xs:minExclusive value="0"/>
      </xs:restriction>
    </xs:simpleType>
    </xs:attribute>

              <xs:element name="item" maxOccurs="unbounded">
    ...
//////////////  our item-type may be either CD or DVD:

                  <xs:attribute name="type">
                    <xs:simpleType>
                      <xs:restriction base="xs:string">
                        <xs:enumeration value="CD"/>
                        <xs:enumeration value="DVD"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
    ...
                </xs:complexType>
    ...
              </xs:element>
  ...
  </xs:element>
</xs:schema>