図書館員のコンピュータ基礎講座

XMLスキーマ組み込みデータ型

【2013-12-05更新】

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)があります。

W3Cの文書にXMLスキーマ組み込みデータ型の全体構成図が掲載されていますので参照してください。

プリミティブ・データ型

データ型 説明 制約ファセット
string
(文字列)
XMLの文字列を表します。 ABCDEFG lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
boolean
(ブール値)
2値の論理値を表します。 true、false、1、0 patternwhiteSpaceassertions
decimal
(10進数)
10進数で表現可能な実数のサブセットです。 -1.23、0、123、+12.3、1000.00 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
float
(単精度32ビット浮動小数)
IEEE単精度32ビット浮動小数データ型(IEEE 754-2008)です。 -0、0、12、-3E5、INF、-INF、NaN patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertions
double
(倍精度64ビット浮動小数)
IEEE倍精度64ビット浮動小数データ型(IEEE 754-2008)です。 -0、0、12、-3E5、INF、-INF、NaN patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertions
duration
(経過時間)
経過時間を表します。
ISO 8601に基づき、「PnYnMnDTnHnMnS」の形式をとります。Pは経過を表す記号、nYは年数、nMは月数、nDは日数、Tは日付と時刻の区切り記号、nHは時間数、nMは分数、nSは秒数を表します。
P1Y6M3DT10H15M0S patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertions
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 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertionsexplicitTimezone
time
(時間)
毎日繰り返される時刻(一瞬)を表します。
ISO 8601に基づき、「hh:mm:ss.sss」の形式をとります。hhは時、mmは分、ssは秒、sssはマイクロ秒を表します。
dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。
10:15:00+09:00 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertionsexplicitTimezone
date
(日付)
日付を表します。1日が始まる瞬間から次の日が始まる瞬間(この瞬間は含まない)までの期間です。
dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。
2013-12-31 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertionsexplicitTimezone
gYearMonth
(年月)
グレゴリオ暦の特定の年における特定の月を表します。
「CCYY-MM」の形式をとります。CCは西暦年の上2桁、YYは西暦年の下2桁、MMは月を表します。
dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。
2013-12 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertionsexplicitTimezone
gYear
(年)
グレゴリオ暦の特定の年を表します。
「CCYY」の形式をとります。CCは西暦年の上2桁、YYは西暦年の下2桁を表します。
dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。
2013 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertionsexplicitTimezone
gMonthDay
(月日)
毎年繰り返される月日を表します。
「--MM-DD」の形式をとります。MMは月、DDは日を表します。
dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。
--12-31 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertionsexplicitTimezone
gDay
(日)
毎月繰り返される日を表します。
「---DD」の形式をとります。DDは日を表します。
dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。
---31 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertionsexplicitTimezone
gMonth
(月)
毎年繰り返される月を表します。
「--MM--」の形式をとります。MMは月を表します。
dateTimeと同じく、協定世界時 (UTC) やタイムゾーン・オフセットを記述するオプションもあります。
--12-- patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertionsexplicitTimezone
hexBinary
(16進数のバイナリ・データ)
16進でコード化したバイナリ・データを表します。 0FB7 lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
base64Binary
(Base64方式のバイナリ・データ)
Base64でコード化したバイナリ・データを表します。
RFC 2045外部へのリンクで記述されているコード化から派生したRFC 3548外部へのリンクで定義されているBase64コード化を用いてコード化します。
GpM7 lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
anyURI
(URI)
IRI(Internationalized Resource Identifier Reference)を表します。
値は、絶対的または相対的でありえ、オプションでフラグメント識別子を持つこともできます(つまり、IRI参照でありえる)。RFC 3987外部へのリンクの規定に従い、IRIにはこのデータ型を用いるべきです。
http://www.example.com/index.html#sample lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
QName
(修飾名)
XML名前空間の修飾名を表します。
「名前空間URI:ローカル名」という形式のタプルです。この名前空間URIはanyURIで、ローカル名はNCNameです。
po:Address lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
NOTATION
(表記法)
XMLのNOTATION属性型を表します。
スキーマで宣言されている表記法のQNamesの集合です。
lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions

派生データ型

