XML Schemaで選択型の値を定義する
いくつかの値を選択肢として用意しておき、その中から1つの値を選択するような制約を設けるためには、<xsd:restriction>要素と<xsd:enumeration>要素を組み合わせて使います。
カテゴリ | XML Schema | |
関連要素 | <xsd:restriction>、<xsd:enumeration> | |
関連記事 | XML Schemaで複雑型要素を定義する |
例えば、HTMLのalign属性を想定してみましょう。“left”、“center”、“right”のような限られたオプションの中から値を選択して指定しなければならないノード(要素・属性)があります。あらかじめ想定されたオプション値以外を選択した場合には、エラーとすべきケースです。このような選択式のオプションを定義する場合にも、別稿「XML Schemaで複雑型要素を定義する」で紹介した<xsd:restriction>要素を使います。
具体的な例を見てみましょう。なお、対象となるXML文書については、別稿「XML Schemaで文字列パターンを定義する」で用いたbook.xmlを使用します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
要素ノードに対して、選択式の制約条件を定義する一般的な構文は、以下のとおりです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
<xsd:enumeration>要素は、列挙(選択)式のオプション値を指定する際に用います。オプション値は、1つの<xsd:enumeration>要素に対して1つしか指定できませんので、オプション値の種類だけ<xsd:enumeration>要素を列挙する必要があります。
つまり、本稿の例では、<category>要素に対して“ASP.NET”、“PHP”、“JSP&サーブレット”、“その他”の中からいずれかの値を指定できます。逆に、これら以外の値を含む<category>要素が記述された場合には、検証エラーとなります。
実際に、妥当性検証を行いたい場合には、別稿「XML SchemaでXML文書の妥当性を検証する」のサンプルを参考にするとよいでしょう。変更個所は、XMLSchemaCache.addメソッドの第2引数(XML Schemaのファイル名)のみです。スキーマ文書を書いてみるだけでは、スキーマ文書そのものの妥当性を判断できませんが、パーサの処理を介することでスキーマの正否を確認できます。
Copyright © ITmedia, Inc. All Rights Reserved.