Xsd-complex-indicators

提供:Dev Guides
移動先:案内検索

XSD-複雑なインジケーター

インジケータは、XMLドキュメントで要素を整理する方法を制御します。 インジケータには7つのタイプがあり、3つの広いカテゴリに分類されます。

注文インジケータ

  • すべて-子要素は任意の順序で出現できます。
  • 選択-子要素の1つだけが発生します。
  • シーケンス-子要素は指定された順序でのみ発生します。

発生インジケータ

  • maxOccurs -子要素はmaxOccurs回だけ発生します。
  • minOccurs -子要素はminOccurs回出現する必要があります。

グループ指標

  • グループ-関連する要素セットを定義します。
  • attributeGroup -関連する属性セットを定義します。

注文インジケータ

<all>を使用すると、学生要素は、XMLドキュメント内で、firstname、lastname、nicknameを持ち、子要素を任意の順序でマークできます。

<xs:complexType name = "StudentType" mixed = "true">
   <xs:all>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:all>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>

<xs:element name = 'student' type = 'StudentType'/>

<choice>を使用すると、学生要素は、XMLドキュメントのfirstname、lastname、nickname、marksのいずれかの子要素のみを持つことができます。

<xs:complexType name = "StudentType" mixed = "true">
   <xs:choice>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:choice>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>

<xs:element name = 'student' type = 'StudentType'/>

<sequence>を使用すると、学生要素は名、姓、ニックネームを持ち、XMLドキュメント内でのみ指定された順序で子要素をマークできます。

<xs:complexType name = "StudentType" mixed = "true">
   <xs:sequence>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:sequence>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>

<xs:element name = 'student' type = 'StudentType'/>

発生インジケータ

<maxOccurs>を使用すると、学生要素はXMLドキュメントで最大2つのニックネームを持つことができます。

<xs:complexType name = "StudentType" mixed = "true">
   <xs:all>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string" maxOccurs="2"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:all>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>

<xs:element name = 'student' type = 'StudentType'/>

<minOccurs>を使用して、学生要素はXMLドキュメントに2つのニックネームを持つ必要があります。

<xs:complexType name = "StudentType" mixed = "true">
   <xs:all>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string" minOccurs="2"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:all>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>

<xs:element name = 'student' type = 'StudentType'/>

グループ指標

<group>は、関連する要素セットをグループ化するために使用されます。 ここでは、名前の一部のグループを作成し、このグループを使用して student 要素を定義しました。

<xs:group name = "infogroup">
   <xs:sequence>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "birthdate" type = "xs:date"/>
   </xs:sequence>
</xs:group>

<xs:element name = "student" type = "studentType"/>

<xs:complexType name = "studentType">
   <xs:sequence>
      <xs:group ref = "infogroup"/>
      <xs:element name = "marks" type = "xs:integer"/>
   </xs:sequence>
</xs:complexType>

<attributeGroup>は、関連する属性セットをグループ化するために使用されます。 ここでは、名前の一部のグループを作成し、このグループを使用して student 要素の属性を定義しました。

<xs:attributeGroup name = "infogroup">
   <xs:sequence>
      <xs:attribute name = "firstname" type = "xs:string"/>
      <xs:attribute name = "lastname" type = "xs:string"/>
      <xs:attribute name = "birthdate" type = "xs:date"/>
   </xs:sequence>
</xs:attributeGroup>

<xs:element name = "student" type = "studentType"/>

<xs:complexType name = "studentType">
   <xs:sequence>
      <xs:attributeGroup ref = "infogroup"/>
      <xs:element name = "marks" type = "xs:integer"/>
   </xs:sequence>
</xs:complexType>