名前空間の宣言のスコープ
名前空間の宣言にはスコープがあります。名前空間は、ドキュメント内の任意の場所に配置できますが、プログラムの変数と同様にスコープがあり、適切なスコープ内でだけ有効です。スコープには、既定と限定の 2 種類があります。
既定名前空間とは、ルート要素で宣言された名前空間のことです。既定名前空間は、ドキュメント内にある限定されていないすべての要素に適用されます。限定名前空間とは、ドキュメント内の一部分をより限定的な名前空間でオーバーライドするときに宣言する名前空間のことです。
名前空間は使用する前に宣言されている必要がありますが、必ずしも XML ドキュメントの先頭で宣言されていなくてもかまいません。たとえば、データの中間部分で、BOOK
要素のレベルで限定名前空間を宣言すると、その名前空間は、この要素のすべての子孫だけに適用されます。その例を次に示します。
<Author>Joe Smith</Author>
<BOOK xmlns:book="https://www.contoso.com">
<title>My Wonderful Day</title>
<price>$3.95</price>
</BOOK>
<Publisher>
<Name>MSPress</Name>
</Publisher>
BOOK
要素に対して定義されている名前空間は、Publisher
要素など、BOOK
要素の外側にある要素には適用されません。ドキュメント内に名前空間が示されているとき、宣言されているその名前空間の暗黙的な有効な範囲は、宣言された位置から、宣言された要素の最後までです。
Publisher
要素に対して名前空間が宣言されている場合は、要素の先頭にその名前空間とコロンを付けることによって完全に限定する必要があります。たとえば Publisher
要素が mybook
名前空間に属す場合は、この要素を <mybook:Publisher>
と宣言します。
参照
XML ドキュメントにおける名前空間 | 名前空間の宣言 | 既定の名前空間 | XmlNamespaceManager を使用した名前空間の管理 | XmlNamespaceManager から取得する情報