第 1 回:XML 概要
〜 Visual C# による XML チュートリアル 〜
1.1 はじめに
近年、XML は、Web 上でデータ交換の標準フォーマットとして欠かせない存在となり、電子商取引やマルチメディアコンテンツなど幅広い分野で利用されています。例えば、インターネットを利用した映画や音楽の配信に利用されるなど、XML は非常に高い注目を浴びています。また、Visual C# .NET では、データ形式として XML を利用した Web アプリケーション開発のための機能を提供しています。
本連載では、XML の基礎の理解から Web アプリケーション開発までを目的とし、XML と Visual C# .NET の世界を紹介します。本連載は、全 6 回で構成されます。前半では、XML の基本事項を理解し、Visual C# .NET を使用して XML 文書の操作を学びます。後半では、実際の Web アプリケーション開発に必要な技術を紹介します。
本章では、Web アプリケーション開発に必要なXMLの基礎を説明します。前半では、XML の基本事項を学習します。後半では、簡単なサンプル XML 文書の作成方法、XML の活用方法を説明します。
1.2 XML の概要
1.2.1 XML の歴史
SGML (Standard Generalized Markup Language) は、1986 年に ISO (International Organization for Standardization;国際標準化機構) により標準化された文書の論理や意味構造を記述するための言語です。従来、文書ファイルは、文書ファイルを作成するアプリケーションの種類により、文書の論理や意味構造が異なっていました。そのため、アプリケーション間での文書ファイルの共有は、非常に困難でした。そこで、SGML は、文書の論理や意味構造を定義し、異なるアプリケーション間で共有する文書の記述を可能にしました。
HTML (HyperText Markup Language) は、W3C (World Wide Web Consortium) により SGML アプリケーションとして標準化されたマークアップ言語です。HTML は、WWW (World Wide Web) により、急速に普及しました。しかし、HTML の普及は、さらに高度な文書処理や文書の共有、データベース化などの要求を生み出し、HTML の拡張が必要となりました。
そして、SGML のように文書構造を自由に定義ができ、HTML のように Web 上で手軽に使用できる XML (eXtensible Markup Language) が誕生しました。XML は、1998 年に W3C により SGML のサブセットとして標準化された文書の論理や意味構造を記述するための言語です。XML は、Web 上で交換可能なデータ形式として様々な場面で利用されています。例えば、電子商取引の分野では、商品の案内や注文、明細の発行などに XML が利用されています。XML の利用例を図 1 に示します。

図 1. XML の利用例
1.2.2 XML の特徴
XML には、大きく 3 つの特徴があります。まず、最初の特徴としては、文書の構造化が挙げられます。XML は、独自に文書構造の定義が可能であり、データの記述を汎用的に行うことができます。次の特徴としては、タグの柔軟性が挙げられます。XML では、XML 文書の記述する場合、タグを独自に定義できます。これにより、タグが固定的であった HTML とは異なり、データをより汎用的かつ確実に表現することできます。最後の特徴として、XML は、Web 上で手軽に扱うことができます。つまり、XML は、SGML と HTML の特徴を受け継いだメタマークアップ言語であると言えます。XML の特徴を図 2 に示します。

図 2. XML の特徴
1.2.3 XML 文書の構成
XML 文書は、XML 宣言、DTD (Document Type Definition)、XML 文書要素より構成されます。XML 宣言では、この文書がXML 文書であることを宣言します。DTD では、XML 文書の文書構造を定義します。XML 文書要素では、DTD で定義された文書構造に従い、内容を記述します。XML 文書の例を図 3 に示します。

図 3. XML 文書の例
(1) XML 宣言
XML 宣言では、XML 文書であることを示すために、XML のバージョン、文字コード、Standalone 文書宣言を指定します。特に、XML 宣言は、XML 文書内で使用する文字コードを定義するため、間違いの無い様に注意が必要です。XML 宣言の構文を次に示します。
<?xml バージョン 文字コード Standalone 文書宣言 ?>
(2) DTD
DTD とは、XML 文書要素の文書型定義を指します。DTD では、XML 文書要素で使用する要素や属性、エンティティ、記法を定義するため、ルート要素名、外部 DTD、要素型宣言 (element type declaration)、属性リスト宣言 (attribute-list declaration)、エンティティ宣言 (entity declaration)、記法宣言 (notation declaration)を指定します。 XML 文書要素 DTD の構文を次に示します。
<!DOCTYPE ルート要素名 外部DTD [
要素型宣言
属性リスト宣言
エンティティ宣言
記法宣言
]>
(3) XML 文書要素
XML 文書要素では、要素 (element)、属性 (attribute)、空要素 (empty element)、エンティティ参照 (entity reference)、文字参照 (character reference)、コメント文 (comment)、CDATA セクション (CDATA section)、処理命令 (processing instruction) を記述します。
要素には、XML文書要素の論理や意味構造を記述します。要素名は、大文字、小文字の区別をします。要素の内容には、テキストもしくは他の要素を記述します。要素の構文を次に示します。
<要素名> 要素の内容 </要素名>
属性には、要素の付属情報を記述します。属性は、属性名と属性値より構成されます。属性値は、必ず 「”(ダブルクォーテーション)」 もしくは 「’(シングルクォーテーション)」 でくくる必要があります。属性の構文を次に示します。
<要素名 属性名=”属性値” > 要素の内容 </要素名>
空要素には、要素に内容が存在しないことを記述します。空要素の構文を次に示します。
<要素名 [属性] />
エンティティ参照には、文字列やファイルを表すエンティティを記述します。エンティティ参照の構文を次に示します。
&エンティティ名
エンティティ名の一覧を表 1 に示します。
表 1 エンティティ名
| 文字 | エンティティ名 |
| < | lt |
| > | gt |
| & | amp |
| ' | apos |
| " | quot |
文字参照には、文字コードによる文字の参照を記述します。文字コードは、10 進数の場合 &#、16 進数の場合 &x に続いて文字コードを記述します。文字参照の構文を次に示します。

