<?xml version="1.0"?>
<TypeList>
    <simpleType name="anySimpleType"        code="ANYSIMPLETYPE_TYPE"   impl="UrType"/>
    <!-- PRIMITIVES TYPES-->
    <simpleType name= "string"                code= "STRING_TYPE"                 impl= "StringType" />
    <simpleType name= "boolean"               code= "BOOLEAN_TYPE"                impl= "BooleanType" />
    <simpleType name= "decimal"               code= "DECIMAL_TYPE"                impl= "DecimalType" />
    <simpleType name= "float"                 code= "FLOAT_TYPE"                  impl= "RealType">
        <Facet name= "minM" value= "-16777215" pseudo="true" />
        <Facet name= "maxM" value= "16777215"  pseudo="true" />
        <Facet name= "minE" value= "-149"      pseudo="true" />
        <Facet name= "maxE" value= "104"       pseudo="true" />
    </simpleType>
    <simpleType name= "double"                code= "DOUBLE_TYPE"                 impl= "RealType">
        <Facet name= "minM" value= "-9007199254740991" pseudo="true" />
        <Facet name= "maxM" value= "9007199254740991"  pseudo="true" />
        <Facet name= "minE" value= "-1075"             pseudo="true" />
        <Facet name= "maxE" value= "970"               pseudo="true" />
    </simpleType>

    <simpleType name= "duration"              code= "DURATION_TYPE"               impl= "DurationType" />
    <simpleType name= "dateTime"              code= "DATETIME_TYPE"               impl= "DateTimeType" />
    <simpleType name="time"		      code= "TIME_TYPE"			  impl="DateTimeType"/>
    <simpleType name="date"		      code= "DATE_TYPE"			  impl="DateTimeType"/>
    <simpleType name="gYearMonth"	      code= "GYEARMONTH_TYPE"		  impl="DateTimeType"/>
    <simpleType name="gYear"		      code= "GYEAR_TYPE"		  impl="DateTimeType"/>
    <simpleType name="gMonthDay"	      code= "GMONTHDAY_TYPE"		  impl="DateTimeType"/>
    <simpleType name="gDay"		      code= "GDAY_TYPE"			  impl="DateTimeType"/>
    <simpleType name="gMonth"		      code= "GMONTH_TYPE"		  impl="DateTimeType"/>
    <simpleType name= "hexBinary"             code= "HEXBINARY_TYPE"              impl= "BinaryType" />
    <simpleType name= "base64Binary"          code= "BASE64BINARY_TYPE"           impl= "BinaryType" />
    <simpleType name= "anyURI"                code= "ANYURI_TYPE"                 impl= "AnyURIType" />
    <simpleType name= "QName"                 code= "QNAME_TYPE"                  impl= "StringType" />
    <simpleType name= "NOTATION"              code= "NOTATION_TYPE"               impl= "StringType" />


    <!--Derived type-->
    <simpleType name = "normalizedString"	  code= "NORMALIZEDSTRING_TYPE"   base="string"  />

    <simpleType name="token"		          code="TOKEN_TYPE"		  base="normalizedString"/>

    <simpleType name= "language"                  code= "LANGUAGE_TYPE"           base= "string">
        <Facet name="pattern" value= "([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]+)(-[a-zA-Z]+)*" />
    </simpleType>

    <simpleType name= "NMTOKEN"               code= "NMTOKEN_TYPE"                base= "token">
        <Facet name="pattern" value= "\c+" />
    </simpleType>
   <simpleType name= "NMTOKENS"              code= "NMTOKENS_TYPE"               base= "NMTOKEN"  derivedBy= "list"/>

   <simpleType name= "Name"                  code= "NAME_TYPE"                   base= "string">
        <Facet name="pattern" value= "\i\c*" />
    </simpleType>

    <simpleType name= "NCName"                code= "NCNAME_TYPE"                 base= "Name">
        <Facet name="pattern" value= "[\i-[:]][\c-[:]]*" />
    </simpleType>
    <simpleType name= "ID"                    code= "ID_TYPE"                     base="NCName"/>
    <simpleType name= "IDREF"                 code= "IDREF_TYPE"                  base="NCName"/>
    <simpleType name= "IDREFS"                code= "IDREFS_TYPE"                 base= "IDREF"    derivedBy= "list"/>
    <simpleType name= "ENTITY"                code= "ENTITY_TYPE"                 base="NCName" />
    <simpleType name= "ENTITIES"              code= "ENTITIES_TYPE"               base= "ENTITY"   derivedBy= "list"/>
    <simpleType name= "integer"               code= "INTEGER_TYPE"                base= "decimal">
        <Facet name="fractionDigits" value= "0" />
    </simpleType>

    <simpleType name= "nonPositiveInteger"    code= "NON_POSITIVE_INTEGER_TYPE"   base= "integer">
        <Facet name="maxInclusive" value= "0" />
    </simpleType>

    <simpleType name= "negativeInteger"       code= "NEGATIVE_INTEGER_TYPE"       base= "nonPositiveInteger">
       <Facet name="maxInclusive" value= "-1" />
    </simpleType>
   <simpleType name= "long"                  code= "LONG_TYPE"                   base= "integer">
        <Facet name="minInclusive" value= "-9223372036854775808" />
        <Facet name="maxInclusive" value= "9223372036854775807" />
    </simpleType>
   <simpleType name= "int"                   code= "INT_TYPE"                    base= "long">
        <Facet name="minInclusive" value= "-2147483648" />
        <Facet name="maxInclusive" value= "2147483647" />
    </simpleType>

    <simpleType name= "short"                 code= "SHORT_TYPE"                  base= "int">
        <Facet name="minInclusive" value= "-32768" />
        <Facet name="maxInclusive" value= "32767" />
    </simpleType>
    <simpleType name= "byte"                  code= "BYTE_TYPE"                   base= "short">
        <Facet name="minInclusive" value= "-128" />
        <Facet name="maxInclusive" value= "127" />
    </simpleType>

    <simpleType name= "nonNegativeInteger"    code= "NON_NEGATIVE_INTEGER_TYPE"   base= "integer">
        <Facet name="minInclusive"  value= "0" />
    </simpleType>

    <simpleType name= "unsignedLong"          code= "UNSIGNED_LONG_TYPE"          base= "nonNegativeInteger">
        <Facet name="maxInclusive"  value= "18446744073709551615" />
    </simpleType>

    <simpleType name= "unsignedInt"           code= "UNSIGNED_INT_TYPE"           base= "unsignedLong">
        <Facet name="maxInclusive"  value= "4294967295" />
    </simpleType>

    <simpleType name= "unsignedShort"         code= "UNSIGNED_SHORT_TYPE"         base= "unsignedInt">
        <Facet name="maxInclusive"  value= "65535" />
    </simpleType>

    <simpleType name= "unsignedByte"          code= "UNSIGNED_BYTE_TYPE"          base= "unsignedShort">
        <Facet name="maxInclusive"  value= "255" />
    </simpleType>

    <simpleType name= "positiveInteger"       code= "POSITIVE_INTEGER_TYPE"       base= "nonNegativeInteger">
        <Facet name="minInclusive"  value= "1" />
    </simpleType>
</TypeList>