⑨XMLスキーマで一意キーとなる属性を定義
すっかり忘れていました・・・w
XMLスキーマの書き方について、学んだ事を書いていきます。
XMLスキーマで一意キーとなる属性を定義してみます。
簡単なサンプルを作ってみます。
■Unique.xml
<?xml version="1.0" encoding="UTF-8"?> <itemList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Unique.xsd"> <item id="1"/> <item id="2"/> <item id="3"/> </itemList>
■Unique.xsd
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="itemList" type="itemListType"> <xsd:unique name="itemId"> <xsd:selector xpath="item" /> <xsd:field xpath="@id" /> </xsd:unique> </xsd:element> <xsd:complexType name="itemListType"> <xsd:sequence> <xsd:element name="item" type="itemType" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="itemType"> <xsd:attribute name="id" type="xsd:string" use="required" /> </xsd:complexType> </xsd:schema>
「itemListType」、「itemType」を定義しました。
… <xsd:element name="itemList" type="itemListType"> <xsd:unique name="itemId"> <xsd:selector xpath="item" /> <xsd:field xpath="@id" /> </xsd:unique> </xsd:element> …
Eclipseで、XMLスキーマ検証してみます。
XMLファイルを開いて、右クリックメニューの「検証」で、XMLスキーマ検証します。
エラーは出ませんね。
Unique.xmlの
■Unique.xml
<?xml version="1.0" encoding="UTF-8"?> <nameList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Unique.xsd"> <itemList> <item id="1"/> <item id="2"/> <item id="1"/> </itemList> </nameList>
「Unique.xsd」では、id属性はユニークであると指定しているので、エラーになりますね。