myGroup > myProject
 

data 要素

特定のデータ型を明示的に指定する要素

  • 普通のテキストではなく、数値(整数や実数)や URI, Base64 などといった、特殊な形のテキストのみを許容したい場合、それを data要素 として明示します。
  • 要素の中身としても、属性値としても使えます。それぞれ、element要素, attribute要素 の中身として data要素 を記述します。
  • 先祖要素において、 datatypeLibrary 属性 によって、取り込むデータ型ライブラリを明示する必要があります。

属性

type 属性

データ型を指定します(これは必須です)。取り得る値は、ライブラリに完全に依存します。

制約

data 要素は、 Mapping definition の以下の位置のみに現れることができます。

  • - lang:value-of - lang:data -
  • - dat:container - dat:data -
  • - dat:container - lang:value-of - ums:data -

ただし、ここで dat:container は dat:byte, dat:bit, rng:element, rng:attribute などを示しています。以下は obsolete です。

  • - lang:value-of - dat:container - ums:data -

以下の場合は、データが「不定」になります。

  • decode 時の lang:data
  • encode 時の dat:data

子ノード

  • 空要素にした場合、データの制限は type 属性 の内容のみに依存します。
  • param要素 を中身に入れることで、データ型にさらなる制限を附加させることが出来ます。param要素 を複数入れても構いません。

使用例

例 1: プロフィールの作成

プロフィールの作成

W3C XML Schema Part 2 のライブラリを用いた例を紹介致します。尚、param要素 を併用した例に関しては、param要素」の項を御覧ください。

プロフィール に、氏名, 年齢, 誕生日, サイトURI を入れたい場合は、以下のようなスキーマが作られるでしょう(簡単のため、要素の出現順序は固定とします)。

スキーマ例
<?xml version="1.0"?>
<element name="プロフィール" xmlns="http://relaxng.org/ns/structure/1.0"
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 <element name="氏名">
  <data type="string"/> <!-- 通常の文字列 -->
 </element>
 <element name="年齢">
  <data type="integer"/> <!-- データは整数 -->
 </element>
 <element name="誕生日">
  <data type="date"/> <!-- データは日附(ISO 8601形式) -->
 </element>
 <element name="サイト">
  <data type="anyURI"/> <!-- データは URI -->
 </element>
</element>
妥当な XML 文書の一例
<?xml version="1.0"?>
<プロフィール>
 <氏名>真田ゆり子</氏名>
 <年齢>18</年齢>
 <誕生日>1985-05-11</誕生日>
 <サイト>http://www.sanada.org/</サイト>
</プロフィール>
妥当でない XML 文書の一例
<?xml version="1.0"?>
<プロフィール>
 <氏名>金子時男</氏名>
 <年齢>さんじゅうに</年齢> <!-- 整数でない -->
 <誕生日>昭和40年5月1日</誕生日> <!-- ISO 8601 形式でない -->
 <サイト>金子プロ</サイト> <!-- URI でない -->
</プロフィール>

参考文献