名前空間

名前空間の仕組み

  • 名前空間(Namespace)は、要素や属性の名前が衝突することを避けるための仕組みである。
  • 名前空間を利用したXML文書では、それぞれの要素や属性を区別するため、要素や属性に接頭辞を付けて定義する。

名前空間の書き方

名前空間宣言の書式
<要素名 xmlns:名前空間接頭辞 = "URI">
 ・・・
</要素名>

名前空間に属する要素の書式
<名前空間接頭辞:要素名>
 ・・・
</名前空間接頭辞:要素名>

<?xml version="1.0" encoding="Shift_JIS" ?>
<order xmlns:x="http://sas.com/A"
             xmlns:y="http://sas.com/B">
  <x:name>productA</x:name>
  <x:price>15000</x:price>
  <y:name>Tanaka</y:name>
  <y:address>Yokohama</y:address>
</order>

名前空間の有効範囲

  • 名前空間は、要素自身、もしくはその上位要素で宣言しておかなくてはならない。
  • 上位要素で宣言した名前空間は、下位要素にも引き継がれる。
  • XML文書内のどこからでも使用したい場合は、最上位要素に宣言する。
  • 一部でしか使用しない場合は、要素自身に宣言しておくこともできる。

要素自身に名前空間を定義する書式
<名前空間接頭辞:要素名 xmlns:名前空間接頭辞 = "URI">

<?xml version="1.0" encoding="Shift_JIS" ?>
<order:顧客 xmlns:order="http://sas.com/order">
  <order:address>Yokohama</order:address>
</order:顧客>

デフォルトの名前空間

  • デフォルト名前空間は、宣言した要素及び下位要素で名前空間接頭辞が付いていない場合に適用される。
  • デフォルトの名前空間は属性に適用されない。要素にのみ適用される。

デフォルト名前空間の書式:
<要素名 xmlns="URI">

<?xml version="1.0" encoding="Shift_JIS" ?>
<顧客 xmlns="http://sas.com/order">
  <address>Yokohama</address>
</顧客>

名前空間接頭辞の上書き

名前空間接頭辞は上書きすることができる。上位の要素で宣言した名前空間接頭辞を下位の要素で別の名前空間に上書きすると、その要素以下で使われる名前空間接頭辞は、上書きされた名前空間に属することになる。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License