XML Schemaで一意キーとなる要素・属性を定義する
特定の要素・属性を一意に特定したい場合には、<xsd:unique>要素、<xsd:selector>要素、<xsd:field>要素を用いて一意キーを設定します。これで、データベースの「主キー」と同じ効果を得られます。
カテゴリ | XML Schema | |
関連要素 | <xsd:unique>、<xsd:selector>、<xsd:field> | |
関連記事 | XML Schemaで文字列パターンを定義する XML Schemaで複雑型要素を定義する |
別稿「XML Schemaで文字列パターンを定義する」のbooks.xmlを参照してみてください。<book>要素におけるisbn属性のように、書籍情報データを一意に特定するキー(データベースでいうところの「主キー」)を定義したいというケースは決して少なくありません。
そのようなときに、XML Schemaでは<xsd:unique>要素を用いることで、ドキュメント内で一意なキーを定義できます。具体的な例を見てみましょう。なお、対象となるXML文書は、別稿「XML Schemaで文字列パターンを定義する」で用いたbooks.xmlを使用します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
特定のノードに対して、一意キーの制約条件を定義する一般的な構文は、以下のとおりです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
<xsd:selector>要素は、一意キーの基点となるノードをカレントノードからの相対的なパスで表します。つまり、上記の例では<books>要素を定義しているわけですから、「xpath="book"」とした場合、<books>要素直下の<book>要素を表します。<xsd:field>要素には、実際の一意キーを表すノードを指定します。つまり、この場合は@isbn(isbn属性)です。この指定によって、books.xml内でisbn属性は一意でなければならないことになります。
実際に、妥当性検証を行いたい場合には、別稿「XML SchemaでXML文書の妥当性を検証する」のサンプルを参考にするとよいでしょう。変更個所は、XMLSchemaCache.addメソッドの第2引数(XML Schemaのファイル名)のみです。スキーマ文書を書いてみるだけでは、スキーマ文書そのものの妥当性を判断できませんが、パーサの処理を介することでスキーマの正否を確認できます。
Copyright © ITmedia, Inc. All Rights Reserved.