W3C

XML 1.0 名前空間(第 3 版)

勧告

この日本語訳は非公式な文書です…(翻訳更新:

このページは、W3Cにより勧告として公表された Namespaces in XML 1.0 (第 3 版) を日本語に翻訳したものです。 (過去にこのページにあったバージョン 1.1 との “差分内容” は除去しました。) (初公表日:

この文書についての詳細
このバージョン(原文 URL )
https://www.w3.org/TR/xml-names/
このバージョン
https://www.w3.org/TR/2009/REC-xml-names-20091208/
最新公表バージョン
https://www.w3.org/TR/xml-names/
公表履歴
https://www.w3.org/standards/history/xml-names/
編集
Tim Bray, Textuality <tbray@textuality.com>
Dave Hollander, Contivo, Inc. <dmh@contivo.com>
Andrew Layman, Microsoft <andrewl@microsoft.com>
Richard Tobin, University of Edinburgh and Markup Technology Ltd <richard@inf.ed.ac.uk>
Henry S. Thompson, University of Edinburgh and W3C <ht@w3.org> - Third Edition
バージョン 1.1 の実装報告書
http://www.w3.org/XML/2002/12/xml-names11-implementation.html
(バージョン 1.1 の既知な実装は、どれも 1.0 をサポートしている。)
テスト一式
https://www.w3.org/XML/Test/
メーリングリスト
xml-names-editor@w3.org
archives
正誤表
https://www.w3.org/XML/2009/xml-names-errata
各国語翻訳
https://www.w3.org/2003/03/Translations/byTechnology?technology=xml-names
非公式な形式
XML 版
第 2 版からの差分強調版
第 1 版からの差分強調版
索引など

要約

XML 名前空間は、[ XML 文書内で利用する要素や属性の名前 ]に[ URI 参照により識別される名前空間 ]に結び付けることにより,それらを修飾するための単純な手法を供する。 XML namespaces provide a simple method for qualifying element and attribute names used in Extensible Markup Language documents by associating them with namespaces identified by URI references.

この文書の位置付け

この節では、公表時点における… 【以下,この節の内容は省略する。この節に挙げられていたリンクのうち一部(実装報告書など)は、冒頭にある “この文書についての詳細” に加えている。】

1. 動機と要約

XML ( Extensible Markup Language )の応用として、 単独の XML 文書が複数の “マークアップ語彙” を包含していて,そのそれぞれを成す[ 要素, 属性 ]群は,それぞれに異なるソフトウェアモジュール[ 用に定義される/から利用される ]ことが想定される。 これを想定する動機の一つは、 そのモジュール性にある。 そのようなマークアップ語彙が[ 存在し, きちんと理解されていて, そのための有用なソフトウェアが可用である ]ならば、 マークアップを再発明するよりも,このマークアップを再利用する方がよい。 We envision applications of Extensible Markup Language (XML) where a single XML document may contain elements and attributes (here referred to as a "markup vocabulary") that are defined for and used by multiple software modules.\ One motivation for this is modularity: if such a markup vocabulary exists which is well-understood and for which there is useful software available, it is better to re-use this markup rather than re-invent it.

文書が複数のマークアップ語彙を包含している場合、 語彙の認識と衝突が問題になる。 ソフトウェアモジュールは、 その処理対象として設計された要素や属性を,それらの名前が[ 何らかの他のソフトウェアパッケージ用のマークアップに利用されている要素や属性の名前 ]との “衝突” に面したときでも認識できる必要がある。 Such documents, containing multiple markup vocabularies, pose problems of recognition and collision.\ Software modules need to be able to recognize the elements and attributes which they are designed to process, even in the face of "collisions" occurring when markup intended for some other software package uses the same element name or attribute name.

これらを考慮するとき、 文書の構成子に付与される名前は[ 異なるマークアップ語彙に属する名前どうしの衝突を避けるよう構築する ]ことが求められる。 この仕様は、 XML 名前空間 と呼ばれる仕組みを述べる — それは、要素や属性に展開名をあてがうことにより,これを成し遂げる。 These considerations require that document constructs should have names constructed so as to avoid clashes between names from different markup vocabularies.\ This specification describes a mechanism, XML namespaces, which accomplishes this by assigning expanded names to elements and attributes.

1.1. 表記と用法についての注意

【この節の他の内容( [RFC2119] 関連)は省略する。】 Where EMPHASIZED, the key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, MAY in this document are to be interpreted as described in [Keywords].

この仕様内の生成規則内の非終端記号の多くは、 ここではなく,XML 仕様 [XML] にて定義されることに注意。 ここに定義される非終端記号が XML 仕様の非終端記号と同じ名前を持つ場合、 すべての事例において, 前者に合致する文字列の集合は 後者に合致する文字列の集合の部分集合になる。 Note that many of the nonterminals in the productions in this specification are defined not here but in the XML specification [XML].\ When nonterminals defined here have the same names as nonterminals defined in the XML specification, the productions here in all cases match a subset of the strings matched by the corresponding ones there.

この仕様に適合する文書は、 この文書の各 生成規則に付与される “名前空間拘束” ( Namespace Constraint )に従わなければならない。 In this document's productions, the NSC is a "Namespace Constraint", one of the rules that documents conforming to this specification MUST follow.

2. XML 名前空間

2.1. 基本概念

定義: XML 名前空間 は、 URI 参照 [RFC3986] により識別される。 [ 要素名/属性名 ]は、 この仕様に述べる仕組みを利用することにより,ある XML 名前空間に属し得る。 [Definition:\ An XML namespace is identified by a URI reference [RFC3986]; element and attribute names may be placed in an XML namespace using the mechanisms described in this specification. ]

定義: 展開名 とは、 ( 名前空間名,局所名 ) の組である。 [Definition:\ An expanded name is a pair consisting of a namespace name and a local name. ]\

定義: 所与の名前 名前 用の 名前空間名 は、 名前 が ある URI として識別される名前空間に属するならば,その URI である。 名前 が どの名前空間にも属さないならば、 名前 用の名前空間名は無い。 [Definition:\ For a name N in a namespace identified by a URI I, the namespace name is I.\ For a name N that is not in a namespace, the namespace name has no value. ]\

定義: いずれの事例でも、 名前局所名 になる。 [Definition:\ In either case the local name is N. ]\

名前の衝突は、[ 普遍的に管理される URI としての名前空間, 語彙の局所名 ]の組み合せにより,避けられるようになる。 It is this combination of the universally managed URI namespace with the vocabulary's local names that is effective in avoiding name clashes.

URI 参照は、 名前に許容されない文字を包含し得ることに加え,長くて不便なので、 展開名が XML 文書の要素や属性の名前に直に利用されることはない。 代わりに有修飾名が利用される。 URI references can contain characters not allowed in names, and are often inconveniently long, so expanded names are not used directly to name elements and attributes in XML documents.\ Instead qualified names are used.\

定義: 有修飾名 とは、名前空間の解釈の対象になる名前である。 [Definition:\ A qualified name is a name subject to namespace interpretation. ]\

この仕様に適合する文書においては、[ 要素名/属性名 ]は有修飾名として出現する。 構文としては、 それらは[ 接頭辞を伴う名前( PrefixedName ), 接頭辞を伴わない名前( UnprefixedName ) ]いずれかであり、[ 接頭辞を名前空間名に束縛するため, および 接頭辞を伴わない要素名を既定の名前空間に束縛するため ]の,属性に基づく宣言構文が供されている。 これらの宣言の視野は、 文書の各部に異なる束縛を適用できるようにするため, それが出現する要素下(要素自身とその内容)に限られる。 この仕様に適合する処理器は、 これらの宣言や接頭辞を認識して動作しなければならない。 In documents conforming to this specification, element and attribute names appear as qualified names.\ Syntactically, they are either prefixed names or unprefixed names.\ An attribute-based declaration syntax is provided to bind prefixes to namespace names and to bind a default namespace that applies to unprefixed element names; these declarations are scoped by the elements on which they appear so that different bindings may apply in different parts of a document.\ Processors conforming to this specification MUST recognize and act on these declarations and prefixes.

2.2. 名前空間名としての URI の利用

空文字列は、 URI 参照としては合法であっても,名前空間名として利用することはできない。 The empty string, though it is a legal URI reference, cannot be used as a namespace name.

名前空間宣言における相対 URI 参照の利用は、 同じ文書への参照も含め,非推奨にされた。 The use of relative URI references, including same-document references, in namespace declarations is deprecated.

注記: このことは、 W3C XML Plenary Ballot [Relative-URI-deprecation] により裁定された。 そこでは、 DOM, XPath などの後の仕様においても、それらに対する解釈は定義しないとする ことも宣言された。 Note: This deprecation of relative URI references was decided on by a W3C XML Plenary Ballot [Relative URI deprecation].\ It also declares that "later specifications such as DOM, XPath, etc. will define no interpretation for them".

2.3.URI 参照の比較法

名前空間を識別する URI 参照は、 ある名前が所与の名前空間に属するかどうか, および 2 つの名前が同じ名前空間に属するかどうかを決定する際に比較される。 URI references identifying namespaces are compared when determining whether a name belongs to a given namespace, and whether two names belong to the same namespace.\

定義: 2 つの URI は文字列として扱うものとし、 文字列として一致するとき,すなわち同じ文字並びであるとき, そのときに限り 互いに一致 するとする。 [Definition:\ The two URIs are treated as strings, and they are identical if and only if the strings are identical, that is, if they are the same sequence of characters. ]\

比較においては、 文字大小は区別され, %-エスケープしたりその逆に戻すことはない。 The comparison is case-sensitive, and no %-escaping is done or undone.

したがって,2 つの URI 参照は、 互いに一致しなくても,同じリソースに解決され得る。 例えば、[ 文字大小や %-エスケープの有無においてのみ相違する,URI 参照 ]や[ 基底 URI が異なる外部実体 ]内の URI 参照 (が、相対 URI 参照は,名前空間名として非推奨にされたことに注意)。 A consequence of this is that URI references which are not identical in this sense may resolve to the same resource.\ Examples include URI references which differ only in case or %-escaping, or which are in external entities which have different base URIs (but note that relative URIs are deprecated as namespace names).

名前空間宣言における URI 参照は、属性の正規化された値であり, XML 文字や実体参照の置換は どの比較よりも先に行われる。 In a namespace declaration, the URI reference is the normalized value of the attribute, so replacement of XML character and entity references has already been done before any comparison.

次に挙げる URI 参照は,文字大小が相違するので、 名前空間を識別する目的においては,すべて互いに異なる :"http://www.example.org/wine", "http://www.Example.org/wine", "http://www.example.org/Wine" The URI references below are all different for the purposes of identifying namespaces, since they differ in case: • http://www.example.org/wine • http://www.Example.org/wine • http://www.example.org/Wine

次に挙げる URI 参照も、 名前空間を識別する目的においては,すべて互いに異なる :"http://www.example.org/~wilbur", "http://www.example.org/%7ewilbur", "http://www.example.org/%7Ewilbur" The URI references below are also all different for the purposes of identifying namespaces: • http://www.example.org/~wilbur • http://www.example.org/%7ewilbur • http://www.example.org/%7Ewilbur

参照の解決後に等価になる URI による混同リスクがあるので、 名前空間名には, %-エスケープされた文字を利用しないことが強く奨励される。 Because of the risk of confusion between URIs; that would be equivalent if dereferenced, the use of %-escaped characters in namespace names is strongly discouraged.

3. 名前空間の宣言

定義: 名前空間(より精確には,名前空間束縛)は、 予約済み属性の族を利用して 宣言 される。 そのような属性名は、 "xmlns" に一致するか, または "xmlns:" から始まっていなければならない。 これらの属性は、 他の XML 属性と同様に,直にあるいは 既定 により供せる/供され得る。 [Definition:\ A namespace (or more precisely, a namespace binding) is declared using a family of reserved attributes.\ Such an attribute's name must either be xmlns or begin xmlns:.\ These attributes, like any other XML attributes, may be provided directly or by default. ]

名前空間宣言用の属性名: Attribute Names for Namespace Declaration

[1] NSAttName
PrefixedAttName | DefaultAttName
[2] PrefixedAttName
'xmlns:' NCName
名前空間拘束:[ 予約済み接頭辞と名前空間名 ] [NSC: Reserved Prefixes and Namespace Names]
[3] DefaultAttName
'xmlns'
[4] NCName
Name - (Char* ':' Char*)
( ":" 以外の XML Name/* An XML Name, minus the ":" */

属性の正規化された値は、 名前空間を識別する名前空間名としての URI 参照であるか, または空文字列でなければならない。 名前空間名は、 それが意図する目的に鑑みて,一意かつ持続的になるべきである。 存在するスキーマの検索取得に直に利用可能になることは、その目標にはない。 そのような目標を念頭に設計された例として、 Uniform Resource Names [RFC2141] がある。 しかしながら,普通の URL でも、 そのような仕方で管理して,同じ目標を達成できることは注記しておく。 The attribute's normalized value MUST be either a URI reference — the namespace name identifying the namespace — or an empty string.\ The namespace name, to serve its intended purpose, SHOULD have the characteristics of uniqueness and persistence.\ It is not a goal that it be directly usable for retrieval of a schema (if any exists).\ Uniform Resource Names [RFC2141] is an example of a syntax that is designed with these goals in mind.\ However, it should be noted that ordinary URLs can be managed in such a way as to achieve these same goals.

定義: 属性名が PrefixedAttName に合致するならば、 その NCName名前空間接頭辞 を与え,属性値を成す名前空間名が[ 当の宣言が付与された要素の視野において,[ 要素名/属性名 ]を当の名前空間名に結び付ける ]ために利用される。 [Definition:\ If the attribute name matches PrefixedAttName, then the NCName gives the namespace prefix, used to associate element and attribute names with the namespace name in the attribute value in the scope of the element to which the declaration is attached. ]

定義: 属性名が DefaultAttName に合致するならば、 属性値を成す名前空間名が[ 当の宣言が付与された要素の視野における 既定の名前空間 ]になる。 [Definition:\ If the attribute name matches DefaultAttName, then the namespace name in the attribute value is that of the default namespace in the scope of the element to which the declaration is attached.]\

既定の名前空間, および宣言の上書き法については、 § 要素/属性に対する名前空間の適用法 に論じられる。 Default namespaces and overriding of declarations are discussed in 6 Applying Namespaces to Elements and Attributes.

次の例は、 名前空間接頭辞 "edi" を名前空間名 "http://ecommerce.example.org/schema" に結び付ける名前空間宣言である: An example namespace declaration, which associates the namespace prefix edi with the namespace name http://ecommerce.example.org/schema:

<x xmlns:edi='http://ecommerce.example.org/schema'>
  <!-- 
接頭辞 "edi" は "x" 要素とその内容において
"http://ecommerce.example.org/schema" に束縛される
the "edi" prefix is bound to http://ecommerce.example.org/schema for the "x" element and contents -->
</x>
名前空間拘束: [ 予約済み接頭辞と名前空間名 ] Namespace constraint: Reserved Prefixes and Namespace Names

接頭辞 xml は、 定義により,名前空間名 "http://www.w3.org/XML/1998/namespace" に束縛される。 この名前空間は: The prefix xml is by definition bound to the namespace name http://www.w3.org/XML/1998/namespace.\

  • 宣言されてもよいが,する必要はない。 It MAY, but need not, be declared,\
  • 他のいかなる名前空間名にも束縛されてはならない。 and MUST NOT be bound to any other namespace name.\
  • 他の接頭辞がこの名前空間名に束縛されてはならない。 Other prefixes MUST NOT be bound to this namespace name,\
  • 既定の名前空間として宣言されてはならない。 and it MUST NOT be declared as the default namespace.

接頭辞 xmlns は、 名前空間束縛の宣言に限り利用され、 定義により,名前空間名 "http://www.w3.org/2000/xmlns/" に束縛される。 この名前空間は: The prefix xmlns is used only to declare namespace bindings and is by definition bound to the namespace name http://www.w3.org/2000/xmlns/.

  • 宣言されてはならない。 It MUST NOT be declared\
  • 他の接頭辞がこの名前空間に束縛されてはならない。 . Other prefixes MUST NOT be bound to this namespace name, and\
  • 既定の名前空間として宣言されてはならない。 it MUST NOT be declared as the default namespace.\
  • 要素名は、 接頭辞 "xmlns" を伴ってはならない。 Element names MUST NOT have the prefix xmlns.

他の接頭辞のうち[ 頭部が文字大小無視で "xml" に合致するもの ]も,すべて予約済みである。 したがって: All other prefixes beginning with the three-letter sequence x, m, l, in any case combination, are reserved. This means that:

  • 利用者は、 後の仕様に定義された場合を除き,それらを利用するべきではない。 users SHOULD NOT use them except as defined by later specifications
  • 処理器は、 それらを致命的エラーとして扱ってはならない。 processors MUST NOT treat them as fatal errors.

接頭辞が予約済みでないとしても、[ LocalPart の頭部が文字大小無視で "xml" に合致する ]ような名前の利用は, 接頭辞を伴わずに利用されたとき予約済みになってしまうので勧められない。 Though they are not themselves reserved, it is inadvisable to use prefixed names whose LocalPart begins with the letters x, m, l, in any case combination, as these names would be reserved if used without a prefix.

4. 有修飾名

この仕様に適合する XML 文書においては、 一部の名前(非終端記号 Name に対応する構成子)は, 次で定義される有修飾名QName )として与えられなければならない: In XML documents conforming to this specification, some names (constructs corresponding to the nonterminal Name) MUST be given as qualified names, defined as follows:Qualified Name

[7] QName
PrefixedName | UnprefixedName
[8] PrefixedName
Prefix ':' LocalPart
[9] UnprefixedName
LocalPart
[10] Prefix
NCName
[11] LocalPart
NCName

接頭辞( Prefix )は、 有修飾名を成す名前空間接頭辞を供する — それは、名前空間宣言の中の名前空間 URI 参照に結び付けられなければならない。 The Prefix provides the namespace prefix part of the qualified name, and MUST be associated with a namespace URI reference in a namespace declaration.\

定義: LocalPart は、 有修飾名を成す 局所部位 を供する。 [Definition:\ The LocalPart provides the local part of the qualified name.]

接頭辞は名前空間名のプレースホルダとしてのみ機能することに注意。 応用は、 自身が構築している名前の視野が,それを包含している文書を超える場合は、 接頭辞ではなく,名前空間名を利用するべきである。 Note that the prefix functions only as a placeholder for a namespace name.\ Applications SHOULD use the namespace name, not the prefix, in constructing names whose scope extends beyond the containing document.

5. 有修飾名の利用

この仕様に適合する XML 文書においては、 要素の名前は,次に従うように有修飾名として与えられる: In XML documents conforming to this specification, element names are given as qualified names, as follows:Element Names

[12] STag
'<' QName (S Attribute)* S? '>'
名前空間拘束:[ 接頭辞は宣言済み ] [NSC: Prefix Declared]
[13] ETag
'</' QName S? '>'
名前空間拘束:[ 接頭辞は宣言済み ] [NSC: Prefix Declared]
[14] EmptyElemTag
'<' QName (S Attribute)* S? '/>'
名前空間拘束:[ 接頭辞は宣言済み ] [NSC: Prefix Declared]

要素名としてサーブしている有修飾名の例: An example of a qualified name serving as an element name:

  <!-- 
price 要素が属する名前空間は "http://ecommerce.example.org/schema" になる。
the 'price' element's namespace is http://ecommerce.example.org/schema -->
  <edi:price xmlns:edi='http://ecommerce.example.org/schema'
             units='Euro'>32.18</edi:price>

属性は名前空間宣言になるか,または有修飾名として名前が与えられる: Attributes are either namespace declarations or their names are given as qualified names:Attribute

[15] Attribute
NSAttName Eq AttValue | QName Eq AttValue
名前空間拘束: [ 接頭辞は宣言済み ] [NSC: Prefix Declared]
名前空間拘束: [ 接頭辞を未宣言にするものはない ] [NSC: No Prefix Undeclaring]
名前空間拘束: [ 属性は一意である ] [NSC: Attributes Unique]

属性名としてサーブしている有修飾名の例: An example of a qualified name serving as an attribute name:

<x xmlns:edi='http://ecommerce.example.org/schema'>
  <!-- 
taxClass 属性が属する名前空間は
"http://ecommerce.example.org/schema" になる
the 'taxClass' attribute's namespace is http://ecommerce.example.org/schema -->
  <lineItem edi:taxClass="exempt">Baby food</lineItem>
</x>
名前空間拘束: [ 接頭辞は宣言済み ] Namespace constraint: Prefix Declared
"xml" または "xmlns" 以外の名前空間接頭辞は、[ その接頭辞が利用されている要素の開始タグか,または その先祖要素(すなわち,接頭辞によるマークアップがその内容に出現している要素) ]において,名前空間宣言属性により宣言されていなければならない。 The namespace prefix, unless it is xml or xmlns, MUST have been declared in a namespace declaration attribute in either the start-tag of the element where the prefix is used or in an ancestor element (i.e., an element in whose content the prefixed markup occurs).\
名前空間拘束: [ 接頭辞を未宣言にするものはない ] Namespace constraint: No Prefix Undeclaring
接頭辞( Prefix )を宣言する名前空間宣言においては (すなわち, NSAttNamePrefixedAttName になっている所では)、 属性値( AttValue )は空であってはならない。 In a namespace declaration for a prefix (i.e., where the NSAttName is a PrefixedAttName), the attribute value MUST NOT be empty.

この拘束により: 名前空間宣言属性が[ XML 文書実体内に直にではなく, 外部実体で宣言された既定の属性を介して供されている所 ]では、 演算上の難へ導き得る。 そのような宣言は、 検証しない XML 処理器に基づくソフトウェアからは読み取られないこともある。 多くの XML 応用は、 おそらく名前空間を区別するものも含め,【名前空間】検証用の処理器を要求していない。 そのような応用において正しい演算が要求される場合、 名前空間宣言は,[ 直に, または内部サブセットの DTD 内で宣言される既定の属性を介して ]供されなければならない。 This constraint may lead to operational difficulties in the case where the namespace declaration attribute is provided, not directly in the XML document entity, but via a default attribute declared in an external entity.\ Such declarations may not be read by software which is based on a non-validating XML processor.\ Many XML applications, presumably including namespace-sensitive ones, fail to require validating processors.\ If correct operation with such applications is required, namespace declarations MUST be provided either directly or via default attributes declared in the internal subset of the DTD.

要素名や属性名は、 DTD の中の宣言に出現するときには,有修飾名としても与えられる: Element names and attribute names are also given as qualified names when they appear in declarations in the DTD:Qualified Names in Declarations

[16] doctypedecl
'<!DOCTYPE' S QName (S ExternalID)? S? ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
[17] elementdecl
'<!ELEMENT' S QName S contentspec S? '>'
[18] cp
(QName | choice | seq) ('?' | '*' | '+')?
[19] Mixed
'(' S? '#PCDATA' (S? '|' S? QName)* S? ')*' | '(' S? '#PCDATA' S? ')'
[20] AttlistDecl
'<!ATTLIST' S QName AttDef* S? '>'
[21] AttDef
S (QName | NSAttName) S AttType S DefaultDecl

DTD に基づく検証は、 次の意味で名前空間を認識しないものであることに注意: DTD は,文書内に出現してもよい要素や属性を、 ( 名前空間名, 局所名 ) の組としてではなく,それらの名前を解釈することなく拘束する。 名前空間を利用する文書を DTD に突き合わせて検証する際には、 各インスタンスに利用されている接頭辞と同じ接頭辞が DTD の中で利用されなければならない。 しかしながら,DTD は、 名前空間を宣言する属性に対し "#FIXED" 値を供することにより, 妥当な文書に利用される名前空間を間接的に拘束し得る。 Note that DTD-based validation is not namespace-aware in the following sense: a DTD constrains the elements and attributes that may appear in a document by their uninterpreted names, not by (namespace name, local name) pairs.\ To validate a document that uses namespaces against a DTD, the same prefixes must be used in the DTD as in the instance.\ A DTD may however indirectly constrain the namespaces used in a valid document by providing #FIXED values for attributes that declare namespaces.

6. 要素/属性に対する名前空間の適用法

6.1. 名前空間の視野

接頭辞を宣言する名前空間宣言の視野は、 それが出現する開始タグから対応する終了タグまでの範囲から,[ より内縁にあり, NSAttName 部が同じになる ]ような すべての[ 接頭辞を宣言する名前空間宣言 ]の視野を除外した範囲になる。 空タグの事例における視野は,そのタグ自身になる。 The scope of a namespace declaration declaring a prefix extends from the beginning of the start-tag in which it appears to the end of the corresponding end-tag, excluding the scope of any inner declarations with the same NSAttName part.\ In the case of an empty tag, the scope is the tag itself.

そのような名前空間宣言 宣言 は、[ 要素名/属性名 ]のうち,次を満たすものすべてに適用される :宣言 の視野に入る ]宣言 に指定された接頭辞に合致する接頭辞を伴う ] Such a namespace declaration applies to all element and attribute names within its scope whose prefix matches that specified in the declaration.

[ 要素名/属性名 ]を与える有修飾名 名前 が接頭辞を伴う場合、 名前 に対応する展開名は :その名前空間名は、 名前 の接頭辞( Prefix )を束縛している URI になる / その局所名は、名前局所部位LocalPart )になる The expanded name corresponding to a prefixed element or attribute name has the URI to which the prefix is bound as its namespace name, and the local part as its local name.

