検索
連載

XML Schemaで値の有効範囲を定義するXMLテクニック集(12)(1/3 ページ)

Share
Tweet
LINE
Hatena

XML Schemaで値の有効範囲を定義する

アイコン

数値のけた数や小数点以下のけた数、数値の範囲チェックなど、数値データに関する範囲制約を規定するには、<xsd:maxInclusive>要素、<xsd:minInclusive>要素、<xsd:maxExclusive>要素、<xsd:minExclusive>要素を利用します。

カテゴリ XML Schema
関連要素 <xsd:restriction>、<xsd:maxInclusive>、<xsd:minInclusive>
関連記事 XML Schemaで文字列長を制約する
XML Schemaで文字列パターンを定義する

 別稿「XML Schemaで文字列長を制約する」で紹介したように、<xsd:maxLength>、<xsd:minLength>、<xsd:length>などの要素を利用することで、ノード値の文字列長を規定できます。しかし、これらの要素では数値のけた数や小数点以下のけた数、数値の範囲チェックなどは行えませんので、注意が必要です。以下のように記述すると、2〜5けたの整数値を定義しているようも見えますが、これは間違いです。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


 <xsd:maxLength>要素、<xsd:minLength>要素、<xsd:length>要素による制約は、文字列、バイナリ、あるいはリストにしか適用することができません

 では、数値データに関する範囲制約を規定したい場合には、どうすればよいのでしょうか。説明の前に、具体的なサンプル例を見る方が早いでしょう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


 上記例の場合、<price>要素のノード値を1000以上10000以下に規定します。<xsd:restriction>要素配下に、制約条件を記述する構文については、すでに別稿「XML Schemaで文字列パターンを定義する」などで紹介しているので、そちらを参照してください。

 それよりも、数値データには多くの制約条件要素が存在しますので、この種類を把握しておくのが先です。以下に、主要な制約要素を挙げてみましょう。

要素名 概要
<xsd:maxInclusive> 指定値以下であること
<xsd:minInclusive> 指定値以上であること
<xsd:maxExclusive> 指定値未満であること
<xsd:minExclusive> 指定値より大きいこと
<xsd:totalDigits> 数値データの総けた数が指定値以下であること
<xsd:fractionDigits> 小数点以下のけた数が指定値以下であること
表 数値データに関する制約条件要素

 ただし、<xsd:totalDigits>要素は精度があらかじめ規定されていない数値データに関してのみ、<xsd:fractionDigits>要素は小数点型で、かつ、精度があらかじめ規定されていない数値データに関してのみ、それぞれ使用することが可能です。

 また、<xsd:maxInclusive>要素、<xsd:minInclusive>要素、<xsd:maxExclusive>要素、<xsd:minExclusive>要素については、数値データのみならず、日付・時刻データの範囲チェックを行う場合にも使用可能です。

実際に、妥当性検証を行いたい場合には、別稿「XML SchemaでXML文書の妥当性を検証する」のサンプルを参考にするとよいでしょう。変更個所は、XMLSchemaCache.addメソッドの第2引数(XML Schemaのファイル名)のみです。スキーマ文書を書いてみるだけでは、スキーマ文書そのものの妥当性を判断できませんが、パーサの処理を介することでスキーマの正否を確認できます。


Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る