XML Şeması complexType unsuru

Tanım ve Kullanım

complexType unsuru, karma türü tanımlar. Karma türünün unsurları, diğer unsurlar ve/veya özellikler içeren XML unsurlarıdır.

elemanBilgisi

görünümSıklığı şemada sınırsız; eleman içinde bir kez.
öncekiEleman eleman, yenidenTanımla, şema
içerik tanım, temelİçerik, karmaşıkİçerik, grup, hepsi, seçim, sıra, özellik, özellikGrubu, herhangibirÖzellik

gramer

<complexType
id=ID 
ad=NCAd 
soyut=true|false 
karışık=true|false
blok=(#all|list of (ekleme|kısıtlama))
final=(#all|list of (ekleme|kısıtlama))
herhangi attributes
>
(tanım?, (temelİçerik|karmaşıkİçerik|((grup|hepsi|seçim|sıra), (özellik|özellikGrubu)*, herhangibirÖzellik?)))) 
(tanım?, (temelİçerik|karmaşıkİçerik|((grup|hepsi|seçim|sıra), (özellik|özellikGrubu)*, herhangibirÖzellik?))))
</complexType>

(? işareti complexType elemanında belirtilmiştir, eleman sıfır veya bir kez görünebilir, * işareti elemanın sıfır veya birkaç kez görünebileceğini belirler.)

özellikler

id

opsiyonel. Bu elemanın benzersiz ID'sini belirler.

ad

opsiyonel. Elemanın adını belirler.

soyut

opsiyonel. Örnek belgede karmaşık türün kullanılıp kullanılmadığını belirler. Bu değeri true ise, element doğrudan bu karmaşık türü kullanamaz, aksine bu karmaşık türden türetilmiş karmaşık tür kullanmalıdır. Varsayılan değeri false'dır.

karışık

opsiyonel. Karakter verilerinin karmaşık türün alt elemanları arasında ortaya çıkmasına izin verilip verilmediğini belirler. Varsayılan değeri false'dır.

  • simpleContent elemanı alt eleman ise, mixed özelliği izin verilmez.
  • complexContent elemanı alt eleman ise, bu mixed özelliği complexContent elemanının mixed özelliği tarafından yeniden tanımlanabilir.

blok

opsiyonel. Belirtilen türetilmiş türdeki karmaşık türlerin karmaşık türün yerine kullanılmasını önler. Bu değer #all veya bir listesi içerebilir, bu liste extension veya kısıtlama alt kümesi olabilir:

  • ekleme - karmaşık türün yerine kullanılmak üzere türetilen karmaşık türlerin kullanılmasını önler.
  • kısıtlama - karmaşık türün yerine kullanılmak üzere türetilen karmaşık türlerin kullanılmasını önler.
  • #all - Tüm türetilmiş karmaşık türlerin bu karmaşık türün yerine kullanılmasını önler.

final

Opsiyonel. Belirtilen karmaşık tür elementinden türemek için önlem alınan türleri önler. Bu değer #all veya bir listeyi içerebilir, bu liste genişletme veya sınırlama alt kümeleridir.

  • extension - Genişletme yoluyla türemeyi önler.
  • restriction - Sınırlama yoluyla türemeyi önler.
  • #all - Tüm türetilmişleri (genişletme ve sınırlama) önler.

herhangi attributes

Opsiyonel. Şema dışı adlandırma alanına sahip herhangi bir diğer özelliği belirler.

Örnek

Örnek 1

Örneklerde "note" adlı karmaşık tür elementi var:

<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>

Örnek 2

Örneklerde bir karmaşık tür olan "fullpersoninfo", üç ilave element (address, şehir ve ülke) kullanarak miras alınan türü genişletir ve "personinfo" karmaşık türünden türetilir:

<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>

Yukarıdaki örnekte, yukarıdaki "employee" elemanının "firstname", "lastname", "address", "city" ve "country" elemanlarını sırayla içermesi gerekmektedir: