xmlns属性
XHTML(というよりXML)では、1つの文書の中でXHTMLをはじめ、他に定義されたマークアップ言語を複数使用することができます。複数のマークアップ言語を使用する場合、それら複数のマークアップ言語の中で同じ名前のタグが使用されていた場合に衝突が起こる問題が生じます。
例えば、現在、MathMLという数式用のマークアップ言語がありますが、このMathMLで<a>タグが数値を表すと定義されていたとすると、XHTMLの<a>タグと衝突してしまいます。
こういった衝突を防ぐために、XHTMLでは、どのDTDのタグと属性を参照するかを指定するxmlns属性(XMLネームスペース)が用意されています。XHTML文書を作成する場合は、通常、このxmlns属性を<html>に記述しておき、値に「http://www.w3.org/TR/xhtml1」を記述します。
その後、文書中でMathMLの<a>タグを使用したければ、<a>タグのxmlns属性に「http://www.w3.org/1998/Math/MathML」を指定します。
xmlns1.html
<html xmlns="http://www.w3.org/TR/xhtml1">
<head>
<title>xmlns属性の記述例</title>
</head>
<body>
<div>
<a xmlns="http://www.w3.org/1998/Math/MathML">y/x</a>
</div>
<p><a href="http://w-d-l.net/">Webデザインレッスントップページ</a>
</p>
</body>
</html>
上の例では、まず、最初の<html>のxmlns属性をXHTMLのネームスペースに指定することで、文書全体をXHTMLで記述していることを指定します。XHTML(というかXML)に対応しているブラウザは、最初の<a>タグをMathMLの<a>と認識し、2番目の<a>タグをXHTMLの<a>と認識します。
しかし、上の方法では、MathMLの<a>タグを使用するたびにURLを記述しなければならないため、次のような記述法もあります。
xmlns2.html
<html xmlns="http://www.w3.org/TR/xhtml1"
xmlns:math="http://www.w3.org/1998/Math/MathML">
<head>
<title>xmlns属性の記述例その2</title>
</head>
<body>
<div>
<math:a>y/x</a>
</div>
<p><a href="http://w-d-l.net">Webデザインレッスントップページ</a>
</p>
</body>
</html>