派生元プリミティブ・データ型 データ型 説明 制約ファセット
string normalizedString
(正規化文字列)
空白が正規化された文字列を表します。
キャリッジ・リターン(#xD)、ライン・フィード(#xA)、タブ(#x9)を含まない文字列の集合です。このデータ型はstringから派生しています。
ABC lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
token
(トークン)
トークン化された文字列を表します。
先頭と末尾に空白(#x20)がなく、2つ以上の連続する空白がない、キャリッジ・リターン(#xD)、ライン・フィード(#xA)、タブ(#x9)を含まない文字列の集合です。このデータ型はnormalizedStringから派生しています。
ABC lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
language
(言語)
BCP 47外部へのリンク(現在はRFC 4646外部へのリンクRFC 4647外部へのリンク)で定義されている自然言語識別子を表します。
「[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*」に適合する文字列の集合です。このデータ型はtokenから派生しています。
en、ja lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
NMTOKEN
(名前トークン)
XMLのNMTOKEN属性型を表します。
XMLのNmtoken生成規則に従ったトークンの集合です。名前文字も1文字目に使用できます。このデータ型はtokenから派生しています。
US、Brésil lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
NMTOKENS
(複数の名前トークン)
XMLのNMTOKENS属性型を表します。
複数のNMTOKENを空白で区切ったトークンの集合です。
US UK、Brésil Canada Mexique lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
Name
(名前)
XMLの名前を表します。
XMLのName生成規則に従った文字列の集合です。このデータ型はtokenから派生しています。
shipTo lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
NCName
(コロンなしの名前)
XMLのコロンのない名前を表します。
XML名前空間のNCName生成規則に従った文字列の集合で、Nameと同様に使用可能な文字のルールに従いますが、コロン(:)は使用できません。このデータ型はNameから派生しています。
USAddress lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
ID
(識別子)
XMLのID属性型を表します。
NCNameと同様にXML名前空間のNCName生成規則に従った文字列の集合で、ドキュメント内で一意でなければなりません。 このデータ型はNCNameから派生しています。
lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
IDREF
(識別子参照値)
XMLのIDREF属性型を表します。
NCNameと同様にXML名前空間のNCName生成規則に従った文字列の集合で、指定されたIDと一致するID属性を持つ要素への参照を表します。このデータ型はNCNameから派生しています。
lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
IDREFS
(複数の識別子参照値)
XMLのIDREFS属性型を表します。
複数のIDREFを空白で区切ったトークンの集合です。
lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
ENTITY
(エンティティー参照値)
XMLのENTITY属性型を表します。
XML名前空間のNCName生成規則に従っており、文書型の定義で未解析のエンティティ―として宣言されている文字列の集合です。このデータ型はNCNameから派生しています。
lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
ENTITIES
(複数のエンティティー参照値)
XMLのENTITIES属性型を表します。
複数のENTITYを空白で区切ったトークンのリストの集合です。
lengthminLengthmaxLengthpatternenumerationwhiteSpaceassertions
decimal integer
(整数)
整数(...,-2,-1,0,1,2,...)
fractionDigitsの値を0に固定し、小数点を認めないことにより、decimalから派生します。値は、オプションで先頭に正符号(+)または負符号(-)が付く10進数のシーケンスで、符号を省略した場合は、正符号が想定されます。
-1、0、12678967543233、+100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
nonPositiveInteger
(正でない整数)
0以下の整数(...,-2,-1,0)
maxInclusiveの値を0に設定することにより、integerから派生します。値は、オプションで先頭に負符号(-)が付く10進数のシーケンスで、0の場合には負符号(-)を省略できます。
-1、0、-12678967543233、-100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
negativeInteger
(負の整数)
負の整数(...,-2,-1)
maxInclusiveの値を-1に設定することにより、nonPositiveIntegerから派生します。値は、負符号(-)が付いた10進数のシーケンスです。
-1、-12678967543233、-100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
long
(64bit整数)
整数(-9223372036854775808~9223372036854775807)
maxInclusiveの値を9223372036854775807に、minInclusiveを-9223372036854775808に設定することにより、integerから派生します。
-1、0、12678967543233、+100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
int
(32bit整数)
整数(-2147483648~2147483647)
maxInclusiveの値を2147483647に、minInclusiveを-2147483648に設定することにより、longから派生します。
-1、0、126789675、+100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
short
(16bit整数)
整数(-32768~32767)
maxInclusiveの値を32767に、minInclusiveを-32768に設定することにより、intから派生します。
-1、0、12678、+10000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
byte
(8bit整数)
整数(-127~128)
maxInclusiveの値を127に、minInclusiveを-128に設定することにより、shortから派生します。
-1、0、126、+100 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
nonNegativeInteger
(負でない整数)
0以上の整数(0,1,2,...)
minInclusiveの値を0に設定することにより、integerから派生します。
1、0、12678967543233、+100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
unsignedLong
(負でない64bit整数)
整数(0~18446744073709551615)
maxInclusiveの値を18446744073709551615に設定することにより、nonNegativeIntegerから派生します。
0、12678967543233、100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
unsignedInt
(負でない32bit整数)
整数(0~4294967295)
maxInclusiveの値を4294967295に設定することにより、unsignedLongから派生します。
0、1267896754、100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
unsignedShort
(負でない16bit整数)
整数(0~65535)
maxInclusiveの値を65535に設定することにより、unsignedIntから派生します。
0、12678、10000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
unsignedByte
(負でない8bit整数)
整数(0~255)
maxInclusiveの値のを255に設定することにより、unsignedShortから派生します。
0、126、100 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
positiveInteger
(正の整数)
正の整数(1,2,...)
minInclusiveの値を1に設定することにより、nonNegativeIntegerから派生します。
1、12678967543233、+100000 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpacetotalDigitsfractionDigitsassertions
duration yearMonthDuration
(年月の経過時間)
年月の経過時間を表します。
ISO 8601の形式を省略した「PnYnM」の形式をとります。Pは経過を表す記号、nYは年数、nMは月数を表します。
P1Y6M patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertions
dayTimeDuration
(日時の経過時間)
日時の経過時間を表します。
ISO 8601の形式を省略した「PnDTnHnMnS」の形式をとります。Pは経過を表す記号、nDは日数、Tは日付と時刻の区切り記号、nHは時間数、nMは分数、nSは秒数を表します。
P3DT10H15M0S patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceassertions
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 patternenumerationminInclusivemaxInclusiveminExclusivemaxExclusivewhiteSpaceexplicitTimezoneassertions

制約ファセット

データ型の制約条件を制約ファセットと呼びます。データ型ごとに使用できるファセットの種類が異なります。

ファセット 説明
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 (エクステンダ) 々、ゝなど、他の文字に付く文字
  • Letterには、半角カタカナ、全角数字、全角英字、記号は含まれません。

このうち、XMLの名前に使用できる文字は、次のとおりと定めてられています。

文字の位置 使用可能文字 説明
1文字目 Letter
アンダーライン(_)
コロン(:)
2文字目以降 Letter
Digit
Combining Character
Extender
ハイフン(-)
アンダーライン(_)
コロン(:)
ピリオド(.)
「名前文字」(Name Characters)と呼びます。
  • 大文字、小文字、大文字・小文字混在に関係なく、「XML」から始まる名前は使用できません。
  • コロン(:)は、名前空間の区切り文字に用いられるため、できるかぎり用いないことをお勧めします。

ポイント
NOTATIONNMTOKENNMTOKENSIDIDREFIDREFSENTITYENTITIESは、元はDTD(ディーティーディー;Document Type Definition = 文書型定義)のデータ型で、DTDとの互換性を保つためにXMLスキーマに導入されました。

基本文書へのリンク

XML
Extensible Markup Language (XML) 1.1 (Second Edition)外部へのリンク (日本語版)
XML名前空間
Namespaces in XML 1.1 (Second Edition)外部へのリンク (日本語版)
参照・参考文献
  • XML schema / Eric van der Vlist著 ; 田村健人[ほか]訳 オライリー・ジャパン, 2003.3 [b]
  • XMLスキーマ書法 / 屋内恭輔, 安陪隆明著 毎日コミュニケーションズ, 2003.6 [b]
ページのトップへ
CyberLibrarian : tips on computer for librarians, 1998-