命名空间(Naming Space)

原创 2012年03月24日 09:46:22

命名空间(Naming Space)

XML 命名空间提供了一种避免元素命名冲突的方法。

命名冲突

因为XML文档中使用的元素不是固定的,那么两个不同的XML文档使用同一个名字来描述不同类型的元素的情况就可能发生。而这种情况又往往会导致命名冲突。请看下面两个例子

这个 XML 文档在table元素中携带了水果的信息:

<table>

<tr>

<td>Apples</td>

<td>Bananas</td>

</tr>

</table>

这个 XML 文档在table元素中携带了桌子的信息(家具,不能吃的哦):

<table>

<name>African Coffee Table</name>

<width>80</width>

<length>120</length>

</table>

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

使用前缀解决命名冲突问题

下面的XML文档在table元素中携带了信息:

<h:table>

<h:tr>

<h:td>Apples</h:td>

<h:td>Bananas</h:td>

</h:tr>

</h:table>

下面的XML文档携带了家具table的信息:

<f:table>

<f:name>African Coffee Table</f:name>

<f:width>80</f:width>

<f:length>120</f:length>

</f:table>

现在已经没有元素命名冲突的问题了,因为这两个文档对各自的table元素使用了不同的前缀,table元素在两个文档中分别是(<h:table> 和<f:table>)。

通过使用前缀,我们创建了两个不同的table元素。

使用命名空间

下面的XML文档在table元素中携带了信息:

<h:table xmlns:h="http://www.w3.org/TR/html4/">

<h:tr>

<h:td>Apples</h:td>

<h:td>Bananas</h:td>

</h:tr>

</h:table> 

下面的XML文档携带了家具table的信息:

<f:table xmlns:f="http://www.w3s.com/furniture">

<f:name>African Coffee Table</f:name>

<f:width>80</f:width>

<f:length>120</f:length>

</f:table>

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

命名空间属性

命名空间属性一般放置在元素的开始标记处,其使用语法如下所示:

xmlns:namespace-prefix="namespace" 

在上面的例子中,命名空间定义了一个Internet 地址:

xmlns:f="http://www.w3s.com/furniture" 

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

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

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

可以访问http://www.w3.org/TR/html4/.

统一资源标识符

通用资源标识符(A Uniform Resource Identifier (URI))是一个标识网络资源的字符串。最普通的URI应该是统一资源定位符Uniform Resource Locator (URL)。URL用于标识网络主机的地址。另一方面,另一个不常用的URI是通用资源名字Universal Resource Name (URN)。在我们的例子中,一般使用的是URLs。

既然前面的例子使用的URL地址来标识命名空间,我们可以确信这个命名空间是唯一的。

默认的命名空间

定义一个默认的XML命名空间使得我们在子元素的开始标记中不需要使用前缀。他的语法如下所示:

<element xmlns="namespace"> 

下面的XML文档在table元素中包含了水果的信息:

<table xmlns="http://www.w3.org/TR/html4/">

<tr>

<td>Apples</td>

<td>Bananas</td>

</tr>

</table>

下面的XML文档包含了家具table的信息:

<table xmlns="http://www.w3s.com/furniture">

<name>African Coffee Table</name>

<width>80</width>

<length>120</length>

</table>

使用命名空间

文档开始使用XSL的时候,就会发现命名空间使用的是如此频繁。XSL样式单主要用于将XML文档转换成类似于HTML文件的格式。

如果看一下下面的XSL文档,就会发现有很多标记都是HTML标记。那些标记并不是HTML标记,是加了前缀的XSL,这个XSL前缀由命名空间"http://www.w3.org/TR/xsl"所标识: 

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/xsl">

<xsl:template match="/">

<html>

<body>

<table border="2" bgcolor="yellow">

<tr>

<th>Title</th>

<th>Artist</th>

</tr>

<xsl:for-each select="CATALOG/CD">

<tr>

<td>

<xsl:value-of select="TITLE" />

</td>

<td>

<xsl:value-of select="ARTIST" />

</td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet> 


Scalastyle: Implemented Rules

There are 63 rules which are currently implemented: Checker Description org.s...
  • houzhizhen
  • houzhizhen
  • 2017年01月23日 11:20
  • 321

applicationContext.xml文件中的异常: Attribute : name The name of the property, following JavaBean naming c

出现原因:如果你写的bean符合JavaBean规范,那么造成该问题的原因只有一个,即myeclipseTomcat没有及时更新工作空间中的配置文件。 解决办法:等吧!...
  • u013226462
  • u013226462
  • 2014年05月28日 00:25
  • 5500

The name of the property, following JavaBean naming conventions.解决方法

鼠标放在applicationContext.xml里面的property标签下的name属性时,出现  查看或者重新写注入的构造函数就行了...
  • SCT_T
  • SCT_T
  • 2016年11月05日 15:56
  • 4032

Java华丽转身 —— J2EE规范(一) JNDI Java Naming and Directory Interface

Java命名和目录接口,是一组在Java应用中访问命名和目录服务的API。为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。            命名服...
  • liutengteng130
  • liutengteng130
  • 2014年03月19日 08:16
  • 4753

131.Which naming method uses the tnsnames.ora file to store the connect descriptor used by the clien

131.Which naming method uses the tnsnames.ora file to store the connect descriptor used by the clien...
  • dwj19830118
  • dwj19830118
  • 2016年08月03日 18:13
  • 662

The name of the property, following JavaBean naming conventions.

myeclipse中自动配置生成SSH框架 在配置spring –applicationContext.xml中的报的错,spring是通过注入的方式来对实例进行创建的,所有需要在所配置的actio...
  • jonnyha
  • jonnyha
  • 2017年04月08日 14:48
  • 1422

【Python笔记】从一段Bug代码来理解Python的Naming Rule

从Python文档关于Naming and binding的说明可知,变量名是绑定到具体对象的,从这点来看,可以把它理解为C++中的引用。考虑下面两行语句: a = 'test' a = 'test_...
  • slvher
  • slvher
  • 2015年01月30日 13:55
  • 1015

随笔-property follows cocoa naming convention for returning 'owned' objects

这两天都遇到这个错误2次了  第一次是 创建了一个 newpassword的textField属性  第二次是 申明了一个 类的对象 copyStateVC; property follows co...
  • Axing1991
  • Axing1991
  • 2015年07月24日 10:46
  • 8749

linux 容器(LXC) 第3章 命名空间(namespace) 简介

1. 命名空间是什么 命名空间简单的来说提供的就是全局资源的一种抽象,将资源放到不同的命名空间中,各个命名空间中的资源是相互隔离的。 2. namespace 的分类 names...
  • caoshuming_500
  • caoshuming_500
  • 2016年06月15日 15:36
  • 1115

javax.naming.NamingException: No naming context bound to this class loader

1、错误描述警告: Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHos...
  • you23hai45
  • you23hai45
  • 2015年11月21日 23:59
  • 17959
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:命名空间(Naming Space)
举报原因:
原因补充:

(最多只允许输入30个字)