⑤XMLスキーマで値の有効範囲を定義

XMLスキーマの書き方について、学んだ事を書いていきます。


XMLスキーマで、値の有効範囲をチェックしてみます。
簡単なサンプルを作ってみます。


■ValueRange.xml

<?xml version="1.0"  encoding="UTF-8"?>
<greeting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ValueRange.xsd" attribute="10">100</greeting>


■ValueRange.xsd

<?xml version="1.0"  encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="greeting" type="greetingType" />

  <xsd:complexType name="greetingType">
    <xsd:simpleContent>
      <xsd:extension base="greetingString">
        <xsd:attribute name="attribute" type="greetingString" use="required" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

  <xsd:simpleType name="greetingString">
    <xsd:restriction base="xsd:int">
      <xsd:minInclusive value="10"/>
      <xsd:maxInclusive value="100"/>
    </xsd:restriction>
  </xsd:simpleType>

</xsd:schema>


「greetingString」型を数値にしました。
数値の最小値は「」、数値の最大値は「」で定義します。
最小値、最大値の範囲内であればチェックOKになります。

<xsd:restriction base="xsd:int">
      <xsd:minInclusive value="10"/>
      <xsd:maxInclusive value="100"/>
    </xsd:restriction>


Eclipseで、XMLスキーマ検証してみます。
XMLファイルを開いて、右クリックメニューの「検証」で、XMLスキーマ検証します。


エラーは出ませんね。


ValueRange.xmlタグ値を「101」、attribute属性値を「9」に変更して、検証してみます。
■ValueRange.xml

<?xml version="1.0"  encoding="UTF-8"?>
<greeting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SelectValue.xsd" attribute="9">101</greeting>


「ValueRange.xsd」では、タグ値、attribute属性値は10〜100までの数値なので、検証エラーになります。