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では、ひとつの文書の中で複数のマークアップ言語を使用することができる。複数のマークアップ言語を使用する場合、同じ名前の要素名(タグ名)が衝突する問題が生じることがある。この問題を解決するために、個々のマークアップ言語に固有のURIを割り当てた名前空間(ネームスペース)を指定することができる。
名前空間はxmlns属性で指定する。XMLでは独自のタグと属性を定義できるが、独自の属性とは別に、xmlns属性を任意の要素(タグ)に指定することができる。
XML名前空間はあくまでも識別子である。http://example.com/schema という名前空間の場合、このURLにウェブブラウザでアクセスすれば何らかのページが表示されることを意味しない。
ウェブページを表しているわけではないので、http://example.com/schema と https://example.com/schema は、それぞれ別の名前空間である。
通常は、デフォルトの名前空間をルート要素のxmlns属性に指定する。XMLの属性は子孫の要素に継承されるので、とくにxmlns属性の指定が無い子孫の要素は、ルート要素の名前空間が継承されていく。
<rootElement xmlns="http://segakuin.com/xml">
<element1>content</element1>
<element3>content</element3>
</rootElement>
デフォルト以外の名前空間を使用する場合、要素(タグ)のxmlns属性で名前空間を指定する。
<rootElement xmlns="http://segakuin.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://segakuin.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>
HTML5以降はXHTML風の書き方もできるが、XML名前空間は定義されていない。
RSSでは、次に示すXML名前空間を使用する。
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
sitemap.xmlでは、次に示すXML名前空間を使用する。
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
SOAPでは、次に示すXML名前空間を使用する。
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
svg要素では、次に示すXML名前空間を使用する。
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
WSDLでは、次に示すXML名前空間を使用する。
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
XHMLでは、次に示すXML名前空間を使用する。
<html xmlns="http://www.w3.org/1999/xhtml">
XMLスキーマでは、次に示すXML名前空間を使用する。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
XSLTでは、次に示すXML名前空間を使用する。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">