`

命名空间

阅读更多
命名冲突
      因为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>)。

使用命名空间
下面的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.w3schools.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.w3schools.com/furniture"
W3C 命名规范声明命名空间本身就是一个统一资源标示符,Uniform Resource Identifier (URI)
当我们在元素的开始标记处使用命名空间时,该元素所有的子元素都将通过一个前缀与同一个命名空间
相互关联.注意:用来标识命名空间的网络地址并不被XML解析器调用,XML解析器不需要从这个网络
地址中查找信息,该网络地址
的作用仅仅是给命名空间一个唯一的名字,因此这个网络地址也可以是虚
拟的,然而又很多公司经常把这个网络地址值象
一个真实的Web页面,这个地址包含了关于当前命名空
间更详细的信息。
默认的命名空间
定义一个默认的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.w3schools.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>

 


 

 

分享到:
评论

相关推荐

    PHP命名空间的使用,PHP命名空间实例

    通过创建独立的命名空间,我们可以将相关的类、函数和常量分组,每个命名空间都有自己的作用域,不同命名空间内的同名元素互不影响。 二、命名空间的声明与使用 1. 声明命名空间:使用`namespace`关键字来声明一个...

    C#命名空间分类

    C#命名空间详细分类介绍,方便编程使用,System.Collections //命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。 System.Collections.Generic //命名空间包含定义...

    Qt命名空间 Qt namespace

    Qt命名空间是Qt库中的一个重要概念,它是C++编程中的一种组织代码的方式,用于避免不同模块或库之间的名称冲突。在Qt中,大部分类都属于`Qt`命名空间,这使得开发者可以清楚地知道哪些函数和类是Qt提供的。本文将...

    protobuf中的命名空间使用demo(C++)

    在C++编程中,protobuf提供了一种类似C++命名空间的机制,被称为“包”(package),用于组织和管理.proto文件中的消息类型和其他定义,避免了全局命名冲突的问题。 在protobuf中,命名空间主要通过在.proto文件中...

    WebApi返回xml格式时去除命名空间

    默认情况下,WebAPI生成的XML数据会包含命名空间信息,这可能导致客户端处理数据时的不便。本文将深入探讨如何在C#中使用WebAPI去除返回XML数据时的命名空间。 首先,我们需要了解XML命名空间的作用。XML命名空间是...

    C#自定义命名空间与使用自定义的命名空间方法

    ### C#自定义命名空间与使用自定义命名空间方法详解 #### 一、理解命名空间在C#中的作用 在C#中,命名空间(Namespace)是一种组织代码的方法,它帮助开发者避免命名冲突,使代码结构更加清晰。通过命名空间,可以...

    SystemDataLinq命名空间问题解决

    在.NET框架中,`System.Data.Linq`命名空间是LINQ to SQL技术的核心组成部分,它提供了将.NET语言集成查询(LINQ)与SQL Server数据库交互的能力。当你在代码中使用`using System.Data.Linq;`时,如果出现“命名空间...

    ( .Net常用命名空间和类介绍

    ### .Net常用命名空间和类介绍 #### 一、基础命名空间 1. **System.Collections** - **概述**:该命名空间包含了多种与集合相关的类型,如`List&lt;T&gt;`、`Queue`、`BitArray`、`Hashtable`和`Dictionary, TValue&gt;`等...

    c++ 命名空间

    ### C++ 命名空间详解 #### 一、命名空间概述 在C++中,命名空间(`namespace`)是一种用于组织标识符的方式,它能够有效地解决标识符的命名冲突问题。C++标准库中的所有标识符均被定义在一个名为`std`的命名空间...

    php命名空间小结

    通过命名空间,我们可以将相关的类、接口、函数和常量分组,类似于操作系统中的文件夹结构,使得代码更加清晰和易于维护。 一、声明命名空间 声明命名空间使用`namespace`关键字。一个命名空间可以包含类、接口、...

    dom4j 读取带有命名空间的xml文件

    在处理带有命名空间的XML文件时,DOM4J库显得尤为重要,因为XML命名空间是XML规范中一个关键的概念,用于避免元素名称的冲突。 XML命名空间的引入是为了在一个文档中使用来自不同来源的元素和属性。它们通过URI...

    C++命名空间小结

    C++命名空间理解及小结,命名空间的使用方法。

    小组学习:C#命名空间

    在C#编程语言中,命名空间(Namespace)是组织代码的一种关键方式,它允许我们将相关的类、接口和其他类型集合在一起,以便于管理和使用。在"小组学习:C#命名空间"这个主题中,我们将深入探讨命名空间的概念、作用...

    .net命名空间解释列表

    它包含了大量的类库,这些类库被组织成一系列的命名空间,便于开发者按照功能或领域进行代码的组织和引用。命名空间在.NET编程中扮演着至关重要的角色,它们提供了模块化的代码结构,避免了命名冲突,并且使得代码的...

    修改c#类的命名空间名称

    内容概要:能够批量修改c#语言,类的命名空间。可以检测文件夹下命名空间名称是否相同,不同的命名空间名称通过树状结构显示。 适合人群:多应用于合并项目、拷贝项目、修改目录结构时使用。 使用建议:建议只修改一...

    C#命名空间详解

    ### C#命名空间详解 在深入探讨C#的命名空间之前,我们首先应当明确命名空间在C#语言中的核心作用。命名空间是C#中用于组织类和其他类型的一种机制,它帮助开发人员避免命名冲突,并提供了清晰的代码结构。本文将...

    .net 命名空间总结

    ### .NET 命名空间总结 #### 一、引言 在.NET Framework或.NET Core/Standard中,命名空间(Namespace)是组织类和其他类型的一种逻辑分组方式,旨在帮助开发人员管理和避免名称冲突。本篇文章将深入探讨.NET中的...

    WebApi去除XML命名空间

    在开发WebAPI应用程序时,我们可能会遇到返回的XML数据包含有命名空间的问题。这可能导致客户端解析数据时出现困难,特别是当客户端不期望或无法处理这些命名空间时。本篇文章将详细探讨如何在VS2013及更高版本的...

Global site tag (gtag.js) - Google Analytics