③XMLスキーマで文字列パターンの定義

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


XMLスキーマで、文字列パターンをチェックしてみます。
簡単なサンプルを作ってみます。


■StringPattern.xml

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


■StringPattern.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:string">
      <xsd:pattern value="[a-zA-Z\s!]+" />
      <xsd:minLength value="1" />
      <xsd:maxLength value="20" />
    </xsd:restriction>
  </xsd:simpleType>

</xsd:schema>


「greetingString」型に文字列パターンの定義を追加します。
文字列パターンは、正規表現で記載します。
半角英字の小文字、大文字、半角スペース、!(exclamation mark)を許容しています。

…
   <xsd:pattern value="[a-zA-Z\s!]+" />


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


エラーは出ませんね。


StringPattern.xmlタグ値とattribute属性値を「Hello World!!123」に変更して、検証してみます。
■StringPattern.xml

<?xml version="1.0"  encoding="UTF-8"?>
<greeting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StringPattern.xsd" attribute="Hello World!!123">
  Hello World!!123
</greeting>


「StringPattern.xsd」では、タグ値とattribute属性値は数字を許容していないので、検証エラーになります。