<?xml version="1.0"?>

<html:html xmlns:html='http://www.w3.org/1999/xhtml'>

  <html:head><html:title>Frobnostication</html:title></html:head>
  <html:body><html:p>Moved to 
    <html:a href='http://frob.example.com'>here.</html:a></html:p></html:body>
</html:html>

次の例に示すように、 単独の要素において複数の名前空間接頭辞を属性として宣言できる: Multiple namespace prefixes can be declared as attributes of a single element, as shown in this example:

<?xml version="1.0"?>
<!-- 
"bk", "isbn" 両 名前空間接頭辞とも可用になる
both namespace prefixes are available throughout -->
<bk:book xmlns:bk='urn:loc.gov:books'
         xmlns:isbn='urn:ISBN:0-395-36341-6'>
    <bk:title>Cheaper by the Dozen</bk:title>
    <isbn:number>1568491379</isbn:number>
</bk:book>

6.2. 既定の名前空間の適用法

既定の名前空間宣言の視野は、 より内縁の既定の名前空間宣言の視野を除き, それが出現する開始タグから対応する終了タグまでにわたる。 空タグの事例における視野はそのタグ自身になる。 The scope of a default namespace declaration extends from the beginning of the start-tag in which it appears to the end of the corresponding end-tag, excluding the scope of any inner default namespace declarations.\ In the case of an empty tag, the scope is the tag itself.

