5. Creating Simple Datatypes (samples)

Sample 1


  

  <xs:simpleType name="myInteger">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="-2"/>
      <xs:maxExclusive value="5"/>
    </xs:restriction>
  </xs:simpleType>



Sample 2


  

  <xs:simpleType name="myInteger">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:integer">
          <xs:maxExclusive value="5"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:minInclusive value="-2"/>
    </xs:restriction>
  </xs:simpleType>



Sample 3


  

  <xs:simpleType name="schemaRecommendations">
    <xs:restriction base="xs:anyURI">
      <xs:enumeration value="http://www.w3.org/TR/xmlschema-0/"/>
      <xs:enumeration value="http://www.w3.org/TR/xmlschema-1/"/>
      <xs:enumeration value="http://www.w3.org/TR/xmlschema-2/"/>
    </xs:restriction>
  </xs:simpleType>



Sample 4


  <a xml:base="http://www.w3.org/TR/" href="xmlschema-1/">
    XML Schema Part 2: Datatypes
  </a>

Sample 5

[download]

<?xml version="1.0"?> 
<!-- $Header:
/home/cvsroot/w3c-xml-schema/user/examples/creating-simple-types/notations.xml,v
1.12001/10/31 22:57:07 vdv Exp $ -->
<picture type="png"> 
 
  iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAABmJLR0QA/wD/AP+gvaeTAAAA
  CXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH0QofESYx2JhwGwAAAFZJREFUeNqlj8ENwDAI
  A6HqGDCWp2QQ2AP2oI9IbaQm/dRPn9EJ7m7a56DPPDgiIoKIzGyBM9Pdx+4ueXabWVUBEJHR
  nLNJVbfuqspMAEOxwO9r/vX3BTEnKRXtqqslAAAAAElFTkSuQmCC
</picture>

Sample 6

[download]

<?xml version="1.0"?> 
<!-- $Header:
/home/cvsroot/w3c-xml-schema/user/examples/creating-simple-types/notations.xsd,v
1.12001/10/31 22:57:07 vdv Exp $ -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
  <xs:notation name="jpeg" public="image/jpeg"
    system="file:///usr/bin/xv"/> 
  <xs:notation name="gif" public="image/gif"
    system="file:///usr/bin/xv"/> 
  <xs:notation name="png" public="image/png"
    system="file:///usr/bin/xv"/> 
  <xs:notation name="svg" public="image/svg"
    system="file:///usr/bin/xsmiles"/> 
  <xs:notation name="pdf" public="application/pdf"
    system="file:///usr/bin/acroread"/>
  <xs:simpleType name="graphicalFormat">
    <xs:restriction base="xs:NOTATION">
      <xs:enumeration value="jpeg"/>
      <xs:enumeration value="gif"/>
      <xs:enumeration value="png"/>
      <xs:enumeration value="svg"/>
      <xs:enumeration value="pdf"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="picture">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:base64Binary">
          <xs:attribute name="type" type="graphicalFormat"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>

Sample 7


  

  <xs:simpleType name="standardNotations">
    <xs:restriction base="xs:NOTATION">
      <xs:length value="8"/>
    </xs:restriction>
  </xs:simpleType>



Sample 8


  

  <xs:simpleType name="binaryImage">
    <xs:restriction base="xs:hexBinary">
      <xs:maxLength value="1024"/>
    </xs:restriction>
  </xs:simpleType>



Sample 9


  

  <xs:simpleType name="longName">
    <xs:restriction base="xs:NCName">
      <xs:minLength value="6"/>
    </xs:restriction>
  </xs:simpleType>



Sample 10


  

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



Sample 11


  

  <xs:simpleType name="CapitalizedNameWS">
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="collapse"/>
      <xs:pattern value="([A-Z]([a-z]*) ?)+"/>
    </xs:restriction>
  </xs:simpleType>



Sample 12


  

  <xs:simpleType name="CapitalizedNameWS">
    <xs:restriction base="xs:token">
      <xs:pattern value="([A-Z]([a-z]*) ?)+"/>
    </xs:restriction>
  </xs:simpleType>



