命名空间
在XML中引入命名空间的目的是为了能够在一个XML文档中使用其它XML文档中的一些具有通用性的定义(通常是一些元素或数据类型等的定义),并保证不产生语义上的冲突。XML DTD并不能支持这一特性,这进一步限制了XML DTD的适用范围。而XML Schema则很好的满足了这一点。
并且, XML Schema还提供了include 和 import两种引用命名空间的方法。下面的例子中XML Schema文档引用了其它两个XML Schema的定义,通过使用import实现了混合使用不同命名空间的目的。例子中还定义了不同命名空间中元素之间的keyref约束。
源码8 XML Schema对命名空间的使用
schema targetNamespace="http://202.117.84.144"
xmlns:xs="http://202.117.84.144"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"
xmlns:b="http://202.117.84.228/middlewareOracle805ioracletest20211784144"
elementFormDefault="qualified">
<import namespace="http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"
schemaLocation="F:\xml schema\middlewareSqlServer2000sqlservertest20211784228.xsd"/>
<import namespace="http://202.117.84.228/middlewareOracle805ioracletest20211784144"
schemaLocation="F:\xml schema\middlewareOrcal805ioracletest20211784144.xsd"/>
<annotation>
<documentation xml:lang="cn">
schema for Middleware
Copyright 2001 Zhou Jingtao. All rights reserved.
</documentation>
</annotation>
<element name="CombineDatabase">
<complexType>
<sequence>
<element name="CombinGlobeSchema">
<complexType>
<sequence>
<element ref="a:H-Database"/>
<element ref="b:H-Database"/>
</sequence>
</complexType>
<keyref name="SqlServerTest_T_C_Psign" refer="b:gz_jgxx_ID_pk">
<selector xpath="a:H-Database/a:SqlServerTest/a:T_C/a:Count"/>
<field xpath="@value"/>
</keyref>
</element>
</sequence>
</complexType>
</element>
</schema>