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を記述するのは冗長なので、名前空間に別名を付けることができる。

<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>