[定義: XML名前空間 (XML namespace) は、IRI参照によって識別される。要素名や属性名は、この仕様書で解説されているメカニズムを使ってXML名前空間の中に置かれてよい。]
[定義: 拡張名 (expanded name) は、名前空間名とローカル名とからなるペアである。] [定義: I というIRIによって識別される名前空間にある N という名前については、名前空間名は I である。名前空間の中にない N という名前については、名前空間名は値がない。] [定義: どちらの場合でもローカル名 (local name) は N である。] 大域的に管理されているIRI名前空間と、その語彙のローカル名とという、この組み合わせこそが、名前の衝突を避けるために効力を有するのである。
IRI参照は、名前の中には認められていない文字を包含することができ、また、よく不便に長くなるので、拡張名は、XML文書の中にある要素や属性を直接に命名するためには使われない。その代わりに、有修飾名 (qualified name) が使われる。[定義: 有修飾名 (qualified name) は、名前空間解釈に従う名前である。] この仕様書に適合する文書では、要素名や属性名は有修飾名として出現する。文法的には、それらは有修飾名か無プリフィックス名かのいずれかである。プリフィックスを名前空間名に結合したり、無プリフィックス要素名に適用されるデフォルト名前空間を結合するために、属性ベースの宣言文法が用意される。これらの宣言は、一つの文書の中のいろいろな部分にいろいろなバインディングを適用できるよう、その宣言が出現する要素によってスコーピングされる。この仕様書に適合するプロセッサは、これらの宣言やプリフィックスを認識し、かつ、それらに基づいて動作しなければならない(MUST)。
2.3 IRI参照の比較ある与えられた名前空間に、ある名前が属しているかどうかや、二つの名前が同じ名前空間に属するかを判断するときに、名前空間を識別するIRI参照が比較される。[定義: 二つのIRIは文字列として扱われるのであって、その文字列が同一である場合、すなわち、同じキャラクタ列である場合に、かつ、そのような場合にのみ、同一 (identical) である。] 比較は、大文字小文字を区別するものであり、また、%-エスケーピングを実施したり復元したりはしない。
この結果、この意味では同一ではないIRI参照が、同じリソースへと解釈参照されることがある。例としては、大文字小文字や%-エスケーピングだけが違うIRI参照や、異なるベースURIをもつ外部実体にあるIRIがある (ただし、相対URIは名前空間名としては廃止方向であることに注意してほしい)。
名前空間宣言では、IRI参照は属性の既標準化値であり、そのため、XMLの文字参照や実体参照の置換は、一切の比較よりも先に既に実行されている。
例:
下記のIRI参照は、大文字小文字が異なっているので、名前空間を識別する上では、すべて異なっている。
http://www.example.org/wine
http://www.Example.org/wine
http://www.example.org/Wine
下記のIRI参照も、名前空間を識別する上では、すべて異なっている。
http://www.example.org/rosé
http://www.example.org/ros%c3%a9
http://www.example.org/ros%c3%A9
http://www.example.org/ros%C3%a9
http://www.example.org/ros%C3%A9
これらも同様である。
http://www.example.org/~wilbur
http://www.example.org/%7ewilbur
http://www.example.org/%7Ewilbur
eacute という実体が &eatute; であると定義されている場合、下記の開始タグはすべて、プリフィックス p を http://example.org/rosé/code> という同じIRI参照に結合する名前空間宣言を含んでいる。
-
<p:foo xmlns:p="http://example.org/rosé>
-
<p:foo xmlns:p="http://example.org/rosé">
-
<p:foo xmlns:p="http://example.org/rosé">
-
<p:foo xmlns:p="http://example.org/rosé">
-
<p:foo xmlns:p="http://example.org/rosé">
解釈参照された場合に等価となるIRIの間で混乱が起こるリスクがあるので、%-エスケーピングされた文字を名前空間名で使わないことが、強く奨励される。
6 要素や属性に名前空間を適用する 6.2 名前空間のデフォルト化
デフォルト名前空間宣言のスコープは、それが出現している開始タグの最初から、対応する終了タグの最後にまで及ぶ。ただし、内側にある一切のデフォルト宣言のスコープは除く。空タグの場合には、スコープはそのタグ自身である。
デフォルト名前空間宣言は、そのスコープの内部にあるすべての無プリフィックス要素名に適用される。デフォルト名前空間宣言は、属性名には直接には適用されない。無プリフィックス属性の解釈は、それが出現している要素によって決定される。
スコープ内にデフォルト名前空間宣言がある場合、無プリフィックス要素名に対応する展開名は、デフォルト名前空間のIRIを、その名前空間名としてもつ。スコープ内にデフォルト名前空間宣言がない場合、名前空間名は、値を有さない。無プリフィックス属性の名前空間名は、つねに値を有さない。すべての場合で、ローカル名は、ローカル部 である (これは、もちろん、無プリフィックス名そのものと同じである)。
<?xml version="1.1"?>
<!-- 要素は、この場合はデフォルトにより、HTML名前空間の中にある -->
<html xmlns='http://www.w3.org/1999/xhtml'>
<head><title>Frobnostication</title></head>
<body><p>Moved to
<a href='http://frob.example.com'>here</a>.</p></body>
</html>
<?xml version="1.1"?>
<!-- プリフィックスが付けられていない要素型は "books" 由来である -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
</book>
大きめの名前空間スコーピングの例:
<?xml version="1.1"?>
<!-- 最初は、デフォルト名前空間は "books" である -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
<notes>
<!-- 評釈のためにHTMLをデフォルト名前空間にする -->
<p xmlns='http://www.w3.org/1999/xhtml'>
This is a <i>funny</i> book!
</p>
</notes>
</book>
デフォルト名前空間宣言の属性値は、空であってもよい(MAY)。これには、宣言のスコープの内部では、デフォルト名前空間がないのと同じ効果がある。
<?xml version='1.1'?>
<Beers>
<!-- テーブル内部のデフォルト名前空間は、HTMLの名前空間である -->
<table xmlns='http://www.w3.org/1999/xhtml'>
<th><td>Name</td><td>Origin</td><td>Description</td></th>
<tr>
<!-- テーブルのセルの内部にはデフォルト名前空間がない -->
<td><brandName xmlns="">Huntsman</brandName></td>
<td><origin xmlns="">Bath, UK</origin></td>
<td>
<details xmlns=""><class>Bitter</class><hop>Fuggles</hop>
<pro>Wonderful hop, light alcohol, good summer beer</pro>
<con>Fragile; excessive variance pub to pub</con>
</details>
</td>
</tr>
</table>
</Beers>
6.3 属性の一意性
この仕様書に適合するXML文書では、どのタグも、つぎのような二つの属性を包含してはならない。
この制約は、どの要素も同じ展開名をもつ二つの属性を持っていないことを要求するのと等価である。
たとえば、以下では、bad
開始タグはそれぞれ違法である。
<!-- http://www.w3.org は n1 と n2 に結合される -->
<x xmlns:n1="http://www.w3.org"
xmlns:n2="http://www.w3.org" >
<bad a="1" a="2" />
<bad n1:a="1" n2:a="2" />
</x>
しかしながら、以下はそれぞれ合法である。2番目のものは、デフォルト名前空間は属性名に適用されないからである。
<!-- http://www.w3.org は n1 に結合されていて、また、デフォルトでもある -->
<x xmlns:n1="http://www.w3.org"
xmlns="http://www.w3.org" >
<good a="1" b="2" />
<good a="1" n1:a="2" />
</x>
7 文書の適合性
この仕様書は、XML 1.1 文書に適用される。この仕様書に適合するためには、文書は、XML 1.1 仕様書 [XML 1.1] に従って整形式でなければならない(MUST)。
この仕様書に適合するXML文書では、要素名や属性名は、QName の生成規則に合致しなければならず(MUST)、かつ、「名前空間制約」を満たさなければならない(MUST)。XML 1.1 整形式であるために Name のXML生成規則に合致することが必須である(REQUIRED)この文書中の他のすべてのトークンは、この仕様書の NCName の生成規則に合致しなければならない(MUST)。
[定義: 文書は、この仕様書に適合する場合、名前空間整形式 (namespace-well-formed) である。]
従って、名前空間整形式の文書では、つぎのようになる。
-
すべての要素名および属性名は、0個または1個のコロンを包含する。
-
実体名、処理命令ターゲット、記法名は、コロンを包含しない。
さらに、名前空間整形式の文書は、名前空間妥当であることがある。
[定義: 名前空間整形式の文書は、それが XML 1.1 仕様書により妥当であって、かつ、XML 1.1 妥当であるためにXMLの Name の生成規則に合致することが必須とされている要素名及び属性名以外のすべてのトークンが、この仕様書の NCName の生成規則に合致する場合、名前空間妥当 (namespace-valid) である。]
従って、名前空間妥当な文書では、つぎのようになる。
-
ID 型、IDREF(S) 型、ENTITY(IES) 型、NOTATION 型の宣言型をもつ属性は、コロンを包含しない。
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3