XML スキーマインジケーター
XSD インジケーター
インジケーターを使用すると、ドキュメント内での要素の使用方法を制御できます。
インジケーター
インジケーターには 7 つのタイプがあります:
注文インジケーター:
すべて
選択
シーケンス
出現インジケーター:
最大発生数
-
最小発生数
グループインジケーター:
グループ名
属性グループ名
順序インジケーター
順序インジケーターは要素の順序を定義するために使用されます。
すべてのインジケーター
<all> このインジケーターは、サブ要素が任意の順序で出現できることを規定し、各サブ要素は 1 回だけ出現する必要があります:
<xs:all>
<xs:要素名="firstname" type="xs:string"/>
<xs:要素名="姓" タイプ="xs:文字列"/>
</xs:all>
</xs:complexType>
</xs:element>
注: <all> インジケーターを使用する場合、<minOccurs> は 0 または 1 に設定できます。は 1 に設定されます (
<choice> インジケーターは、特定の子要素が表示されるか、または別の子要素が表示されるかを指定します (これまたはそのいずれか):
<xs:element name="person"> <xs:complexType><xs:要素名="メンバー" type="メンバー"/>
</xs:choice>
</xs:complexType>
</xs:element>
シーケンスインジケーター
<sequence> は、子要素が特定の順序で出現する必要があることを指定します:
<xs:シーケンス>
<xs:要素名="firstname" type="xs:string"/>
<xs:要素名="姓" タイプ="xs:文字列"/>
</xs:シーケンス>
</xs:complexType>
</xs:element>
出現インジケーター 出現インジケーターは、要素の出現頻度を定義するために使用されます。
注: すべての「順序」および「グループ」インジケーター (任意、すべて、選択、シーケンス、グループ名、およびグループ参照) について、maxOccurs と minOccurs のデフォルト値は 1 です。
maxOccurs インジケーター<maxOccurs> インジケーターは、要素が出現できる最大回数を指定できます:<xs:シーケンス>
<xs:要素名="フルネーム" type="xs:string"/>
<xs:要素名="子名" type="xs:string" maxOccurs="10"/>
</xs:シーケンス>
</xs:complexType>
</xs:element>
<xs:シーケンス>
<xs:要素名="フルネーム" type="xs:string"/>
<xs:要素名="child_name" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:シーケンス>
</xs:complexType>
</xs:element>
上記の例は、子要素「child_name」が「person」要素内に少なくとも 0 回、最大で 10 回出現できることを示しています。
ヒント: 要素の出現回数を無制限にしたい場合は、maxOccurs="unbounded" ステートメントを使用してください:
実際の例:
「Myfamily.xml」という名前の XML ファイル:
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi :noNamespaceSchemaLocation="family.xsd">
<person>
<full_name>Hege Refsnes</full_name>
<child_name>セシリエ</child_name>
</人>
<人>
<full_name>Tove Refsnes</full_name>
<child_name>ヘゲ</child_name>
<child_name>古い</child_name>
<child_name>ジム</child_name>
<child_name>ボルヘ</child_name>
</人>
<人>
<full_name>Stale Refsnes</full_name>
</person>
</persons>
上記の XML ファイルには、「persons」という名前のルート要素が含まれています。このルート要素内に 3 つの「person」要素を定義します。各「person」要素には「full_name」要素が含まれている必要があり、最大 5 つの「child_name」要素を含めることができます。
これはスキーマ ファイル "family.xsd" です:
<xs:schema xmlns:xs="http: / /www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:シーケンス>
<xs:要素名="人" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:要素名="full_name" type="xs:string"/>
<xs:要素名="child_name" type="xs:string"
minOccurs="0" maxOccurs="5"/>
</xs:シーケンス>
</xs:complexType>
</xs:要素>
</xs:シーケンス>
</xs:complexType>
</xs:element>
</xs:schema>
グループインジケーター
グループインジケーターは、関連する要素のバッチを定義するために使用されます。
要素グループ
要素グループはグループ宣言によって定義されます:
<xs:要素名="firstname" type="xs:string"/>
<xs:要素名="姓" タイプ="xs:文字列"/></xs:グループ>
グループを定義した後、別の定義でそれを参照できます:
<xs:シーケンス>
<xs:要素名="firstname" type="xs:string"/>
<xs:要素名="姓" タイプ="xs:文字列"/>
<xs:要素名="誕生日" type="xs:日付"/>
</xs:sequence>
</xs:group>
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:シーケンス>
<xs:group ref="persongroup"/>
<xs:要素名="国" type="xs:string"/>
</xs:sequence>
</xs:complexType>
属性グループ
属性グループは、attributeGroup 宣言によって定義されます:
...
</xs:attributeGroup>
次の例では、「personattrgroup」という名前の属性グループを定義します:
<xs:属性名="firstname" type="xs:string"/>
<xs:属性名="姓" タイプ="xs:文字列"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
属性グループを定義した後は、次のように別の定義でそれを参照できます。
<xs:属性名="firstname" type="xs:string"/>
<xs:属性名="姓" タイプ="xs:文字列"/>
<xs:属性名="誕生日" タイプ="xs:日付"/>
</xs:attributeGroup>
<xs:要素名="人">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>