<?xml version="1.0" encoding="UTF-8"?>
<!--* 
<!DOCTYPE xsd:schema 
  PUBLIC "-//W3C//DTD XMLSCHEMA 200105//EN"
         "http://www.w3.org/2001/XMLSchema.dtd" [
<!ENTITY % schemaAttrs "
  xmlns:this CDATA #IMPLIED
  xmlns:xsd  CDATA #IMPLIED"
>
<!ENTITY % p "xsd:">
<!ENTITY % s ":xsd">
<!ENTITY % html-for-documentation SYSTEM
  "../../xsdl-exx/ancillary/xhtml-for-annotation.dtd">
%html-for-documentation;

]>
*-->

<xsd:schema
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  >
  <xsd:annotation>
    <xsd:documentation>
      <div xmlns="http://www.w3.org/1999/xhtml">
	<p>Dummy schema document for testing purposes.  This doesn't 
           really define a useful schema, it just acts as a holding place
           for a lot of pattern facets.
        </p>
        <p>Includes the regexes given in the last-call draft spec of 20 June 2008
           for each built-in datatype. 8 August 2008.</p>
      </div>
    </xsd:documentation>
    <xsd:appinfo/>
  </xsd:annotation>

  <xsd:simpleType name="string">
    <xsd:annotation>
      <xsd:documentation>
        <p xmlns="http://www.w3.org/1999/xhtml">
          No regex specified in Last Call draft.  An earlier draft
          gave the regex (\s|\S)* as a way of saying "zero or more legal characters".
        </p>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="(\s|\S)*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="boolean">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="true|false|0|1"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="decimal">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="(\+|-)?([0-9]+(\.[0-9]*)?|\.[0-9]+)"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="precisionDecimal">
    <xsd:restriction base="xsd:string">
      <xsd:pattern 
        value="(\+|-)?([0-9]+(\.[0-9]*)?|\.[0-9]+)([Ee](\+|-)?[0-9]+)?|(\+|-)?INF|NaN"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="float">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="(\+|-)?([0-9]+(\.[0-9]*)?|\.[0-9]+)([Ee](\+|-)?[0-9]+)?|(\+|-)?INF|NaN"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="double">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="(\+|-)?([0-9]+(\.[0-9]*)?|\.[0-9]+)([Ee](\+|-)?[0-9]+)?|(\+|-)?INF|NaN"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="duration">
    <xsd:restriction>
      <xsd:simpleType>
	<xsd:restriction>
	  <xsd:simpleType>
	    <xsd:restriction base="xsd:string">
	      <xsd:pattern
		  value="-?P([0-9]+Y)?([0-9]+M)?([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+(\.[0-9]+)?S)?)?"/>
	    </xsd:restriction>
	  </xsd:simpleType>
	  <xsd:pattern value=".*[YMDHS].*"/>
	</xsd:restriction>
      </xsd:simpleType>
      <xsd:pattern value=".*[^T]"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="duration2">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="-?P(([0-9]+Y)([0-9]+M)?([0-9]+D)?(T(([0-9]+H)([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+(\.[0-9]+)?S)))?|([0-9]+M)([0-9]+D)?(T(([0-9]+H)([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+(\.[0-9]+)?S)))?|([0-9]+D)?(T(([0-9]+H)([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+(\.[0-9]+)?S)))?|T(([0-9]+H)([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+(\.[0-9]+)?S)))"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="dateTime">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="-?([1-9][0-9]{3,}|0[0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?|(24:00:00(\.0+)?))(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?-?([1-9][0-9]{3,}|0[0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?|(24:00:00(\.0+)?))(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"/>

    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="time">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?|(24:00:00(\.0+)?))(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="date">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="-?([1-9][0-9]{3,}|0[0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="gYearMonth">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="-?([1-9][0-9]{3,}|0[0-9]{3})-(0[1-9]|1[0-2])(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="gYear">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="-?([1-9][0-9]{3,}|0[0-9]{3})(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="gMonthDay">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="--(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="gDay">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="---(0[1-9]|[12][0-9]|3[01])(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="gMonth">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="--(0[1-9]|1[0-2])(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="hexBinary">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="([0-9a-fA-F]{2})*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="base64Binary">
    <xsd:restriction base="xsd:string">
      <xsd:pattern
	  value="((([A-Za-z0-9+/] ?){4})*(([A-Za-z0-9+/] ?){3}[A-Za-z0-9+/]|([A-Za-z0-9+/] ?){2}[AEIMQUYcgkosw048] ?=|[A-Za-z0-9+/] ?[AQgw] ?= ?=))?"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="anyURI">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="not given"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="QName">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="xxx"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NOTATION">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="xxx"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="normalizedString">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="xxx"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="token">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="xxx"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="language">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NMTOKEN">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="\c+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NMTOKENS">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="xxx"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Name">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="\i\c*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NCName">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="\i\c*"/>
      <xsd:pattern value="[\i-[:]][\c-[:]]*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="ID">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="\i\c*"/>
      <xsd:pattern value="[\i-[:]][\c-[:]]*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="IDREF">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="\i\c*"/>
      <xsd:pattern value="[\i-[:]][\c-[:]]*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="IDREFS">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="xxx"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="ENTITY">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="\i\c*"/>
      <xsd:pattern value="[\i-[:]][\c-[:]]*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="ENTITIES">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="xxx"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="integer">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="nonPositiveInteger">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="negativeInteger">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="long">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="int">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="short">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="byte">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value=" [\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="nonNegativeInteger">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="unsignedLong">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="unsignedInt">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="unsignedShort">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="unsignedByte">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="positiveInteger">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[\-+]?[0-9]+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="yearMonthDuration">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="-?P((([0-9]+Y)([0-9]+M)?)|([0-9]+M))"/>
      <xsd:pattern value="-?P[0-9]+(Y([0-9]+M)?|M)"/>
      <xsd:pattern value="[^DT]*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="dayTimeDuration">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[^YM]*[DT].*"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="dayTimeDuration-bis">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[^YM]*(T.*)?"/>
    </xsd:restriction>
  </xsd:simpleType>

</xsd:schema>