Sample 13


  

  <xs:simpleType name="enumeration">
    <xs:restriction base="xs:float">
      <xs:enumeration value="-INF"/>
      <xs:enumeration value="1.618033989"/>
      <xs:enumeration value="3e3"/>
    </xs:restriction>
  </xs:simpleType>



Sample 14




  <enumeration>
    1.618033989
  </enumeration>



  <enumeration>
    3e3
  </enumeration>



  <enumeration>
    003000.0000
  </enumeration>



Sample 15


  

  <xs:simpleType name="maxExclusive">
    <xs:restriction base="xs:float">
      <xs:maxExclusive value="10"/>
    </xs:restriction>
  </xs:simpleType>



Sample 16


  

  <xs:simpleType name="thousands">
    <xs:restriction base="xs:double">
      <xs:maxInclusive value="1e3"/>
    </xs:restriction>
  </xs:simpleType>



Sample 17


  

  <xs:simpleType name="strictlyPositive">
    <xs:restriction base="xs:double">
      <xs:minExclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>



Sample 18


  

  <xs:simpleType name="positive">
    <xs:restriction base="xs:double">
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>



Sample 19


  

  <xs:simpleType name="nonScientific">
    <xs:restriction base="xs:float">
      <xs:pattern value="[^eE]*"/>
    </xs:restriction>
  </xs:simpleType>

  

  <xs:simpleType name="noLeading0">
    <xs:restriction base="xs:float">
      <xs:pattern value="[^0].*"/>
    </xs:restriction>
  </xs:simpleType>



Sample 20


  <xs:simpleType name="ModernSwissHistoricalDates">
    <xs:restriction base="xs:gYear">
      <xs:enumeration value="1864"/>
      <xs:enumeration value="1872"/>
      <xs:enumeration value="1914"/>
      <xs:enumeration value="1939"/>
      <xs:enumeration value="1971"/>
      <xs:enumeration value="1979"/>
      <xs:enumeration value="1992"/>
    </xs:restriction>
  </xs:simpleType>

Sample 21

1939

Sample 22

1939Z

Sample 23

1939+10:00

Sample 24


  <xs:simpleType name="wakeUpTime">
    <xs:restriction base="xs:time">
      <xs:enumeration value="07:00:00-07:00"/>
      <xs:enumeration value="07:15:00-07:00"/>
      <xs:enumeration value="07:30:00-07:00"/>
      <xs:enumeration value="07:45:00-07:00"/>
      <xs:enumeration value="08:00:00-07:00"/>
    </xs:restriction>
  </xs:simpleType>

Sample 25

07:00:00-07:00

Sample 26

11:00:00-04:00

Sample 27

07:15:00-07:15

Sample 28


  <xs:simpleType name="sevenOClockPST">
    <xs:restriction base="xs:time">
      <xs:enumeration value="07:00:00-07:00"/>
      <xs:enumeration value="07:00:00"/>
    </xs:restriction>
  </xs:simpleType>

Sample 29


  <xs:simpleType name="beforeY2K">
    <xs:restriction base="xs:dateTime">
      <xs:maxExclusive value="2000-01-01T00:00:00Z"/>
    </xs:restriction>
  </xs:simpleType>

Sample 30

1999-12-31T23:59:59Z

Sample 31

1999-12-31T23:59:59.999999999999Z

Sample 32

2000-01-01T11:59:59+12:00

Sample 33

2000-01-01T00:00:00Z

Sample 34

1999-12-31T09:59:59

Sample 35


  <xs:simpleType name="AQuarterOrLess">
    <xs:restriction base="xs:duration">
      <xs:maxInclusive value="P3M"/>
    </xs:restriction>
  </xs:simpleType>

Sample 36

P2M

Sample 37

P3M

Sample 38

P2M30D

Sample 39

P2M31D

Sample 40

P2M30DT1S

Sample 41


  

  <xs:simpleType name="afterTeaTimeInParisInSummer">
    <xs:restriction base="xs:time">
      <xs:minExclusive value="17:00:00+02:00"/>
    </xs:restriction>
  </xs:simpleType>



