XML命名空间

XML命名空间XML namespace,也译作XML名称空间XML名字空间)用于在一个XML文档中提供名字唯一的元素和属性。XML命名空间在W3C推荐规范《Namespaces in XML》 (页面存档备份,存于互联网档案馆)中定义。XML命名空间于1999年1月14日成为W3C的推荐规范。

W3C将XML命名空间定义为以国际化资源标识符(Internationalized Resource Identifier,IRI)引用为标识的元素名和属性名的集合。

使用命名空间的动机

一个XML文档可能包括来自多个XML词汇表的元素或属性,如果每一个词汇表指派一个命名空间,那么相同名字的元素或属性之间的名称冲突就可以解决。举一个简单的例子来说,在一个订单的XML文档中需要引用到客户和所购买的产品,customer元素和product元素可能都有一个叫做id的子元素。这时候要引用id元素会造成名称冲突,但是如果将两个id元素放到不同的命名空间中就会解决这个问题。

声明和引用命名空间

命名空间使用元素的属性来声明,比如:

xmlns:xhtml="http://www.w3.org/1999/xhtml"

其中:

  • xmlns是使用专门用来声明命名空间的保留字,
  • xhtml是命名空间的前缀
  • http://www.w3.org/1999/xhtml (页面存档备份,存于互联网档案馆) 是命名空间的唯一标识符,是一个IRI引用,但通常是一个统一资源标志符(URI)引用。

命名空间的声明就是将一个前缀与一个URI关联起来。

声明命名空间时,可以为命名空间定义前缀(见前例)。为命名空间定义前缀,而不直接使用命名空间的URI是因为URI为了唯一通常会很长,直接使用URI不但造成书写和阅读的不便,还会扰乱XML的语法。声明命名空间时,也可以不定义前缀。如:

xmlns="http://www.w3.org/1999/xhtml"

未定义前缀的命名空间將被用作缺省的命名空间。

命名空间的URI仅仅是唯一的标识符,推荐规范不要求,也不建议通过其获取信息。XML解析器处理命名空间URI时,也仅仅将其作为字符串。例如,地址为http://www.w3.org/1999/xhtml (页面存档备份,存于互联网档案馆) 的文档并不包含任何代码,它仅仅为人类阅读者描述了XHTML命名空间。之所以采用URI(如"http://www.w3.org/1999/xhtml")来标识命名空间是因与使用简单的字符串(如xhtml)相比,URI大大降低了命名空间重名的可能性。

XML文档中的元素名和属性名可以使用限定名或非限定名,限定名由命名空间的前缀和局部名组合而成,例如"xhtml:hr"。非限定名只有局部名,没有前缀。非限定名被认为属于缺省命名空间,如果缺省命名空间没有定义,则属于无命名空间

在一个元素中声明的命名空间,在所有子元素中也有效,一种通常的做法是在XML文档的根元素声明所有命名空间。在子元素中声明的命名空间的前缀可以覆盖父元素中声明的前缀。W3C推荐规范Namespaces in XML 1.1允许取消命名空间的声明,如:

xmlns:xhtml=""

命名空间的名称

虽然术语命名空间的URI被广泛使用,W3C推荐规范称之为命名空间的名称。规范并未强制规定命名空间的名称必须使用URI(即当解析器发现命名空间不是一个合法的URI时应该拒绝该文档),实际上许多XML的解析器允许使用任何字符串。在推荐规范的1.1版,命名空间的名称变成了国际化资源标识符(IRI),IRI允许使用非ASCII码的字符,实际上,非ASCII码字符已经被几乎所有的XML软件所接受。但是命名空间的URI一词还在持续使用,在W3C和其他地方的许多规范中也有使用。

随着命名空间推荐规范的发布,在如何处理相对的URI问题上产生了激烈的争论,一方认为相对的URI应当简单地当作字符串处理,而另一方认为应该根据文档的基准URI将其转换为绝对的URI。[1]。W3C对这一争论的裁定是不赞成使用相对的URI的。[2].

