15. Elements Reference Guide (samples)

Sample 1


               
  

  <xs:element name="author">
    <xs:complexType>
      <xs:all>
        <xs:element ref="name"/>
        <xs:element ref="born"/>
        <xs:element ref="dead" minOccurs="0"/>
      </xs:all>
      <xs:attribute ref="id"/>
    </xs:complexType>
  </xs:element>

               
  

  <xs:element name="full-name" substitutionGroup="name">
    <xs:complexType>
      <xs:all>
        <xs:element name="first" type="string32" minOccurs="0"/>
        <xs:element name="middle" type="string32" minOccurs="0"/>
        <xs:element name="last" type="string32"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

            

Sample 2


  

  <xs:group name="authorSubElements">
    <xs:all>
      <xs:element ref="name"/>
      <xs:element ref="born"/>
      <xs:element ref="dead" minOccurs="0"/>
    </xs:all>
    <xs:attribute ref="id"/>
  </xs:group>

					
					

Sample 3


  

  <xs:element name="author" type="author">
    <xs:annotation>
      <xs:documentation xml:lang="en">
        The author of a book.
      </xs:documentation>
      <xs:documentation xml:lang="fr">
        Designe l'auteur d'un livre.
      </xs:documentation>
      <xs:appinfo xmlns:sch="http://www.ascc.net/xml/schematron">
        <sch:pattern name="Born before dead">
          <sch:rule context="author"> 
            <sch:assert test="not(dead) or (dead > born)"
              diagnostics="bornAfterDead">
              An author should die after her or his death.
            </sch:assert>
            <sch:diagnostics>
              <sch:diagnostic id="bornAfterDead"> 
                Error, this author is born after her or his birth!
                Author=
                <sch:value-of select="name"/>
                Birth =
                <sch:value-of select="born"/>
                Death =
                <sch:value-of select="dead"/>
              </sch:diagnostic>
            </sch:diagnostics>
          </sch:rule>
        </sch:pattern>
      </xs:appinfo>
    </xs:annotation>
  </xs:element>
 
					

Sample 4


               
  

  <xs:element name="author" type="author">
    <xs:annotation>
      <xs:appinfo xmlns:dc="http://purl.org/dc/elements/1.1/">
        <dc:creator>
          Eric van der Vlist (mailto:vdv@dyomedea.com)
        </dc:creator>
        <dc:date>
          2002-02-01
        </dc:date>
        <dc:subject>
          author,person,book
        </dc:subject>
        <dc:description>
          This element describes the author of a book.
        </dc:description>
      </xs:appinfo>
    </xs:annotation>
  </xs:element>

               
  

  <xs:element name="author" type="author">
    <xs:annotation> 
      <xs:appinfo source="saf:meta-data-item"
        xmlns:sql="http://www.extensibility.com/saf/spec/safsample/sql-map.saf"
        >
        <sql:select>
          select
          <sql:elem>
            name
          </sql:elem>
          ,
          <sql:elem>
            birthdate
          </sql:elem>
          ,
          <sql:attr>
            deathdate
          </sql:attr>
          from tbl_author
        </sql:select>
      </xs:appinfo>
    </xs:annotation>
  </xs:element>

               
  

  <xs:element name="book" type="book">
    <xs:annotation>
      <xs:appinfo xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="book">
          <xsl:apply-templates select="title"/>
          <xsl:apply-templates select="isbn"/>
          <p>
            Authors:
          </p>
          <ul>
            <xsl:apply-templates select="author"/>
          </ul>
          <p>
            Characters:
          </p>
          <ul>
            <xsl:apply-templates select="character"/>
          </ul>
        </xsl:template>
      </xs:appinfo>
    </xs:annotation>
  </xs:element>

            

Sample 5


  

  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="available" type="xs:boolean"/>
    <xs:attribute name="lang" type="xs:language"/>
    .../...
  </xs:schema>



