[43] [[XML名前空間]]における[DFN[[RUBYB[名前空間名]@en[namespace name]]]]は、
[[名前空間]]を識別する[[文字列]]です。[[名前空間名]]は[[絶対URL参照]]であることから、
[DFN[[RUBYB[[[名前空間URL]]]@en[namespace URL]]]]、
[DFN[[RUBYB[[[名前空間URI]]]@en[namespace URI]]]]、
[DFN[[RUBYB[[[名前空間IRI]]]@en[namespace IRI]]]]とも呼ばれます。

* 仕様書

-[7] [[XML名前空間]]
-- <http://www.w3.org/TR/xml-names#dt-NSName>
-- [[XML名前空間 1.0]] 第1版正誤表
<http://www.w3.org/XML/xml-names-19990114-errata#NE12>
-- [CSECTION@en[2.2 Use of IRIs as Namespace Names]]
<http://www.w3.org/TR/xml-names#iri-use>
-- [CSECTION@en[2.3 Comparing IRI References]]
<http://www.w3.org/TR/xml-names#IRIComparison>

;; [47] [[XML名前空間 1.0]] 第1版から [[XML名前空間 1.1]] 第1版の間で仕様書の構成や定義の仕方が大きく変わっています。
[[XML名前空間 1.0]] 第2版は [[XML名前空間 1.1]] ベースの仕様書となっています。

* 呼称

[59] [[XML名前空間]]仕様では「[[名前空間名]]」と呼んでいますが、
それ以外のほとんどの仕様では「[[名前空間URI]]」などの [[URI]] であることを強調した名称を使っています。
[[DOM]] でも[[属性]]の名前が [CODE(DOMa)@en[[[namespaceURI]]]] となっています。
[[URI]] の呼称のバリエーションにより、「[[名前空間IRI]]」や「[[名前空間URL]]」
とも呼ばれます。

* 定義

** XML 名前空間 1.0 第1版世代における定義

[1]

> [定義:] [INS[[[名前空間属性]]の[SRC[引用者による追記]]]][[属性]]の[INS[正規化[SRC[正誤表による追記]]]][[値]]は、
[[URI参照]]で、[[名前空間]]を[[識別]]する[DFN[[RUBY[名前空間名] [なまえくうかんめい] @en[namespace name]]]]です。
名前空間名は、その目的の達成のため、[[固有性]]と[[持続性]]を有するべきです。
[[スキーマ]]の[[取出し]] (存在するとして。)
に直接利用可能であることは目標とはしていません。
この目標を踏まえて設計された構文の例に[[統一資源名]]
[SRC@en[[[RFC 2141]]]] があります。しかし、普通の [[URL]]
も同じ目標を達成するために使えることに注意して下さい。
[SRC[[[XML名前空間 1.0]] 第1版]]

** XML 名前空間 1.1 世代における定義

[8]

> [定義: [[IRI]] [VAR@en[I]]で[[識別]]される[[名前]][VAR@en[N]]について、
[DFN[[RUBY[[[名前空間名]]] [なまえくうかんめい] @en[namespace name]]]]は[VAR@en[I]]です。
[[名前空間]]に属さない[[名前]][VAR@en[N]]について、
[DFN[[RUBY[[[名前空間名]]] [なまえくうかんめい] @en[namespace name]]]]は[[無値]]です。]
[SRC[[[XML名前空間 1.1]] 第1版]]

;; [42] [[XML名前空間 1.0]] 第2版では >>8 の「[[IRI]]」を「[[URI]]」
に置き換えた定義になっています。

** XDM における定義

[41] 
> This document uses the phrase "namespace URI" to identify the concept identified in [Namespaces in XML] as "namespace name", and the phrase "local name" to identify the concept identified in [Namespaces in XML] as "local part".

;; [40] [CITE@EN[XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)]] ([TIME[2010-12-17 00:06:54 +09:00]] 版) <http://www.w3.org/TR/2010/REC-xpath-functions-20101214/#namespace-terminology>

* 意味

** 名前空間 URL の割り当てと管理

[35] [[名前空間URL]] の決め方や割り当てポリシーについての議論は、
[[XML名前空間の管理]]を参照してください。

** 名前空間 URL とスキーマ

