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=enteroNoNegativo
nillable=true|false
abstract=true|false 
block=(#all|lista de (extension|restriction))
final=(#all|lista de (extension|restriction))
cualquier atributos
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

(El símbolo ? indica que el elemento puede aparecer cero o una vez, mientras que el símbolo * indica que el elemento puede aparecer cero o más veces.)

Atributo

id

Opcional. Define un ID único para este elemento.

name

Opcional. Define el nombre del elemento. Si el elemento padre es un elemento schema, este atributo es obligatorio.

ref

Opcional. Referencia a otro elemento. La propiedad ref puede contener un prefijo de espacio de nombres. Si el elemento padre es un elemento schema, no se debe utilizar esta propiedad.

type

Opcional. Define el nombre del tipo de datos integrado, o define el nombre del elemento simpleType o complexType.

substitutionGroup

Opcional. Define el nombre del elemento que puede sustituir a este elemento. Este elemento debe tener el mismo tipo o debe derivarse del tipo especificado.

No se puede utilizar esta propiedad si el elemento padre no es un elemento schema.

default

Opcional. Establecer un valor predeterminado para el elemento (sólo se utiliza cuando el contenido del elemento es de tipo simple o textOnly).

fixed

Opcional. Establecer un valor fijo para el elemento (sólo se utiliza cuando el contenido del elemento es de tipo simple o textOnly).

form

Opcional. La forma del elemento. El valor predeterminado es el valor de la propiedad elementFormDefault del elemento schema que contiene esta propiedad. Este valor debe ser una de las siguientes cadenas: "qualified" o "unqualified".

Si el elemento padre es el elemento schema, no se puede usar esta propiedad.

  • Si este valor es "unqualified", no es necesario limitar el elemento mediante un prefijo de espacio de nombres.
  • Si este valor es "qualified", debe limitar el elemento mediante un prefijo de espacio de nombres.

maxOccurs

Opcional. Define el número máximo permitido de apariciones del elemento "element" dentro del elemento padre. Este valor debe ser un entero mayor o igual a cero. Si no se desea establecer ningún límite para el número máximo, utilice la cadena "unbounded". El valor predeterminado es 1.

Si el elemento padre es el elemento schema, no se puede usar esta propiedad.

minOccurs

Opcional. Regula la cantidad mínima de veces que puede aparecer el elemento en el elemento padre. El valor puede ser un entero mayor o igual a cero. El valor predeterminado es 1.

Si el elemento padre es el elemento schema, no se puede usar esta propiedad.

nillable

Opcional. Indica si se puede asignar un valor cero explícito a este elemento. Esta opción se aplica al contenido del elemento y no es una propiedad del elemento. El valor predeterminado es false.

Si nillable es true, permitirá que la instancia del elemento pueda establecer el atributo nil en true. El atributo nil se define como parte del espacio de nombres de esquema de la instancia.

Por ejemplo, el siguiente segmento define un solo elemento y establece nillable en true.

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

El siguiente segmento utiliza este elemento y tiene un valor cero explícito (el atributo nil se establece en true).

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

abstract

Opcional. Indica si el elemento puede ser utilizado en el documento de instancia. Si el valor es true, el elemento no puede aparecer en el documento de instancia. Por el contrario, otros elementos que contienen el QName de la propiedad substitutionGroup de este elemento deben aparecer en la posición de este elemento. Múltiples elementos pueden referenciar este elemento en su propiedad substitutionGroup. El valor predeterminado es false.

block

Opcional. Tipo derivado. La propiedad block impide que se utilice un elemento con un tipo derivado específico para reemplazar este elemento. El valor puede contener #all o una lista, que es un subconjunto de extension, restriction o substitution:

  • extension - Evita que se utilicen elementos derivados mediante extensión para reemplazar este elemento.
  • restriction - Evita que se utilicen elementos derivados mediante restricción para reemplazar este elemento.
  • substitution - Evita que se utilicen elementos derivados mediante sustitución para reemplazar este elemento.
  • #all - Evita que todos los elementos derivados se utilicen para reemplazar este elemento.

final

Opcional. Establece el valor predeterminado de la propiedad final del elemento element. Si el elemento padre no es el elemento schema, no se puede usar esta propiedad. El valor puede contener #all o una lista, que es un subconjunto de extension o restriction:

  • extension - Evita que se utilicen elementos derivados extendidos para reemplazar este elemento
  • restriction - Evita que se utilicen elementos derivados limitados para reemplazar este elemento
  • #all - Evita que todos los elementos derivados se utilicen para reemplazar este elemento

cualquier atributos

Opcional. Define cualquier otra propiedad con un espacio de nombres no de esquema.

Ejemplo

Ejemplo 1

El siguiente ejemplo es un esquema que contiene cuatro elementos simples: "fname", "lname", "age" y "dateborn", los tipos son string, nonNegativeInteger y 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>

Ejemplo 2

El siguiente ejemplo es un esquema que contiene un elemento de tipo complejo "note". El elemento "note" contiene cuatro elementos simples: "to", "from", "heading" y "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>

Ejemplo 3

Este ejemplo es idéntico al ejemplo 2, pero en este caso, hemos elegido usar el atributo ref para referenciar el nombre del 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>