Build complexType with complexType : complexType « XML Schema « XML Tutorial






File: Data.xml

<?xml version="1.0"?>
<products xmlns ="http://www.java2s.com"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.java2s.com Schema.xsd">
      <product>
          <description>description 1</description>
          <warranty>lifetime warranty</warranty>
          <name>name 1</name>
          <image>a.gif</image>
          <cost>41.95</cost>
          <retailer>http://www.java2s.com</retailer>
      </product>
      <product>
          <description>description 1</description>
          <warranty>lifetime warranty</warranty>
          <name>name 2</name>
          <image>b.gif</image>
          <cost>239.00</cost>
          <retailer>http://www.java2s.com</retailer>
      </product>

</products>

File: Schema.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.java2s.com"
            xmlns="http://www.java2s.com"
            elementFormDefault="qualified">
    <xsd:complexType name="appliance">
        <xsd:sequence>
            <xsd:element name="description" type="xsd:string"/>
            <xsd:element name="warranty" type="xsd:string" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="productType">
        <xsd:complexContent>
            <xsd:extension base="appliance">
                <xsd:sequence>
                    <xsd:element name="name" type="xsd:string"/>
                    <xsd:element name="image" type="imageType"/>
                    <xsd:element name="weight" type="xsd:positiveInteger" minOccurs="0"/>
                    <xsd:element name="cost" type="money" maxOccurs="unbounded"/>
                    <xsd:element name="retailer" type="xsd:anyURI"/>
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:element name="products">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="product" type="productType" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:simpleType name="money">
        <xsd:restriction base="xsd:decimal">
            <xsd:fractionDigits value="2"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="imageType">
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="(.)+\.(gif|jpg|jpeg|bmp)"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>








3.56.complexType
3.56.1.Defining Complex Types
3.56.2.To declare an empty content model in a definition
3.56.3.Content Models
3.56.4.Complex type with sequence
3.56.5.Defining Elements to Contain Only Elements
3.56.6.Defining Elements with Mixed Content
3.56.7.Build complexType with complexType
3.56.8.Complex type for element with child elements and attribute
3.56.9.When an element contains both child elements and character data, it follows the mixed content model