XMLスキーマ組み込みデータ型【2013-12-05更新】
W3Cがスキーマ言語として定めているXML Schemaは、要素や属性の値の特性を指定するために、データ型(Datatype)という概念を導入しています。このデータ型により、文字列であるとか、整数であるとか、日付であるなどのデータの型を指定できるようになります。 W3Cの文書にXMLスキーマ組み込みデータ型の全体構成図が掲載されていますので参照してください。
|
データ型 | 説明 | 例 | 制約ファセット |
---|---|---|---|
string (文字列) |
XMLの文字列を表します。 | ABCDEFG | length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
boolean (ブール値) |
2値の論理値を表します。 | true、false、1、0 | pattern、whiteSpace、assertions |
decimal (10進数) |
10進数で表現可能な実数のサブセットです。 | -1.23、0、123、+12.3、1000.00 | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
float (単精度32ビット浮動小数) |
IEEE単精度32ビット浮動小数データ型(IEEE 754-2008)です。 | -0、0、12、-3E5、INF、-INF、NaN | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions |
double (倍精度64ビット浮動小数) |
IEEE倍精度64ビット浮動小数データ型(IEEE 754-2008)です。 | -0、0、12、-3E5、INF、-INF、NaN | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions |
duration (経過時間) |
経過時間を表します。 ISO 8601に基づき、「PnYnMnDTnHnMnS」の形式をとります。Pは経過を表す記号、nYは年数、nMは月数、nDは日数、Tは日付と時刻の区切り記号、nHは時間数、nMは分数、nSは秒数を表します。 |
P1Y6M3DT10H15M0S | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions |
dateTime (日付と時間) |
ある一瞬を表します。 ISO 8601に基づき、「CCYY-MM-DDThh:mm:ss」の形式をとります。CCは西暦年の上2桁、YYは西暦年の下2桁、MMは月、DDは日、Tは日付と時刻の区切り記号、hhは時、mmは分、ss秒を表します。 オプションで、上記形式の直後に「Z」を付けて協定世界時 (UTC) を表したり、協定世界時との差(タイムゾーン・オフセット)を記述して特定の地域の標準時を表すこともできます。地域の標準時を表す場合には、協定世界時(UTC)と現地時刻の差を「+」または「-」の符号を付けて「hh:mm」の形式で記述します。 |
2013-12-31T10:15:00+09:00、2013-12-31T10:15:00Z | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions、explicitTimezone |
time (時間) |
毎日繰り返される時刻(一瞬)を表します。 ISO 8601に基づき、「hh:mm:ss.sss」の形式をとります。hhは時、mmは分、ssは秒、sssはマイクロ秒を表します。 dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。 |
10:15:00+09:00 | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions、explicitTimezone |
date (日付) |
日付を表します。1日が始まる瞬間から次の日が始まる瞬間(この瞬間は含まない)までの期間です。 dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。 |
2013-12-31 | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions、explicitTimezone |
gYearMonth (年月) |
グレゴリオ暦の特定の年における特定の月を表します。 「CCYY-MM」の形式をとります。CCは西暦年の上2桁、YYは西暦年の下2桁、MMは月を表します。 dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。 |
2013-12 | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions、explicitTimezone |
gYear (年) |
グレゴリオ暦の特定の年を表します。 「CCYY」の形式をとります。CCは西暦年の上2桁、YYは西暦年の下2桁を表します。 dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。 |
2013 | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions、explicitTimezone |
gMonthDay (月日) |
毎年繰り返される月日を表します。 「--MM-DD」の形式をとります。MMは月、DDは日を表します。 dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。 |
--12-31 | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions、explicitTimezone |
gDay (日) |
毎月繰り返される日を表します。 「---DD」の形式をとります。DDは日を表します。 dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。 |
---31 | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions、explicitTimezone |
gMonth (月) |
毎年繰り返される月を表します。 「--MM--」の形式をとります。MMは月を表します。 dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。 |
--12-- | pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions、explicitTimezone |
hexBinary (16進数のバイナリ・データ) |
16進でコード化したバイナリ・データを表します。 | 0FB7 | length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
base64Binary (Base64方式のバイナリ・データ) |
Base64でコード化したバイナリ・データを表します。 RFC 2045 ![]() ![]() |
GpM7 | length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
anyURI (URI) |
IRI(Internationalized Resource Identifier Reference)を表します。 値は、絶対的または相対的でありえ、オプションでフラグメント識別子を持つこともできます(つまり、IRI参照でありえる)。RFC 3987 ![]() |
http://www.example.com/index.html#sample | length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
QName (修飾名) |
XML名前空間の修飾名を表します。 「名前空間URI:ローカル名」という形式のタプルです。この名前空間URIはanyURIで、ローカル名はNCNameです。 |
po:Address | length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
NOTATION (表記法) |
XMLのNOTATION属性型を表します。 スキーマで宣言されている表記法のQNamesの集合です。 |
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
データ型の制約条件を制約ファセットと呼びます。データ型ごとに使用できるファセットの種類が異なります。
ファセット | 説明 |
---|---|
length (長さ) |
値の長さを指定 |
minLength (最小の長さ) |
値の長さの最小値を指定 |
maxLength (最大の長さ) |
値の長さの最大値を指定 |
pattern (パターン) |
正規表現を使用したパターンを指定 |
enumeration (列挙) |
列挙(選択)式のオプション値を指定 |
minInclusive (最小値(指定値を含む)) |
値の範囲の最小値(指定値を含む)を指定 |
maxInclusive (最大値(指定値を含む)) |
値の範囲の最大値(指定値を含む)を指定 |
minExclusive (最小値(指定値を含まない)) |
値の範囲の最小値(指定値を含まない)を指定 |
maxExclusive (最大値(指定値を含まない)) |
値の範囲の最大値(指定値を含まない)を指定 |
whiteSpace (空白) |
空白文字の正規化 |
totalDigits (最大桁数) |
最大桁数を指定 |
fractionDigits (小数部の最大桁数) |
小数点数以下の最大桁数を指定 |
assertions (言明) |
指定したXPath式を満たす値に限定 |
explicitTimezone (明確なタイムゾーン) |
タイムゾーン・オフセットが必須(required)か、禁止(prohibited)か、任意(optional)かを制御 |
ポイント
XMLでは、要素名や属性名など名前に使用できる文字は次のとおりに定義されています。
まず、XMLは、ISO/IEC 10646(Unicode)に含まれる文字を次のように分類しています。
分類 | 説明 | ||
---|---|---|---|
Character (文字) | Letter (字) | Base Character (基本文字) | 半角英字、全角ひらがな、全角カタカナ |
Ideographic Character (表意文字) | 漢字など | ||
Digit (数字) | 半角数字 | ||
Combining Character (結合文字) | ダイアクリティカル・マークなど | ||
Extender (エクステンダ) | 々、ゝなど、他の文字に付く文字 |
このうち、XMLの名前に使用できる文字は、次のとおりと定めてられています。
文字の位置 | 使用可能文字 | 説明 |
---|---|---|
1文字目 | Letter アンダーライン(_) コロン(:) |
|
2文字目以降 | Letter Digit Combining Character Extender ハイフン(-) アンダーライン(_) コロン(:) ピリオド(.) |
「名前文字」(Name Characters)と呼びます。 |
ポイント
NOTATION、NMTOKEN、NMTOKENS、ID、IDREF、IDREFS、ENTITY、ENTITIESは、元はDTD(ディーティーディー;Document Type Definition = 文書型定義)のデータ型で、DTDとの互換性を保つためにXMLスキーマに導入されました。