[XML] XML Schema
XML Schemaの概要
XML Schemaとは:DTDの問題点を解決したスキーマ定義言語
XSD(XML Schema Definition Language):XML Schemaの仕様にしたがってスキーマを記述するための言語
XSD(XML Schema Definition Language):XML Schemaの仕様にしたがってスキーマを記述するための言語
DTDの問題点
- XMLの文法規則に従っていない:DTD独自の文法規則を習得する必要がある
- データ型が少ない:すべて文字データとして扱う。文字列、数値、日付など、要素内容はすべて#PCDATAとして宣言する
- 継承機能がない:同じような定義を何度も記述する必要がある
- 名前空間に対応していない
XML Schemaの仕様
- Part0:Primer…チュートリアル。http://www.w3.org/TR/xmlschema-0/
- part1:Structures…文章構造の記述法、XML文書のスキーマ検証法について定義。http://www.w3.org/TR/xmlschema-1/
- part2:Datatypes…XMLの要素や属性に関連付けられる基本データ型セットを定義。http://www.w3.org/TR/xmlschema-2/
XML Schemaの特徴
- XMLの文法規則に従う
- データ型が豊富で、独自に定義することも可能:要素の階層構造、要素名、属性名、要素や属性のデータ型を定義する。型の派生機能を用いれば、継承機能を実現できる。
- XML文書のデータ構造を定義する
- 名前空間に対応している
XML Schemaの定義手順
- XML宣言:XML SchemaはXMLの文法に従うため、1行目に記述する。
- スキーマ宣言:XML Schemaの名前空間を宣言する。
- データ型定義:要素内容や属性地をデータ型として定義する。データ型定義には、内容に文字データのみを持つ「単純型」と、内容に子要素のみ持つか、あるいは文字データ以外に属性を持つ「複合型」がある。
- 要素宣言:要素名の指定とデータ型を結び付ける。要素宣言には、xs:element要素を使用する。
- 属性宣言:属性名の指定とデータ型を結び付ける。属性値は必ず単純型を指定する。属性宣言には、xs:attribute要素を使用する。
スキーマ宣言
- XML Schema文書のルート要素(スキーマ宣言)はxs:schema
- スキーマ宣言では、XML Schemaの名前空間を宣言
- 名前空間接頭語:「xs」
- 名前空間:「http://www.w3.org/2001/XMLSchema」
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> スキーマの記述 </xs:schema>
※XML Schema文書中で「xs」という名前空間接頭語(プレフィックス)が付いている要素などの指定は、XML Schemaの名前空間に属することを示す。
データ型定義
- 要素内容や属性値は必ず「型」として定義する
- 組み込みデータ型か、独自に定義
- 単純型と複合型がある
- 単純型
- 要素内容に文字データしか持たない(DTDの#PCDATAに相当)→組み込みデータ型。ただし、要素内容が文字データのみで属性を持つ場合は複合型。