デフォルト名前空間

みるくあいらんどっ! > ドキュメント > XML > 基礎だけ学ぶ XML講座 [初心者向け・入門]


デフォルト名前空間

先の節で名前空間を利用しました。しかし、この場合、すべての要素に接頭辞として名前空間の別名を設定しなければなりませんでした。デフォルト名前空間を使用するとシンプルに記述することができる場合があります。

デフォルト名前空間とは、その要素とその子側の要素すべてに、指定した名前空間がデフォルトで適用されるというものです。基本的な書式は次のとおりです。

<要素 xmlns="URI">
	<子要素 属性名="属性値">
	…
</要素>

このように「xmlns」属性を別名を設定せずそのまま使用すれば、デフォルト名前空間として設定されます。子要素が接頭辞なくそのまま使用できていることに着目してください。

サンプル

先の節では、名前空間を使用した例を 2例あげてみましたが、ここではそれぞれについてデフォルト名前空間を使用したものを記述します。なお、デフォルト名前空間を使用するかどうかは、単純に XML文書の記述方法の問題なので、XML文書の記述方法は異なるものの、表現したいものは同じです。

先の節で名前空間を使用した 1つめのサンプルは以下のように書き換えることができます。

<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://www.test.com/xml/document/">
	<p>これは段落です。以下に画像を挿入します。</p>
	<svg xmlns="http://www.w3.org/2000/svg" width="640px" height="400px" version="1.1">
		<rect x="50" y="50" width="250" height="100" fill="blue" />
		<circle cx="200" cy="200" r="100" stroke-width="10" fill="red" stroke="green" />
	</svg>
	<p color="red">これは第 2段落です。以下に画像を挿入します。</p>
	<svg xmlns="http://www.w3.org/2000/svg" width="640px" height="400px" version="1.1">
		<rect x="50" y="50" width="250" height="100" fill="blue" />
		<circle cx="200" cy="200" r="100" stroke-width="10" fill="red" stroke="green" />
	</svg>
</document>

全体として 3ヶ所でデフォルト名前空間を使用しています。デフォルト名前空間はこのように、子要素側(今回は svg要素)で上書きすることができます。

先の節で名前空間を使用した 2つめのサンプルは以下のように書き換えることができます。

<?xml version="1.0" encoding="UTF-8"?>
<document
		xmlns="http://www.test.com/xml/document/"
		xmlns:s="http://www.w3.org/2000/svg">
	<p>これは段落です。以下に画像を挿入します。</p>
	<s:svg width="640px" height="400px" version="1.1">
		<s:rect x="50" y="50" width="250" height="100" fill="blue" />
		<s:circle cx="200" cy="200" r="100" stroke-width="10" fill="red" stroke="green" />
	</s:svg>
	<p color="red">これは第 2段落です。以下に画像を挿入します。</p>
	<s:svg width="640px" height="400px" version="1.1">
		<s:rect x="50" y="50" width="250" height="100" fill="blue" />
		<s:circle cx="200" cy="200" r="100" stroke-width="10" fill="red" stroke="green" />
	</s:svg>
</document>

この例ではワープロ文書側をデフォルト名前空間に設定しています。

最終更新: 2014/03/27 , 公開: 2014/03/27
▲top