②XMLスキーマで文字列長の定義
XMLスキーマで、項目値、属性値の文字列長をチェックしてみます。
簡単なサンプルを作ってみます。
■StringLength.xml
<?xml version="1.0" encoding="UTF-8"?> <greeting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StringLength.xsd" attribute="Hello World!!"> Hello World!! </greeting>
■StringLength.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:minLength value="1" /> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType> </xsd:schema>
文字列長を定義した単純型を追加しました。
<xsd:simpleType name="greetingString"> <xsd:restriction base="xsd:string"> <xsd:minLength value="1" /> <xsd:maxLength value="20" /> </xsd:restriction> </xsd:simpleType>
で、1〜20文字までの文字列型「greetingString」を定義しています。
「xsd:string」型で定義していた箇所を「greetingString」型に変更します。
… <xsd:extension base="xsd:string"> <xsd:attribute name="attribute" type="xsd:string" use="required" /> …
を
… <xsd:extension base="greetingString"> <xsd:attribute name="attribute" type="greetingString" use="required" /> …
に変更します。
これで、
Eclipseで、XMLスキーマ検証してみます。
「StringLength.xml」を開いて、右クリックメニューの「検証」で、XMLスキーマ検証します。
エラーは出ませんね。
StringLength.xmlの
■StringLength.xml
<?xml version="1.0" encoding="UTF-8"?> <greeting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StringLength.xsd" attribute="Hello World!!!!!!!!!!!!!!!!!!!!!!"> Hello World!!!!!!!!!!!!!!!!!!!!!! </greeting>
「StringLength.xsd」では、