XML Schemaとは

XML文書中で使うタグなどの規則を事前に取り決めておく仕様としてDTDとXML Schemaがあるということは以前の記事で解説しました。
今回からはそのうちのXML Schemaについて見ていきます。

DTDの問題

DTDはXMLの前身であるSGMLより基本的な構文を受け継いでいる仕様であり、XML文書のために取り決められた仕様ではないため、XML文書とあまり相性が良くありません。

具体的にはDTDには以下のような問題があります。

  1. DTDはXML構文とは異なる形式で記述される
  2. DTDはデータ型を持たない
  3. DTDは名前空間をサポートしない

1を解決するために、DTDの構文を覚えなくてはいけませんし、2、3の問題点があるためタグの取り決めには不十分な部分があります。

XML Schema

DTDに変わって新しく策定された仕様がXML Schemaです。XML SchemaはXML文書と同じ文法で記述できるなど、DTDが抱えていた問題点を解決します。

早速、以下のXML文書のタグをXML Schemaによって取り決めてみましょう。

<?xml version="1.0" encoding="UTF-8" ?>
<books>
  <book>
    <title>博士の愛した数式</title>
    <price>4000</price>
  </book>
</books>

このXML文書は一冊の本のデータをあらわしています。この文書のタグをXML Schemaによって取り決めてみます。

<?xml version="1.0" encoding="UTF-8" ?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="books">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="book">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="title" type="xsd:string" />
              <xsd:element name="price" type="xsd:decimal" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

XML Schemaは、「.xsd」という拡張子で保存します。XML SchemaもXML文書ですのでブラウザなどのXMLパーサーによって構文のチェックができます。

XML SchemaはXMLでのすべてのニーズに対応する唯一のスキーマ言語として開発されたものであり、今日において、XML文書の取り決めは、DTDではなくXML Schemaを使用することがほとんどです。次回からはそのXML Schemaの作成方法について詳しく見ていきます。