`

XML命名空间的作用

阅读更多
XML文档可以创建自定义的元素和属性词汇来描述数据。当XML文档较为复杂或是需要从别的地方取得内容时,一个文档中有可能会需要不止一个词汇,这样就会产生名称相同而含义不同的元素出现在不同词汇中的情况。

例如,如果需要建立一个含有XHTML信息的家具目录:







在这个XML文档中,同样名为<table>的两个元素却有着完全不同的含义。

命名空间可以指明哪个元素属于哪个词汇。它可以为每个词汇指定唯一的前缀进行识别,再将该前缀应用于XML文档中的元素上:



虽然有一些惯例可以遵循,但这里选择的前缀并不理想。在上个例子中,第一个前缀cat表示的是目录项。你同样可以将之称为dog或catalog。第二个前缀xhtml表示的是文档中的XHTML元素。这是一个符合命名空间惯例的例子。

命名空间使用统一资源定位符(URI)来识别每个词汇。在上面包含XHTML内容的例子中,URI是由W3C控制的,因为它控制着XHTML标准。你也可以将cat前缀置于自己的控制之下。

值得注意的是,URI并不一定需要指向一个实际的文档或目录。对它仅有的要求就是,在XML文档中它必须是唯一的。然而很多处理程序,包括XML模式、XHTML和XSLT处理程序,都使用URI来注明它们必须处理文档的某一部分。因此,对于这些应用程序需要使用正确的URI。

在http://www.w3.org/TR/REC-xml-names/中可以找到W3C关于“XML中的命名空间(Namespaces in XML)”的推荐标准。

2.1.1  在XML文档中加入命名空间

为了引用一个命名空间,可以将其以属性的形式加入任何包含了属于该命名空间中元素的节点中。命名空间经常加在文档元素中,因为它包含了所有其他的元素。在上面的XML文档中,最开始的元素可改写为如下形式:



这决定了命名空间cat指向URI http://www.apress.com/ns/furniture。命名空间cat可置于任何元素名字前,并以冒号分开:



2.1.2  添加默认命名空间

一个XML文档的大部分通常都属于一个XML词汇。在这种情况下,可以定义一个默认的命名空间,而不是为每个元素重复地添加命名空间前缀。可以使用xmlns关键字来定义默认的命名空间。这样,就不用为默认命名空间内的元素指定前缀了。

例如,可以将catalog指定为默认命名空间:



现在这是默认的命名空间了,因而就不必再在此命名空间内的元素名前加上前缀了。

可以在文档中的任何位置声明默认命名空间。被声明的默认命名空间适用于包含了声明的元素及其所有子元素,而且会覆盖此前所做的声明。

下面的XML文档演示了如何使用多个默认命名空间:





默认的catalog命名空间适用于除了包含于第二个<table>元素内的所有元素。因为加入了命名空间声明,下面元素默认的就是XHTML命名空间:





关于命名空间的最后一点是关于它们使用的属性。默认情况下,属性与它包含的元素属于同一个命名空间中。除非你使用的是不同于其包含元素的其他命名空间中定义的属性,否则就不必进行验证。

在关于如何使用DTD和XML模式定义XML词汇的内容中,将会进一步说明命名空间的重要性。

分享到:
评论

相关推荐

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

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

    WebApi去除XML命名空间

    首先,我们需要了解XML命名空间的作用。XML命名空间是一种用于解决XML文档中元素和属性名称冲突的方法。它们通过使用URI(统一资源标识符)作为唯一标识,为元素和属性提供上下文。然而,在某些情况下,我们可能希望...

    XML的命名空间

    XML的命名空间

    python xml命名空间

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

    WCF 返回XML去除默认命名空间实例Demo

    当WCF服务返回XML时,它会默认添加一个命名空间,以确保数据的唯一性和可识别性。然而,在某些情况下,我们可能希望去除这些默认命名空间,以简化处理或满足特定需求。 **去除默认命名空间** 的主要目的是减少XML的...

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

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

    xml命名空间

    xml命名空间讲解,很详细,很不错的讲义,希望对大家有帮助

    XML 命名空间(XML Namespaces).pdf

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

    winform 使用XML命名空间源码

    在WinForm应用中,我们可以利用XML命名空间来处理XML文件,实现数据的读取、写入和解析。本资源包含的源码展示了如何在WinForm程序中有效地使用XML命名空间。 XML命名空间用于避免XML元素名称的冲突,它通过URI...

    services.xml加命名空间

    services.xml加命名空间services.xml加命名空间

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

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

    简单了解XML中的命名空间

    XML命名空间是一个用于区分具有相同名称的元素和属性的作用域概念,它通过使用URI(统一资源标识符)来唯一地标识这些名称。命名空间的使用,使得在同一个XML文档中可以包含来自不同源的数据,而不会出现名称冲突的...

    xml的命名空间.md

    xml的命名空间.md

    C# 读取 带 xmlns 命名空间 XML 结点 SelectSingleNode 类 For .NET Framework 1.1x

    C# 读取 带 xmlns 命名空间 XML 结点 SelectSingleNode 类 For .NET Framework 1.1x AutoPrefix(System.Xml.XmlNode xNode, System.Xml.XmlNamespaceManager xNameSpaceManager) AutoXPath(System.Xml.XmlNode ...

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

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

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

    WCF返回xml格式数据时去除命名空间(比如xmlns="http://schemas.datacontract.org/2004/07/XmlRemoveNamespaceWcfService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance")

    Axis2 SOAP XML报文节点首字母小写转大写,节点命名空间前缀添加与剔除(JAVA)

    在处理SOAP XML报文时,我们可能遇到一些规范性问题,例如节点首字母大小写的转换,以及节点命名空间前缀的添加与剔除。本文将深入探讨这些问题,并提供相应的解决方案。 首先,关于SOAP XML报文中的节点首字母大小...

    C#操作查询读写有命名空间的XML经典例子

    用C#写的自认为很经典的操作XML的例子,附代码和XML文件。包含查询,修改的几种方法,还包括查询有命名空间的XML节点的内容。包里的XML文件要复制到C:\TEMP目录下,或者自己在程序里改路径要不找不到XML文件。

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

    XML命名空间通常以URI(Uniform Resource Identifier)的形式表示,它为XML元素提供了一种唯一标识的方式。在XML文档中,使用`xmlns`属性定义命名空间,例如`xmlns="http://www.w3.org/1999/xhtml"`。当查询这些带有...

Global site tag (gtag.js) - Google Analytics