Sample 42


  

  <xs:simpleType name="afterOrOnThe20th">
    <xs:restriction base="xs:gDay">
      <xs:minInclusive value="---20"/>
    </xs:restriction>
  </xs:simpleType>



Sample 43


  <xs:simpleType name="AQuarterOrMore">
    <xs:restriction base="xs:duration">
      <xs:minInclusive value="P3M"/>
    </xs:restriction>
  </xs:simpleType>

Sample 44

P4M

Sample 45

P3M

Sample 46

P2M31D

Sample 47

P2M30D

Sample 48

P2M30DT23H59M59S

Sample 49


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

Sample 50


  

  <xs:simpleType name="totalDigits">
    <xs:restriction base="xs:integer">
      <xs:totalDigits value="5"/>
    </xs:restriction>
  </xs:simpleType>



Sample 51


  

  <xs:simpleType name="fractionDigits">
    <xs:restriction base="xs:decimal">
      <xs:fractionDigits value="2"/>
    </xs:restriction>
  </xs:simpleType>



Sample 52


  

  <xs:simpleType name="trueOrFalse">
    <xs:restriction base="xs:boolean">
      <xs:pattern value="true"/>
      <xs:pattern value="false"/>
    </xs:restriction>
  </xs:simpleType>



Sample 53


  

  <xs:simpleType name="minInclusive">
    <xs:restriction base="xs:float">
      <xs:minInclusive value="10"/>
    </xs:restriction>
  </xs:simpleType>

  

  <xs:simpleType name="minInclusive2">
    <xs:restriction base="minInclusive">
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>



Sample 54


  

  <xs:simpleType name="enumeration">
    <xs:restriction base="xs:float">
      <xs:enumeration value="-INF"/>
      <xs:enumeration value="1.618033989"/>
      <xs:enumeration value="3e3"/>
    </xs:restriction>
  </xs:simpleType>

  

  <xs:simpleType name="enumeration2">
    <xs:restriction base="enumeration">
      <xs:enumeration value="0"/>
    </xs:restriction>
  </xs:simpleType>



Sample 55


  

  <xs:simpleType name="nonScientific">
    <xs:restriction base="xs:float">
      <xs:pattern value="[^eE]*"/>
    </xs:restriction>
  </xs:simpleType>

  

  <xs:simpleType name="noScientificNoLeading0">
    <xs:restriction base="nonScientific">
      <xs:pattern value="[^0].*"/>
    </xs:restriction>
  </xs:simpleType>



Sample 56


  

  <xs:simpleType name="greetings">
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="replace"/>
      <xs:enumeration value="hi"/>
      <xs:enumeration value="hello"/>
      <xs:enumeration value="how do you do?"/>
    </xs:restriction>
  </xs:simpleType>

	

  <xs:simpleType name="restricted-greetings">
    <xs:restriction base="greetings">
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>



Sample 57

how do you do?

Sample 58

  how do     you do?

Sample 59


  

  <xs:simpleType name="minInclusive">
    <xs:restriction base="xs:float">
      <xs:minInclusive value="10" fixed="true"/>
    </xs:restriction>
  </xs:simpleType>



Sample 60


  <xs:simpleType name="integer" id="integer">
    <xs:restriction base="xs:decimal">
      <xs:fractionDigits value="0" fixed="true"/>
    </xs:restriction>
  </xs:simpleType>



Sample 61


    

  <commaSeparated>
    1, 2, 25
  </commaSeparated>

    

  <valueWithUnit>
    10 em
  </valueWithUnit>

    

Sample 62


    

  <commaSeparated>
    1 2 25
  </commaSeparated>

    

  <valueWithUnit unit="em">
    10
  </valueWithUnit>

		

  <valueWithUnit>
    10em
  </valueWithUnit>

    

Sample 63


    

  <xs:simpleType name="integerList">
    <xs:list itemType="xs:integer"/>
  </xs:simpleType>

    

Sample 64


    

  <xs:simpleType name="myIntegerList">
    <xs:list>
      <xs:simpleType>
        <xs:restriction base="xs:integer">
          <xs:maxInclusive value="100"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:list>
  </xs:simpleType>

    

