XML/XML Schema/include

Материал из Web эксперт
Перейти к: навигация, поиск

elementFormDefault="qualified" and include

File: Data.xml
<?xml version="1.0"?>
<Course xmlns="http://www.wbex.ru"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=
                   "http://www.wbex.ru
                    Course.xsd">
    <Books>
        <Book>
                <Title>title 2</Title>
                <Author>author 2</Author>
                <Date>1977</Date>
                <ISBN>2-222-22222-2</ISBN>
                <Publisher>publisher 2</Publisher>
                <Summary>test</Summary>
        </Book>
    </Books>    
    <Students>
        <Student>
            <Name>name 1</Name>
            <SSN>123-45-6789</SSN>
        </Student>
        <Student>
            <Name>name 2</Name>
            <SSN>000-11-2345</SSN>
        </Student>
    </Students>    
</Course>

File: Course.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.wbex.ru"
            xmlns="http://www.wbex.ru"
            elementFormDefault="qualified">
    <xsd:redefine schemaLocation="CourseBook.xsd">
        <xsd:complexType name="BookType">
            <xsd:complexContent>
                <xsd:extension base="BookType">
                    <xsd:sequence>
                        <xsd:element name="Summary" type="xsd:string"/>
                    </xsd:sequence>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:redefine>
    <xsd:include schemaLocation="CourseStudent.xsd"/>
    <xsd:element name="Course">
        <xsd:complexType>
             <xsd:sequence>
                 <xsd:element name="Books">
                     <xsd:complexType>
                         <xsd:sequence>
                             <xsd:element ref="Book" maxOccurs="unbounded"/>
                         </xsd:sequence>
                     </xsd:complexType>
                 </xsd:element>
                 <xsd:element name="Students">
                     <xsd:complexType>
                         <xsd:sequence>
                             <xsd:element ref="Student" maxOccurs="unbounded"/>
                         </xsd:sequence>
                     </xsd:complexType>
                 </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
File: CourseBook.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified">
    <xsd:complexType name="BookType">
        <xsd:sequence>
            <xsd:element name="Title" type="xsd:string"/>
            <xsd:element name="Author" type="xsd:string"/>
            <xsd:element name="Date" type="xsd:string"/>
            <xsd:element name="ISBN" type="xsd:string"/>
            <xsd:element name="Publisher" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="Book" type="BookType"/>
</xsd:schema>
File: CourseStudent.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.wbex.ru"
            xmlns="http://www.wbex.ru"
            elementFormDefault="qualified">
    <xsd:element name="Student">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Name" type="xsd:string"/>
                <xsd:element name="SSN" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>



include another two xml schemas

File: Course.xml
<?xml version="1.0"?>
<Course xmlns="http://www.wbex.ru"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation=
                   "http://www.wbex.ru
                    Course.xsd">
    <Books>
        <Book>
                <Title>title2</Title>
                <Author>author2</Author>
                <Date>1977</Date>
                <ISBN>2-222-22222-2</ISBN>
                <Publisher>publisher2</Publisher>
        </Book>
    </Books>    
    <Students>
        <Student>
            <Name>name 1</Name>
            <SSN>123-45-6789</SSN>
        </Student>
        <Student>
            <Name>name 2</Name>
            <SSN>000-11-2345</SSN>
        </Student>
    </Students>
</Course>
File: Course.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.wbex.ru"
            xmlns="http://www.wbex.ru"
            elementFormDefault="qualified">
    <xsd:include schemaLocation="CourseBook.xsd"/>
    <xsd:include schemaLocation="CourseStudent.xsd"/>
    <xsd:element name="Course">
        <xsd:complexType>
             <xsd:sequence>
                 <xsd:element name="Books">
                     <xsd:complexType>
                         <xsd:sequence>
                             <xsd:element ref="Book" maxOccurs="unbounded"/>
                         </xsd:sequence>
                     </xsd:complexType>
                 </xsd:element>
                 <xsd:element name="Students">
                     <xsd:complexType>
                         <xsd:sequence>
                             <xsd:element ref="Student" maxOccurs="unbounded"/>
                         </xsd:sequence>
                     </xsd:complexType>
                 </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
File: CourseBook.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.wbex.ru"
            xmlns="http://www.wbex.ru"
            elementFormDefault="qualified">
    <xsd:element name="Book">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Title" type="xsd:string"/>
                <xsd:element name="Author" type="xsd:string"/>
                <xsd:element name="Date" type="xsd:string"/>
                <xsd:element name="ISBN" type="xsd:string"/>
                <xsd:element name="Publisher" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
File: CourseStudent.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.wbex.ru"
            xmlns="http://www.wbex.ru"
            elementFormDefault="qualified">
    <xsd:element name="Student">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Name" type="xsd:string"/>
                <xsd:element name="SSN" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>



include with elementFormDefault="qualified"

File: Company.xml
<?xml version="1.0"?>
<Company xmlns="http://www.wbex.ru"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.wbex.ru Company.xsd">
        <Person>
                <Name>name 1</Name>
                <SSN>123-45-6789</SSN>
        </Person>
        <Product>
                <Type>Widget</Type>
        </Product>
</Company>
File: Company.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.wbex.ru"
            xmlns="http://www.wbex.ru"
            elementFormDefault="qualified">
    <xsd:include schemaLocation="Person.xsd"/>
    <xsd:include schemaLocation="Product.xsd"/>
    <xsd:element name="Company">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Person" type="PersonType" maxOccurs="unbounded"/>
                <xsd:element name="Product" type="ProductType" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
File: Person.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified">
    <xsd:complexType name="PersonType">
        <xsd:sequence>
           <xsd:element name="Name" type="xsd:string"/>
           <xsd:element name="SSN" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>
File: Product.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified">
    <xsd:complexType name="ProductType">
        <xsd:sequence>
           <xsd:element name="Type" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>