ASCII24 Top ASCII24 Business Center ASCII24 News ASCII24 Review ASCII24 Business Center 携帯24 Mac24 Akiba2GO! デジタル用語辞典 ASCII24 Broadband Center 最新ニュース 特集 事例紹介 コラム NETWORK MAGAZINE ASCII24メールサービス Blogag
ASCII24 - [Main Menu] [Menu 2]


  ASCII24 > Business Center 111
記事/用語/ID検索 

最新ニュース
【お知らせ】 アスキーの新しいPC/IT情報サイト、ASCII.jpがオープン!(2007年1月29日)
【ここが変わったWindows Vista 100連発! Vol.27】 “サービス” タブが追加された “タスクマネージャ” (2007年1月26日)
東芝ダイレクト、Vista搭載の直販専用ノートパソコン春モデルを発表(2007年1月26日)
【フォトレポート】 さらにスリムに進化したソフトバンクモバイルの新機種に触ってきた!(2007年1月26日)
BCN、 “BCN AWARD 2007” の表彰式を開催(2007年1月26日)
ロジクール、省スペース/静音構造のUSBフルキーボード 『Classic Keyboard 200』 を発売(2007年1月26日)
NTTとNTTレゾナント、過去に見たウェブページを再度探し出すソフトを発表(2007年1月26日)
松下電器、パスワードで録音データを保護できるICレコーダー 『RR-US470-K』 など2機種を発売(2007年1月26日)
インテル、802.11nドラフトに準拠した無線LANモジュール “Next-Gen Wireless-N” を発表(2007年1月25日)
【Macworld 2007 Vol.14】 写真で一挙紹介!! 展示会場レポート (ハードウェア編) (2007年1月25日)
【発表会レポート】 ソフトバンクモバイル、最新春モデル14機種58色を発表!!(2007年1月25日)
XP Homeのサポートが2014年まで延長――マイクロソフト、Windows XP Home Editionのサポート提供期間延長を発表(2007年1月25日)
富士フイルム、SD/xD両対応のコンパクトデジタルカメラ3機種を発表(2007年1月25日)
プリンストンテクノロジー、応答速度が5msの22インチWSXGA+液晶ディスプレー 『PTFSAF-22W』 を発売(2007年1月25日)
ネットレイティングス、2006年12月度のインターネット利用動向調査結果を発表――任天堂にアクセスが急増。(2007年1月25日)
シマンテック、セキュリティーソフト “Norton AntiVirus” など3製品をVistaに対応(2007年1月25日)
JPRS、 “駅街ガイド” のアクセスランキングを発表(2007年1月25日)
日本サムスン、応答速度が5msの22インチWSXGA+液晶ディスプレー 『SyncMaster 225BW-R』 を発売(2007年1月25日)
日立、HDDとDVDドライブを搭載した “ハイブリッドカム Wooo” シリーズを4機種発売(2007年1月25日)
ソニーとバンダイ、合弁会社 “株式会社セリウス” を設立(2007年1月25日)
JEITA、2006年のパソコン出荷実績を発表――買い控えで4年ぶりの前年割れに(2007年1月25日)
飛鳥、6in1カードスロットを搭載したポータブルHDD 『Tripper Light』 を発売(2007年1月25日)
D-PA、TV番組のオークションへの違法出品の監視を開始(2007年1月25日)






Contact Information

[PR]
Printable Version コラム / XMLの常識 第7回

XMLの常識

名前空間の基本


2001年3月13日

複数のスキーマを使うには?

XMLを使っていると、複数のスキーマ を混在させて使用したい場面は少なくない。たとえば以下はオンラインソフトのデータをXML形式で保存するために作成したスキーマである。このexplanation(説明)タグの中で表やリストを使いたいといったとき、このスキーマのために表を表現するタグを用意するのは面倒くさい。せっかくXHTMLで表を記述するためのタグが定義されているのだから、それを使い回したほうが効率的だろう。


<?xml version="1.0" encoding="Shift_JIS"?>
<soft>
        <title>スーパー画像ビューア</title>
        <author>山田太郎</author>
        <dl>http://www.fugafuga.com/</dl>
        <explanation>
                <p>
                        強力な機能をそろえた画像ビューア
                </p>
                <p>対応する主な画像形式</p>
                <dl>
                        <dt>BMP</dt>
                        <dd>Windowsの標準フォーマット</dd>
                        <dt>PICT</dt>
                        <dd>Macintoshの標準フォーマット</dd>
                        <dt>JPEG</dt>
                        <dd>デジタルカメラで広く使われるフォーマット</dd>
                </dl>
        </explanation>
</soft>

しかし、ここで注意したいのが<dl>というタグが2つ出てきている点だ。1つはソフトウェアのダウンロード先を示すURLを記述したタグで、<explanation>タグの中にある<dl>タグは用語と定義を表わすHTMLのタグである。また<title>というタグも、HTMLのタグとして定義されている。

