首页 百科知识 的命名空间

的命名空间

时间:2022-10-17 百科知识 版权反馈
【摘要】:XML文档中使用的元素不是固定的,两个不同的XML文档使用同一个名字来描述不同类型的元素的情况就可能发生,尤其在把不同的XML文档合而为一时,更容易产生冲突。请先看下面两个例子:如果上述两个XML文档片断碰巧在一起使用的话,那么将会出现命名冲突的情况。命名空间属性一般放置在元素的开始标记处,其使用语法为:Xmlns:namespaceprefix ="namespace"。在上述的例子中,命名空间定义了一个Internet 地址:Xmlns:t=http://www.w3.org/TR/html4/。W 3C 命名规范声明命名空间本身就是一个统一资源标识符。

11.2.4 XML的命名空间

(1)命名冲突

XML文档中使用的元素不是固定的,两个不同的XML文档使用同一个名字来描述不同类型的元素的情况就可能发生,尤其在把不同的XML文档合而为一时,更容易产生冲突。请先看下面两个例子:

下面的XML文档commodities元素中携带了运动服的信息:

  <commodities>

  <commodityNo>11010</ commodityNo>

  <commodityName>运动服</commodityName>

  </commodities>

下面的XML文档在commodities元素中携带了电视机的信息:

  <commodities>

  <name>长虹彩电</name>

  <size>29寸</size>

  </commodities>

如果上述两个XML文档片断碰巧在一起使用的话,那么将会出现命名冲突的情况。因为这两个片断都包含了<table>元素,而这两个table元素的定义与所包含的内容又各不相同。

(2)使用前缀解决命名冲突

XML命名空间就提供了一种避免元素命名冲突的方法,即使用前缀解决命名冲突问题。再看下例:

下面的XML文档在元素commodities中携带了运动服的信息:

  <s:commodities>

  <s:commodityNo>11010</ s:commoditiyNo>

  <s:commodityName>运动服</s:commodityName>

  </s:commodities>

下面的XML文档在元素commodities中携带了电视机的信息:

  <t:commodities>

  <t:name>长虹彩电</t:name>

  <t:size>29寸</t:size>

  </t:commodities>

现在就没有命名冲突了,因为这两个文档对各自的commodities元素使用了不同的前缀,commodities元素在两个文档中分别是<s:commodities> 和<t:commodities>,即通过前缀,我们创建了两个不同的commodities元素。

(3)使用命名空间

下面的XML文档在commodities元素中携带了运动服信息:

  <s:commodities Xmlns:s="http://www.w3.org/TR/htm l4/">

  <s:commodities>

  <s:commodityNo>11010</ s:commoditiyNo>

  <s:commodityName>运动服</s:commodityName>

  </s:commodities>

下面的XML文档在commodities元素中携带了电视机信息:

  <t:commodities Xmlns:f="http://www.w3schools.com/TV">

  <t:commodities>

  <t:name>长虹彩电</t:name>

  <t:size>29寸</t:size>

  </t:commodities>

在上述两个例子中除了使用前缀外,两个commodities元素都使用了Xmlns属性,使元素和不同的命名空间关联到一起了。

(4)命名空间属性

命名空间属性一般放置在元素的开始标记处,其使用语法为:Xmlns:namespaceprefix ="namespace"。

在上述的例子中,命名空间定义了一个Internet 地址:Xmlns:t=http://www.w3.org/TR/html4/。

W 3C 命名规范声明命名空间本身就是一个统一资源标识符(Uniform Resource Identifier,URI)。

当我们在元素的开始标记处使用命名空间时,该元素所有的子元素都将通过一个前缀与同一个命名空间相互关联。

注意:用来标识命名空间的网络地址并不被XML解析器调用,XML解析器不需要从这个网络地址中查找信息,该网络地址的作用仅仅是给命名空间一个唯一的名字,因此这个网络地址也可以是虚拟的,然而有很多公司经常把这个网络地址映射到一个真实的Web页面,这个地址包含了关于当前命名空间更详细的信息。

如果省略local_prefix(本地前缀),这时就构成了缺省命名空间:

  <commodities Xmlns="http://www.w3.org/TR/html4/">

  <commodities>

  <commodityNo>11010</ commodityNo>

  <commodityName>运动服</commodityName>

  </commodities>

如果对一个元素定义了缺省命名空间,那么该元素及其子元素,包括它们的属性都会自动地成为该命名空间的一部分,不用再在每一个元素和属性前面一一标明了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