Элемент 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|список (расширение|ограничение))
любые атрибуты
final=(#all|список (расширение|ограничение))
> 
(annotation?,(simpleContent|complexContent|((group|all|
</complexType>

(? символ объявлен в элементе complexType, элемент может出现 0 или 1 раз, * символ объявлен элемент, который может出现 0 или более раз).

атрибуты

id

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

имя

опционально. Определяет имя элемента.

абстрактный

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

mixed

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

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

блок

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

  • расширение - предотвращает использование производных сложных типов для замены исходного сложного типа.
  • ограничение - предотвращает использование производных сложных типов для замены исходного сложного типа.
  • #all - предотвращает использование всех производных сложных типов для замены данного сложного типа.

final

Опционально. Предотвращает производные指定的 типов от этого сложного типа. Значение может содержать #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".