`

XML 命名空间(XML Namespaces)

阅读更多

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

命名冲突

在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。

这个 XML 文档携带着某个表格中的信息:

<table>

   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>
</table>

这个 XML 文档携带有关桌子的信息(一件家具):

<table>

   <name>African Coffee Table</name>
   <width>80</width>
   <length>120</length>
</table>

假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。

XML 解析器无法确定如何处理这类冲突。

使用前缀来避免命名冲突

此文档带有某个表格中的信息:

<h:table>

   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>
</h:table>

此 XML 文档携带着有关一件家具的信息:

<f:table>

   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>

现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的 <table> 元素 (<h:table> 和 <f:table>)。

通过使用前缀,我们创建了两种不同类型的 <table> 元素。

使用命名空间(Namespaces)

这个 XML 文档携带着某个表格中的信息:

<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 文档携带着有关一件家具的信息:

<f:table xmlns:f="http://www.w3school.com.cn/furniture"
>
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>

与仅仅使用前缀不同,我们为 <table> 标签添加了一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。

XML Namespace (xmlns) 属性

XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:

xmlns:namespace-prefix="namespaceURI"

当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

注释: 用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。

请访问 http://www.w3.org/TR/html4/

统一资源标识符(Uniform Resource Identifier (URI))

统一资源标识符 是一串可以标识因特网资源的字符。最常用的 URI 是用来标示因特网域名地址的统一资源定位器(URL) 。另一个不那么常用的 URI 是统一资源命名(URN) 。在我们的例子中,我们仅使用 URL。

默认的命名空间(Default Namespaces)

为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。

请使用下面的语法:

xmlns="namespaceURI"

这个 XML 文档携带着某个表格中的信息:

<table xmlns="http://www.w3.org/TR/html4/"
>
   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>
</table>

此 XML 文档携带着有关一件家具的信息:

<table xmlns="http://www.w3school.com.cn/furniture"
>
   <name>African Coffee Table</name>
   <width>80</width>
   <length>120</length>
</table>

命名空间的实际应用

当开始使用 XSL 时,您不久就会看到实际使用中的命名空间。XSL 样式表用于将 XML 文档转换为其他格式,比如 HTML。

如果您仔细观察下面的这个 XSL 文档,就会看到大多数的标签是HTML标签。非 HTML 的标签都有前缀 xsl,并由此命名空间标示:"http://www.w3.org/1999/XSL/Transform":

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

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

<xsl:template match="/">
<html>
<body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr>
      <th align="left">Title</th>
      <th align="left">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>
分享到:
评论

相关推荐

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

    XML命名空间是为了避免元素名称冲突而引入的概念,它为XML文档中的元素提供了唯一的标识。然而,在某些场景下,例如与JavaScript或简单的数据解析应用集成时,我们可能希望去掉这些命名空间以简化处理。 要实现这个...

    XML 命名空间(XML Namespaces).pdf

    XML命名空间的引入正是为了解决这种命名冲突问题。它通过给元素和属性名称附加命名空间的方式,区分不同来源的同名元素,从而能够在一个XML文档中混合使用多个不同的XML文档片段。 命名空间的基本语法是在XML元素的...

    python xml命名空间

    ### Python XML命名空间详解 在处理XML文档时,命名空间(Namespace)的使用十分常见,尤其是在需要合并多个来源的数据或确保元素唯一性的情况下。本文将详细介绍Python中如何处理XML命名空间,包括理解命名空间的...

    带命名空间的XML增删改查操作实例

    首先,理解XML命名空间的基本概念。命名空间通过一个URI(Uniform Resource Identifier)来唯一标识,通常以`xmlns:`前缀定义。例如,`xmlns:ns="http://example.com/ns"`声明了一个名为`ns`的命名空间,指向`...

    xml内容解析,包含命名空间时需特殊处理(dom4j)

    首先,我们需要理解XML命名空间的基本概念。命名空间通过使用一个URI(Uniform Resource Identifier)来唯一标识一组元素和属性。它们通常以`xmlns:`前缀形式出现,例如`xmlns:ns="http://example.com/ns"`。在XML文...

    Python利用命名空间解析XML文档

    通过创建辅助类如`XMLNamespaces`,可以简化对XML命名空间的查询和操作。同时,使用`iterparse()`函数可以获取更多关于命名空间和其他XML事件的信息,提高处理XML文档的灵活性。在实际工作中,掌握这些技巧对于有效...

    Namespaces

    5. **局部命名空间**:可以在XML文档的任意节点上声明新的命名空间,这称为局部命名空间,使得子节点可以使用不同的Namespaces。 **Namespaces与属性** 除了与元素关联,Namespaces还可以应用于属性。属性的命名...

    第2章 XML名称空间

    为了避免混淆,W3C引入了XML名称空间(XML Namespaces)这一推荐标准,它允许通过结合URI(统一资源标识符)和可选的前缀来区分同名元素。 名称空间的声明有两种形式。第一种是带有前缀的形式,如 `&lt;元素名 xmlns:...

    struts2中命名空间的使用

    - [Struts2命名空间详解](https://struts.apache.org/core-developers/namespaces.html) 通过上述介绍和示例,我们可以看到Struts2中命名空间的配置和使用并不复杂,但合理的设计对于大型项目的成功至关重要。

    XML-Parser-2.4.4 官方源码

    4. **命名空间(Namespaces)支持**:XML允许定义命名空间来避免命名冲突,XML-Parser-2.4.4应该包含了处理命名空间的逻辑,包括解析命名空间声明和解析带有命名空间的元素。 5. **错误处理**:解析过程中可能出现...

    XML的示例放心下载

    6. **命名空间(Namespaces)**:XML命名空间用于区分具有相同标签名的不同来源的数据。例如: ```xml &lt;ns:element xmlns:ns="http://example.com/ns"&gt;... ``` 7. **注释(Comments)**:XML支持注释,以`&lt;!--`开始...

    net命名空间预览

    `System.Xml.Linq`命名空间则引入了LINQ to XML,允许开发者使用类似SQL的语法来处理XML文档。 除了这些核心命名空间,`.NET`还提供了一系列的扩展库,如`System.Data.SqlClient`,用于与SQL Server数据库进行交互...

    《XML技术》测验题(含答案)

    XML命名空间允许在同一个文档中使用来自不同来源的元素和属性,通过使用URI(Uniform Resource Identifier)来区分它们。 XML解析: 解析XML有DOM(Document Object Model)和SAX(Simple API for XML)两种主要...

    XML高级应用 由浅入深,是一个非常好的学习教材

    接下来,我们将深入探讨XML命名空间(Namespaces)。命名空间允许在XML文档中使用相同的元素名称,而不会造成冲突。通过使用前缀(如 xmlns:prefix="namespaceURI"),我们可以将元素与特定的命名空间关联,确保数据...

    xml教程,入门训练

    五、XML命名空间(Namespaces) 在处理多个XML文档或库时,可能会出现元素名称冲突的情况。通过使用命名空间,我们可以给元素添加独特的前缀来避免这种冲突。例如: ```xml &lt;myBooks:title&gt;XML入门教程 ``` 这里...

    XML.rar_c xml_xml_修改XML

    1. XML命名空间(Namespaces):当多个来源的数据混合在一起时,为了避免元素名冲突,可以使用命名空间。 2. DTD(Document Type Definition)或XSD(XML Schema Definition):它们用于定义XML文档的结构和数据类型...

    xml学习手册 xml学习资料

    理解命名空间(Namespaces)是XML学习的关键,它解决了在同一个文档中使用相同标签名但含义不同的问题。通过使用命名空间,不同的开发者或应用可以共享相同的标签而不产生冲突,例如 `xmlns=...

    xml高级编程3(主页可下载其他部分)

    其次,我们要讨论的是XML命名空间(XML Namespaces)。在处理多个XML文档或库时,可能会出现元素和属性名的冲突。XML命名空间提供了一种解决这种冲突的方法,通过为元素和属性分配独特的命名空间URI,确保了元素的...

Global site tag (gtag.js) - Google Analytics