連載
» 2001年05月15日 00時00分 公開

XMLの基礎を理解する10のポイント(2):第二部 XML文書の構造 (4/5)

[加山恵美,@IT]

ポイント#6 同じ名前のタグを区別する方法

 XMLの利点の1つとして、ユーザーが自由にタグを定義できる、ということはすでに説明してきた。これはつまり、同じタグ名でも、XML文書ごとに違う意味を持つタグが存在する可能性を示している。例えば<name>という、ありふれたタグ名が定義されているとしよう。在庫管理データを表すXML文書では、これは「製品名」を示すためのタグなのだが、一方で、取引先の企業から送られてくるXML文書による注文書では、<name>タグが製造元の「会社名」を表すために使われている、ということは十分あり得る。

 もしあるシステムが、この注文書と、在庫管理のXML文書を合わせて、1つのXML文書にして担当者に送る、ということをするときには大きな問題が生じる。つまり、1つのXML文書の中で、「製品名」を指す<name>タグと、「会社名」を指す<name>タグが混在してしまい、区別がつかなくなってしまうからだ。

 XMLの名前空間は、このような問題を解決してくれる。

 名前空間では、こうした同じ名前のタグを区別するために、そのタグを定義した者が設定するURIをタグ名の前に付けることにした。URIとは、いわゆるURLと考えてよい。例えば、<name>タグに対して、<http://www.aaa.com/inventry:name>と、<http://www.bbb.net/order:name>と記述し分けるわけだ。定義者が違えば同じドメイン名になることはないため、必ずURIが異なる。そのため、タグ名も区別できるわけだ。このURIは単に区別のために使っているため、このURIに実際に定義データなどがある必要はまったくない。重複しない文字列を得るために便宜上URIを利用しているだけなのだ。

 実際にはこうしたURIをすべてのタグにいちいち書くのは大変なので、名前空間接頭辞というものに置き換える。

xmlns:inventry="http://www.aaa.com/inventry" 

 としておけば、<inventry:name>と書くだけで<http://www.aaa.com/inventry:name>と同じ効果が得られる。このようにしてXMLは、「タグを独自に定義できる」という特徴を、どこまでも持ち続けることができるのだ。

<item
  xmlns:a="http://aaa.com/inventry/"
  xmlns:b="http://bbb.net/invenrty/" >
  <a:name>スチールラック</a:name>
  <b:name>山田工務店</b:name>
</item>
名前空間を使って同じタグ名を使い分けている

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。