XML/XML Schema/targetNamespace
Содержание
Creating Vocabularies that Belong to a Namespace
File: Schema.xsd
<?xml version = "1.0" ?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
targetNamespace = "http://www.wbex.ru/Customers"
xmlns = "http://www.wbex.ru/Customers">
<xs:element name = "Customer" >
<xs:complexType>
<xs:sequence>
<xs:element name = "FirstName" type = "xs:string" />
<xs:element name = "MiddleInitial" type = "xs:string" />
<xs:element ref = "LastName" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name = "LastName" type = "xs:string" />
</xs:schema>
File: Data.xml
<?xml version = "1.0" ?>
<cust:Customer xmlns:cust = "http://www.wbex.ru/Customers"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "Schema.xsd">
<FirstName>first</FirstName>
<MiddleInitial>middle</MiddleInitial>
<cust:LastName>last</cust:LastName>
</cust:Customer>
Creating Vocabularies that Do Not Belong to a Namespace
File: Schema.xsd
<?xml version = "1.0" ?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
<xs:element name = "Customer" >
<xs:complexType>
<xs:sequence>
<xs:element name = "FirstName" type = "xs:string" />
<xs:element name = "MiddleInitial" type = "xs:string" />
<xs:element name = "LastName" type = "xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
A conforming instance document would look something like this:
<?xml version = "1.0" ?>
<Customer xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation = "Schema.xsd">
<FirstName>first</FirstName>
<MiddleInitial>middle</MiddleInitial>
<LastName>last</LastName>
</Customer>
Looking Behind Namespace Qualification
File: Schema.xsd
<?xml version = "1.0" ?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
targetNamespace = "http://www.wbex.ru/Customers"
xmlns = "http://www.wbex.ru/Customers">
<xs:element name = "Customer" type = "CustomerType" />
<xs:complexType name = "CustomerType">
<xs:sequence>
<xs:element name = "FirstName" type = "xs:string" />
<xs:element name = "MiddleInitial" type = "xs:string" />
<xs:element ref = "LastName" />
</xs:sequence>
<xs:attribute name = "clubCardMember" type = "xs:boolean" />
<xs:attribute ref = "customerID" />
</xs:complexType>
<xs:element name = "LastName" type = "xs:string" />
<xs:attribute name = "customerID" type = "xs:integer" />
</xs:schema>
File: Data.xml
<?xml version = "1.0" ?>
<cust:Customer xmlns:cust = "http://www.wbex.ru/Customers"
clubCardMember = "true"
cust:customerID = "24427">
<FirstName>first</FirstName>
<MiddleInitial>middle</MiddleInitial>
<cust:LastName>last</cust:LastName>
</cust:Customer>
Set targetNamespace
File: Data.xml
<?xml version="1.0"?>
<employees
xmlns="http://www.wbex.ru/employees"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.wbex.ru/employees Schema.xsd"
source="from where"
version="1.0">
<employee person="personName" tags="tagName">
<name>
<first>first</first>
<middle>middle</middle>
<last>last</last>
</name>
<location>
<latitude>1</latitude>
<longitude>1</longitude>
<address>USA</address>
</location>
<phone>12345678</phone>
<knows employees="name of employees"/>
<description>description</description>
</employee>
</employees>
File: Schema.xsd
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:employees="http://www.wbex.ru/employees"
targetNamespace="http://www.wbex.ru/employees"
elementFormDefault="qualified">
<attributeGroup name="employeeAttributes">
<attribute name="version" type="decimal" fixed="1.0" />
<attribute name="source" type="string"/>
</attributeGroup>
<element name="employees">
<complexType>
<sequence>
<element name="employee" minOccurs="0" maxOccurs="unbounded">
<complexType>
<sequence>
<element name="name" type="employees:NameType"/>
<element name="location" type="employees:LocationType"/>
<element name="phone" type="employees:PhoneType"/>
<element name="knows" type="employees:KnowsType"/>
<element name="description" type="employees:DescriptionType"/>
</sequence>
<attribute name="tags" type="token"/>
<attribute name="person" type="ID"/>
</complexType>
</element>
</sequence>
<attributeGroup ref="employees:employeeAttributes"/>
</complexType>
</element>
<complexType name="NameType">
<group ref="employees:NameGroup"/>
<attribute name="title" type="string"/>
</complexType>
<group name="NameGroup">
<sequence>
<element name="first" type="string" minOccurs="1" maxOccurs="unbounded"/>
<element name="middle" type="string" minOccurs="0" maxOccurs="1"/>
<element name="last" type="string"/>
</sequence>
</group>
<complexType name="LocationType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="address" type="string"/>
<sequence>
<element name="latitude" type="float"/>
<element name="longitude" type="float"/>
</sequence>
</choice>
</complexType>
<complexType name="PhoneType">
<simpleContent>
<extension base="string">
<attribute name="kind" type="string" default="Home" />
</extension>
</simpleContent>
</complexType>
<complexType name="KnowsType">
<attribute name="employees" type="string"/>
</complexType>
<complexType name="DescriptionType" mixed="true">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="em" type="string"/>
<element name="strong" type="string"/>
<element name="br" type="string"/>
</choice>
</complexType>
</schema>
targetNamespace and non-default namespace
File: Data.xml
<?xml version="1.0"?>
<products xmlns ="http://www.wbex.ru"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.wbex.ru Schema.xsd">
<product>
<name>name 1</name>
<image>a.gif</image>
<description>description 1</description>
<warranty>lifetime warranty</warranty>
<cost>41.95</cost>
<retailer>http://www.wbex.ru</retailer>
</product>
<product>
<name>name 2</name>
<image>b.gif</image>
<description>description 2</description>
<cost>239.00</cost>
<retailer>http://www.wbex.ru</retailer>
</product>
</products>
File: Schema.xsd
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.wbex.ru"
elementFormDefault="qualified"
xmlns:j="http://www.wbex.ru">
<element name="products">
<complexType>
<sequence>
<element ref="j:product" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<element name="product">
<complexType>
<sequence>
<element ref="j:name"/>
<element ref="j:image"/>
<element ref="j:description"/>
<element ref="j:warranty" minOccurs="0"/>
<element ref="j:weight" minOccurs="0"/>
<element ref="j:cost" maxOccurs="unbounded"/>
<element ref="j:retailer"/>
</sequence>
</complexType>
</element>
<element name="name" type="string"/>
<element name="image" type="string"/>
<element name="description" type="string"/>
<element name="warranty" type="string"/>
<element name="weight" type="string"/>
<element name="cost" type="string"/>
<element name="retailer" type="string"/>
</schema>