③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の
■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」では、