XML 名称空间
XML 名称空间是一组用 URI 引用标识的名称,这些名称在 XML 文档中用作元素类型和属性名称。
XML 名称空间是由 2006 年 8 月 16 日的名为 Namespaces in XML 的 W3C 建议定义的。XML 标记名应当是全局唯一的,由于性能方面的原因,XML 标记名还应该比较短。为了解决这种冲突,W3C 名称空间建议定义了属性 xmlns,它可以修改任何 XML 元素。如果它存在于元素中,那么它标识此元素的名称空间。
xmlns 属性的语法如下:
xmlns:prefix=namespace
其中 namespace 是唯一的 URI(例如,www.ibm.com),而 prefix 表示名称空间并提供指向它的指针。
在以下 customer 元素定义中,定义了记帐名称空间以便能够将元素标记与出现在由其他业务应用程序创建的客户记录中的元素标记区分开来。
Corporation
invoice
第一行中的名称空间定义对前缀指定名称空间 http://www.my.com/acct-REV10。将此前缀用于元素名称(例如,name)以便将它们与名称空间相连接。第二个应用程序(例如,实现系统)可以为其客户元素指定不同的名称空间:
Corporation
shipped
处理这两种数据结构的应用程序现在能够以不同方式处理记帐和实现数据。有一个缺省名称空间。如果在名称空间定义中没有指定局部名,那么将设置它。
Corporation
invoice
在此示例中,客户记录中的所有标记都限定为驻留在名称空间 http://www.my.com/acct-REV10 中。因为将使用缺省名称空间,所以不需要显式前缀。注意,缺省名称空间适用于任何属性定义。
XML 模式和名称空间
在下面的 XML 模式中,模式的缺省名称空间被定义为
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
XML 模式名称空间 http://www.w3.org/2001/XMLSchema;还有特定于模式的名称空间 http://www.ibm.com。
假定前面的 XML 模式被另存为 C:\temp\TestSchema.xsd,针对此模式进行验证的样本 XML 文件是:
x:Vangerowstrasse
69115
x:Heidelberg
x:Bernal Road
90375
x:San Jose
目标名称空间
目标名称空间用来标识元素与其名称之间的关联所在的名称空间。对于声明,此关联将确定符合模式的 XML 文件中元素的名称空间。导入模式的 XML 文件必须在 schemaLocation 属性中引用其目标名称空间。将把元素的目标名称空间与实际名称空间之间的任何不匹配报告为模式验证错误。在我们的示例中,目标名称空间为 http://www.ibm.com;它是在 XML 模式文件中定义的并且在 XML 文件中引用了两次。名称空间的这三次出现之间的任何不匹配都将会导致验证错误。
以下示例显示目标名称空间和名称空间前缀在 XML 模式以及它们的相应 XML 实例文档中如何工作。
样本 1 - 同时具有缺省名称空间和目标名称空间以及非限定局部元素的模式
XML 模式:
根据此模式创建的有效 XML 实例文档如下所示。局部元素和属性是非限定的。
Peter Smith
当 XML 文件中局部元素(例如,“name”元素)和属性是非限定的,那么只有根元素是限定的。因此,在此示例中,“x”名称空间前缀被指定给根元素“MyAddress”,使它与名称空间“http://www.ibm.com”相关联,但是“x”前缀未被指定给局部元素“name”。
样本 2 - 同时具有缺省名称空间和目标名称空间以及限定局部元素的模式
根据此模式创建的有效 XML 实例文档如下所示。因为 elementFormDefault 属性在 XML 模式中设置为限定的,所以局部元素和属性是限定的。
Peter Smith
在此示例中,“x”名称空间前缀被同时指定给根元素“MyAddress”和局部元素“name”,使它们与名称空间“http://www.ibm.com”相关联。
样本 3 - 具有目标名称空间的模式,并且显式定义了 xmlns:xsd
此 XML 模式添加了以下属性:
xmlns:xsd="http://www.w3.org/2001/XMLSchema
这意味着由 XML 模式语言定义的每个构造都将需要使用前缀“xsd”来限定。例如,xsd:complexType 和 xsd:string
. 注意,在声明和用法中可以选择任何其他前缀,例如,“xs”或“foobar”。
可以在 XML 模式首选项页中指定此前缀。有关更多信息,请参阅相关任务。
所有用户定义的类型都属于 targetNamespace 属性所定义的名称空间 http://www.ibm.com,并且前缀为 xmlns:x 属性所定义的“x”。
根据此模式创建的有效 XML 实例文档如下所示。局部元素和属性是非限定的。限定的语义与“样本 1”相同。
Peter Smith
样本 4 - 具有未声明目标名称空间且显示定义了 xmlns:xsd 的模式
此 XML 模式本身没有目标名称空间。在此情况下,强烈建议使用前缀(例如,“xsd”)来显式限定所有 XML 模式构造。因为没有名称空间前缀,所以会在没有名称空间限制的情况下引用此模式的定义和声明(例如,AddressType)。
根据此模式创建的有效 XML 实例文档如下所示。所有元素都是非限定的。
name
样本 5 - 目标名称空间为缺省名称空间的一种模式
这是一种目标名称空间为缺省名称空间的 XML 模式。另外,名称空间没有名称空间前缀。
根据此模式创建的有效 XML 实例文档如下所示:
name