Sample 6

	
  

  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute ref="lang"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

		.../...
         
  

  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="lang" type="xs:language"/>
    </xs:extension>
  </xs:simpleContent>

 


Sample 7


  

  <xs:attributeGroup name="bookAttributes">
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="available" type="xs:boolean"/>
  </xs:attributeGroup>

					

Sample 8


  

  <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:attributeGroup ref="bookAttributes"/>
    </xs:complexType>
  </xs:element>
 
					

Sample 9


										
  

  <xs:choice> 
    <!-- Allows either "name" or the sequence "first-name",
    "middle-name"and"last-name". -->
    <xs:element ref="name"/>
    <xs:sequence>
      <xs:element ref="first-name"/>
      <xs:element ref="middle-name" minOccurs="0"/>
      <xs:element ref="last-name"/>
    </xs:sequence>
  </xs:choice>

					

Sample 10


					
  

  <xs:group name="author-or-character">
    <xs:choice>
      <xs:element ref="author"/>
      <xs:element ref="character"/>
    </xs:choice>
  </xs:group>


					

Sample 11


  

  <xs:element name="author">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="basePerson">
          <xs:sequence>
            <xs:element ref="dead" minOccurs="0"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

					

Sample 12

 
  

  <xs:complexType name="title">
    <xs:simpleContent>
      <xs:extension base="tokenWithLang">
        <xs:attribute name="note" type="xs:token"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

					

Sample 13

	
  

  <xs:element name="title">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute ref="lang"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>



Sample 14


  

  <xs:element name="author" type="author">
    <xs:annotation>
      <xs:documentation xml:lang="en">
        The author of a book.
      </xs:documentation>
      <xs:documentation xml:lang="fr">
        Designe l'auteur d'un livre.
      </xs:documentation>
    </xs:annotation>
  </xs:element>
 
					

Sample 15

	
  

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



Sample 16


  

  <xs:all>
    <xs:element name="first" type="string32" minOccurs="0"/>
    <xs:element name="middle" type="string32" minOccurs="0"/>
    <xs:element name="last" type="string32"/>
  </xs:all>

					

Sample 17


   
  

  <xs:sequence>
    <xs:element name="book" maxOccurs="unbounded">
      <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:sequence>



Sample 18


  
  

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


  

  <xs:element name="title">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="string255">
          <xs:attribute ref="lang"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
 
					

Sample 20


  

  <xs:element name="character">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="basePerson">
          <xs:sequence>
            <xs:element ref="qualification"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
 
					

Sample 21


 
  

  <xs:element name="book" maxOccurs="unbounded">
    <xs:complexType>
      .../...
    </xs:complexType>
    <xs:unique name="book">
      <xs:selector xpath="book"/>
      <xs:field xpath="isbn"/>
    </xs:unique>
  </xs:element>



Sample 22


  
  

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



Sample 23


  

  <xs:group name="name">
    <xs:choice>
      <xs:element ref="name"/>
      <xs:sequence>
        <xs:element ref="first-name"/>
        <xs:element ref="middle-name" minOccurs="0"/>
        <xs:element ref="last-name"/>
      </xs:sequence>
    </xs:choice>
  </xs:group>
 
					

Sample 24


  

  <xs:element name="author">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="name"/>
        <xs:element ref="born"/>
        <xs:element ref="dead" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute ref="id"/>
    </xs:complexType>
  </xs:element>

					

Sample 25

 

 
  <xs:schema targetNamespace="http://dyomedea.com/ns/library"
    elementFormDefault="qualified" attributeFormDefault="unqualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:ppl="http://dyomedea.com/ns/people"
    xmlns:lib="http://dyomedea.com/ns/library"> 
    <xs:import namespace="http://dyomedea.com/ns/people"
      schemaLocation="simple-2-ns-ppl.xsd"/>
    <xs:element name="library">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="book" type="lib:bookType"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    <xs:complexType name="bookType">
      <xs:sequence>
        <xs:element name="isbn" type="xs:int"/>
        <xs:element name="title" type="xs:string"/>
        <xs:element name="authors">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="ppl:person"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="characters">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="ppl:person" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required"/>
      <xs:attribute name="available" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:schema>

