目次へ

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は属性値にのみ使用することが強く望まれます。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp