Mega Code Archive

 
Categories / XML Tutorial / XML Schema
 

Element based on simple type

File: Data.xml <?xml version="1.0"?> <INVENTORY>    <BOOK InStock="true">       <TITLE>title 1</TITLE>       <AUTHOR Born="1835">          <FIRSTNAME>Mark</FIRSTNAME>          <LASTNAME>Twain</LASTNAME>       </AUTHOR>       <BINDING>hardcover</BINDING>       <PAGES FrontMatter="8">298</PAGES>       <PRICE>5.49</PRICE>       <DATE>2000-03</DATE>       <ISBN>9-9999-9999-9</ISBN>    </BOOK> </INVENTORY> File: Schema.xsd <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">    <xsd:element name="INVENTORY">       <xsd:complexType>          <xsd:sequence>             <xsd:element name="BOOK" type="BookType"                 minOccurs="0" maxOccurs="unbounded"/>          </xsd:sequence>       </xsd:complexType>    </xsd:element>    <xsd:complexType name="BookType">       <xsd:sequence>          <xsd:element name="TITLE">             <xsd:complexType mixed="true">                <xsd:sequence>                   <xsd:element name="SUBTITLE" type="xsd:string"                      minOccurs="0" maxOccurs="1"/>                </xsd:sequence>             </xsd:complexType>          </xsd:element>          <xsd:element name="AUTHOR">             <xsd:complexType>                <xsd:sequence>                   <xsd:element name="FIRSTNAME" type="xsd:string"/>                   <xsd:element name="LASTNAME" type="xsd:string"/>                 </xsd:sequence>                <xsd:attribute name="Born" type="xsd:gYear"/>             </xsd:complexType>          </xsd:element>          <xsd:element name="BINDING">             <xsd:simpleType>                <xsd:restriction base="xsd:string">                   <xsd:enumeration value="hardcover"/>                   <xsd:enumeration value="mass market paperback"/>                   <xsd:enumeration value="trade paperback"/>                </xsd:restriction>             </xsd:simpleType>          </xsd:element>          <xsd:element name="PAGES">             <xsd:complexType>                <xsd:simpleContent>                   <xsd:extension base="xsd:positiveInteger">                      <xsd:attribute name="FrontMatter"                          type="xsd:positiveInteger"/>                   </xsd:extension>                </xsd:simpleContent>             </xsd:complexType>          </xsd:element>          <xsd:element name="PRICE">               <xsd:simpleType>                <xsd:restriction base="xsd:decimal">                   <xsd:minExclusive value="0"/>                   <xsd:maxExclusive value="100"/>                </xsd:restriction>             </xsd:simpleType>          </xsd:element>          <xsd:element name="DATE" type="xsd:gYearMonth" minOccurs="0"/>          <xsd:element name="ISBN">             <xsd:simpleType>                <xsd:restriction base="xsd:string">                   <xsd:pattern value="\d{1}-\d{4}-\d{4}-\d{1}"/>                </xsd:restriction>             </xsd:simpleType>          </xsd:element>       </xsd:sequence>       <xsd:attribute name="InStock" type="xsd:boolean" use="required" />       </xsd:complexType> </xsd:schema>