@@ ・・・

[23] [[カメレオン名前空間]]も参照。

** 名前空間 URL と版付け

[69] [[名前空間URL]]は[[版付け]]のために用いられています。
そもそも[[XML名前空間]]の用途の1つが[[版付け]]でもあるようです。

@@ ・・・

[35]
[CITE[SMIL Namespace Documentation - Anne’s Weblog about Markup & Style]] <http://annevankesteren.nl/2006/03/smil>
([[名無しさん]] [WEAK[2006-03-18 01:40:47 +00:00]])

;; [22] [[SMIL]] も参照。

[38]
In Adobe AIR documents, namespace URIs are used to identify the required (minimum) version of AIR runtime for the application.

** 展開名の一部としての名前空間URL

[24] [[RDF/XML]] では、[[名前空間URL]]と[[局所名]]を連結した[[展開URL]]を使っています。
[[名前空間URL]]自体には然程の意味はありません。

;; [[展開URL]]参照。

* 構文

** 空文字列

[10]
[[空文字列]]も[[URI参照]]あるいは[[IRI参照]]としては[[合法]]ですが、
[[名前空間名]]として使うことはできません。
[SRC[1.1 2.2]]

** 相対参照

[11]
[[相対参照]]を[[名前空間名]]で使用するのは[[非推奨]]です。
[SRC[1.1 2.2]]

[58] [CITE[W3C XML Plenary Ballot on URIs and Namespaces]] ([TIME[2000-09-23 21:16:54 +09:00]] 版) <http://www.w3.org/2000/09/xppa>

[70] [CITE@en[W3C XML Plenary Decision on relative URI References In namespace declarations]], [[Dan Connolly]], [TIME[2000-09-12 05:12:26 +09:00]], [TIME[2020-01-17T23:14:01.000Z]], [TIME[2021-04-21T03:10:19.460Z]] <https://lists.w3.org/Archives/Public/xml-uri/2000Sep/0083.html>

[74] 
[[国立国会図書館]]の [[OCR]] データ集合の [[XML]] データファイル形式が

>
[PRE(XML code)[
<OCRDATASET xmlns="NDLOCRDATASET">
]PRE]

のような[[名前空間名]]を使っています。この[[文書型]]は本家の他に[[近代雑誌OCR学習用データセット]]も使っています。


** 素片識別子

[73] 
[CITE[XML名前空間]]としては[[素片識別子]]の使用を認めていました。
実際多くの[[XML名前空間]]が[[名前空間URL]]に[[素片識別子]]を使っていました。

[72] 
[[PIDF]]
は、
[[名前空間URL]]
を
[[RFC 2396]] [CODE[absolute-URI]]
に制限していました。
[[素片識別子]]が認められません。
[SRC[>>71]]

[REFS[
- [71] [CITE@en[rfc3863]], [TIME[2021-06-10T01:41:09.000Z]] <https://datatracker.ietf.org/doc/html/rfc3863#section-4.2.2>
]REFS]


* 比較

[12]
[[名前空間名]]は、([[属性値]]として出現した場合)
[[参照]]を[[展開]]して[[空白]]を処理した[[正規化値]]ですが、
これを[[文字列]]として[[比較]]して[[一致]]すれば、
[[名前空間名]]として[[一致]]したとみなします。
[SRC[1.1 2.3]]

** 大文字と小文字

[33]

> [[Universal Feed Parser]] treats namespaces as case-insensitive to match the behavior of certain versions of [[iTunes]].

;; [CITE[Namespace Handling [Universal Feed Parser]]] 
<http://feedparser.org/docs/namespace-handling.html#id4756535>

これが[[誤方互換性]]ってやつかW

* 展開名

[14] [[XML名前空間]]本体仕様ではそうは規定されていませんが、
幾つかの仕様では[[修飾名]]が1つの
[[URI]] に展開できるとしています。

[EG[
[15] [[RDF/XML]] や [[WebDAV]]
では、
[SAMP(XML)[<del:glider xmlns:del="http://www.del.jensen.org/"/>]]
と
[SAMP(XML)[<foo:r xmlns:foo="http://www.del.jensen.org/glide"/>]]
は同等です。
]EG]