進コード
&x16進コード
コメント文には、XML 文書要素として解釈されない文を記述します。コメント文は、タグの中に指定できません。また、コメント内容には、「-- (ハイフンの連続)」 を指定できません。コメント文の構文を次に示します。
<!-- コメント内容 -->
CDATAセクションには、XML文書要素として論理や意味構造を無視する文を記述します。CDATAセクションの構文を次に示します。
<![CDATA[ 論理や意味構造を無視する文 ]]>
処理命令には、アプリケーションへの処理命令を記述します。処理命令ターゲット名には、命令の対象となるアプリケーション名を指定します。処理内容には、アプリケーション固有の処理内容を指定します。処理命令の構文を次に示します。
<? 処理命令ターゲット名 処理内容 ?>
1.3 サンプル XML 文書の作成
本節では、実際に XML 文書を作成します。サンプル XML 文書は、サンプル XMLDTD、サンプル XML 文書要素の順で作成し、最後に、サンプル XML 文書を Internet Explorer で表示します。
1.3.1 サンプル XMLDTD
本項では、サンプル XML 文書作成の手始めとして、サンプル XML 文書の DTD を作成します。まず、テキストエディタを起動します。そして、テキストエディタへ次のサンプル XMLDTD を記述します。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE season [
<!ELEMENT season (spring|summer|autumn|winter)>
<!ELEMENT spring (january|february|march)>
<!ELEMENT summer (april|may|june)>
<!ELEMENT autumn (july|august|september)>
<!ELEMENT winter (october|november|december)>
<!ELEMENT january (#PCDATA)>
<!ELEMENT february (#PCDATA)>
<!ELEMENT march (#PCDATA)>
<!ELEMENT april (#PCDATA)>
<!ELEMENT may (#PCDATA)>
<!ELEMENT june (#PCDATA)>
<!ELEMENT july (#PCDATA)>
<!ELEMENT august (#PCDATA)>
<!ELEMENT september (#PCDATA)>
<!ELEMENT october (#PCDATA)>
<!ELEMENT november (#PCDATA)>
<!ELEMENT december (#PCDATA)>
]>
最後に、サンプル XMLDTD を保存します。サンプル XMLDTD のファイル名の拡張子は、必ず 「.xml」 にします。ここでは、説明の都合上、ファイル名を 「sample.xml」 に指定します。以上でサンプル XMLDTD の作成は完了です。
サンプル XMLDTD では、season をルート要素とする階層構造にXML文書を定義しています。サンプル XMLDTD で定義したサンプル XML 文書の階層構造を図 4 に示します。

図 4. サンプル XML 文書の階層構造
1.3.2 サンプル XML 文書要素
本項では、サンプル XML 文書の DTD 作成に引き続き、サンプル XML 文書要素を作成します。まず、テキストエディタを起動します。次に、テキストエディタで先ほど作成した 「sample.xml」 ファイルを表示します。そして、サンプル XMLDTD の直後に次のサンプル XML 文書要素を追加します。
<season>
<spring>
<january>1月</january>
<february>2月</february>
<march>3月</march>
</spring>
<summer>
<april>4月</april>
<may>5月</may>
<june>6月</june>
</summer>
<autumn>
<july>7月</july>
<august>8月</august>
<september>9月</september>
</autumn>
<winter>
<october>10月</october>
<november>11月</november>
<december>12月</december>
</winter>
</season>
最後に、サンプル XML 文書要素を 「sample.xml」 ファイルへ上書き保存します。以上でサンプル XML 文書要素の作成は完了です。
1.3.3 サンプル XML 文書の実行
本項では、作成したサンプル XML 文書が正しく記述されているかをチェックするため、Internet Explorer でサンプル XML 文書を表示します。まず、Internet Explorer を起動します。次に、Internet Explorer のメニューから 【ファイル】→【開く】 を選択し、先ほど作成した 「sample.xml」 ファイルを開きます。最後に、作成した XML 文書が正しく記述されていると Internet Explorer に 「sample.xml」 ファイルが表示されます。sample.xml の表示画面を図 5 に示します。

図 5. sample.xml の表示画面
1.4 XML の活用
1.4.1 XML と Web アプリケーション
XML は、文書の意味構造や論理構造を記述するために適した言語であり、異なるアプリケーション間でのデータの共有を可能とすることから様々な場面で活用されています。例えば、Web アプリケーション間でのデータ交換の形式を XML にすることにより、多くの情報の共有や再利用を図ることができます。XML と Web アプリケーションの関係を図 6 に示します。

図 6. XML と Web アプリケーションの関係
1.4.2 XML と .NET プラットフォーム
.NET プラットフォームとは、Web Service や Web アプリケーションの開発・実装・運用を支援するためにマイクロソフトが提供するソフトウェア・プラットフォームです。 .NET プラットフォームでは、XML を利用して .NET プラットフォーム間や .NET プラットフォーム内でのデータ交換を実現しています。また、Visual C# .NET では、デスクトップ・アプリケーションとサーバ・サイド・アプリケーション両方の開発が可能であることから短時間で Web アプリケーション開発の技術を習得できます。つまり、Visual C# .NET と XML を組み合わせることにより、高機能な Web アプリケーション開発を短時間で行うことができます。XML と .NET プラットフォームの関係を図 7 に示します。

図 7. XML と .NET プラットフォームの関係
さらに、Microsoft .NET では、インターネット標準の SOAP/XML プロトコルを利用し、.NET プラットフォーム間で情報交換を行えるようにしたインターネット・アプリケーション・コンポーネントとして、Web Service を提唱しています。Web Service は、インターネット上に存在するコンポーネントとして扱われ、自由にこれらの利用が可能です。Visual C# .NET と Web Service を組み合わせることにより、これまでにない Web の新たな可能性が生まれます。Web Service の概念を図 8 に示します。

図 8. Web Service の概念
1.4.3 XML と Visual Studio .NET
.NET Framework には、XML を操作するための便利なクラスやコントロールが豊富に用意されています。これらの機能を利用することにより、Visual Studio .NET では、XML ファイルを簡単に作成することや XML エディタとして XML ファイルの編集が可能です。XML ファイルの編集画面を図 9 に示します。

図 9. XML ファイルの編集画面
また、Visual Studio .NET では、XML スキーマを視覚的に作成する機能が用意されています。XML スキーマは、XML をベースとした文書の構造を定義する言語の一つであり、従来の DTD にはない仕様を取り込んだスキーマ言語として注目を集めています。XML スキーマの編集画面を図 10 に示します。



図 10. XML スキーマの編集画面
1.5 まとめ
本章では、XML の概要、サンプル XML 文書の作成、XML の活用について解説しました。本章で述べたとおり、XML を利用することで Web アプリケーション間の情報交換や、Web アプリケーションの開発が非常に容易になります。また、 Visual C# .NET に用意されたクラス群や XML 操作機能を利用することにより、 より高度な Web アプリケーションを開発することが可能になります。これからの連載では、XML と Visual C# .NET の機能を解説し、Web アプリケーション開発の手助けとなるような情報を提供します。
著者紹介
田中 成典 (たなか しげのり)
| 1986年 | 関西大学工学部土木工学科卒業 |
| 1988年 | 関西大学大学院工学研究科 土木工学専攻博士課程前期課程修了 |
| 1996年 | 博士 (工学) 授与,関西大学 |
| 1997年 | 関西大学総合情報学部助教授 (現在に至る) |
| 主な著書: | やさしいCのはじめかた,オーム社,1993年 |
| | 建設技術者のための知識情報処理の実践,関西大学出版部,1999年 |
| | DirectX8,工学社,2001年 |
| | ステップアップXML,工学社,2002年 |
| | Linuxアプリケーション入門,森北出版,2002年 ほか |
中山 浩太郎 (なかやま こうたろう)
| 2001年3月 | 関西大学総合情報学部卒業 |
| 2001年4月 | 関西大学大学院総合情報学研究科入学 (現在に至る) |
| 2002年4月 | 同志社女子大学非常勤講師 (現在に至る) |
| 主な著書: | Web工房シリーズ Perlの達人,森北出版,1999年 |
| | DirectX8,工学社,2001年 |
| | Linuxアプリケーション入門,森北出版,2002年 ほか |
石井 健一 (いしい けんいち)
| 1999年4月 | 関西大学総合情報学部総合情報学科入学 (現在に至る) |
| 主な著書: | ステップアップXML活用法,工学社,2002年 |
野中 一希 (のなか かずき)
| 1999年4月 | 関西大学総合情報学部総合情報学科入学 (現在に至る) |
| 2002年1月 | 株式会社関西総合情報研究所入社 (現在に至る) |
中村 健二 (なかむら けんじ)
| 2000年4月 | 関西大学総合情報学部総合情報学科入学 (現在に至る) |
| 2002年4月 | 株式会社関西総合情報研究所入社 (現在に至る) |
|