<simple-name> Snoopy </simple-name>
<full-name> <last> Schulz </last> <first> Charles </first> <middle> M </middle> </full-name>
[download]
<xs:element name="full-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>[download]
<xs:element name="simple-name" type="string32"/>[download]
<xs:group name="name"> <xs:choice> <xs:element ref="simple-name"/> <xs:element ref="full-name"/> </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>
<full-name> <first> Eric </first> <last> van der Vlist </last> </full-name> or <full-name> <last> van der Vlist </last> <first> Eric </first> </full-name>
[download]
<xs:element name="simple-name" type="string32" substitutionGroup="name"/>[download]
<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>
[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: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:complexType name="full-name-type"> <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>[download]
<xs:element name="full-name" substitutionGroup="name" type="full-name-type"/>[download]
<xs:element name="composed-name" substitutionGroup="full-name"> <xs:complexType> <xs:complexContent> <xs:restriction base="full-name-type"> <xs:all> <xs:element name="first" type="string32" minOccurs="0"/> <xs:element name="last" type="string32"/> </xs:all> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element>
[download]
<xs:group name="name"> <xs:choice> <xs:element ref="simple-name"/> <xs:element ref="full-name"/> </xs:choice> </xs:group>
<xs:redefine schemaLocation="foo.xsd">
<xs:group name="name">
<xs:choice>
<xs:group ref="name"/>
<xs:element ref="bar"/>
</xs:choice>
</xs:group>
</xs:redefine>
[download]
<xs:complexType name="authorType"> <xs:sequence> <xs:choice> <xs:element ref="name"/> <xs:element ref="simple-name"/> <xs:element ref="full-name"/> </xs:choice> <xs:element ref="born"/> <xs:element ref="dead" minOccurs="0"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType>
[download]
<xs:complexType name="authorType"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="dead" minOccurs="0"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType>
[download]
<xs:complexType name="restrictedAuthorType"> <xs:complexContent> <xs:restriction base="authorType"> <xs:sequence> <xs:choice> <xs:element ref="simple-name"/> <xs:element ref="full-name"/> </xs:choice> <xs:element ref="born"/> <xs:element ref="dead" minOccurs="0"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType>
[download]
<xs:complexType name="personType"> <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:complexType name="authorType"> <xs:complexContent> <xs:extension base="personType"> <xs:sequence> <xs:element name="book" type="xs:token" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
[download]
<xs:complexType name="characterType"> <xs:complexContent> <xs:restriction base="personType"> <xs:sequence> <xs:element ref="name"/> <xs:element ref="born"/> <xs:element ref="qualification"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType>
<person xsi:type="authorType" id="CMS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <name> Charles M Schulz </name> <born> 1922-11-26 </born> <dead> 2000-02-12 </dead> <book> Being a Dog Is a Full-Time Job </book> </person> <person xsi:type="characterType" id="Snoopy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <name> Snoopy </name> <born> 1950-10-04 </born> <qualification> extroverted beagle </qualification> </person>
[download]
<xs:element name="person" type="personType"/>[download]
<xs:element name="author" type="authorType" substitutionGroup="person"/>[download]
<xs:element name="character" type="characterType" substitutionGroup="person"/>[download]
<xs:element name="human" type="personType" substitutionGroup="person"/>
<author id="CMS"> <name> Charles M Schulz </name> <born> 1922-11-26 </born> <dead> 2000-02-12 </dead> <book> Being a Dog Is a Full-Time Job </book> </author> <character id="PP"> <name> Peppermint Patty </name> <born> 1966-08-22 </born> <qualification> bold, brash and tomboyish </qualification> </character> <human id="CMS."> <name> Charles M Schulz </name> <born> 1922-11-26 </born> <dead> 2000-02-12 </dead> </human>