Sample 26


  

  <xs:include schemaLocation="simple-types.xsd"/>
 
					

Sample 27


 
  

  <xs:element name="library">
    <xs:complexType>
      .../...
    </xs:complexType>
    <xs:key name="book">
      <xs:selector xpath="book"/>
      <xs:field xpath="isbn"/>
    </xs:key>
  </xs:element>



Sample 28


  
  

  <xs:element name="library">
    <xs:complexType>
      .../...
    </xs:complexType>
    <xs:key name="ID">
      <xs:selector xpath="book|author|character"/>
      <xs:field xpath="@id"/>
    </xs:key>
    <xs:keyref name="IDREF" refer="ID">
      <xs:selector xpath="book/author-ref|book/character-ref"/>
      <xs:field xpath="@ref"/>
    </xs:keyref>
  </xs:element>



Sample 29


  
  

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



Sample 30


    
  

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

    

Sample 31


  
  

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



Sample 32


  
  

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



Sample 33


  
  

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



Sample 34


  
  

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



Sample 35


  
  

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



Sample 36


  
  

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



Sample 37

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

					

Sample 38


  
  

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


  

  <xs:redefine schemaLocation="complex-types2.xsd">
    <xs:complexType name="book">
      <xs:complexContent>
        <xs:restriction base="book">
          <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:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:redefine>

					

Sample 40


  
  

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



Sample 41


  

  <xs:element name="title">
    <xs:complexType>
      <xs:simpleContent>
        <xs:restriction base="tokenWithLangAndNote">
          <xs:maxLength value="255"/>
          <xs:attribute name="lang">
            <xs:simpleType>
              <xs:restriction base="xs:language">
                <xs:enumeration value="en"/>
                <xs:enumeration value="es"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:restriction>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
 
					

Sample 42


  

  <xs:element name="author">
    <xs:complexType>
      <xs:complexContent>
        <xs:restriction base="person">
          <xs:sequence>
            <xs:element ref="name"/>
            <xs:element ref="born"/>
            <xs:element ref="dead" minOccurs="0"/>
          </xs:sequence>
        </xs:restriction>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

					

Sample 43


  

  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="qualification" type="xs:string"/>
    <xs:element name="born" type="xs:date"/>
    <xs:element name="dead" type="xs:date"/>
    <xs:element name="isbn" type="xs:integer"/>
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="available" type="xs:boolean"/>
    <xs:attribute name="lang" type="xs:language"/>
    .../...
  </xs:schema>

					

Sample 44


 
  

  <xs:element name="book" maxOccurs="unbounded">
    <xs:complexType>
      .../...
    </xs:complexType>
    <xs:unique name="book">
      <xs:selector xpath="book"/>
      .../...
    </xs:unique>
  </xs:element>



Sample 45

	
  

  <xs:element name="library">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="book" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>



Sample 46


               
  

  <xs:group name="name">
    <xs:sequence>
      <xs:element ref="name"/>
      <xs:sequence minOccurs="0">
        <xs:element ref="middle-name" minOccurs="0"/>
        <xs:element ref="last-name"/>
      </xs:sequence>
    </xs:sequence>
  </xs:group>

            

Sample 47

	
  

  <xs:element name="title">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute ref="lang"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>



Sample 48


  
  

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



Sample 49


  
  

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


  
  

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



Sample 51


    
  

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

    

Sample 52


 
  

  <xs:element name="book" maxOccurs="unbounded">
    <xs:complexType>
      .../...
    </xs:complexType>
    <xs:unique name="book">
      <xs:selector xpath="book"/>
      <xs:field xpath="isbn"/>
    </xs:unique>
  </xs:element>



Sample 53


  
  

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