W3Cがスキーマ言語として定めているXML Schemaは、要素や属性の値の特性を指定するために、データ型(Datatype)という概念を導入しています。このデータ型により、文字列であるとか、整数であるとか、日付であるなどのデータの型を指定できるようになります。
このページでは、「W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes W3C Recommendation 5 April 2012」であらかじめ定義されている組み込みデータ型(Built-in Datatype)と、データ型を制約するための制約ファセット(Constraining Facet)を紹介します。組み込みデータ型には、プリミティブ・データ型(Primitive Datatype)と、プリミティブ・データ型に制限や拡張を加えた派生データ型(Derived Datatype)があります。
派生元プリミティブ・データ型 |
データ型 |
説明 |
例 |
制約ファセット |
string |
normalizedString
(正規化文字列) |
空白が正規化された文字列を表します。
キャリッジ・リターン(#xD)、ライン・フィード(#xA)、タブ(#x9)を含まない文字列の集合です。このデータ型はstringから派生しています。 |
ABC |
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
token
(トークン) |
トークン化された文字列を表します。
先頭と末尾に空白(#x20)がなく、2つ以上の連続する空白がない、キャリッジ・リターン(#xD)、ライン・フィード(#xA)、タブ(#x9)を含まない文字列の集合です。このデータ型はnormalizedStringから派生しています。 |
ABC |
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
language
(言語) |
BCP 47(現在はRFC 4646とRFC 4647)で定義されている自然言語識別子を表します。
「[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*」に適合する文字列の集合です。このデータ型はtokenから派生しています。 |
en、ja |
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
NMTOKEN
(名前トークン) |
XMLのNMTOKEN属性型を表します。
XMLのNmtoken生成規則に従ったトークンの集合です。名前文字も1文字目に使用できます。このデータ型はtokenから派生しています。
|
US、Brésil |
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
NMTOKENS
(複数の名前トークン) |
XMLのNMTOKENS属性型を表します。
複数のNMTOKENを空白で区切ったトークンの集合です。
|
US UK、Brésil Canada Mexique |
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
Name
(名前) |
XMLの名前を表します。
XMLのName生成規則に従った文字列の集合です。このデータ型はtokenから派生しています。
|
shipTo |
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
NCName
(コロンなしの名前) |
XMLのコロンのない名前を表します。
XML名前空間のNCName生成規則に従った文字列の集合で、Nameと同様に使用可能な文字のルールに従いますが、コロン(:)は使用できません。このデータ型はNameから派生しています。 |
USAddress |
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
ID
(識別子) |
XMLのID属性型を表します。
NCNameと同様にXML名前空間のNCName生成規則に従った文字列の集合で、ドキュメント内で一意でなければなりません。 このデータ型はNCNameから派生しています。
|
|
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
IDREF
(識別子参照値) |
XMLのIDREF属性型を表します。
NCNameと同様にXML名前空間のNCName生成規則に従った文字列の集合で、指定されたIDと一致するID属性を持つ要素への参照を表します。このデータ型はNCNameから派生しています。
|
|
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
IDREFS
(複数の識別子参照値) |
XMLのIDREFS属性型を表します。
複数のIDREFを空白で区切ったトークンの集合です。
|
|
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
ENTITY
(エンティティー参照値) |
XMLのENTITY属性型を表します。
XML名前空間のNCName生成規則に従っており、文書型の定義で未解析のエンティティ―として宣言されている文字列の集合です。このデータ型はNCNameから派生しています。
|
|
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
ENTITIES
(複数のエンティティー参照値) |
XMLのENTITIES属性型を表します。
複数のENTITYを空白で区切ったトークンのリストの集合です。
|
|
length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions |
decimal |
integer
(整数) |
整数(...,-2,-1,0,1,2,...)
fractionDigitsの値を0に固定し、小数点を認めないことにより、decimalから派生します。値は、オプションで先頭に正符号(+)または負符号(-)が付く10進数のシーケンスで、符号を省略した場合は、正符号が想定されます。 |
-1、0、12678967543233、+100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
nonPositiveInteger
(正でない整数) |
0以下の整数(...,-2,-1,0)
maxInclusiveの値を0に設定することにより、integerから派生します。値は、オプションで先頭に負符号(-)が付く10進数のシーケンスで、0の場合には負符号(-)を省略できます。 |
-1、0、-12678967543233、-100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
negativeInteger
(負の整数) |
負の整数(...,-2,-1)
maxInclusiveの値を-1に設定することにより、nonPositiveIntegerから派生します。値は、負符号(-)が付いた10進数のシーケンスです。 |
-1、-12678967543233、-100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
long
(64bit整数) |
整数(-9223372036854775808~9223372036854775807)
maxInclusiveの値を9223372036854775807に、minInclusiveを-9223372036854775808に設定することにより、integerから派生します。 |
-1、0、12678967543233、+100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
int
(32bit整数) |
整数(-2147483648~2147483647)
maxInclusiveの値を2147483647に、minInclusiveを-2147483648に設定することにより、longから派生します。 |
-1、0、126789675、+100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
short
(16bit整数) |
整数(-32768~32767)
maxInclusiveの値を32767に、minInclusiveを-32768に設定することにより、intから派生します。 |
-1、0、12678、+10000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions
|
byte
(8bit整数) |
整数(-127~128)
maxInclusiveの値を127に、minInclusiveを-128に設定することにより、shortから派生します。 |
-1、0、126、+100 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
nonNegativeInteger
(負でない整数) |
0以上の整数(0,1,2,...)
minInclusiveの値を0に設定することにより、integerから派生します。 |
1、0、12678967543233、+100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
unsignedLong
(負でない64bit整数) |
整数(0~18446744073709551615)
maxInclusiveの値を18446744073709551615に設定することにより、nonNegativeIntegerから派生します。 |
0、12678967543233、100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
unsignedInt
(負でない32bit整数) |
整数(0~4294967295)
maxInclusiveの値を4294967295に設定することにより、unsignedLongから派生します。 |
0、1267896754、100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
unsignedShort
(負でない16bit整数) |
整数(0~65535)
maxInclusiveの値を65535に設定することにより、unsignedIntから派生します。 |
0、12678、10000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
unsignedByte
(負でない8bit整数) |
整数(0~255)
maxInclusiveの値のを255に設定することにより、unsignedShortから派生します。 |
0、126、100 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
positiveInteger
(正の整数) |
正の整数(1,2,...)
minInclusiveの値を1に設定することにより、nonNegativeIntegerから派生します。 |
1、12678967543233、+100000 |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、totalDigits、fractionDigits、assertions |
duration |
yearMonthDuration
(年月の経過時間) |
年月の経過時間を表します。
ISO 8601の形式を省略した「PnYnM」の形式をとります。Pは経過を表す記号、nYは年数、nMは月数を表します。 |
P1Y6M |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions |
dayTimeDuration
(日時の経過時間) |
日時の経過時間を表します。
ISO 8601の形式を省略した「PnDTnHnMnS」の形式をとります。Pは経過を表す記号、nDは日数、Tは日付と時刻の区切り記号、nHは時間数、nMは分数、nSは秒数を表します。 |
P3DT10H15M0S |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、assertions |
dateTime |
dateTimeStamp
(日付タイムスタンプ) |
日付と時間のタイムスタンプを表します。
explicitTimezoneの値を必須とすることにより、dateTimeから派生します。
「CCYY-MM-DDThh:mm:ss」の後に「Z」または、「+」ないし「-」の符号が付いた「hh:mm」が続く形式をとります。CCは西暦年の上2桁、YYは西暦年の下2桁、MMは月、DDは日、Tは日付と時刻の区切り記号、hhは時、mmは分、ss秒、Zは協定世界時(UTC)、「+」ないし「-」の符号が付いたhh:mmは、協定世界時との差(タイムゾーン・オフセット)を表します。 |
2013-12-31T10:15:00+09:00、2013-12-31T10:15:00Z |
pattern、enumeration、minInclusive、maxInclusive、minExclusive、maxExclusive、whiteSpace、explicitTimezone、assertions |
ポイント
XMLでは、要素名や属性名など名前に使用できる文字は次のとおりに定義されています。
まず、XMLは、ISO/IEC 10646(Unicode)に含まれる文字を次のように分類しています。
分類 |
説明 |
Character (文字) |
Letter (字) |
Base Character (基本文字) |
半角英字、全角ひらがな、全角カタカナ |
Ideographic Character (表意文字) |
漢字など |
Digit (数字) |
半角数字 |
Combining Character (結合文字) |
ダイアクリティカル・マークなど |
Extender (エクステンダ) |
々、ゝなど、他の文字に付く文字 |
- Letterには、半角カタカナ、全角数字、全角英字、記号は含まれません。
このうち、XMLの名前に使用できる文字は、次のとおりと定めてられています。
文字の位置 |
使用可能文字 |
説明 |
1文字目 |
Letter
アンダーライン(_)
コロン(:) |
|
2文字目以降 |
Letter
Digit
Combining Character
Extender
ハイフン(-)
アンダーライン(_)
コロン(:)
ピリオド(.) |
「名前文字」(Name Characters)と呼びます。 |
- 大文字、小文字、大文字・小文字混在に関係なく、「XML」から始まる名前は使用できません。
- コロン(:)は、名前空間の区切り文字に用いられるため、できるかぎり用いないことをお勧めします。