XML > XML > 名前空間(namespace)
名前空間(namespace)とは
要素名や属性名の衝突を防ぐために用いられる。
Namespaces in XML という仕様であり、XML の仕様自体には含まれない。
(衝突例) 本の在庫管理の XML(name 要素は本の名前)と 発行会社の注文書の XML(name 要素は発行会社の名前)とを1つの XML に合わせた場合 <book> <name>XML大全集</name> <name>山田印刷</name> </book> となり、name 要素の区別がつかなくなる |
名前空間のバージョン
勧告日 | 勧告内容 | リンク |
---|---|---|
1999/01/14 | Namespaces in XML | http://www.w3.org/TR/1999/REC-xml-names-19990114 |
2006/08/16 | Namespaces in XML Second Edition | http://www.w3.org/TR/2006/REC-xml-names-20060816 |
2004/02/04 | Namespaces in XML 1.1 | http://www.w3.org/TR/2004/REC-xml-names11-20040204 |
2006/08/16 | Namespaces in XML 1.1 Second Edition | http://www.w3.org/TR/2006/REC-xml-names11-20060816 |
名前空間の書式
xmlns:接頭辞 = "名前空間を示すURI" (例) xmlns:product = "http://www.aaa.co.jp/product" |
名前空間のルール
・接頭辞に : (コロン)を含めない
・接頭辞を xml にすることは出来ない
・名前空間は接頭辞を宣言した要素とその下位要素において有効になる
・URI は実在する URI(URL) である必要はない(名前空間を一意に識別するための ID として用いているだけ)
・一部の要素にだけに名前空間を設定する場合は以下の書式で宣言する
<接頭辞:要素名 xmlns:接頭辞 = "名前空間を示すURI"> (例) <zaiko:name xmlns:zaiko = "http://www.aaa.co.jp/zaiko"> |
名前空間の使用例
使用前 <book> <name>XML大全集</name> <name>山田印刷</name> </book> 使用後 <book xmlns:zaiko="http://www.aaa.co.jp/zaiko" xmlns:hakko="http://www.bbb.co.jp/hakko"> <zaiko:name>XML大全集</zaiko:name> <hakko:name>山田印刷</hakko:name> </book> |
デフォルト名前空間
全ての子要素に接頭辞を追加するのは面倒なので、単一の名前空間であることが
はっきりとしている場合はデフォルト名前空間を用いることが出来る。
名前空間の使用時に接頭辞を省略すると、その XML 文章のデフォルト名前空間になる。
(例) <?xml version="1.0" ?> <product xmlns="http://www.aaa.co.jp/product"> <name>ノート</name> <prise>\100</prise> </product> (例) <?xml version="1.0" ?> <product xmlns="http://www.aaa.co.jp/product" ← デフォルト名前空間 xmlns:returned="http://www.bbb.co.jp/returned"> <returned:name>消しゴム</name> ← "http://www.bbb.co.jp/returned" が使われる <returned:prise>\80</prise> ← "http://www.bbb.co.jp/returned" が使われる <name>ノート</name> ← "http://www.aaa.co.jp/product" が使われる <prise>\100</prise> ← "http://www.aaa.co.jp/product" が使われる </product> |