6. Using Regular Expressions To Specify Simple Datatypes (samples)

Sample 1

 

  <xs:simpleType name="myByte">
    <xs:restriction base="xs:byte">
      <xs:enumeration value="1"/>
      <xs:enumeration value="5"/>
      <xs:enumeration value="15"/>
    </xs:restriction>
  </xs:simpleType>

	

Sample 2

 

  <xs:simpleType name="myByte">
    <xs:restriction base="xs:byte">
      <xs:pattern value="1"/>
      <xs:pattern value="5"/>
      <xs:pattern value="15"/>
    </xs:restriction>
  </xs:simpleType>

	

Sample 3

/15/

Sample 4

/^15$/

Sample 5

 

  <xs:simpleType name="myDecimal">
    <xs:restriction base="xs:decimal">
      <xs:pattern value="1"/>
      <xs:pattern value="1\.5"/>
    </xs:restriction>
  </xs:simpleType>

 

Sample 6


  <xs:pattern value="15"/>

Sample 7

 

  <xs:simpleType name="myByte">
    <xs:restriction base="xs:byte">
      <xs:pattern value="1?5?"/>
    </xs:restriction>
  </xs:simpleType>

	

Sample 8

 

  <xs:simpleType name="myByte">
    <xs:restriction base="xs:byte">
      <xs:pattern value="0{0,2}1?5?"/>
    </xs:restriction>
  </xs:simpleType>

	

Sample 9

 

  <xs:simpleType name="multipleOfTen">
    <xs:restriction base="xs:integer">
      <xs:pattern value=".*0"/>
    </xs:restriction>
  </xs:simpleType>

	

Sample 10


  <xs:pattern value=".*0"/>

Sample 11


  <xs:pattern value="-?\d*0"/>

Sample 12


  <xs:simpleType name="BasicLatinLetters">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="\p{IsBasicLatin}*"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:pattern value="\p{L}*"/>
    </xs:restriction>
  </xs:simpleType>

Sample 13

[azertyuiop]

Sample 14

[a-z]

Sample 15

[^a-z]

Sample 16

[-^\\]

Sample 17

[-+]

Sample 18

[-^\\]

Sample 19

[\-\^\\]

Sample 20

[\^\\-]

Sample 21

[\d\p{Lu}]

Sample 22

[set1-[set2]]

Sample 23

[\p{IsBasicLatin}-[^\p{L}]]

Sample 24

[\p{IsBasicLatin}-[\P{L}]]

Sample 25


  <xs:simpleType name="BasicLatinLetters">
    <xs:restriction base="xs:token">
      <xs:pattern value="[\p{IsBasicLatin}-[\P{L}]]*"/>
    </xs:restriction>
  </xs:simpleType>

Sample 26


  <xs:simpleType name="myByte">
    <xs:restriction base="xs:byte">
      <xs:pattern value="1|5|15"/>
    </xs:restriction>
  </xs:simpleType>

 

Sample 27


  <xs:simpleType name="myListOfBytes">
    <xs:restriction base="xs:token">
      <xs:pattern value="(1|5|15)( *, *(1|5|15))*"/>
    </xs:restriction>
  </xs:simpleType>



Sample 28

 *

Sample 29


  <xs:simpleType name="BasicLatinToken">
    <xs:restriction base="xs:token">
      <xs:pattern value="\p{IsBasicLatin}*"/>
    </xs:restriction>
  </xs:simpleType>



  <xs:simpleType name="Latin-1Token">
    <xs:restriction base="xs:token">
      <xs:pattern value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}]*"/>
    </xs:restriction>
  </xs:simpleType>

	

Sample 30


  <xs:simpleType name="story100-200words">
    <xs:restriction base="xs:token">
      <xs:pattern value="\W*(\w+\W+){99,199}\w+\W*"/>
    </xs:restriction>
  </xs:simpleType>



Sample 31

[download]


  <xs:simpleType name="httpURI">
    <xs:restriction base="xs:anyURI">
      <xs:pattern value="http://.*"/>
    </xs:restriction>
  </xs:simpleType>

Sample 32


  <xs:simpleType name="noLeadingZeros">
    <xs:restriction base="xs:integer">
      <xs:pattern value="[+-]?([1-9][0-9]*|0)"/>
    </xs:restriction>
  </xs:simpleType>

Sample 33

>

  <xs:simpleType name="noLeadingZeros">
    <xs:restriction base="xs:integer">
      <xs:pattern value="[+-]?([^0].*|0)"/>
    </xs:restriction>
  </xs:simpleType>

	

