элемент XML Schema complexType

определение и использование

элемент complexType определяет сложный тип. Элементы сложного типа - это XML элементы, содержащие другие элементы и/или атрибуты.

информация о элементе

количество出现的次数 в схеме не ограничен; в элементе один раз.
родительский элемент element、redefine、schema
содержание annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute

Грамматика

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|список (extension|restriction))
final=(#all|список (extension|restriction))
любые атрибуты
>
(annotation?,(simpleContent|complexContent|((group|all| 
(choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>

(? Символы указания в элементе complexType могут появляться нуль раз или один раз, * Символы указания могут появляться нуль раз или多次.)

Атрибуты

id

Доступно. Определяет уникальный ID элемента.

name

Доступно. Определяет имя элемента.

abstract

Доступно. Определяет, можно ли использовать сложный тип в документе инстанса. Если значение true, то элемент не может напрямую использовать этот сложный тип, а должен использовать сложный тип,派的生 из этого сложного типа. Значением по умолчанию является false.

mixed

Доступно. Определяет, допускается ли наличие символьных данных между подэлементами этого сложного типа. Значением по умолчанию является false.

  • Если элемент simpleContent является подэлементом, то свойство mixed не допускается.
  • Если элемент complexContent является подэлементом, то свойство mixed может быть переписано свойством mixed элемента complexContent.

block

Доступно. Предотвращает использование сложных типов с указанным типом派ределения для замены этого сложного типа. Значение может содержать #all или список, который является подмножеством extension или restriction:

  • extension - Предотвращает использование сложных типов,派的生是通过扩展, для замены этого сложного типа.
  • restriction - Предотвращает использование сложных типов,派的生是通过限制, для замены этого сложного типа.
  • #all - Предотвращает использование всех派derivedых сложных типов для замены этого сложного типа.

final

Доступно. Предотвращает использование派生的类型 из элемента complexType. Значение может содержать #all или список, который является подмножеством extension или restriction.

  • extension - Предотвращает производные через расширения.
  • restriction - Предотвращает производные через ограничения.
  • #all - Предотвращает все производные (расширения и ограничения).

любые атрибуты

Опционально. Определяет любые другие атрибуты с non-schema именем пространства имен.

Пример

Пример 1

В данном примере есть сложный тип элемента с именем "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>

Пример 2

В данном примере есть сложный тип "fullpersoninfo", который расширяет тип наследования, используя три дополнительных элемента (address, city и country), и происходит от другого сложного типа "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>

В примере выше, элемент "employee" должен последовательно содержать следующие элементы: "firstname", "lastname", "address", "city" и "country".