* 名前空間節点 (XPath 1.0 データ・モデル)

[2]
[[XPath 1.0データ・モデル]]の[DFN[[RUBY[名前空間節点][なまえくうかんせってん]@en[namespace node]]]]は、
[[名前空間束縛]]を表す[[節点]]です。

[1] 仕様書:
- [[XPath 1.0]]
-- [CSECTION@en[5.4 Namespace Nodes]]
<IW:XPath:"#namespace-nodes">
-- [[正誤表]]
<http://www.w3.org/1999/11/REC-xpath-19991116-errata/>

[3] [[要素節点]]は、[[先祖要素]]で[[宣言]]されたものも含め、
[[適用範囲]]内にあるすべての[[名前空間]]に対応する[[名前空間節点]]を持っています。

[6] '''名前空間属性との関係'''

[[要素節点]]は、次のような[[名前空間節点]]を持ちます
[SRC@en[XPath 1.0 5.4]]:
- 問題の[[要素]]の、[[名前]]が [CODE(XML)@en[[[xmlns]]:]]
で始まる[[属性]]に対応する[[名前空間節点]]
- [[先祖要素]]の、[[名前]]が [CODE(XML)@en[[[xmlns]]:]]
で始まる[[属性]]のうち、問題の[[要素]]またはそれにより近い[[先祖要素]]が[[再宣言]]していないものに対応する[[名前空間節点]]
-- ただし、[[属性値]]が[[空]]では''ない''場合に限ります
[SRC[XPath 1.0 正誤表]]
- 暗黙に[[宣言]]された [CODE(XML)@en[[[xml]]]]
[[名前空間]]に対応する[[名前空間宣言]]
- 問題の[[要素]]またはその[[先祖要素]]に
[CODE(XMLa)@en[[[xmlns]]]] [[属性]]があって、
そのうちの直近の[[要素]]の [CODE(XMLa)@en[[[xmlns]]]]
[[属性値]]が[[空]]では''ない''場合、
それに対応する[[名前空間節点]]

[4] '''親子関係'''

[[名前空間節点]]の[[親]]は、対応する[[要素節点]]です。
しかし、逆に、[[名前空間節点]]は[[要素節点]]の[[子供]]では''ありません''。
[SRC@en[XPath 1.0 5.4]]

[5] '''等価性'''

別の[[要素節点]]に属する[[名前空間節点]]は、
[WEAK[(たとえ同じ[[名前空間属性]]に由来するとしても)]]
別の[[節点]]です。 [SRC@en[XPath 1.0 5.4]]

[6] '''展開名'''

[[名前空間節点]]には[[展開名]]があります
[SRC@en[XPath 1.0 5.4]]:
- [[局所部分]]は、[[名前空間接頭辞]]です。
ただし、[[既定名前空間]]についての[[名前空間節点]]では、
[[空]]となります。
- [[名前空間URI]] は、 [CODE@en[[[null]]]] です。

[7] '''文字列値'''

[[名前空間節点]]の[[文字列値]]は、
その[[名前空間接頭辞]]に[[束縛]]された[[名前空間URI]]
です。
[SRC@en[XPath 1.0 5.4]]

[8]
[[文字列値]]である[[名前空間URI]]
が[[相対参照]]の場合、
[[展開名]]中の[[名前空間URI]] のように[[解決]]しなければなりません、
[SRC@en[XPath 1.0 5.4]] と規定されていました。
[[要素節点]]や[[属性節点]]の[[名前空間URI]]
のように、[[基底URI]] に基づき[[解決]]するということです。

[9]
[[正誤表]] [SRC[XPath 1.0 正誤表]]では、
[[XML総会]]での決定に基づき、
[[相対参照]]の場合の[[文字列値]]は[[実装依存]]と改めています。

[10] '''XML 情報集合との関係'''

[[XPath 1.0]] [[名前空間節点]]は、
[[XML情報集合]][[名前空間情報項目]]と、
次のように対応します [SRC[XPath 1.0 正誤表]]:
- [[展開名]]の[[局所部分]]は、
[CODE(InfoProp)[[[接頭辞]]]][[特性]]に対応します。
- [[展開名]]の[[名前空間URI]]は常に [CODE@en[[[null]]]] です。
- [[文字列値]]は、[CODE(InfoProp)[[[名前空間名]]]][[特性]]に対応します。
- [[名前空間節点]]の[[親]]は、
その[[名前空間節点]]が[[名前空間集成]]に含まれる[[要素節点]]です。

[[要素節点]]の[[名前空間群]]は、
[CODE(InfoProp)[[[適用範囲内名前空間]]]]に対応します
[SRC[XPath 1.0 正誤表]]。

[14]
[CODE(XML)@en[[[xmlns]]]] [[名前空間]]に対応する[[名前空間節点]]はあありません。

[13] 
'''XML 名前空間 1.1 との関係'''

[[XML名前空間 1.1]] では、
[[空]]の[[属性値]]により[[名前空間接頭辞]]を無効化できるようになりました。
それに対応する規定が[[正誤表]]で追加されています
(>>6)。
また、従来の [[URI参照]]に加え、[[IRI]]
にも対応して構いませんとされています
[SRC[XPath 1.0 正誤表]]。

[11]
'''DOM 中核との関係'''

[[DOM]] は [[XPath 1.0]] の[[名前空間節点]]のような[Q[[[宣言]]された[[名前空間]]]]の代わりに、
[[名前空間]]を[[宣言]]する[[名前空間属性]]を通常の[[属性節点]]として保持します。
従って、
- 暗黙または[[継承]]により、ある[[要素]]で適用範囲内であっても明示されていない[[名前空間]]に対応する[[節点]]は、
[[DOM]] にはありません。
- [[名前空間宣言]]を無効化する[[名前空間属性]]
([[属性値]]が[[空]]の[[属性]]) 
に対応する[[節点]]が [[DOM]] にはあります。
- [[名前空間URI]] は [[XPath 1.0]] では [CODE@en[[[null]]]]
ですが、 [[DOM]] では
[CODE(URI)@en[[[http://www.w3.org/2000/xmlns/]]]]
です。
- [CODE(XMLa)@en[[[xmlns]]]] の [[XPath 1.0]]
[[局所部分]]は[[空]]ですが、
[[DOM]] [[局所名]] ([CODE(DOMa)@en[[[localName]]]])
は [CODE(XMLa)@en[[[xmlns]]]] です。

[15]
'''XPath 2.0 との関係'''

@@ TBD

* DOM XPath

@@ [12] 仕様上は...

[16] [[Firefox]] でも [[Chrome]] でも、[[名前空間節点]]は存在せず、
[CODE(XPath)@en[[[namespace::]]]] [[軸]]は何も選択しません。 [TIME[2013-10-05T07:37:26.700Z]]


[17] [CITE@EN[XQuery 3.0: An XML Query Language]]
( ([TIME[2014-04-08 08:26:21 +09:00]] 版))
<http://www.w3.org/TR/xquery-30/#dt-in-scope-namespaces>

[18] [CITE@EN[XML Path Language (XPath) 3.0]]
( ([TIME[2014-04-08 07:58:50 +09:00]] 版))
<http://www.w3.org/TR/xpath-30/#dt-in-scope-namespaces>

[19] [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/#NamespaceNode>