Sample 34


  <xs:simpleType name="fixedDigits">
    <xs:restriction base="xs:decimal">
      <xs:pattern value="[+-]\.{4}\..{2}"/>
    </xs:restriction>
  </xs:simpleType>

Sample 35


  <xs:simpleType name="dateTimeWithTimezone">
    <xs:restriction base="xs:dateTime">
      <xs:pattern value=".+T.+(Z|[+-].+)"/>
    </xs:restriction>
  </xs:simpleType>

Sample 36


  <xs:simpleType name="dateTimeWithoutTimezone">
    <xs:restriction base="xs:dateTime">
      <xs:pattern value=".+T[^Z+-]+"/>
    </xs:restriction>
  </xs:simpleType>

Sample 37


  <xs:simpleType name="dateWithTimezone">
    <xs:restriction base="xs:date">
      <xs:pattern value=".+[:Z].*"/>
    </xs:restriction>
  </xs:simpleType>



  <xs:simpleType name="dateWithoutTimezone">
    <xs:restriction base="xs:date">
      <xs:pattern value="[^:Z]*"/>
    </xs:restriction>
  </xs:simpleType>

Sample 38


  <xs:simpleType name="dateTimeInMyTimezones">
    <xs:restriction base="xs:dateTime">
      <xs:pattern value=".+\+02:00"/>
      <xs:pattern value=".+\+01:00"/>
      <xs:pattern value=".+\+00:00"/>
      <xs:pattern value=".+Z"/>
      <xs:pattern value=".+-04:00"/>
    </xs:restriction>
  </xs:simpleType>

Sample 39


  <xs:simpleType name="YMduration">
    <xs:restriction base="xs:duration">
      <xs:pattern value="[^TD]+"/>
    </xs:restriction>
  </xs:simpleType>



  <xs:simpleType name="DHMSduration">
    <xs:restriction base="xs:duration">
      <xs:pattern value="-?P((\d+D)|T).*"/>
    </xs:restriction>
  </xs:simpleType>

Sample 40


  <xs:simpleType name="isbn">
    <xs:restriction base="xs:unsignedLong">
      <xs:totalDigits value="10"/>
      <xs:pattern value="\d{10}"/>
    </xs:restriction>
  </xs:simpleType>

Sample 41


  <xs:simpleType name="bookID">
    <xs:restriction base="xs:ID">
      <xs:pattern value="b\[0-9]{10}"/>
    </xs:restriction>
  </xs:simpleType>

Sample 42


  <xs:simpleType name="date">
    <xs:restriction base="xs:date">
      <xs:pattern value="[^:Z]*"/>
    </xs:restriction>
  </xs:simpleType>

Sample 43

[download]

<?xml version="1.0"?> 
<!-- $Header:
/home/cvsroot/w3c-xml-schema/user/examples/first-patterns.xsd,v 1.1
2001/11/0122:03:06 vdv Exp $ -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="string255">
    <xs:restriction base="xs:token">
      <xs:maxLength value="255"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="string32">
    <xs:restriction base="xs:token">
      <xs:maxLength value="32"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="isbn">
    <xs:restriction base="xs:unsignedLong">
      <xs:totalDigits value="10"/>
      <xs:pattern value="\d{10}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="bookID">
    <xs:restriction base="xs:ID">
      <xs:pattern value="b\d{10}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="supportedLanguages">
    <xs:restriction base="xs:language">
      <xs:enumeration value="en"/>
      <xs:enumeration value="es"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="date">
    <xs:restriction base="xs:date">
      <xs:pattern value="[^:Z]*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="name" type="string32"/>
  <xs:element name="qualification" type="string255"/>
  <xs:element name="born" type="date"/>
  <xs:element name="dead" type="date"/>
  <xs:element name="isbn" type="isbn"/>
  <xs:attribute name="id" type="xs:ID"/>
  <xs:attribute name="available" type="xs:boolean"/>
  <xs:attribute name="lang" type="supportedLanguages"/>
  <xs:element name="title">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="string255">
          <xs:attribute ref="lang"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="library">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="book" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="author">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name"/>
        <xs:element ref="born"/>
        <xs:element ref="dead" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute ref="id"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="book">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="isbn"/>
        <xs:element ref="title"/>
        <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/> 
        <xs:element ref="character" minOccurs="0"
          maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="id" type="bookID"/>
      <xs:attribute ref="available"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="character">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name"/>
        <xs:element ref="born"/>
        <xs:element ref="qualification"/>
      </xs:sequence>
      <xs:attribute ref="id"/>
    </xs:complexType>
  </xs:element>
</xs:schema>