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>