目次へ

1.2 XML Schema とは

XML Schemaは、DTDに変わるスキーマ言語として、2001年5月2日にW3Cより勧告されました。XMLでのすべてのニーズに対応する唯一のスキーマ言語として開発されたものです。1999年にW3Cより発表されたメモには、XML Schemaの設計方針は、以下のように記述されています。

 XML shema の設計方針

1. DTDより表現力豊か
2. XML文書の構造で表現できる
3. ”XML Schema”自身を表現できるスキーマ言語
4. XMLを処理する、いろいろなアプリケーションにとって扱いやすい
5. 徹底してインターネットで使いやすい
6. 相互運用を行うのに最適化されている
7. 処理するものに負荷がかからないような、シンプルなもの
8. 現在、W3Cより勧告されているXML関連の情報(XML Information Set, links, Namespace, Pointers, Style and Syntax, DOM, HTML, and RDF Schema)に矛盾しないもの

以下に、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のスキーマ言語であるため、主流となるのは必至です。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp