XML

Last Updated 2011/09/21


XML は、Windows アプリケーション開発環境において、すっかり定着してきました。たとえば、Visual Studio のソリューションファイルやプロジェクトファイルは XML 形式になっています。テキストファイルとしてデータ形式を表現できる XML はいろいろな分野で有用性があるものと考えます。

なお、本サイトは .NET Framework を中心とするアプリケーション開発を主要なテーマとして取り上げていますので、このページでも一般的な意味での XML の解説ではなく、.NET Framework の中における XML という視点を維持したいと思います。


XML とは何か

XML は、"Extensible Markup Language" の略です。日本語では、「拡張可能なマーク付け言語」と訳すそうです。XML の仕様は、W3C "World Wide Web Consortium" による勧告 "recommendation" で、XML 1.0 が 1998 年に出ました。XML 1.0 については次のサイトを見てください。多分、これが現時点における XML 1.0 の最新版だと思います。

Extensible Markup Language (XML) 1.0 (Fifth Edition)
W3C Recommendation 26 November 2008

http://www.w3.org/TR/REC-xml/

Note XML 1.1 はすでに公開されていますが、.NET Framework では XML 1.0 だけをサポートします。

さて、"Extensible" は何からの拡張かという問題はありますが、本質的な問題ではないので、さて置くとします。

Note 何からの答えは、SGML "Standard Generalized Markup Language" です。

"Markup" をジーニアス英和辞典で引くと、「商売上の利幅」、「活字の組み指定」、「法案の最終審議」が出てきますが、XML 1.0 の中に、"Markup" に対する定義があります。詳しくはそれを見てもらうほうがいいのですが、簡単に説明すると、開始タグと終了タグとで囲む形式のものです。また、NET Framework SDK の原文の中に、"markup character" とか "element markup" などが出てきます。以上を総合的に考えると、「活字の組み指定」が語源としては一番近いかなあと思います。

"Language" は「言語」と訳しますが、コンピュータ用語としては「プログミングコードを書くときの規則」ぐらいの解釈でいいと思います。

XML で書いたファイルの内容を XML ドキュメントと呼び、ファイルの拡張子は .xml を使います。


XML ドキュメント

XML ドキュメントは、テキストを意味のあるデータとして表現する形式のドキュメントです。ポイントは、「テキスト」と「データ」ですね。テキストファイルは文字コードさえ明らかであれば環境(OS のこと)に依存することなく、読み書きが可能です。しかし、欠点もあります。つまり、テキストは文字の羅列にすぎませんから意味のあるデータとしてテキストの一部を取り出すことができません。そこで、マークアップの登場です。

以下は、XML ドキュメントの例ですが、注文書ドキュメントの中に、「鉛筆」要素があって、その詳細データを「濃さ」、「数量」、「単位」、「単価」の各要素であらわしています。開始タグ "<" と終了タグ ">" で囲んだ範囲をマークアップと呼びます。各要素名はデータの名前と考えていいでしょう。

<?xml version="1.0"?>
<注文書>
  <鉛筆>
    <濃さ>HB</濃さ>
    <数量>2</数量>
    <単位>ダース</単位>
    <単価>900</単価>
  </鉛筆>
</注文書>

なぜ、XML か

XML が注目されるようになった最大の要因は、インターネットを中心とするネットワークの普及です。ネットワークを通じる情報のやり取りの代表例はメールですが、メールであれば単なる文書で問題ありません。メールを書く、あるいは読むのは人間というアプリケーション(?)を通すからです。しかし、メールをコンピュータに読み込ませ、理解するのは不可能ではないとしても簡単ではありません。どんな言葉、どんな方言にも対応しなければならないからです。

メールの内容が商品の注文書だとすると、商品の名前や注文数、支払い方法、配達先などを文字の羅列である文書の中から取り出すことはかなり難しい処理になります。しかし、あらかじめ約束していたマークアップを使えば、迷うことなく、データを取り出すことができます。


XML ドキュメントの検証

「なぜ、XML か」の中で、「あらかじめ約束していたマークアップ」と書きました。XML ドキュメントが「約束」にしたがって書かれているかどうかをチェックすることを XML ドキュメントの検証 "verify" と呼びます。「約束」を XML スキーマと呼びます。

「XML ドキュメント」の項で取り上げたサンプルコードでいえば、鉛筆の濃さは、「濃さ」という要素であらわし、数量は「数量」という要素であらわすという規則に基づいていれば、この XML ドキュメントを読み込むアプリケーションは正しいデータを取得できます。もし、「数量」を「個数」としても意味は同じですが、コンピュータに意味が同じかどうかを判断する能力はありません。そこで、XML スキーマで注文数に対しては「数量」を使うと規定しておいて、XML ドキュメントを検証すれば「個数」が間違っていることが分かります。


XML スキーマ

XML スキーマ "XML Schema" は、XML ドキュメントの構造を定義するものです。XML スキーマは通常テキストファイルとして作成します。ファイルの拡張子は .xsd です。以下は、「XML ドキュメント」の項で示した XML ドキュメントのための XSD ファイルで、XmlSchemaInference クラスを使って自動的に作成しました。

<?xml version="1.0"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="注文書">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="鉛筆">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="濃さ" type="xsd:string" />
              <xsd:element name="数量" type="xsd:unsignedByte" />
              <xsd:element name="単位" type="xsd:string" />
              <xsd:element name="単価" type="xsd:unsignedShort" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

注文書を発送する側がこの XSD ファイルを使って、注文書を正しく作成したかどうかをチェックします。同様に、注文書を受け取る側もこの XSD ファイルを使って XML ドキュメントをチェックすることでデータを正しくやり取りすることができます。これが XML スキーマの役割です。


XML スタイルシート

HTML ドキュメントには、CSS "Cascading Style Sheets" 形式のスタイルシートがありますが、XML ドキュメントにもスタイルシートがあります。XML スタイルシートを定義するときに使用する言語を XSL "Extensible Stylesheet Language" と呼びます。XSL を使って XML ドキュメントにスタイルを適用することを XSLT "XML Transformation" と呼びます。以後、簡単のため、XML スタイルシート自体、あるいはそれを XML ドキュメントに適用することを XSLT と呼ぶことにします。

XSLT を定義する XSLT ファイルの拡張子は .xsl(.xslt を使う人もいますが、.NET Framework では .xsl でいいと思います)です。


XSLT の役割

XML ドキュメントはある規則に基づいてはいますが、データの集合にすぎません。HTML ドキュメントであれば、フォントや文字色などの情報を持ちますから WEB ブラウザを使えばドキュメントを整形して表示することができます。しかし、XML ドキュメントはそのような情報を持ちません。そこで、XSLT です。XSLT を使えば、HTML ドキュメントと同じような表現力豊かな表示が可能となります。たとえば、表形式でデータを表示するなどです。

表現力豊かなテキスト形式のドキュメントの代表例は、HTML ドキュメントです。したがって、XSLT は XML ドキュメントの内容を HTML 形式に変換すると言い換えてもかまいません。事実、それがもっとも現実的な方法です。HTML ドキュメントであれば環境に依存することなく、WEB ブラウザを利用すれば表示可能だからです。

XSLT には XML ドキュメントの HTML 化のほかに、もう一つの役割があります。元の XML ドキュメントから一部のデータを取り出して、別の XML ドキュメントを作成する。あるいは、単なるテキストを作成することもできます。

要するに、XSLT はテキスト形式の出力に限られますが、任意のドキュメントとして出力が可能です。


XML ドキュメントを表示可能なアプリケーション

Windows 環境において、XML ファイルをダブルクリックするとインターネットエクスプローラが起動するはずです。ただし、XML ファイルはテキストファイルですからいつも使っているテキストエディタで表示することもできます。

XML ファイルが XML スタイルシートへの参照を含む場合は HTML ファイルと CSS ファイルとの関係と同様に、XML ドキュメントに対して XSLT が適用されます。これはインターネットエクスプローラが XSLT を処理する機能を持つアプリケーションだからです。

インターネットエクスプローラ以外にこのような機能を持つアプリケーションがあるのかどうかは知りませんが、自作するのは無理でしょうね。スタイルシートがなければ何とかなるかもしれませんが、もはや複雑になりすぎました。

以下は、スタイルシートを適用する XML ドキュメントの例です。ここでは、ファイル名が attribute.xsl の XSL ファイルを読み込んで適用します。こういう XML ドキュメントをダブルクリックすると、インターネットエクスプローラは XSLT を適用した状態で表示します。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="attribute.xsl"?>
<investment>
  <type>stock</type>
  <name>Microsoft</name>
  <price type="high">100</price>
  <price type="low">94</price>
</investment>

XML クラス ライブラリ リファレンス

XML 関係のクラスライブラリリファレンスを NETClass(.NET Framework クラス ライブラリ リファレンス)に収録しています。

−以上−