- 4.1 Simple Typeの定義
- 4.2 ビルトイン Simple Type
- 4.3 Simple Typeの作成
- 4.4 Restriction
- 4.5 listとUnion
- 4.6 まとめ
4.2 ビルトイン Simple Type
XML Schemaには、既存のデータベースのデータ型など、使用頻度が高いSimple Typeは用意されています。以下に、XML Schemaで定義されているSimple Typeを示します
数字を表す型には、以下のものがあります。
Simple Type | 例(各例は、カンマで区切られています) | 備考 |
---|---|---|
byte | -1, 126 | (注) |
unsignedByte | 0, 126 | (注) |
base64Binary | GpM7 | |
hexBinary | 0FB7 | |
integer | -126789, -1, 0, 1, 126789 | (注) |
positiveInteger | 1, 126789 | (注) |
negativeInteger | -126789, -1 | (注) |
nonNegativeInteger | 0, 1, 126789 | (注) |
nonPositiveInteger | -126789, -1, 0 | (注) |
int | -1, 126789675 | (注) |
unsignedInt | 0, 1267896754 | (注) |
long | -1, 12678967543233 | (注) |
unsignedLong | 0, 12678967543233 | (注) |
short | -1, 12678 | (注) |
unsignedShort | 0, 12678 | (注) |
decimal | -1.23, 0, 123.4, 1000.00 | (注) |
float | -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN | 単精度32ビット浮動小数と等価 NaNは「数字じゃない」という意味 注) |
double | -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN | 倍精度64ビット浮動小数と等価 注) |
boolean | true, false, 1, 0 |
時や時間を表す型には、以下のものがあります。
Simple Type | 例(各例は、カンマで区切られています) | 備考 |
---|---|---|
time | 13:20:00.000, 13:20:00.000-05:00 | (注) |
dateTime | 1999-05-31T13:20:00.000-05:00 | 世界時間(UTC)から5時間遅れの 東部標準時における1999年3月31日午後1時20分 (注) |
duration | P1Y2M3DT10H30M12.3S | 1年2ヶ月3日10時間30分と12.3秒 |
date | 1999-05-31 | (注) |
gMonth | --05-- | 5月 (注) |
gYear | 1999 | 1999年 (注) |
gYearMonth | 1999-02 | 1999年2月 注) |
gDay | ---31 | 31日 (注) |
gMonthDay | --05-31 | すべての5月31日(注) |
gMonth、gYear型などの名前の先頭の文字は、グレゴリアン暦を表します。
さて、数字や時間を表す型に関しては、ひとつの値を表すのに複数の表現方法が可能な場合があります。例えば、float型で考えてみますと、100と1E2は同じ値"100"を表します。備考欄に(注)と書かれている型がこれにあたります。このタイプのSimple Typeには、ひとつの値に対して、唯一の表現方法が決まるような、「正規のデータフォーマット」が存在します。例えば、float型に関しては、以下のように、「正規の表記方法」が決まっています。
- 基数はEでなくてはならない
- 指数部分の先頭に+や0を記述してはならない
- 指数は整数でなくてはならない
- 仮数部分の先頭に+があってはならない
- 仮数部分は小数点を含まなければならない
- 小数点の左側の数字は1個
- 小数点の右側の数字は最低1個
- 上記2つの条件を満たした上で、先頭や末尾に余計な0がある場合は除く
以下に示すのは、文字列に分類されるデータ型です。
Simple Type | 例(各例は、カンマで区切られています) | 備考 |
---|---|---|
string | Confirm this is electric | |
normalizedString | Confirm this is electric | |
token | Confirm this is electric | |
Name | shipTo | XML 1.0 Name型 |
QName | po:USAddress | XML Namespace のQName |
NCName | USAddress | XML Namespaceの NCName、つまり QNameより接頭辞とコロンを取り除いたもの |
anyURI | http://www.example.com/, http://www.example.com/doc.html#ID5 | |
language | en-GB, en-US, fr | xml:lang属性の値として有効なもの、XML 1.0 で定義されている |
normalizedString 型においては、改行、タブやキャリッジリターンの文字は、スキーマを処理する前にスペースに変換されます。token型においても、normalaizedStiring型と同じ処理が行われます。token型ではさらに、隣接する複数のスペース文字はスペース文字ひとつに置き換えられます。また、先頭や末尾のスペースは削除されます。
NCName(NCはnon colonizedの略)はName型にさらに、「型の途中にコロンを使用してはならない」という制約を加えたものです。QNameは、Quialified Nameの略です。型に、QNameが指定されている場合、アプリケーションには名前とNamespaceの組が渡されます。以下に例を示します。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> ... <xsd:element name="USPrice" type="xsd:decimal"/>
上の例では、type属性は、QName型です。Namespace接頭辞xsdは、http://www.w3.org/2001/XMLSchema Namespaceを表しています。よって、上の文章を処理するXMLパーサは「Namespace http://www.w3/org/2001/XMLSchemaに属するdecimal」という情報を、typeの属性値として渡します。QName型に記述できるのは"Namespace接頭辞 :NCName型の文字列"の形をしたものです。
DTDとの互換性を保つために、DTDで存在した以下の属性値型も用意されています。
Simple Type | 例(各例は、カンマで区切られています) | 備考 |
---|---|---|
ID | XML 1.0の ID 属性型 | |
IDREF | XML 1.0の IDREF 属性型 | |
IDREFS | XML 1.0の IDREFS 属性型 | |
ENTITY | XML 1.0の ENTITY 属性型 | |
ENTITIES | XML 1.0の ENTITIES 属性型 | |
NOTATION | XML 1.0の NOTATION 属性型 | |
NMTOKEN | US, Bresil |
XML 1.0の NMTOKEN 属性型 |
NMTOKENS | US UK, Bresil Canada Mexique |
XML 1.0の NMTOKENS 属性型 |
これらの型は、要素の型としても使用することが可能です。しかし、DTDとXML Schemaの互換性を保つため、 ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENSなどのSimple Typeは属性値にのみ使用することが強く望まれます。