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属性を任意の要素(タグ)に指定することができる。

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

HTML5以降はXHTML風の書き方もできるが、XML名前空間は定義されていない。

RSS

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

sitemap.xmlでは、次に示すXML名前空間を使用する。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

SOAP

SOAPでは、次に示すXML名前空間を使用する。

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">

svg

svg要素では、次に示すXML名前空間を使用する。

<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">

WSDL

WSDLでは、次に示すXML名前空間を使用する。

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

XHML

XHMLでは、次に示すXML名前空間を使用する。

<html xmlns="http://www.w3.org/1999/xhtml">

XMLスキーマ

XMLスキーマでは、次に示すXML名前空間を使用する。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

XSLT

XSLTでは、次に示すXML名前空間を使用する。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">