意味は違うが名前が同じタグが1つのXML文書の中で複数現われてしまうと、そのXMLを処理するソフトウェアは、そのタグがどの意味で使われているのかを解釈する手だてがない。この例であれば、<dl>というタグが現われたとき、ソフトウェアはその<dl>タグがダウンロード先を表わしているのか、それとも定義リストのタグとして用いられているのか判断が難しい。そこで用意されたのが「Namespaces in XML(名前空間)」という規格である。

人の名前でも、同姓同名というのはそれほど珍しくない。たとえばある教室で「山田太郎」君が2人いた場合、名前のほかに出席番号などその人しか持たない一意な情報も利用して判断することで、同じ山田太郎君でもそれぞれを区別することができる。XMLの名前空間も基本的には同様の仕組みで、タグの名前とそれ以外の情報を使って、そのタグがどのスキーマに属しているのかを判断する仕組みを提供している。

名前空間の中で、一意の情報として利用されるのがURIである。URIが便利なのは、多くの人が自分だけのURLを持っていること。ドメインを登録している人はもちろん、それ以外の人でもプロバイダに入会すればホームページ用のスペースを公開するURLが得られる。このURIと作成したスキーマを結びつければ、ほかのスキーマの同じ名前のタグがあっても、URIを使ってそれぞれをしっかりと区別することができる。

このURIとタグを結びつける方法として用意されているのが、「プリフィックス(接頭辞)」と「デフォルトネームスペース」である。プリフィックスはXML文書中で、ある文字列とURIを関連付け、それぞれのタグには接頭辞だけを記述するという方法だ。その後、それぞれのタグを記述する際に同時にプリフィックスも書いておけば、XML文書を処理するソフトウェアが自動的にプリフィックスをURIに展開してくれる。

プリフィックスとURIを関連付ける方法は、そのURIに属するスキーマを下位ノードとして持っているタグに「xmlns:プリフィックス="URI"」という書式の属性を書き加える。こうして関連付けたプリフィックスは、「<プリフィックス:タグの名前>」という書式で利用する。まずプリフィックスを書き、「:(コロン)」に続けてタグの名前を書くわけだ。以下のようなXMLの場合、aというプリフィックスにhttp://www.hogehoge.com/とい うURIが関連付けされ、「a」というプリフィックスを持つすべてのタグは、http://www.hogehoge.com/というURIの名前空間に属することになる。


<a:soft xmlns:a="http://www.hogehoge.com/">
        <a:title>スーパー画像ビューア</a:title>
        <a:author>山田太郎<a:author>
        <a:dl>http://www.fugafuga.com/</a:dl>
        <a:explanation>強力な機能をそろえた画像ビューア</a:explanation>
</a:soft>

XML文書中で使用するスキーマは1つだが、名前空間を設定しなければならないというような場面では、デフォルトネームスペースを使って宣言するほうが楽だ。これはネームスペースを宣言したノード以下の、名前空間が付加されていないタグはすべてデフォルトネームスペースとして宣言した名前空間に属するというもの。デフォルトネームスペースの宣言の方法は、「xmlns="http://www.hogehoge.com/」のように記述する。つまりプリフィックスの指定をなくしたものと思えばいい。具体的には下記のサンプルのように記述すると、softタグより下位のノードのタグは、すべてhttp://www.hogehoge.com/に属していることになる。


<soft xmlns="http://www.hogehoge.com/">
        <title>スーパー画像ビューア</title>
        <author>山田太郎<author>
        <dl>http://www.fugafuga.com/</dl>
        <explanation>強力な機能をそろえた画像ビューア</explanation>
</soft>

なおデフォルトネームスペースは、複数宣言することもできる。この場合、階層で見てもっとも近い上位ノードのデフォルトネームスペースの宣言がそのタグのネームスペースと判断される。下記のサンプルの場合、<p>タグと<span>タグは、<p>タグで宣言されているデフォルトネームスペース(http://www.w3.org/1999/xhtml)に属することになる。


<soft xmlns="http://www.hogehoge.com/">
        <title>スーパー画像ビューア</title>
        <author>山田太郎<author>
        <dl>http://www.fugafuga.com/</dl>
        <explanation><p xmlns="http://www.w3.org/1999/xhtml"><span style="color : red">強力</span>な機能をそろえた画像ビューア</p></explanation>
</soft>

(インフォテリア株式会社 川添貴生)


[次ページ]

Contents...




advertisement

Copyright (C) 1997-2007 ASCII Corporation. All Rights Reserved.
No portion of this web site may be reproduced or duplicated without the express written permission of ASCII Corporation.
This web site is written in Japanese only.
記事に関するご意見やご質問は、お問い合わせフォームにてお送りください