- 1.1 DTDの問題
- 1.2 XML Schema とは
- 1.3 schema要素
- 1.4 まとめ
1.2 XML Schema とは
XML Schemaは、DTDに変わるスキーマ言語として、2001年5月2日にW3Cより勧告されました。XMLでのすべてのニーズに対応する唯一のスキーマ言語として開発されたものです。1999年にW3Cより発表されたメモには、XML Schemaの設計方針は、以下のように記述されています。
XML shema の設計方針 1. DTDより表現力豊か |
以下に、XML Schemaの例を示します。
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/PO1" elementFormDefault="unqualified" attributeFormDefault="unqualified"> <xsd:annotation> <xsd:documentation>Purchase order schema for Example.com.</xsd:documentation> </xsd:annotation> <xsd:element name="purchaseOrder" type="PurchaseOrdertype"/> <xsd:complexType name="PurchaseOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> <xsd:complexType name="USAddress"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="address" type="xsd:string"/> <xsd:element name="zip" type="ZIP"/> </xsd:sequence> <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/> </xsd:complexType> <xsd:simpleType name="ZIP"> <xsd:restriction base="xsd:integer"> <xsd:pattern value="d{5}"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
XML schema : PO1
上の例は、8.1の例で記述したXML文書のスキーマを、XML Schemaで記述したものです。
まず、XML Schemaは現在データベースで使用されている標準的なデータ型をすべて使用できるように設計されています。date型やinteger型といった、データ型を備えています。上の例では、orderDate属性値のデータ型をdate型で宣言しています。さらに、データ型を新たに作成することも可能です。例えば、zip要素は5つの数字である必要があります。このような場合、新たにZIP型というデータ型を作成することができます。スキーマ言語でデータ型の指定ができることにより、XML パーサでデータ型の検証ができるようになります。アプリケーションには、データ型の検証が完了した状態で渡されるため、開発が非常に容易になります。
また、XMLSchemaは、Namespaceに対応しています。よって、複数のNamespaceを使用したXML文書のvalidationが可能です。さらに、要素型、属性型だけではなく、”データ型"にも名前を付けて、モジュール化して再利用可能です。例えば、上の例のsimpleType要素では、ZIP要素を作成しています。このZIPというデータ型を、他のスキーマで再利用することも可能です。
最後に、書式が完全にXMLに対応しています。上の例を見ればわかると思います。
XML Schema は、3つの仕様から構成されています。Part 0 は入門で、 XML Schema とは何か、DTD とはどう異なるのか、そしてどのようにスキーマを構築するのかを解説しています。 Part 1 では、XML 文書の構造を記述するとともに、その内容を制約する方法を提供し、文書のスキーマ適合性を決定するルールを定義しています。 Part 2 では、 XML の要素型や属性に関連づけることのできる基本データ型セットを定義しており、これにより XML ソフトウェアにおいて日付や数値、あるいはその他の情報形式の取り扱いが容易になります。
以上のように、大量に仕様書があることからもわかる通り、XML Schemaは機能が豊富な分、DTDと比べても、非常に複雑で難解なものとなっています。また、データ交換には適している反面、散文等文章を表現するには適していません。このような問題点もありますが、W3C勧告されているXMLのスキーマ言語であるため、主流となるのは必至です。