既定の名前空間宣言は、 その視野に入る,接頭辞を伴わない要素名すべてに適用される。 既定の名前空間宣言は属性名には直には適用されない。 接頭辞を伴わない属性の解釈は、 それが出現している要素から決定される。 A default namespace declaration applies to all unprefixed element names within its scope.\ Default namespace declarations do not apply directly to attribute names; the interpretation of unprefixed attributes is determined by the element on which they appear.

接頭辞を伴わない要素が,ある既定の名前空間宣言の視野に入る場合、 その要素に対応する展開名は、 その既定の名前空間の URI を名前空間名に持つ。 視野に既定の名前空間宣言がなければ,名前空間名は値を持たない。 接頭辞を伴わない属性名の名前空間名は 常に値を持たない。 いずれの事例においても,局所名局所部位LocalPart )になる(もちろん,これは接頭辞を伴わない名前自身と同じになる)。 If there is a default namespace declaration in scope, the expanded name corresponding to an unprefixed element name has the URI of the default namespace as its namespace name.\ If there is no default namespace declaration in scope, the namespace name has no value.\ The namespace name for an unprefixed attribute name always has no value.\ In all cases, the local name is local part (which is of course the same as the unprefixed name itself).

<?xml version="1.0"?>
<!-- 
この事例では、
要素は既定において HTML 名前空間に属する
elements are in the HTML namespace, in this case by default -->
<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.0"?>
<!-- 
接頭辞を伴わない要素型は "urn:loc.gov:books" に属する
unprefixed element types are from "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>

