XML文書中で使うタグなどの規則を事前に取り決めておく仕様としてDTDとXML Schemaがあるということは以前の記事で解説しました。
今回からはそのうちのXML Schemaについて見ていきます。
DTDの問題
DTDはXMLの前身であるSGMLより基本的な構文を受け継いでいる仕様であり、XML文書のために取り決められた仕様ではないため、XML文書とあまり相性が良くありません。
具体的にはDTDには以下のような問題があります。
- DTDはXML構文とは異なる形式で記述される
- DTDはデータ型を持たない
- 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の作成方法について詳しく見ていきます。