Reuse complex type
File: Data.xml <?xml version="1.0" standalone="yes"?> <statement xmlns="http://www.java2s.com/statement" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.java2s.com/statement statement.xsd"> <customer name="name 1" number="CUST123" type="VIP"/> <orders count="2"> <order number="ORD100" owner="CUST123" total="500.00"> <items> <item quantity="5" price="100"> <description>item 1</description> </item> <item quantity="2" price="50"> <description>item 2</description> </item> </items> </order> <order number="ORD101" owner="CUST123" total="150.00"> <items> <item quantity="6" price="25"> <description>item 3</description> </item> </items> </order> </orders> </statement> File: Schema.xsd <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.java2s.com/statement" xmlns="http://www.java2s.com/statement"> <xs:element name="statement"> <xs:complexType> <xs:sequence> <xs:element ref="customer" /> <xs:element ref="orders" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="customer"> <xs:complexType> <xs:sequence /> <xs:attribute name="number" type="xs:ID" /> <xs:attribute name="name" type="xs:string" /> <xs:attribute name="type" type="xs:string" use="optional" default="normal" /> </xs:complexType> </xs:element> <xs:element name="orders"> <xs:complexType> <xs:sequence> <xs:element ref="order" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="count" type="xs:nonNegativeInteger" /> </xs:complexType> </xs:element> <xs:element name="order"> <xs:complexType> <xs:sequence> <xs:element ref="items" /> </xs:sequence> <xs:attribute name="number" type="xs:ID" /> <xs:attribute name="owner" type="xs:IDREF" /> <xs:attribute name="total" type="xs:decimal" /> </xs:complexType> </xs:element> <xs:element name="items"> <xs:complexType> <xs:sequence> <xs:element ref="item" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="item"> <xs:complexType> <xs:sequence> <xs:element ref="description" /> </xs:sequence> <xs:attribute name="quantity" type="xs:nonNegativeInteger" /> <xs:attribute name="price" type="xs:decimal" /> </xs:complexType> </xs:element> <xs:element name="description" type="xs:string" /> </xs:schema>