命名空间的URI与HTTP协议没有任何正式的关系,然而HTTP协议形式的URL(例如http://www.w3.org/1999/xhtml)还是被广泛的用作命名空间的URI。规范并未说明如果这样的URL被解引用(dereference,也就是说,如果软件试图从该位置获取一个文档)会发生什么。在这个问题上存在着不同的看法,有些人认为应该在该位置放置一个 (页面存档备份,存于互联网档案馆)RDDL文档[3]。但是总的来说,用户应该假定命名空间的URI只是一个简单的名称,而非万维网上文档的地址。

命名空间宣言

当一个元素带有属性xmlns="",该元素的默认命名空间和它的后代将恢复为“无命名空间”:那就是在任何命名空间里头都不被视为前缀名称。

参考文献

  1. ^ Leigh Dodds, News from the trenches, 24 May 2000 [2009-11-12], (原始内容存档于2021-06-14) 
  2. ^ Dan Connolly, W3C XML Plenary decision on relative URI references in namespace declarations, 11 Sep 2000 
  3. ^ Elliotte Rusty Harold, RDDL Me This: What Does a Namespace URL Locate?, 20 Feb 2001 [2009-11-12], (原始内容存档于2014-06-20) 

外部链接

  • (英文)Namespaces in XML 1.0 (Second Edition) (页面存档备份,存于互联网档案馆
  • (英文)Namespaces in XML 1.1 (Second Edition) (页面存档备份,存于互联网档案馆
  • XML模式:了解命名空间 (页面存档备份,存于互联网档案馆
  • 计划使用XML名称空间,第1部分 (页面存档备份,存于互联网档案馆),第2部分[永久失效連結]

参见

產品及
標準
推薦
  • ActivityPub
  • Activity Streams英语Activity Streams (format)
  • ARIA英语WAI-ARIA
  • Canonical XML
  • CDF英语Compound Document Format
  • 階層式樣式表
  • 文档对象模型
  • 地理位置API英语W3C Geolocation API
  • HTML
  • Indexed Database API
  • ITS英语Internationalization Tag Set
  • JSON-LD英语JSON-LD
  • Linked Data Notifications英语Linked Data Notifications
  • MathML
  • Micropub英语Micropub (protocol)
  • OWL
  • P3P
  • PLS英语Pronunciation Lexicon Specification
  • RDF
    • RDF Schema英语RDF Schema
  • 語音識別的語義解釋英语Semantic Interpretation for Speech Recognition
  • SISR英语Semantic Interpretation for Speech Recognition
  • SKOS
  • SMIL
  • SOAP
  • SRGS英语Speech Recognition Grammar Specification
  • SRI英语Subresource Integrity
  • SSML
  • 可縮放向量圖形
    • SVG 濾鏡英语SVG filter effects
  • SCXML英语SCXML
  • SHACL英语SHACL
  • SPARQL
  • Timed text
  • VoiceXML
  • WoT英语Web of Things
    • TD英语Thing Description
  • 网页存储
  • WSDL
  • XForms
  • XHTML
    • XHTML+RDFa英语XHTML+RDFa
  • XInclude英语XInclude
  • XLink
  • 可扩展标记语言
记录
  • IndieAuth英语IndieAuth
  • XAdES英语XAdES
  • XHTML+SMIL英语XHTML+SMIL
  • XUP
工作草案
  • CCXML英语Call Control eXtensible Markup Language
  • CURIE英语CURIE
  • EME
  • InkML
  • JSON-LD
  • MSE
  • RIF
  • SCXML英语SCXML
  • SMIL時間表英语SMIL Timesheets
  • sXBL英语sXBL
  • WICD英语Web Integration Compound Document
  • XFDL英语Extensible Forms Description Language
  • XFrames英语XFrames
  • XBL
  • XMLHttpRequest
檢測
倡議
  • 多通道交互活動(MMI)英语W3C MMI
  • 驗証服務
  • 無障礙網頁倡議英语Web Accessibility Initiative
  • 網絡平台英语WebPlatform
棄用
  • C-HTML
  • HDML英语Handheld Device Markup Language
  • JSSS英语JavaScript Style Sheets
  • PGML英语Precision Graphics Markup Language
  • VML
  • XHTML+MathML+SVG英语XHTML+MathML+SVG
機構
  • 萬維網基金會英语World Wide Web Foundation
工作小組
  • SVG英语SVG Working Group
  • CSS英语CSS Working Group
  • HTML英语HTML Working Group
  • WebOnt(語義網活動)英语WebOnt
  • 設備描述(DDWG)英语W3C Device Description Working Group
  • 網頁超文本技術工作小組(WHATWG)
軟件
瀏覽器
  • Line Mode (1990年-)
  • Arena (1993年-1998年)
  • Agora (1994年-1997年)英语Agora (web browser)
  • Argo (1994年-1997年)英语Argo (web browser)
  • Amaya (瀏覽器及編輯器,1996年-2012年)
會議
  • 國際萬維網大會(WWW大會)英语International World Wide Web Conference
    • 督導委員會(IW3C2)英语International World Wide Web Conferences Steering Committee
    • 第一屆(WWW1,1994年)英语First International Conference on the World-Wide Web