Ang element ng XML Schema na complexType

Pagsasaayos at paggamit

Ang element ng complexType ay naglalarawan ng isang kompleksong uri. Ang mga elemento ng kompleksong uri ay ang mga XML na mayroong ibang mga elemento at/gan o mga attribute.

mga impormasyon ng elemento

paggapakita sa loob ng arkitektura ay walang hadlang; sa loob ng elemento ay isang beses.
magulang na elemento element, redefine, schema
konten annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute

gramatika

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|list of (extension|restriction))
final=(#all|list of (extension|restriction))
anumang attributes
>
(annotation?,(simpleContent|complexContent|((group|all| 
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>

(? na pagsasalaysay sa complexType na elemento, ang elemento ay maaaring magkaroon ng zero o isang beses.)

attribute

id

optional. Pagtutukoy ng nag-iisang ID ng elemento.

name

optional. Pagtutukoy ng pangalan ng elemento.

abstract

optional. Pagtutukoy kung pwedeng gamitin ang komplikadong uri sa dokumentong instance. Kung ang halaga ay true, ang elemento ay hindi direktang maaaring gamitin ang komplikadong uri, kundi dapat gamitin ang komplikadong uri na nagmula dito. Ang default na halaga ay false.

mixed

optional. Pagtutukoy kung pwedeng makita ang character data sa gitna ng mga anak ng komplikadong uri. Ang default na halaga ay false.

  • Kung ang simpleContent ay isang anak na elemento, ang mixed na attribute ay hindi pinapayagan.
  • Kung ang complexContent ay isang anak na elemento, ang mixed na attribute ay pwedeng maitulak sa mixed na attribute ng complexContent na elemento.

block

optional. Paghahadlangan na gamitin ang komplikadong uri na may tinukoy na uri ng pagpipilipin sa pagpalit ng komplikadong uri. Ang halaga ay maaaring maglalaman ng #all o isang listahan, ang kung saan ay isang subset ng ekspansyon o restriksyon:

  • ekspansyon - paghahadlangan na ang komplikadong uri na ginagamit sa pagpalit ng komplikadong uri.
  • restriksyon - paghahadlangan na ang komplikadong uri na ginagamit sa pagpalit ng komplikadong uri.
  • #all - Iwasan ang lahat ng kompleksong uri ng pagpapasok na magiging kahalili ng kompleksong uri.

final

Opisyal. Iwasan ang pagpapasok ng tinukoy na uri ng complexType. Ang halaga ay maaaring maglaman ng #all o isang listahan, ang kung saan ay isang subset ng extension o restriction.

  • extension - Iwasan ang pagpapasok sa pamamagitan ng pagpapaextension.
  • restriction - Iwasan ang pagpapasok sa pamamagitan ng pagpapasusog.
  • #all - Iwasan ang lahat ng pagpapasok (pagpapaextension at pagpapasusog).

anumang attributes

Opisyal. Tinutukoy ang anumang iba pang attribute na may non-schema na pangalan ng namespace.

Mga halimbawa

Halimbawa 1

Sa mga halimbawa na ito, may isang kompleksong uri ng "note":

<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

Halimbawa 2

Sa mga halimbawa na ito, may isang kompleksong uri ng "fullpersoninfo" na nagpapalawak ng uri ng minahalang uri sa pamamagitan ng tatlong karagdagang elemento (address, city at country), na nanggaling sa isa pang kompleksong uri ng "personinfo":

<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

Sa mga halimbawa sa itaas, ang "employee" na elemento sa itaas ay dapat na maglaman ng mga sumusunod na elemento sa pagkakasunod-sunod: "firstname", "lastname", "address", "city" at "country".