求闻百科
搜索
切换搜索
切换菜单
切换个人菜单
查看“XML命名空间”的源代码
求闻百科,共笔求闻
更多语言
阅读
查看源代码
查看历史
页面
讨论
更多操作
←
XML命名空间
因为下列原因,您没有权限编辑本页。请逐条确认下列问题是否解决后再试。
您所请求的操作,仅限具有
注册用户
权限的
用户
执行。
若您尚未登录求闻百科账号,请您
登录
求闻百科账号后操作。
您尚未完成实名制验证,因此操作受限。请尽快
完成实名制验证
,或联系
裁决委员会
以
获取操作权限
。
注:若您是非中国大陆用户,您应当联络电子邮件staff
qiuwen.org以获得帮助。
您尚未完成
电子邮件确认
,因此操作受限,请尽快
完成电子邮件确认
。
若您无法完成前述手续,请参考
帮助文档
,或通过适当渠道请求管理员或裁决委员协助。
您可以查看和复制此页面的源代码。
若您无权编辑本页面,您可以
提出编辑请求
,提请有权限者代为编辑。
'''XML命名空间'''('''XML namespace''',也译作'''XML名称空间'''、'''XML名字空间''')用于在一个XML文档中提供名字唯一的元素和属性。XML命名空间在[[W3C]]推荐规范[http://www.w3.org/TR/REC-xml-names/ 《Namespaces in XML》] 中定义。XML命名空间于1999年1月14日成为W3C的推荐规范。 W3C将XML命名空间定义为以[[国际化资源标识符]]({{lang|en|Internationalized Resource Identifier}},[[IRI]])引用为标识的元素名和属性名的集合。 == 使用命名空间的动机 == 一个XML文档可能包括来自多个XML词汇表的元素或属性,如果每一个词汇表指派一个[[命名空间]],那么相同名字的元素或属性之间的名称冲突就可以解决。举一个简单的例子来说,在一个订单的XML文档中需要引用到客户和所购买的产品,'''customer'''元素和'''product'''元素可能都有一个叫做'''id'''的子元素。这时候要引用'''id'''元素会造成名称冲突,但是如果将两个'''id'''元素放到不同的命名空间中就会解决这个问题。 == 声明和引用命名空间 == 命名空间使用元素的属性来声明,比如: <pre><nowiki>xmlns:xhtml="http://www.w3.org/1999/xhtml"</nowiki></pre> 其中: * <code>xmlns</code>是使用专门用来声明命名空间的保留字, * xhtml是命名空间的前缀 * http://www.w3.org/1999/xhtml 是命名空间的唯一标识符,是一个[[国际化资源标识符|IRI]]引用,但通常是一个[[统一资源标志符]](URI)引用。 命名空间的声明就是将一个前缀与一个URI关联起来。 声明命名空间时,可以为命名空间定义前缀(见前例)。为命名空间定义前缀,而不直接使用命名空间的URI是因为URI为了唯一通常会很长,直接使用URI不但造成书写和阅读的不便,还会扰乱XML的语法。声明命名空间时,也可以不定义前缀。如: <pre><nowiki>xmlns="http://www.w3.org/1999/xhtml"</nowiki></pre> 未定义前缀的命名空间将被用作缺省的命名空间。 命名空间的URI仅仅是唯一的标识符,推荐规范不要求,也不建议通过其获取信息。XML解析器处理命名空间URI时,也仅仅将其作为字符串。例如,地址为[http://www.w3.org/1999/xhtml http://www.w3.org/1999/xhtml] 的文档并不包含任何代码,它仅仅为人类阅读者描述了[[XHTML]]命名空间。之所以采用URI(如<nowiki>"http://www.w3.org/1999/xhtml"</nowiki>)来标识命名空间是因与使用简单的字符串(如xhtml)相比,URI大大降低了命名空间重名的可能性。 XML文档中的元素名和属性名可以使用限定名或非限定名,限定名由命名空间的前缀和局部名组合而成,例如"xhtml:hr"。非限定名只有局部名,没有前缀。非限定名被认为属于缺省命名空间,如果缺省命名空间没有定义,则属于'''无命名空间'''。 在一个元素中声明的命名空间,在所有子元素中也有效,一种通常的做法是在XML文档的根元素声明所有命名空间。在子元素中声明的命名空间的前缀可以覆盖父元素中声明的前缀。W3C推荐规范Namespaces in XML 1.1允许取消命名空间的声明,如: <pre><nowiki>xmlns:xhtml=""</nowiki></pre> == 命名空间的名称 == 虽然术语'''命名空间的URI'''被广泛使用,W3C推荐规范称之为'''命名空间的名称'''。规范并未强制规定命名空间的名称必须使用URI(即当解析器发现命名空间不是一个合法的[[统一资源标志符|URI]]时应该拒绝该文档),实际上许多XML的解析器允许使用任何字符串。在推荐规范的1.1版,命名空间的名称变成了[[国际化资源标识符]](IRI),IRI允许使用非ASCII码的字符,实际上,非ASCII码字符已经被几乎所有的XML软件所接受。但是'''命名空间的URI'''一词还在持续使用,在W3C和其他地方的许多规范中也有使用。 随着命名空间推荐规范的发布,在如何处理相对的URI问题上产生了激烈的争论,一方认为相对的URI应当简单地当作字符串处理,而另一方认为应该根据文档的基准URI将其转换为绝对的URI。<ref>{{cite|title=News from the trenches|author=Leigh Dodds|date=24 May 2000|url=http://www.xml.com/pub/a/2000/05/24/deviant/index.html}}</ref>。W3C对这一争论的裁定是不赞成使用相对的URI的。<ref>{{cite|title=W3C XML Plenary decision on relative URI references in namespace declarations|author=Dan Connolly|date=11 Sep 2000}}</ref>. 命名空间的URI与HTTP协议没有任何正式的关系,然而HTTP协议形式的URL(例如''http://www.w3.org/1999/xhtml'')还是被广泛的用作命名空间的URI。规范并未说明如果这样的URL被'''解引用'''(dereference,也就是说,如果软件试图从该位置获取一个文档)会发生什么。在这个问题上存在着不同的看法,有些人认为应该在该位置放置一个 [[RDDL]]文档<ref>{{cite|author=Elliotte Rusty Harold|title=RDDL Me This: What Does a Namespace URL Locate?|date=20 Feb 2001 |url = http://www.oreillynet.com/pub/a/oreilly/xml/news/xmlnut2_0201.html}}</ref>。但是总的来说,用户应该假定命名空间的URI只是一个简单的名称,而非万维网上文档的地址。 == 命名空间宣言 == 当一个元素带有属性xmlns="",该元素的默认命名空间和它的后代将恢复为“无命名空间”:那就是在任何命名空间里头都不被视为前缀名称。 == 参考文献 == {{Reflist}} == 外部链接 == * {{en}}[http://www.w3.org/TR/REC-xml-names/ Namespaces in XML 1.0 (Second Edition)] * {{en}}[http://www.w3.org/TR/2006/REC-xml-names11-20060816/ Namespaces in XML 1.1 (Second Edition)] * [http://www.oracle.com/technetwork/cn/articles/srivastava-namespaces-098626-zhs.html XML模式:了解命名空间] * [http://www.ibm.com/developerworks/cn/xml/x-nmspace/part1/ 计划使用XML名称空间,第1部分],[http://www.ibm.com/developerworks/cn/xml/x-nmspace/part2/ 第2部分]{{dead link|date=2017年11月 |bot=InternetArchiveBot |fix-attempted=yes }} == 参见 == * [[命名空间]] * [[XML]] {{-}} {{W3C规范和标准}} [[Category:XML]]
返回
XML命名空间
。