XML スキーマのチュートリア...login
XML スキーマのチュートリアル
著者:php.cn  更新時間:2022-04-20 14:13:02

XML スキーマインジケーター


XSD インジケーター


インジケーターを使用すると、ドキュメント内での要素の使用方法を制御できます。


インジケーター

インジケーターには 7 つのタイプがあります:

注文インジケーター:

  • すべて

  • 選択

  • シーケンス

出現インジケーター:

  • 最大発生数

  • 最小発生数

グループインジケーター:

  • グループ名

  • 属性グループ名


順序インジケーター

順序インジケーターは要素の順序を定義するために使用されます。

すべてのインジケーター

<all> このインジケーターは、サブ要素が任意の順序で出現できることを規定し、各サブ要素は 1 回だけ出現する必要があります:

<xs:element name="person"> <xs:complexType>
<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:要素名="メンバー" type="メンバー"/>
</xs:choice>
</xs:complexType>
</xs:element>

シーケンスインジケーター

<sequence> は、子要素が特定の順序で出現する必要があることを指定します:

<xs:element name="person"> <xs:complexType>
<xs:シーケンス>
<xs:要素名="firstname" type="xs:string"/>
<xs:要素名="姓" タイプ="xs:文字列"/>
</xs:シーケンス>
</xs:complexType>
</xs:element>


出現インジケーター

出現インジケーターは、要素の出現頻度を定義するために使用されます。

注: すべての「順序」および「グループ」インジケーター (任意、すべて、選択、シーケンス、グループ名、およびグループ参照) について、maxOccurs と minOccurs のデフォルト値は 1 です。

maxOccurs インジケーター

<maxOccurs> インジケーターは、要素が出現できる最大回数を指定できます:

<xs:element name="person">
<xs:complexType>
<xs:シーケンス>
<xs:要素名="フルネーム" type="xs:string"/>
<xs:要素名="子名" type="xs:string" maxOccurs="10"/>
</xs:シーケンス>
</xs:complexType>
</xs:element>
上記の例は、子要素「child_name」が「person」要素内に少なくとも 1 回出現できることを示しています (minOccurs のデフォルト値は 1)。そして多くても10回。

minOccurs インジケーター

<minOccurs> インジケーターは、要素が出現できる最小回数を指定できます:

<xs:element name="person">
<xs:complexType>
<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 ファイル:

<?xml version="1.0"coding="ISO-8859-1"?>

<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" です:

<?xml version="1.0" encoding="ISO-8859-1"?>
<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>


グループインジケーター

グループインジケーターは、関連する要素のバッチを定義するために使用されます。

要素グループ

要素グループはグループ宣言によって定義されます:

< all、choice、または sequence 要素を定義します。次の例では、「persongroup」という名前のグループを定義します。これは、正確な順序で表示する必要がある一連の要素を定義します:

<xs:group name="persongroup">
<xs:シーケンス>

<xs:要素名="firstname" type="xs:string"/>

<xs:要素名="姓" タイプ="xs:文字列"/>
<xs:要素名="誕生日" type="xs:日付"/>
</xs:シーケンス>
</xs:グループ>

グループを定義した後、別の定義でそれを参照できます:

<xs:group name="persongroup">
<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 name="groupname">
...
</xs:attributeGroup>

次の例では、「personattrgroup」という名前の属性グループを定義します:

<xs:attributeGroup name="personattrgroup">
<xs:属性名="firstname" type="xs:string"/>
<xs:属性名="姓" タイプ="xs:文字列"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

属性グループを定義した後は、次のように別の定義でそれを参照できます。

<xs:attributeGroup name="personattrgroup">
<xs:属性名="firstname" type="xs:string"/>
<xs:属性名="姓" タイプ="xs:文字列"/>
<xs:属性名="誕生日" タイプ="xs:日付"/>
</xs:attributeGroup>

<xs:要素名="人">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>