名前空間の視野をあてがうやや大きめな例: A larger example of namespace scoping:

<?xml version="1.0"?>
<!-- 
初期時において,既定の名前空間は "urn:loc.gov:books"
initially, the default namespace is "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 を既定の名前空間にする
make HTML the default namespace for some commentary -->
      <p xmlns='http://www.w3.org/1999/xhtml'>
          This is a <i>funny</i> book!
      </p>
    </notes>
</book>

既定の名前空間宣言における属性値は、 空にされてもよい。 その効果は、[ 宣言の視野の中には既定の名前空間は無い ]のと同じになる。 The attribute value in a default namespace declaration MAY be empty.\ This has the same effect, within the scope of the declaration, of there being no default namespace.

<?xml version='1.0'?>
<Beers>
  <!-- 
table の内側における既定の名前空間は HTML 名前空間
the default namespace inside tables is that of HTML -->
  <table xmlns='http://www.w3.org/1999/xhtml'>
   <th><td>Name</td><td>Origin</td><td>Description</td></th>
   <tr> 
     <!-- 
table cell の内側には 既定の名前空間は無い
no default namespace inside table cells -->
     <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. 属性の一意性

名前空間拘束: [ 属性は一意である ] Namespace constraint: Attributes Unique

この仕様に適合する XML 文書においては、 どのタグも[ ↓ を満たす複数個の属性 ]を包含してはならない: In XML documents conforming to this specification, no tag may contain two attributes which:

