complexType with restriction : complexType « XML Schema « XML






complexType with restriction


File: Data.xml

<?xml version="1.0"?>
<Books xmlns="http://www.java2s.com"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation=
                              "http://www.java2s.com
                               Schema.xsd">
        <Publication xsi:type="MagazineType">
                <Title>title 1</Title>
                <Date>2008</Date>
        </Publication>
        <Publication xsi:type="BookType">
                <Title>title 1</Title>
                <Author>author 1</Author>
                <Date>2008</Date>
                <ISBN>1-11111-111-1</ISBN>
                <Publisher>publisher 1</Publisher>
        </Publication>
        <Publication xsi:type="BookType">
                <Title>title 3</Title>
                <Author>author 3</Author>
                <Date>2008</Date>
                <ISBN>3-33-33333-3</ISBN>
                <Publisher>publisher 3</Publisher>
        </Publication>
</Books>

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="PublicationType" abstract="true">
        <xsd:sequence>
            <xsd:element name="Title" type="xsd:string"/>
            <xsd:element name="Author" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="Date" type="xsd:gYear"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="BookType">
        <xsd:complexContent>
            <xsd:extension base="PublicationType" >
                <xsd:sequence>
                    <xsd:element name="ISBN" type="xsd:string"/>
                    <xsd:element name="Publisher" type="xsd:string"/>
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="MagazineType">
        <xsd:complexContent>
            <xsd:restriction base="PublicationType">
                <xsd:sequence>
                    <xsd:element name="Title" type="xsd:string"/>
                    <xsd:element name="Author" type="xsd:string" minOccurs="0" maxOccurs="0"/>
                    <xsd:element name="Date" type="xsd:gYear"/>
                </xsd:sequence>
            </xsd:restriction>
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:element name="Publication" type="PublicationType"/>
    <xsd:element name="Books">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="Publication" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

 








Related examples in the same category

1.Define a complexType
2.Definition of a student element uses primitive types for the child elements
3.complex type with sequence
4.complexType outside the element
5.Anonymous complex type and sequence
6.Complex type with group reference
7.Complex type with complex content
8.Build Complex type with simple Type
9.complexType with extension
10.complexType mixed="true"
11.Nested complexType