XML Schema complexType-element

Definition och användning

complexType-element definierar komplexa typer. Elementen i den komplexa typen är XML-element som innehåller andra element och/eller egenskaper.

Elementinformation

Antal förekomster Inom ramverket är det obegränsat; inom elementet är det en gång.
Föräldrelement element, omdefiniera, schema
Innehåll anteckning, enkelInnehåll, komplexInnehåll, grupp, alla, val, sekvens, egenskap, egenskapsgrupp, allaEgenskaper

Grammatik

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|lista av (utökning|restriktion))
final=(#all|lista av (utökning|restriktion))
alla attribut
>
(anteckning?,(enkelInnehåll|komplexInnehåll|((grupp|alla| 
choice|sequence)?,((egenskap|egenskapsgrupp)*,allaEgenskaper?))))
</complexType>

(? Teckenförklaringen finns i elementet complexType, elementet kan förekomma noll eller en gång, *-teckenförklaringen kan förekomma noll eller flera gånger.)

Egenskaper

id

Valfritt. Bestämmer det unika ID:t för elementet.

name

Valfritt. Bestämmer elementets namn.

abstract

Valfritt. Bestämmer om den komplexa typen får användas i instansdokumentet. Om värdet är true får inte elementet använda den komplexa typen direkt, utan måste använda en komplex typ som härleds från den komplexa typen. Standardvärdet är false.

mixed

Valfritt. Bestämmer om tecken数据 får förekomma mellan underelementen för den komplexa typen. Standardvärdet är false.

  • Om elementet simpleContent är ett underelement är egenskapen mixed inte tillåten.
  • Om elementet complexContent är ett underelement kan egenskapen mixed skrivas över av egenskapen mixed för elementet complexContent.

block

Valfritt. Förhindra att den komplexa typen med den specificerade härledande typen används för att ersätta den komplexa typen. Värdet kan innehålla #all eller en lista, som är en delmängd av utökning eller restriktion:

  • utökning - Förhindra att den komplexa typen som härleds genom att utöka används för att ersätta den komplexa typen.
  • restriktion - Förhindra att den komplexa typen som härleds genom att begränsa används för att ersätta den komplexa typen.
  • #all - Förhindra att allaled av komplexa typer används för att ersätta denna komplexa typ.

slutgiltigt

Valfritt. Förhindra att specifika typer härstammar från detta komplexa typ element. Värdet kan innehålla #all eller en lista som är en del av utökning eller begränsning.

  • utökning - Förhindra attled genom utökning.
  • begränsning - Förhindra attled genom begränsning.
  • #all - Förhindra allaled (utökning och begränsning).

alla attribut

Valfritt. Specificera eventuella andra attribut med non-schema namnrymd.

Exempel

Exempel 1

I ett exempel har vi en komplex typ element med namnet "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>

Exempel 2

I ett exempel finns en komplex typ "fullpersoninfo" som utökar den innehållande typen genom att använda tre tilläggselement (address, city och country) och härstammar från en annan komplex typ "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>

I de ovanstående exemplen måste "employee"-elementet ovan inkludera följande element i rätt ordning: "firstname", "lastname", "address", "city" och "country".