デベロッパーズコーナー:エンジニアのためのXMLスキーマ講座「基礎2:新しいデータ型を作る!」(1)
2002年08月07日作成
2002年8月7日更新
(株)日本ユニテック
奥井 康弘
<この記事はDigital
Xpress 2001 Vol.6(12-1月号)に掲載されたものです>
前回は、XML Schema指定として要素宣言、型定義、属性宣言の3つについて説明しました。今回は、データ型について詳しく説明します。特に、文字列のパターンを指定する方法を詳しく説明し、みなさん独自のデータ型を作る「達人」になっていただきます!
要素や属性の構造を定義するのが型定義です。XML Schemaでは、次の2種類の型定義を行うことができます。
● 単純型定義(simple type definition)
● 複合型定義(complex type definition)
複合型定義は、ある要素の内容に出現する要素や属性を定義するために使用します。これについては、前回説明を行いました。今回説明するデータ型は、文字列で表現されるものが、日付を表すのか、時刻を表すのか、数値を表すのか、そしてその数値の範囲は、などなど、単なる任意の文字列という以上の書き方を行わせるような指定をするために使用されます。
日付や時刻や数値という一般的なものは、XML Schema Part 2に前もって用意されたものを使うことができます。これをビルトインデータ型(built-in
datatype)と呼びます。
1.ビルトインデータ型
単純型定義は内容としてテキストしか持たないデータ型を定義します。前回の説明では、要素でテキストだけを内容に持つものとして、xsd:stringやxsd:positiveIntegerというビルトインデータ型を使用しました。
<xsd:element name="name"
type="xsd:string"/>
<name>山田一郎</name>
|
XML Schema規格のPart 2で用意されているビルトインデータ型の種類とその意味を表1に示します。
<表1.XML Schema Part 2 で定義されているビルトインデータ型>
型
|
説明
|
xsd:string |
文字列 |
xsd:normalizedString |
連続する空白文字(タブ、改行など)を1つの半角スペースに置き換えた(正規化した)文字列 |
xsd:token |
空白文字で文字列を区切りトークン化した文字列 |
xsd:byte |
1バイト整数で、最小値が-127、最大値が128 |
xsd:unsignedByte |
非負の整数で、最大値が255 |
xsd:base64Binary |
バイナリデータのbase64方式による表記 |
xsd:hexBinary |
バイナリデータの16進数による表記 |
xsd:integer |
整数 |
xsd:positiveInteger |
正の整数 |
xsd:negativeInteger |
負の整数 |
xsd:nonNegativeInteger |
非負の整数 |
xsd:nonPositiveInteger |
非正の整数 |
xsd:int |
4バイト整数で、最小値が-2147483648、最大値が2147483647 |
xsd:unsignedInt |
非負の整数で、最大値が4294967295 |
xsd:long |
8バイト整数、最小値が-9223372036854775808、最大値が9223372036854775807 |
xsd:unsignedLong |
非負の整数で、最大値が18446744073709551615 |
xsd:short |
2バイト整数で、最小値が-32768、最大値が32767 |
xsd:unsignedShort |
非負の整数で、最大値が65535 |
xsd:decimal |
10進数 |
xsd:float |
単精度の32ビット浮動小数 |
xsd:double |
倍精度の64ビット浮動小数 |
xsd:Boolean |
ブール値 |
xsd:time |
時刻 hh:mm:ss.sss±hh:mm 例13:20:00-05:00 |
xsd:datetime |
日付と時刻 CCYY-MM-DDThh:mm:ss.sss±hh:mm |
xsd:duration |
特定の期間の時間 PnYnMnDTnHnMnS |
xsd:date |
日付 CCYY-MM-DD |
xsd:gMonth |
月 --MM-- |
xsd:gYear |
年 CCYY |
xsd:gYearMonth |
年月 CCYY-MM |
xsd:gDay |
月ごとに繰り返す特定の日付 ---DD |
xsd:gMonthDay |
年ごとに繰り返す特定の日付 --MM-DD |
xsd:Name |
「名前」 |
xsd:QName |
名前空間で定義される修飾名 |
xsd:NCName |
「名前」からコロンを除いたもの |
xsd:anyURI |
URI |
xsd:language |
xml:lang属性値 |
xsd:ID |
識別子 |
xsd:IDREF |
識別子参照値 |
xsd:IDREFS |
複数のIDREFの属性値 |
xsd:ENTITY |
エンティティー参照値 |
xsd:ENTITIES |
複数のエンティティー参照値 |
xsd:NOTATION |
記法属性 |
xsd:NMTOKEN |
名前トークン |
xsd:NMTOKENS |
複数の名前トークン |
これらのビルトインデータ型だけを使ってスキーマを書けば、xsd:elementやxsd:attributeのtype属性でxsd:XXXと指定すれば済みます。
ただし、「社員名簿を作るときに電話番号のパターンをデータ型として表現したい」とか「数字の桁数に制限を設けたい」などのデータ仕様要求が出てくるかもしれません。そのような場合のために、XML
Schemaではユーザーがデータ型を作ることができるような仕組みを持っています。これを行うときに使用するのが、単純型定義(simple
type definition)です。
>>続いて「独自データ型」の定義方法をみてみましょう。
関連サービス
XMLスキーマの策定、作成業務
関連キーワード:
XMLスキーマ
関連キーワード:
データ型