XML Tutorial/XML Schema/import

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

Creating a Schema from Multiple Documents: <import>

The <import> declaration is used for combining XML Schemas that have different targetNamespaces. 
The <import> declaration allows you to refer to declarations only within other XML Schemas. 
The <import> declaration is always declared globally within an XML Schema.
The <import> declaration must be a direct child of the <schema> element. 
The <import> declaration applies to the entire XML Schema. 
<import namespace="" schemaLocation="">


To import elements and attributes with no namespace, import a schema without any target namespace

File: Data.xml
<?xml version="1.0"?>
<lib:library xmlns:lib="http://wbex.ru/ns/library">
  <lib:book id="b0836217462">
    <lib:title>Being a Dog Is a Full-Time Job</lib:title>
    <lib:authors>
      <person id="CMS">
        <name>Charles M Schulz</name>
      </person>
    </lib:authors>
  </lib:book>
</lib:library>

File: Schema.xsd
<?xml version="1.0"?>
<xs:schema targetNamespace="http://wbex.ru/ns/library"
  elementFormDefault="qualified" attributeFormDefault="unqualified"
  xmlns:lib="http://wbex.ru/ns/library"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="another.xsd" />
  <xs:element name="library">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="book" type="lib:bookType" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="bookType">
    <xs:sequence>
      <xs:element name="title" type="xs:string" />
      <xs:element name="authors">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="person" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id" type="xs:ID" use="required" />
  </xs:complexType>
</xs:schema>

File: another.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="person" type="personType" />
  <xs:complexType name="personType">
    <xs:sequence>
      <xs:element name="name" type="xs:string" />
    </xs:sequence>
    <xs:attribute name="id" type="xs:ID" use="required" />
  </xs:complexType>
</xs:schema>