[SEE[ [[展開URL]] ]]

* XML 以外での名前空間 URL

[62] [[RDF]] では広く[[名前空間URL]]が使われていますが、 [[XML]] のように名前が所属する空間としてではなく、
>>14 の通り [[URL]] の略記法として使われています。

[18] [[RDF/XML]] や [[RDFa]] のような [[RDF]] が [[XML]] で使われる場面では、
両者の[[名前空間]]の仕組みが複雑に組み合わさっています。

;; 詳細はそれぞれの項を参照。

;; [19] そもそも現在の [[XML名前空間]]が複雑な仕組みになったのは、 [[RDF]]
関係者からの要望 (や [[TimBL]] からの圧力) によるものと言われています。

[17] [[CSS]] や[[選択子]]にも[[名前空間]]がありますが、 [[XML文書]]の[[名前空間]]を
[[CSS]] から参照するための仕組みとなっています。概念的には [[XML名前空間]]と同様のものですが、
実際にはやや広範囲を扱える仕組みになっています。 

;; [[CSS名前空間]]を参照。

[21] ただし [[XML]] のために不必要に [[CSS]] を複雑化させた仕組みとみなされており、
比較的新しく導入された [CODE(DOMm)@en[[[querySelector]]]] などでは[[名前空間]]への対応を意図的に除外しています。

[63] [[RFC 2774]] は [[HTTP]] の[[ヘッダー]]の識別に[[名前空間URL]]を導入するものでしたが、支持を集められませんでした。

[65] [[CPIM]] は[[ヘッダー]]の識別に[[名前空間URL]]を使っています。  (>>63 の構文とは異なっています。)
しかし [[CPIM]] 自体が使われていません。

[64] [[DOM水準3事象]]は当初[[イベント名]]の識別に[[名前空間URL]]を導入しようと試みていましたが、
支持を集められず撤回されました。

[20] [[Dublin Core]] [CODE(HTML)@en[[[schema.*]]]] や
[CODE(HTML)@en[<[[head]] [[profile]]>]] や [[rel-profile]]
を使って[[名前空間]]を [[HTML]] の [CODE(HTMLe)@en[[[meta]]]] [[要素]]に持ち込むことが度々提案されていましたが、
ことごとく支持を集められずにいます。

* 名前空間としての URL

[39] [[XML名前空間]]では [[URL]] を[[名前空間]]の[[識別]]に使っていますが、
その妥当性については議論があります。

