Elemento complexType do XML Schema

Definição e uso

O elemento complexType define um tipo complexo. O elemento de tipo complexo contém outros elementos e/ou atributos de XML.

元素信息

informações do elemento ocorrência
dentro do esquema é ilimitado; dentro do elemento é uma vez. elemento pai
elemento、redefinir、esquema conteúdo

anotação、simpleContent、complexContent、grupo、todos、escolha、sequência、atributo、grupoAtributo、anyAttribute

gramática
<complexType 
id=ID 
nome=NCName 
abstrato=true|false
mixed=true|false
bloco=(#all|lista de (extensão|restrição))
any attributes
final=(#all|lista de (extensão|restrição))
> 
(especificação?,(simpleContent|complexContent|((grupo|todos|
</complexType>

(? o símbolo de declaração está no elemento complexType, o elemento pode aparecer zero ou uma vez, * o símbolo de declaração indica que o elemento pode aparecer zero ou várias vezes.)

atributo

id

opcional. determina o ID único do elemento.

nome

opcional. determina o nome do elemento.

abstrato

opcional. determina se o tipo complexo pode ser usado na instância do documento. Se o valor for true, o elemento não pode usar diretamente o tipo complexo, mas deve usar um tipo complexo derivado do tipo complexo. O valor padrão é false.

mixed

opcional. determina se dados de caractere podem aparecer entre os subelementos deste tipo complexo. O valor padrão é false.

  • se o elemento simpleContent é um subelemento, não é permitido a propriedade mixed.
  • se o elemento complexContent é um subelemento, a propriedade mixed pode ser sobrescrita pela propriedade mixed do elemento complexContent.

bloco

opcional. impede que tipos complexos com tipo derivado especificado sejam usados para substituir o tipo complexo. Este valor pode conter #all ou uma lista, que é um subconjunto de extensão ou restrição:

  • extensão - impede que tipos complexos derivados por extensão sejam usados para substituir o tipo complexo.
  • restrição - impede que tipos complexos derivados por restrição sejam usados para substituir o tipo complexo.
  • #all - Impede que todos os tipos complexos derivados sejam usados para substituir este tipo complexo.

final

Opcional. Impede que tipos específicos sejam derivados deste elemento complexType. Este valor pode conter #all ou uma lista, que é um subconjunto de extension ou restriction.

  • extension - Impede derivações através de expansões.
  • restriction - Impede derivações através de restrições.
  • #all - Impede todas as derivações (expansões e restrições).

any attributes

Opcional. Especifica qualquer outra propriedade com namespace não-esquema.

Exemplo

Exemplo 1

No exemplo a seguir, há um elemento complexo chamado "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>

Exemplo 2

No exemplo a seguir, há um tipo complexo "fullpersoninfo", que expande o tipo herdado usando três elementos complementares (address, city e country) e é derivado de outro tipo complexo "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>

No exemplo acima, o elemento "employee" deve conter em ordem os seguintes elementos: "firstname", "lastname", "address", "city" e "country".