XML Tutorial/XML Schema/elementFormDefault — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 08:26, 26 мая 2010
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.