この拘束は、 どの要素においても,[ 展開名が同じになる 2 つの属性は無い ]ことを要求するのと等価である。 This constraint is equivalent to requiring that no element have two attributes with the same expanded name.

例えば,次における空要素タグ "bad" は、 いずれも違法になる: For example, each of the bad empty-element tags is illegal in the following:

<!-- 
n1 と n2 はいずれも http://www.w3.org に束縛される
http://www.w3.org is bound to n1 and 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 番目のものは、 属性名には既定の名前空間は適用されないので,合法になる: However, each of the following is legal, the second because the default namespace does not apply to attribute names:

<!-- 
n1 は既定の名前空間 http://www.w3.org に束縛される
http://www.w3.org is bound to n1 and is the default -->
<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 は、 XML 1.0 を指す。 ↓↓

この仕様は XML 文書に適用される。 この仕様に適合するためには、 文書は XML 仕様 [XML] に則って整形式でなければならない。 This specification applies to XML 1.0 documents.\ To conform to this specification, a document MUST be well-formed according to the XML 1.0 specification [XML].

この仕様に適合する XML 文書においては、[ 要素名/属性名 ]は QName 生成規則に合致し, かつ “名前空間拘束” を満たさなければならない。 文書内の他の([ 要素名/属性名 ]以外の)トークンのうち[ XML 整形式であるために XML 生成規則 Name に合致することが要求されているもの ]は、 すべて,この仕様の生成規則 NCName に合致しなければならない。 In XML 1.0 documents which conform to this specification, element and attribute names MUST match the production for QName and MUST satisfy the "Namespace Constraints".\ All other tokens in the document which are REQUIRED, for XML 1.0 well-formedness, to match the XML production for Name MUST match this specification's production for NCName.