Sample 65


    

  <xs:simpleType name="myStringList">
    <xs:list itemType="xs:string"/>
  </xs:simpleType>

    

  <xs:simpleType name="myRestrictedStringList">
    <xs:restriction base="myStringList">
      <xs:maxLength value="10"/>
    </xs:restriction>
  </xs:simpleType>

    

Sample 66


    

  <myRestrictedStringList>
    This value has less than ten words.
  </myRestrictedStringList>

    

Sample 67


    

  <myRestrictedStringList> 
    This value has more than ten words... even if they could be
    spreadin less than ten "strings".
  </myRestrictedStringList>

    

Sample 68


    

  <xs:simpleType name="integerOrData">
    <xs:union memberTypes="xs:integer xs:date"/>
  </xs:simpleType>

    

Sample 69


    

  <xs:simpleType name="myIntegerUnion">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:integer"/>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="undefined"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

    

Sample 70


    

  <xs:simpleType name="myIntegerUnion">
    <xs:union memberTypes="xs:integer">
      <xs:simpleType>
        <xs:restriction base="xs:NMTOKEN">
          <xs:enumeration value="undefined"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

    

Sample 71


  

  <xs:simpleType name="listOfUnions">
    <xs:list>
      <xs:simpleType>
        <xs:union memberTypes="xs:date xs:integer"/>
      </xs:simpleType>
    </xs:list>
  </xs:simpleType>

  

  <xs:simpleType name="UnionOfLists">
    <xs:union>
      <xs:simpleType>
        <xs:list itemType="xs:date"/>
      </xs:simpleType>
      <xs:simpleType>
        <xs:list itemType="xs:integer"/>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>



Sample 72




  <UnionOfLists>
    2001-01-01 2001-01-02
  </UnionOfLists>



  <UnionOfLists>
    1 2 3
  </UnionOfLists>



  <ListOfUnions>
    2001-01-01 2001-01-02
  </ListOfUnions>



  <ListOfUnions>
    1 2 3
  </ListOfUnions>



  <ListOfUnions>
    2001-01-01 1 2
  </ListOfUnions>



Sample 73




  <UnionOfLists>
    2001-01-01 1 2
  </UnionOfLists>



Sample 74

	

  <xs:simpleType name="word">
    <xs:list>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="15"/>
          <xs:pattern value="\p{IsBasicLatin}*"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:list>
  </xs:simpleType>

	

  <xs:simpleType name="story">
    <xs:restriction base="word">
      <xs:minLength value="100"/>
      <xs:maxLength value="200"/>
    </xs:restriction>
  </xs:simpleType>



Sample 75

	

  <xs:element name="name" type="xs:token"/>

	

  <xs:element name="qualification" type="xs:token"/>

	

  <xs:element name="born" type="xs:date"/>

	

  <xs:element name="dead" type="xs:date"/>

	

  <xs:element name="isbn" type="xs:unsignedLong"/>

	
	

  <xs:attribute name="id" type="xs:ID"/>

	

  <xs:attribute name="available" type="xs:boolean"/>

	

  <xs:attribute name="lang" type="xs:language"/>

	

Sample 76

	

  <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>

Sample 77

00001234567890

Sample 78

1

Sample 79

	

  <xs:simpleType name="isbn">
    <xs:restriction base="xs:unsignedLong">
      <xs:totalDigits value="10"/>
    </xs:restriction>
  </xs:simpleType>

Sample 80

	

  <xs:simpleType name="supportedLanguages">
    <xs:restriction base="xs:language">
      <xs:enumeration value="en"/>
      <xs:enumeration value="es"/>
    </xs:restriction>
  </xs:simpleType>

Sample 81

[download]

<?xml version="1.0"?> 
<!-- $Header:
/home/cvsroot/w3c-xml-schema/user/examples/first-user-dt.xsd,v 1.1
2001/11/0112:27:47 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: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:element name="name" type="string32"/>
  <xs:element name="qualification" type="string255"/>
  <xs:element name="born" type="xs:date"/>
  <xs:element name="dead" type="xs: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 ref="id"/>
      <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>