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

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 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外部へのリンクで記述されているコード化から派生したRFC 3548外部へのリンクで定義されているBase64コード化を用いてコード化します。
GpM7 length、minLength、maxLength、pattern、enumeration、whiteSpace、assertions
anyURI
(URI)
IRI(Internationalized Resource Identifier Reference)を表します。
値は、絶対的または相対的でありえ、オプションでフラグメント識別子を持つこともできます(つまり、IRI参照でありえる)。RFC 3987外部へのリンクの規定に従い、IRIにはこのデータ型を用いるべきです。
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

派生データ型

派生元プリミティブ・データ型 データ型 説明 例 制約ファセット
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

制約ファセット

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

ファセット 説明
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」から始まる名前は使用できません。
  • コロン(:)は、名前空間の区切り文字に用いられるため、できるかぎり用いないことをお勧めします。

ポイント
NOTATION、NMTOKEN、NMTOKENS、ID、IDREF、IDREFS、ENTITY、ENTITIESは、元は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-