定義: この仕様に適合する文書は、 名前空間整形式 であるとされる。 [Definition:\ A document is namespace-well-formed if it conforms to this specification. ]

よって,名前空間整形式である文書においては: It follows that in a namespace-well-formed document:

  • [ 要素名 / 属性名 ]は 0 個または 1 個のコロン( ":" )を包含する。 All element and attribute names contain either zero or one colon;
  • [ 実体名 / 処理命令ターゲット / 記法名 ]はコロンを包含しない。 No entity names, processing instruction targets, or notation names contain any colons.

加えて、名前空間整形式なる文書は,名前空間において妥当になり得る。 In addition, a namespace-well-formed document may also be namespace-valid.

定義: 名前空間整形式である文書は、 ↓ を満たすならば 名前空間において妥当 であるとされる:

  • XML に則って妥当である。 XML に則って整形式になるためには、 文書内の[ 要素/属性 ]の名前は,XML 生成規則 Name に合致することが要求される。
  • 文書内のトークンのうち[ 要素/属性 ]の名前を除くすべては、 この仕様の生成規則 NCName に合致している。
[Definition:\ A namespace-well-formed document is namespace-valid if it is valid according to the XML 1.0 specification, and all tokens other than element and attribute names which are REQUIRED, for XML 1.0 validity, to match the XML production for Name match this specification's production for NCName. ]

よって,名前空間において妥当な文書においては、[ 次に挙げるいずれかの型として宣言された属性 ]は,コロンを包含しない :IDIDREFIDREFSENTITYENTITIESNOTATION It follows that in a namespace-valid document: • No attributes with a declared type of ID, IDREF(S), ENTITY(IES), or NOTATION contain any colons.

8. 処理器の適合性

この仕様に適合するためには、 処理器は名前空間整形式に対する違反を報告しなければならない。 ただし,名前空間名が URI 参照 [RFC3986] であるかどうかの検査は要求されない。 To conform to this specification, a processor MUST report violations of namespace well-formedness, with the exception that it is not REQUIRED to check that namespace names are URI references [RFC3986].

定義: この仕様に適合する XML 検証用の処理器のうち,名前空間妥当性に対する違反を報告するものを 名前空間検証用の処理器 という。 [Definition:\ A validating XML processor that conforms to this specification is namespace-validating if in addition it reports violations of namespace validity. ]

付録

この節は規範的ではない。This section is non-normative.

XML 名前空間の内部構造

この付録は削除された。 This appendix has been deleted.

バージョン 1.0 からの変更点

このバージョンには 2009年 6月 20日の正誤表 [1.0-Errata] [1.0-2e-Errata] が組み入れられている。 This version incorporates the errata as of 20 July 2009 [1.0 Errata] [1.0 2e Errata].

より一貫性を得るため,いくつかの語法の変更や追加を含む編集上の変更点がある。 参考の付録 “XML 名前空間の内部構造” は削除された。 There are several editorial changes, including a number of terminology changes and additions intended to produce greater consistency.\ The non-normative appendix "The Internal Structure of XML Namespaces" has been removed.\

第 5 版を含む XML 1.0 のすべての版と整合するよう, BNF を調整した。 The BNF has been adjusted to interconnect properly with all editions of XML 1.0, including the fifth edition.

謝辞

この作業には、多数の方々からの意見が反映されている。 とりわけ、[ W3C XML WG , Special Interest Group, W3C Metadata Activity ]の参加者たちに。 Microsoft の Charles Frankston 氏による特に貴重な貢献にも。 This work reflects input from a very large number of people, including especially the participants in the World Wide Web Consortium XML Working Group and Special Interest Group and the participants in the W3C Metadata Activity.\ The contributions of Charles Frankston of Microsoft were particularly valuable.

廃止された生成規則

次の 2 つの生成規則は、 この仕様の第 1 版, 第 2 版に在ったものを改変したバージョンである。 もはや,それらが利用されることはないが、 この仕様の日付が無いバージョンへの相互参照用に維持されている。 The following two productions are modified versions of ones which were present in the first two editions of this specification.\ They are no longer used, but are retained here to satisfy cross-references to undated versions of this specification.

NCNameStartChar の定義に元々利用されていた XML 1.0 の Letter 生成規則は, XML 1.0 第 5 版からは名前の定義として正しいものではなくなったので、 NCNameStartChar 生成規則は — XML のどの版に対しても正しい結果が得られるよう — NCName に基づく定義に変更された。 Because the Letter production of XML 1.0, originally used in the definition of NCNameStartChar, is no longer the correct basis for defining names since XML 1.0 Fifth Edition, the NCNameStartChar production has been modified to give the correct results against any edition of XML, by defining NCNameStartChar in terms of NCName.

[5] NCNameChar
NameChar - ':'
( ":" 以外の XML NameChar/* An XML NameChar, minus the ":" */
[6] NCNameStartChar
NCName - ( Char Char Char* )
NCName の最初の字) /* The first letter of an NCName */

Note: Production NCNameStartChar takes advantage of the fact that a single-character NCName is necessarily an NCNameStartChar, and works by subtracting from the set of NCNames of all lengths the set of all strings of two or more characters, leaving only the NCNames which are one character long.