XML Tutorial/XML Schema/elementFormDefault

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

Allowing Any Elements or Attributes from a Particular Namespace

File: Data.xml
<?xml version="1.0"?>
<library xmlns="http://wbex.ru/ns/library"
  xmlns:mkt="http://wbex.ru/ns/library/mkt">
  <book id="b0836217462">
    <title>title</title>
    <authors>
      <person id="CMS">
        <name>name</name>
      </person>
    </authors>
    <mkt:cover>Paperback</mkt:cover>
    <mkt:pages>128</mkt:pages>
  </book>
</library>
File: Schema.xsd
<?xml version="1.0"?>
<xs:schema targetNamespace="http://wbex.ru/ns/library"
  elementFormDefault="qualified"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns="http://wbex.ru/ns/library">
  <xs:element name="library">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="book" />
      </xs:sequence>
      <xs:anyAttribute
        namespace="http://wbex.ru/ns/library/mkt"
        processContents="skip" />
    </xs:complexType>
  </xs:element>
  <xs:element name="book">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" type="xs:string" />
        <xs:element name="authors">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="person">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="name"
                      type="xs:string" />
                  </xs:sequence>
                  <xs:attribute name="id"
                    type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:any namespace="http://wbex.ru/ns/library/mkt"
          processContents="skip" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string" />
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>


Namespace Qualification

When working with namespaces, the schema author must decide whether the namespace of each element and attribute should be hidden or exposed in the document instance. 

elementFormDefault="qualified | unqualified"
attributeFormDefault="qualified | unqualified"
By setting the elementFormDefault attribute, you can require the document instance to expose or hide namespace qualifications.
If you use elementFormDefault="qualified", the namespace of each element would have to be exposed in document instances.