[download]
<xs:element name="title"> <xs:complexType> <xs:simpleContent> <xs:extension base="string255"> <xs:attribute ref="lang"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
[download]
<xs:complexType name="tokenWithLang"> <xs:simpleContent> <xs:extension base="xs:token"> <xs:attribute ref="lang"/> </xs:extension> </xs:simpleContent> </xs:complexType>[download]
<xs:element name="title" type="tokenWithLang"/>
[download]
<xs:element name="title"> <xs:complexType> <xs:simpleContent> <xs:extension base="tokenWithLang"> <xs:attribute name="note" type="xs:token"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
[download]
<xs:complexType name="tokenWithLangAndNote"> <xs:simpleContent> <xs:extension base="xs:token"> <!-- <xs:attribute name="lang" type="xs:language"/> --> <xs:attribute name="note" type="xs:token"/> </xs:extension> </xs:simpleContent> </xs:complexType>
[download]
<xs:element name="title"> <xs:complexType> <xs:simpleContent> <xs:restriction base="tokenWithLangAndNote"> <xs:maxLength value="255"/> <!-- <xs:attribute name="lang" type="xs:language"/> <xs:attributename="note" type="xs:token"/> --> </xs:restriction> </xs:simpleContent> </xs:complexType> </xs:element>
[download]
<xs:element name="title"> <xs:complexType> <xs:simpleContent> <xs:restriction base="tokenWithLangAndNote"> <xs:maxLength value="255"/> <xs:attribute name="lang" type="xs:language"/> <xs:attribute name="note" use="prohibited"/> </xs:restriction> </xs:simpleContent> </xs:complexType> </xs:element>
[download]
<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>
<first-name> Charles </first-name> <middle-name> M </middle-name> <last-name> Schulz </last-name> or <first-name> Peppermint </first-name> <last-name> Patty </last-name> or <name> Snoopy </name>
[download]
<xs:element name="author"> <xs:complexType> <xs:sequence> <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:element ref="born"/> <xs:element ref="dead" minOccurs="0"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType> </xs:element>
[download]
<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>
[download]
<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>[download]
<xs:element name="character"> <xs:complexType> <xs:sequence> <xs:group ref="name"/> <xs:element ref="born"/> <xs:element ref="qualification"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType> </xs:element>
[download]
<xs:attributeGroup name="bookAttributes"> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="available" type="xs:boolean"/> </xs:attributeGroup>[download]
<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>
[download]
<xs:group name="pages"> <xs:sequence> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element ref="odd-page"/> <xs:element ref="even-page"/> </xs:sequence> <xs:element ref="odd-page" minOccurs="0"/> </xs:sequence> </xs:group>
[download]
<xs:group name="name"> <xs:choice> <xs:element ref="name"/> <xs:sequence> <xs:element ref="name"/> <xs:element ref="middle-name" minOccurs="0"/> <xs:element ref="last-name"/> </xs:sequence> </xs:choice> </xs:group>[download]
<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>
[download]
<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>
[download]
<xs:group name="name"> <xs:choice> <xs:element ref="name"/> <xs:sequence> <xs:element ref="name" minOccurs="0"/> <xs:element ref="middle-name" minOccurs="0"/> <xs:element ref="last-name"/> </xs:sequence> </xs:choice> </xs:group>
[download]
<xs:group name="name"> <xs:choice> <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:sequence> <xs:element ref="middle-name" minOccurs="0"/> <xs:element ref="last-name"/> </xs:sequence> </xs:choice> </xs:group>
<xs:choice> <xs:element name="name" type="xs:string"/> <xs:element name="name"> <xs:complexType> <xs:sequence> <xs:element ref="first-name"/> <xs:element ref="middle-name"/> <xs:element ref="last-name"/> </xs:sequence> </xs:complexType> </xs:element> </xs:choice>
[download]
<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>
[download]
<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>[download]
<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>
[download]
<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>[download]
<xs:element name="character"> <xs:complexType> <xs:all> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="qualification"/> </xs:all> <xs:attribute ref="id"/> </xs:complexType> </xs:element>
[download]
<?xml version="1.0"?> <!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/complex-types/first-all-wa.xml,v 1.12001/11/07 18:13:19 vdv Exp $ --> <library> <book id="b0836217462" available="true"> <title lang="en"> Being a Dog Is a Full-Time Job </title> <isbn> 0836217462 </isbn> <authors> <author id="CMS"> <born> 1922-11-26 </born> <dead> 2000-02-12 </dead> <name> Charles M Schulz </name> </author> </authors> <characters> <character id="PP"> <name> Peppermint Patty </name> <qualification> bold, brash and tomboyish </qualification> <born> 1966-08-22 </born> </character> <character id="Snoopy"> <born> 1950-10-04 </born> <name> Snoopy </name> <qualification> extroverted beagle </qualification> </character> <character id="Schroeder"> <qualification> brought classical music to the Peanuts strip </qualification> <name> Schroeder </name> <born> 1951-05-30 </born> </character> <character id="Lucy"> <name> Lucy </name> <born> 1952-03-03 </born> <qualification> bossy, crabby and selfish </qualification> </character> </characters> </book> </library>
[download]
<?xml version="1.0"?> <!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/complex-types/first-all-wa.xsd,v 1.12001/11/07 18:13:19 vdv Exp $ --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <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:integer"/> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="available" type="xs:boolean"/> <xs:attribute name="lang" type="xs:language"/> <xs:element name="title"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:token"> <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="authors"> <xs:complexType> <xs:sequence> <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <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="book"> <xs:complexType> <xs:all> <xs:element ref="isbn"/> <xs:element ref="title"/> <xs:element ref="authors"/> <xs:element ref="characters"/> </xs:all> <xs:attribute ref="id"/> <xs:attribute ref="available"/> </xs:complexType> </xs:element> <xs:element name="characters"> <xs:complexType> <xs:sequence> <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="character"> <xs:complexType> <xs:all> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="qualification"/> </xs:all> <xs:attribute ref="id"/> </xs:complexType> </xs:element> </xs:schema>
[download]
<?xml version="1.0"?> <!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/complex-types/first-all-wa2.xml,v 1.12001/11/07 18:13:19 vdv Exp $ --> <library> <book id="b0836217462" available="true"> <title lang="en"> Being a Dog Is a Full-Time Job </title> <isbn> 0836217462 </isbn> <authors> <author id="CMS"> <born> 1922-11-26 </born> <dead> 2000-02-12 </dead> <name> <complex-name> <last-name> Schulz </last-name> <first-name> Charles </first-name> <middle-name> M </middle-name> </complex-name> </name> </author> </authors> <characters> <character id="PP"> <name> <complex-name> <first-name> Peppermint </first-name> <last-name> Patty </last-name> </complex-name> </name> <qualification> bold, brash and tomboyish </qualification> <born> 1966-08-22 </born> </character> <character id="Snoopy"> <born> 1950-10-04 </born> <name> <simple-name> Snoopy </simple-name> </name> <qualification> extroverted beagle </qualification> </character> <character id="Schroeder"> <qualification> brought classical music to the Peanuts strip </qualification> <name> <simple-name> Schroeder </simple-name> </name> <born> 1951-05-30 </born> </character> <character id="Lucy"> <name> <simple-name> Lucy </simple-name> </name> <born> 1952-03-03 </born> <qualification> bossy, crabby and selfish </qualification> </character> </characters> </book> </library>
[download]
<?xml version="1.0"?> <!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/complex-types/first-all-wa2.xsd,v 1.12001/11/07 18:13:19 vdv Exp $ --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="simple-name" type="xs:token"/> <xs:element name="first-name" type="xs:token"/> <xs:element name="middle-name" type="xs:token"/> <xs:element name="last-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:integer"/> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="available" type="xs:boolean"/> <xs:attribute name="lang" type="xs:language"/> <xs:element name="name"> <xs:complexType> <xs:choice> <xs:element ref="simple-name"/> <xs:element ref="complex-name"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="complex-name"> <xs:complexType> <xs:all> <xs:element ref="first-name"/> <xs:element ref="middle-name" minOccurs="0"/> <xs:element ref="last-name"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="title"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:token"> <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="authors"> <xs:complexType> <xs:sequence> <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <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="book"> <xs:complexType> <xs:all> <xs:element ref="isbn"/> <xs:element ref="title"/> <xs:element ref="authors"/> <xs:element ref="characters"/> </xs:all> <xs:attribute ref="id"/> <xs:attribute ref="available"/> </xs:complexType> </xs:element> <xs:element name="characters"> <xs:complexType> <xs:sequence> <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="character"> <xs:complexType> <xs:all> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="qualification"/> </xs:all> <xs:attribute ref="id"/> </xs:complexType> </xs:element> </xs:schema>
[download]
<xs:element name="persons"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="author"/> <xs:element ref="character"/> </xs:choice> </xs:complexType> </xs:element>
<xs:element name="persons"> <xs:complexType> <xs:all> <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/> </xs:all> </xs:complexType> </xs:element>
[download]
<xs:complexType name="basePerson"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType>
[download]
<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>[download]
<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>
[download]
<xs:element name="author"> <xs:complexType> <xs:sequence> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> </xs:sequence> <xs:sequence> <xs:element ref="dead" minOccurs="0"/> </xs:sequence> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType> </xs:element>[download]
<xs:element name="character"> <xs:complexType> <xs:sequence> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> </xs:sequence> <xs:sequence> <xs:element ref="qualification"/> </xs:sequence> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType> </xs:element>
[download]
<xs:complexType name="basePersons"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="author"/> <xs:element ref="character"/> </xs:choice> </xs:complexType>
[download]
<xs:complexType name="persons"> <xs:complexContent> <xs:extension base="basePersons"> <xs:sequence> <xs:element name="editor" type="xs:token" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
[download]
<xs:complexType name="personsEquivalent"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="author"/> <xs:element ref="character"/> </xs:choice> <xs:sequence> <xs:element name="editor" type="xs:token" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:sequence> </xs:complexType>
[download]
<xs:complexType name="personsAsWeWouldHaveLiked"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="author"/> <xs:element ref="character"/> <xs:element name="editor" type="xs:token"/> </xs:choice> </xs:complexType>
[download]
<xs:complexType name="person"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="dead" minOccurs="0"/> <xs:element ref="qualification" minOccurs="0"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType>
[download]
<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>[download]
<xs:element name="character"> <xs:complexType> <xs:complexContent> <xs:restriction base="person"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="qualification"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element>
[download]
<xs:complexType name="basePerson"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType>[download]
<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>
[download]
<xs:complexType name="person"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="dead" minOccurs="0"/> <xs:element ref="qualification" minOccurs="0"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType>[download]
<xs:element name="character"> <xs:complexType> <xs:complexContent> <xs:restriction base="person"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="qualification"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element>
[download]
<xs:element name="a"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="href" type="xs:anyURI"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>[download]
<xs:complexType name="markedText" mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="em" type="xs:token"/> <xs:element ref="a"/> </xs:choice> <xs:attribute ref="lang"/> </xs:complexType>[download]
<xs:element name="title" type="markedText"/>
<title lang="en"> Being a <a href="http://dmoz.org/Shopping/Pets/Dogs/"> Dog </a> Is a <em> Full-Time </em> Job </title>
[download]
<xs:element name="title"> <xs:complexType mixed="true"> <xs:complexContent mixed="true"> <xs:extension base="markedText"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="strong" type="xs:string"/> </xs:choice> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element>
[download]
<xs:complexType name="resultingType" mixed="true"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="em" type="xs:token"/> <xs:element ref="a"/> </xs:choice> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="strong" type="xs:string"/> </xs:choice> </xs:sequence> <xs:attribute ref="lang"/> </xs:complexType>
[download]
<xs:element name="a"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="href" type="xs:anyURI"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>[download]
<xs:complexType name="markedText" mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="em" type="xs:token"/> <xs:element ref="a"/> </xs:choice> <xs:attribute ref="lang"/> </xs:complexType>[download]
<xs:element name="title" type="markedText"/>
[download]
<xs:element name="title"> <xs:complexType mixed="true"> <xs:complexContent mixed="true"> <xs:restriction base="markedText"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="a"> <xs:complexType> <xs:simpleContent> <xs:restriction base="link"> <xs:attribute name="href"> <xs:simpleType> <xs:restriction base="xs:anyURI"> <xs:pattern value="http://.*"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:restriction> </xs:simpleContent> </xs:complexType> </xs:element> </xs:choice> <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:complexContent> </xs:complexType> </xs:element>
[download]
<xs:simpleType name="empty"> <xs:restriction base="xs:string"> <xs:enumeration value=""/> </xs:restriction> </xs:simpleType>[download]
<xs:element name="br"> <xs:complexType> <xs:simpleContent> <xs:extension base="empty"> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="class" type="xs:NMTOKEN"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
[download]
<xs:element name="br"> <xs:complexType> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="class" type="xs:NMTOKEN"/> </xs:complexType> </xs:element>
[download]
<xs:simpleType name="empty"> <xs:restriction base="xs:string"> <xs:enumeration value=""/> </xs:restriction> </xs:simpleType>[download]
<xs:complexType name="emptyBr"> <xs:simpleContent> <xs:extension base="empty"> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="class" type="xs:NMTOKEN"/> </xs:extension> </xs:simpleContent> </xs:complexType>[download]
<xs:complexType name="allmostEmptyBr"> <xs:simpleContent> <xs:restriction base="emptyBr"> <xs:whiteSpace value="collapse"/> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="class" type="xs:NMTOKEN"/> </xs:restriction> </xs:simpleContent> </xs:complexType>
[download]
<xs:complexType name="elementWithID"> <xs:attribute ref="id"/> </xs:complexType>
[download]
<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>
[download]
<xs:complexType name="bookTmp"> <xs:complexContent> <xs:extension base="elementWithID"> <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="available"/> </xs:extension> </xs:complexContent> </xs:complexType>[download]
<xs:element name="book"> <xs:complexType> <xs:complexContent> <xs:restriction base="bookTmp"> <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:element>
<xs:complexType name="elementWithBookID"> <xs:complexContent> <xs:restriction base="elementWithID"> <xs:attribute name="id" type="bookID"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="book"> <xs:complexContent> <xs:extension base="elementWithBookID"> <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="available"/> </xs:extension> </xs:complexContent> </xs:complexType>
[download]
<?xml version="1.0"?> <!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first-complex-types.xsd,v 1.12001/11/12 20:54:00 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:complexType name="elementWithID"> <xs:attribute ref="id"/> </xs:complexType> <xs:complexType name="bookTmp"> <xs:complexContent> <xs:extension base="elementWithID"> <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="available"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="personType"> <xs:complexContent> <xs:extension base="elementWithID"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="dead" minOccurs="0"/> <xs:element ref="qualification" minOccurs="0"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <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="book"> <xs:complexType> <xs:complexContent> <xs:restriction base="bookTmp"> <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:element> <xs:element name="author"> <xs:complexType> <xs:complexContent> <xs:restriction base="personType"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="dead" minOccurs="0"/> </xs:sequence> <xs:attribute ref="id"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="character"> <xs:complexType> <xs:complexContent> <xs:restriction base="personType"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="qualification"/> </xs:sequence> <xs:attribute ref="id"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> </xs:schema>