XML名前空間

Namespace in XML / XML-Names

 XMLでは、標準的なマークアップ言語(例:XHTML)に対して、それぞれの業務や分野独自の情報を付け足して扱うことが期待されていた。それを行うと、1つのXML文書内に、異なる言語で記述された情報が混在することになる可能性がある。そのとき、同じ名前の要素や属性が、異なる意味で定義されていると混乱が起きる。こうした混乱を避けるために利用するのがXMLにおける名前空間だ。

 以下がその例である。

 以下はtitle要素が肩書きを示すXML文書とする。

<title>President</title>

 以下はtitle要素が文書の標題を示すXML文書とする。

<title>Monthly Report</title>

 上記の2つの情報を一つのXML文書に記述すると……

<ComplexDocument>
<title>President</title>
<title>Monthly Report</title>
</ComplexDocument>

 このデータを処理するアプリケーションソフトは、2種類のtitle要素を区別できず、うまく扱うことができなくなる。

 そこで、それぞれの要素や属性に対して、名前空間と呼ばれるものを定義する。名前空間は、URIで識別される。上の例の前者は、http://hoge/personという名前空間に属するとしよう。そして、後者はhttp://hoge/documentという名前空間に属するとする。すると、この文書は以下のように記述できる。

<ComplexDocument
  xmlns:person="http://hoge/person"
  xmlns:document="http://hoge/document" > <person:title>President</person:title>
<document:title>Monthly Report</document:title>
</ComplexDocument>

 このように記述することで、それぞれの要素が具体的に、2つのtitle要素が別のものを示していることが明確に分かる。また、区別が可能になるだけでなく、具体的に何を示しているのかも分かる。

 名前空間を示すURIは、全世界でユニークな名前を確保するために使用されているもので、URIの示す先に何かの情報が存在する必要はまったくない。また、何かの情報があることを期待してはいけない。

 名前空間の問題は、DTDにおける名前空間のサポートが不十分であるということだ。そのため、このことがDTD以外のスキーマ言語を求めるニーズが生まれる理由の1つとなっている。

 名前空間はW3Cの勧告であり、XML 1.0を一部拡張するような形で構成されている。

XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

アイティメディアの提供サービス

キャリアアップ