XML Schema element 元素

定义和用法

element 元素定义一个元素。

元素信息

出现次数 在架构中定义的元素的数目。
父元素 schema、choice、all、sequence
内容 simpleType、complexType、key、keyref、unique

语法

<element
id=ID 
name=NCName
ref=QName
type=QName
substitutionGroup=QName
default=string
fixed=string
form=qualified|unqualified
maxOccurs=nonNegativeInteger|unbounded
minOccurs=inteiroNãoNegativo
nillable=true|false
abstract=true|false 
block=(#all|lista de (extension|restriction))
final=(#all|lista de (extension|restriction))
qualquer atributo
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

(O símbolo ? declara que o elemento pode aparecer zero ou uma vez, o símbolo * declara que o elemento pode aparecer zero ou várias vezes.)

Atributo

id

Opcional. Define um ID único para o elemento.

name

Opcional. Define o nome do elemento. Se o elemento pai for um elemento schema, essa propriedade é necessária.

ref

Opcional. Referência a outro elemento. A propriedade ref pode conter um prefixo de namespace. Se o elemento pai for um elemento schema, não é necessário usar essa propriedade.

type

Opcional. Define o nome do tipo de dados interno ou o nome do elemento simpleType ou complexType.

substitutionGroup

Opcional. Define o nome do elemento que pode substituir esse elemento. Este elemento deve ter o mesmo tipo ou um tipo derivado do tipo especificado.

Não é possível usar essa propriedade se o elemento pai não for um elemento schema.

default

Opcional. Determina um valor padrão para o elemento (apenas quando o conteúdo do elemento é do tipo simples ou textOnly).

fixed

Opcional. Determina um valor fixo para o elemento (apenas quando o conteúdo do elemento é do tipo simples ou textOnly).

form

Opcional. A forma do elemento. O valor padrão é o valor da propriedade elementFormDefault do elemento schema que contém essa propriedade. Este valor deve ser uma das seguintes strings: "qualified" ou "unqualified".

Se o elemento pai for o elemento schema, não pode usar essa propriedade.

  • Se este valor for "unqualified", não é necessário usar um prefixo de namespace para limitar o elemento.
  • Se este valor for "qualified", deve-se usar um prefixo de namespace para limitar o elemento.

maxOccurs

Opcional. Define o número máximo de vezes que o elemento element pode aparecer no elemento pai. Este valor pode ser um inteiro maior ou igual a zero. Se não desejar estabelecer nenhum limite para o número máximo, use a string "unbounded". O valor padrão é 1.

Se o elemento pai for o elemento schema, não pode usar essa propriedade.

minOccurs

Opcional. Define a menor ocorrência que o elemento element pode ter no elemento pai. O valor pode ser um inteiro maior ou igual a zero. O valor padrão é 1.

Se o elemento pai for o elemento schema, não pode usar essa propriedade.

nillable

Opcional. Indica se pode ser atribuído um zero valor explícito a esse elemento. Esta opção se aplica ao conteúdo do elemento e não ao atributo do elemento. O valor padrão é false.

Se nillable for true, permitirá que a instância do elemento possa definir o atributo nil como true. O atributo nil é definido como parte do espaço de nomes XML da instância.

Por exemplo, o próximo trecho define um único elemento e define nillable como true.

<xs:element name="myDate" type="xs:date" nillable="true"/>

O próximo trecho usa esse elemento e tem zero valor explícito (o atributo nil definido como true).

<myDate xsi:nil="true"></myDate>

abstract

Opcional. Indica se o elemento pode ser usado no documento de instância. Se o valor for true, o elemento não pode aparecer no documento de instância. Em vez disso, os outros elementos que contêm o QName da propriedade substitutionGroup dessa elemento devem aparecer na posição do elemento. Múltiplos elementos podem referenciar esse elemento em suas propriedades substitutionGroup. O valor padrão é false.

block

Opcional. Tipo derivado. A propriedade block impede que elementos com o tipo derivado especificado sejam usados para substituir esse elemento. O valor pode conter #all ou uma lista, essa lista é um subconjunto de extension, restriction ou substitution:

  • extension - Evita que elementos derivados por extensão sejam usados para substituir esse elemento.
  • restriction - Evita que elementos derivados por restrição sejam usados para substituir esse elemento.
  • substitution - Evita que elementos derivados por substituição sejam usados para substituir esse elemento.
  • #all - Evita que todos os elementos derivados sejam usados para substituir esse elemento.

final

Opcional. Define o valor padrão da propriedade final do elemento element. Se o elemento pai não for o elemento schema, não pode usar essa propriedade. O valor pode conter #all ou uma lista, essa lista é um subconjunto de extension ou restriction:

  • extensão - impede que elementos derivados por extensão sejam usados para substituir esse elemento
  • restrição - impede que elementos derivados por restrição sejam usados para substituir esse elemento
  • #all - impede que todos os elementos derivados sejam usados para substituir esse elemento

qualquer atributo

Opcional. Especifica qualquer outro atributo com espaço de nomes não do schema.

Exemplo

Exemplo 1

O exemplo a seguir é um schema que contém quatro elementos simples: "fname", "lname", "age" e "dateborn", cujos tipos são string, nonNegativeInteger e date:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="fname" type="xs:string"/>
<xs:element name="lname" type="xs:string"/>
<xs:element name="age" type="xs:nonNegativeInteger"/>
<xs:element name="dateborn" type="xs:date"/>
</xs:schema>

Exemplo 2

O exemplo a seguir é um schema com um elemento de tipo complexo "note". O elemento "note" contém quatro elementos simples: "to", "from", "heading" e "body":

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<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>
</xs:schema>

Exemplo 3

Este exemplo é idêntico ao exemplo 2, mas neste exemplo, optamos por usar a propriedade ref para referenciar o nome do elemento:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="to"/>
      <xs:element ref="from"/>
      <xs:element ref="heading"/>
      <xs:element ref="body"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
<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:schema>