<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 targetNamespace="www.example.org/enumeration/restriction"
 xmlns:this="www.example.org/enumeration/restriction">

<xs:element name="e21unnamed" type="this:e21unnamed_type"/>

<xs:simpleType name="e21unnamed_type">
	<union>
		<xs:simpleType>
			<restriction base="xs:integer"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:float"/>
		</xs:simpleType>
		<xs:simpleType>
			<xs:restriction base="xs:string"/>
		</xs:simpleType>
	</union>
</xs:simpleType>

<xs:simpleType name="e22"> 
	<xs:restriction base="this:e21unnamed_type">
		<xs:enumeration value="20.4"/>
		<xs:enumeration value="50"/>
		<xs:enumeration value="small"/>
	</xs:restriction>
</xs:simpleType>


<xs:element name="String_int" type="this:String_int_type"/>

<xs:simpleType name="String_int_type">
	<union>
		<xs:simpleType>
			<xs:restriction base="xs:string"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:integer"/>
		</xs:simpleType>
	</union>
</xs:simpleType>

<xs:simpleType name="Everything_is_string"> 
	<xs:restriction base="this:String_int_type">
		<xs:enumeration value="20.4"/>
		<xs:enumeration value="50"/>
		<xs:enumeration value="small"/>
	</xs:restriction>
</xs:simpleType>

<xs:element name="Mixed_Types" type="this:Mixed_Types_type"/>
	
<xs:simpleType name="Mixed_Types_type">
	<union>
		<xs:simpleType>
			<restriction base="xs:gDay"/>
		</xs:simpleType>
		<xs:simpleType>
			<xs:restriction base="xs:gYear"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:gMonth"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:float"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:date"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:time"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:dateTime"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:gMonthDay"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:duration"/>
		</xs:simpleType>
		<xs:simpleType>
			<restriction base="xs:gYearMonth"/>
		</xs:simpleType>
		<xs:simpleType>
			<xs:restriction base="xs:string"/>
		</xs:simpleType>	
	</union>
</xs:simpleType>

<xs:simpleType name="Mixed_Enum"> 
	<xs:restriction base="this:Mixed_Types_type">
		<xs:enumeration value="somestring"/>
		<xs:enumeration value="2014-01-01"/>
		<xs:enumeration value="20.4"/>
		<xs:enumeration value="05:05:00"/>
		<xs:enumeration value="---30"/>
		<xs:enumeration value="--05"/>
		<xs:enumeration value="0085"/>
		<xs:enumeration value="3.14"/>
		<xs:enumeration value="small"/>
                <xs:enumeration value="2013-11-23T17:45:56"/>
		<xs:enumeration value="--01-03"/>
		<xs:enumeration value="1999-08"/>
		<xs:enumeration value="P5Y2M10DT15H"/>
	</xs:restriction>
</xs:simpleType>

<xs:element name="Only_int" type="this:Only_int_type"/>

<xs:simpleType name="Only_int_type">
	<union>
		<xs:simpleType>
			<restriction base="xs:integer"/>
		</xs:simpleType>
	</union>
</xs:simpleType>

<xs:simpleType name="Ints"> 
	<xs:restriction base="this:Only_int_type">
		<xs:enumeration value="14"/>
	</xs:restriction>
</xs:simpleType>

<xs:element name="UnionWithEnumField">
	<xs:simpleType>
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:normalizedString">
					<xs:enumeration value=""/>
					<xs:enumeration value="none"/>
					<xs:enumeration value="type"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:positiveInteger">
					<xs:maxExclusive value="1000000"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
</xs:element>


<xs:simpleType name="NMTOKENSEnumeration">
   <xs:restriction base="xs:NMTOKENS">
      <xs:enumeration value="true"/>
      <xs:enumeration value="false"/>
   </xs:restriction>
</xs:simpleType>

<xs:simpleType name="IDREFSEnumeration">
  <xs:restriction base="xs:IDREFS">
      <xs:enumeration value="true"/>
      <xs:enumeration value="false"/>
   </xs:restriction>
</xs:simpleType>

<xs:element name="Element">
  <xs:complexType>
  <xs:sequence>
  </xs:sequence>
  <xs:attribute name="modal" type="this:NMTOKENSEnumeration" default="false"/>
  <xs:attribute name="modal2" type="this:IDREFSEnumeration" default="false"/>
</xs:complexType>
</xs:element>


<xs:element name="NMTOKENSEnumElem" type="this:NMTOKENSEnumType" default="false"/>

<xs:simpleType name="NMTOKENSEnumType">
   <xs:restriction base="xs:NMTOKENS">
      <xs:enumeration value="true"/>
      <xs:enumeration value="false"/>
   </xs:restriction>
</xs:simpleType>

<xs:element name="NMTOKENSElem" type="this:NMTOKENSType" default="false"/>

<xs:simpleType name="NMTOKENSType">
   <xs:restriction base="xs:NMTOKENS"/>
</xs:simpleType>


<xs:element name="IDREFSEnumElem" type="this:IDREFSEnumType" default="false"/>

<xs:simpleType name="IDREFSEnumType">
   <xs:restriction base="xs:IDREFS">
      <xs:enumeration value="true"/>
      <xs:enumeration value="false"/>
   </xs:restriction>
</xs:simpleType>

<xs:element name="IDREFSElem" type="this:IDREFSType" default="false"/>

<xs:simpleType name="IDREFSType">
   <xs:restriction base="xs:IDREFS"/>
</xs:simpleType>

</xs:schema>