[37]
[CITE[XML.com: XML Namespaces Don't Need URIs]] ([[Michael Day]] 著, [CODE[2007-05-19 17:33:00 +09:00]] 版) <http://www.xml.com/pub/a/2005/04/13/namespace-uris.html>

* [CODE(DOMa)@en[namespaceURI]] (DOM Node 界面)

[44] [[DOM 2]] 読取専用属性 
[CODE[[VAR(DOMi)[Node]].[CODE(DOMa)[namespaceURI]]]]
は、その節の[[名前空間名]] ([[URI]]) の値です。

[45] 節が要素節でも属性節でも無い場合、又は [[DOM 1]] method
で作成された節である場合には、 [CODE(DOM)[null]]
になります。
また、名前空間に属さない場合にも [CODE(DOM)[null]]
になります。

[46] DOM の object になった節の名前空間の情報はその節が持っていることに注意して下さい。
[CODE(DOMa)[namespaceURI]] や [CODE(DOMa)[[[prefix]]]]
の値は、その節またはその祖先節の [CODE(XML)[[[xmlns]]]]
系属性 (に対応する節) を編集しても''変化しません''。

[WEAK[(しかも、 DOM には名前空間情報を編集する方法がないので、一度生成された節の名前空間情報は二度と変わりません。)]]

- [DOM2] ''Document Object Model Core'' <http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-NodeNSname>

* [CODE(InfoProp)[名前空間名]] (XML 情報集合)

[48] [[XML情報集合]]では、[[要素情報項目]]、[[属性情報項目]]、[[名前空間情報項目]]で[[特性]][DFN[[CODE(InfoProp)[[RUBYB[[[名前空間名]]]@en[namespace name]]]]]]が定義されています。

** 仕様書

- [49] [CITE@en[XML Information Set (Second Edition)]]
-- [50] [CSECTION@en[Namespaces]] <http://www.w3.org/TR/xml-infoset/#intro.namespaces>
-- [51] [CSECTION@en[2.2. Element Information Items]] <http://www.w3.org/TR/xml-infoset/#infoitem.element>
-- [52] [CSECTION@en[2.3. Attribute Information Items]] <http://www.w3.org/TR/xml-infoset/#infoitem.attribute>
-- [53] [CSECTION@en[2.11. Namespace Information Items]] <http://www.w3.org/TR/xml-infoset/#infoitem.namespace>

** 特性値

[54] [[要素情報項目]]と[[属性情報項目]]では、この[[特性]]の値は、
その[[要素]]や[[属性]]の属する[[名前空間]]があればその[[名前空間名]]、
なければ[RUBYB[[[無値]]]@en[no value]]です [SRC[>>51, 52]]。

[55] [[名前空間情報項目]]では、この[[特性]]の値は、
その[[名前空間接頭辞]]が[[束縛]]されている[[名前空間名]]です [SRC[>>53]]。

[56] これらは対応する[[名前空間属性]]の[[正規化値]]そのものであり、
追加の[[百分率符号化]]などは行っていない元のままものです [SRC[>>50]]。

;; [57] これはつまり、構文的に [[URI]] や [[IRI]] であろうがなかろうが関係ないということですね。
ただし、 >>50 によれば[[相対URL]]を使った[[名前空間名]]を持つ[[文書]]の[[XML情報集合]]は定義されておらず、
仕様の対象外ということになります。

* メモ

- [2] 仕様書には言及がありませんが、[[相対URI]]を名前空間名とすることは非推奨であると正誤表 <http://www.w3.org/XML/xml-names-19990114-errata#NE04> は述べています。
- [3] 仕様書の[[同等]]の解説や [[XMLBase]] の仕様書の言及から推測すると、名前空間名が相対 URI である場合はその要素の[[基底URI]] ([[外部実体]]ならその URI, [[xml]]:[[base]] 属性があればそれも参照する。) を使って解決するのが良いみたいです。 (もちろん errata が述べているように、現時点では [[W3C]] はどうとも規定していませんし非推奨です。 XML Base も解釈例を述べているに過ぎません。)
- [4] 特に、空文字列 (当該文書自身 (または基底) の [[URI]] を指す。) については errata <http://www.w3.org/XML/xml-names-19990114-errata#NE09> で使用できないことが補記されています。空文字列は接頭辞無しに対して ([[xmlns]] 属性の値で) は[[既定名前空間]]であることを示します。接頭辞ありに対しては使用できません。
- [5] >>4 第1.1版では、接頭辞ありでも空に出来るようになりました ([SAMP(XML)[xmlns:foo=""]])。この場合、名前空間の宣言を取り消したことになります。(この例の場合、先祖要素で[[宣言]]した [SAMP(XML)[foo]] という接頭辞が、この要素以下では使えなくなります。) (<http://www.w3.org/TR/xml-names11/#scoping>)
- [6] ''W3C XML Plenary Ballot on URIs and Namespaces'' <http://www.w3.org/2000/09/xppa>: 相対 URI 名前空間名の取り扱いについての議事。結局非推奨とし、 [[XML情報集合]]などでも未定義となっている。

[9]
[[DOM 2]] では、 DOM 実装は名前空間名を単なる文字列として扱い、中身には介入しないから、空文字列さえ名前空間名として普通に扱うようなことが書いてありましたが、 errata で、空文字列は好きにしろ的に改められています。
([[名無しさん]])

[13]
[CITE[Re: Namespaces in XML 1.x test suite contribution from Richard Tobin on 2005-12-19 (xml-names-editor@w3.org from December 2005)]] <http://lists.w3.org/Archives/Public/xml-names-editor/2005Dec/0002.html>

[34] [[CC/PP]] では、

> All CC/PP attributes must be associated with a fully resolvable namespace identifier URI. (Relative URIs, or URIs whose interpretation may depend on the context in which they are used, should not be used.)

([Q[すべての CC/PP 属性は完全に解決可能な名前空間識別子 URI と関連付けられていなければなりません。 (相対 URI は解釈が使用された文脈に依存する URI は使用するべきではありません。)]])

とされています。ここでの[Q[完全に解決可能]]がどういう意味なのか
(括弧内の意味なのか?) はよくわかりませんが・・・。
文脈依存するべきではないというのは [CODE(URI)[[[file]]:]]
URI scheme や [[XPointer]] の [CODE(XPointerScheme)[[[xmlns-local]]]]
scheme のようなもののことを言っているのでしょう。

[CITE[Composite Capability/Preference Profiles (CC/PP): Structure and Vocabularies 1.0]] <http://www.w3.org/TR/2004/REC-CCPP-struct-vocab-20040115/#namespaces>


[60] [CITE@en[Re: Adding Web Intents to the Webapps WG deliverables]]
( ([[Tab Atkins Jr.]] 著, [TIME[2011-09-23 08:40:47 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1590.html>

[61] [CITE[XEP-0054: vcard-temp]]
([TIME[2011-10-24 00:09:47 +09:00]] 版)
<http://xmpp.org/extensions/xep-0054.html>

[66] [CITE@en[XQuery and XPath Data Model 3.0]]
( ([TIME[2014-04-08 07:00:06 +09:00]] 版))
<http://www.w3.org/TR/xpath-datamodel-3/#dt-namespace-uri>

[67] [CITE@en[RDF 1.1 Concepts and Abstract Syntax]]
( ([TIME[2014-04-26 05:17:46 +09:00]] 版))
<https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-concepts/index.html#dfn-namespace-iri>

[68] [CITE@en[Bug 27388 – Use https://schema.org/ in examples if feasible]]
( ([TIME[2014-11-22 17:02:05 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=27388>

[25] [CITE[URIs for W3C Namespaces]] ([TIME[2007-07-20 05:24:56 +09:00]] 版) <http://www.w3.org/2005/07/13-nsuri>

[26] [CITE@en[Editorial: refactor to depend on the Infra Standard]]
([[domenic]]著, [TIME[2016-11-17 07:29:00 +09:00]])
<https://github.com/whatwg/html/commit/4ac633e08c2c9430853fc8322943bc2438ed36a3>



[27] [CITE@en[XQuery and XPath Data Model 3.1]]
([TIME[2017-03-20 07:26:25 +09:00]])
<https://www.w3.org/TR/2017/REC-xpath-datamodel-31-20170321/#dt-namespace-uri>

[FIG(quote)[
[FIGCAPTION[
[28] [CITE@en[XQuery and XPath Data Model 3.1]]
([TIME[2017-03-20 07:26:25 +09:00]])
<https://www.w3.org/TR/2017/REC-xpath-datamodel-31-20170321/#dt-namespace-uri>
]FIGCAPTION]

> In this and related specifications, the use of the type xs:anyURI to hold a namespace name does not imply any restrictions on the value space beyond those described in this section: implementations may reject character strings that are not valid URIs or IRIs, but they are not required to do so.

]FIG]


[29] [CITE@en[News from the Trenches]]
([[Leigh Dodds]]著, [TIME[2017-05-14 19:48:20 +09:00]])
<http://www.xml.com/pub/a/2000/05/24/deviant/index.html>

[30] [CITE@en[Namespace names and URIs]]
([[Tim Bray]]著, [TIME[2000-05-16 14:57:40 +09:00]])
<https://lists.w3.org/Archives/Public/xml-uri/2000May/0016.html>

[31] [CITE@en[News from the Trenches]]
([[Leigh Dodds]]著, [TIME[2017-05-14 19:48:20 +09:00]])
<http://www.xml.com/pub/a/2000/05/24/deviant/index.html>

[32] [CITE@en[Database example; was: Why are relative NS identifiers used?]]
([[Tim Berners-Lee]]著, [TIME[2000-05-20 15:18:50 +09:00]])
<https://lists.w3.org/Archives/Public/xml-uri/2000May/0281.html>

[36] [CITE@en['''['''css-namespaces''']''' Restore Terminology section by SimonSapin · Pull Request #1387 · w3c/csswg-drafts]]
([TIME[2017-06-01 12:02:25 +09:00]])
<https://github.com/w3c/csswg-drafts/pull/1387>