xmlns

xmlnsはXMLのネームスペース(名前空間)のURIを指定する属性である。

XML名前空間とは、XMLの要素を一意に識別するための仕組みである。

<schema xmlns="http://www.w3.org/2001/XMLSchema">
  <element xmlns="http://www.w3.org/2001/XMLSchema" name="book" type="BookType"/>
  <element xmlns="http://www.w3.org/2001/XMLSchema" name="author" type="xsd:string"/>
</schema>

XML名前空間とは

XMLでは、ひとつの文書の中で複数のマークアップ言語を使用することができる。複数のマークアップ言語を使用する場合、同じ名前の要素名(タグ名)が衝突する問題が生じることがある。この問題を解決するために、個々のマークアップ言語に固有のURIを割り当てた名前空間(ネームスペース)を指定することができる。

名前空間はxmlns属性で指定する。XMLでは独自のタグと属性を定義できるが、独自の属性とは別に、xmlns属性を任意の要素(タグ)に指定することができる。

デフォルト

通常は、デフォルトの名前空間をルート要素のxmlns属性に指定する。XMLの属性は子孫の要素に継承されるので、とくにxmlns属性の指定が無い子孫の要素は、ルート要素の名前空間が継承されていく。

<rootElement xmlns="http://itref.fc2web.com/xml">
<element1>content</element1>
<element3>content</element3>
</rootElement>

デフォルト以外の名前空間を使用する場合、要素(タグ)のxmlns属性で名前空間を指定する。

<rootElement xmlns="http://itref.fc2web.com/xml">
<element1>content</element1>
<element2 xmlns="http://www.another.com/another">content</element2>
<element3>content</element3>
<element4 xmlns="http://www.another.com/another">content</element4>
</rootElement>

プレフィックス

個々の要素のxmlns属性でURIを記述するのは冗長なので、名前空間にプレフィックスを付けることができる。

xmlns:prefix="namespace"
<rootElement xmlns="http://itref.fc2web.com/xml" xmlns:ano="http://www.another.com/another">
<element1>content</element1>
<ano:element2>content</ano:element2>
<element3>content</element3>
<ano:element4>content</ano:element4>
</rootElement>