XMLとは?IT初心者でもすぐわかるXML基礎知識 - 名前空間について理解しよう!

XML/XML DBのサイバーテック:XMLとは?IT初心者でもすぐわかるXML基礎知識 第10回

XMLは、文章の見た目や構造を記述するためのマークアップ言語の一種です。 主にデータのやりとりや管理を簡単にする目的で使われ、記述形式がわかりやすいという特徴があります。
Web技術で頻繁に登場する、HTMLをはじめ、SVG、XHTML、XSLT、RFTなども、 XML と同じマークアップ言語のひとつです。

XMLは、既存の型にとらわれず利用するタグを独自に作成できるのが特徴のひとつです。しかしその一方で、独自に取り決めたことによるタグの重複や混乱なども起こりやすくなってしまいます。そこで、混乱を避けるための仕組みが必要になります。このときに用いられるのが「名前空間(namespace)」という仕組みです。この仕組みによって、業界標準の要素名を利用しながら自社の独自タグを織り交ぜたり、自社内の他部署で作成したタグを流用するなど、名前の衝突を気にせずに柔軟に運用することが可能になります。

▼目次

名前空間について理解しよう!

XMLの大きな特徴のひとつとして、利用するタグを独自に作成できることが挙げられます。既存の型にとらわれず、利用シーンに合わせた柔軟な取り決めが行えるのが独自タグの魅力です。しかしその一方で、それぞれが独自に取り決めたことによるタグの重複や混乱なども起こりやすくなってしまいます。今回は、異なる場所で作成された複数のタグを混在させるときに使われる「名前空間」という仕組みについて解説していきます。

タグの重複とはどういうことか?

タグを独自に取り決められるということは、裏を返せば取り決めの際に周囲との合意を得る必要がないということになります。つまり、統一性のない、その場だけで通用する規格になってしまうということ。したがって、たとえ同じ名前を持つタグであっても、それが異なる場所で取り決められたものであれば、まったく異なる意味をもってくることもあるのです。

たとえば、<タイトル>というタグがあるとします。これがA社では「書籍のタイトル」、B社では「プロジェクトの案件名」というように、場所が変わればタグの表す意味も変わってくるのです。この2つの独自タグを用いるXML文書が、互いに接点を持たない限りはなんの問題もありません。しかしA社とB社が互いにデータを交換するとき、あるいは第3者が両者のXML文書を同時に利用する場合などには、同一のタグに対して複数の意味が重複してしまい、混乱の原因となります。

タグの重複とはどういうことか?

名前空間の仕組み

そこで、異なる場所で取り決められた同一名のタグを混在させる際には、混乱を避けるための仕組みが必要になります。このときに用いられるのが「名前空間(namespace)」という仕組みです。名前空間は同じ場所で取り決められた要素や属性の名前の集合であり、属する名前空間が異なれば同一の要素名・属性名でも異なるものとして扱うことができます。つまり、名前空間を使うことによって、文書の中で使われる<タイトル>タグがA社の意味する「書籍のタイトル」なのか、B社の意味する「プロジェクトの案件名」なのか、明確に区別することができようになるのです。

この仕組みによって、業界標準の要素名を利用しながら自社の独自タグを織り交ぜたり、自社内の他部署で作成したタグを流用するなど、名前の衝突を気にせずに柔軟に運用することが可能になります。XMLの基本として外すことのできない名前空間。より便利に、より効率的にXMLを利用するためにも、必ず押さえておきたい仕組みです。

名前空間の仕組み

名前空間の書き方

さて、それでは実際に名前空間を使用するにはどのように記述すればよいのでしょうか。上述のような重複を回避するためには、まず名前空間自体に識別子を付けて重複をなくします。さらに文書の中で要素名や属性名を使う際にはその識別子とセットにし、どの名前空間に属しているかを明示するという方法が取られます。

<B:item xmlns:B ="http://www.B.co.jp/boo/item">
<B:タイトル>講習会の開催について</B:タイトル>
<A:text xmlns:A="http://www.A.co.jp/foo/text">
<A:資料種別>市販書籍テキスト</A:資料種別>
<A:タイトル>5分でわかるXML超入門</A:タイトル>
<A:ページ数>250</A:ページ数>
</A:text>
</B:item>

この例では、1行目および3行目が名前空間の宣言にあたります。適当な名前(この場合は「A」「B」)を接頭辞(プレフィックス)として宣言し、重複のない識別子としてURIを利用します。URIは世界にひとつしかないものとなっているので、それを指定することで名前空間も重複を避けることができるのです。ただし、このURIで示される場所には、実際に名前空間を定義するファイルは必要ありません。あくまでも区別のために使われているという点に注意が必要です。

続いて、接頭辞をタグと組み合わせることで、そのタグがどの名前空間に属しているかを示します。2行目および5行目でともに<タイトル>タグが使われていますが、それぞれB、Aという接頭辞と組み合わさっているので、前者はBの名前空間に、後者はAの名前空間に属していることがわかります。したがって、両者は同一名の要素でありながら、異なる意味を表すものとしてきちんと区別することができるのです。

なお、宣言した名前空間が有効になるのは、その下位の要素に対してとなります。ルート要素で宣言すれば文書全体に適用されますし、もちろん部分的・局所的な適用も可能。利用スタイルに合わせて名前空間の宣言方法を変えていきましょう。

御相談、ご質問はこちら

サービスご案内資料や、特別資料「マニュアル作成の効率化とコストダウンを実現するポイントとは? 」がダウンロードできます。

最新事例の公開情報や、イベント・セミナー情報をお届けします。

pagetop ボタン
サイバーテックお知らせ画像
©2003 CyberTech corporation ltd. All Rights Reserved.