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=nonNegativeInteger
nillable=true|false
abstract=true|false 
block=(#all|lista (rozszerzenie|ograniczanie))
final=(#all|lista (rozszerzenie|ograniczanie))
Każde atrybuty
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

(Symbol ? oznacza, że element może występować zero lub jeden raz, symbol * oznacza, że element może występować zero lub wiele razy.)

Atrybut

id

Dostępny. Określa unikalny ID elementu.

name

Dostępny. Określa nazwę elementu. Jeśli element rodzica jest elementem schema, ten atrybut jest wymagany.

ref

Dostępny. Wskazuje na inny element. Atrybut ref może zawierać prefiks przestrzeni nazw. Jeśli element rodzica jest elementem schema, nie używa się tego atrybutu.

type

Dostępny. Określa nazwę wbudowanego typu danych, lub nazwę elementu simpleType lub complexType.

substitutionGroup

Dostępny. Określa nazwę elementu, który może zastąpić ten element. Element musi mieć ten sam typ lub być typem pochodnym od określonego typu.

Jeśli element rodzica nie jest elementem schema, nie można używać tego atrybutu.

default

Dostępny. Określa wartość domyślną elementu (używane tylko, gdy zawartość elementu jest typem prostym lub textOnly).

fixed

Dostępny. Określa stałą wartość elementu (używane tylko, gdy zawartość elementu jest typem prostym lub textOnly).

form

Dostępny. Forma elementu. Domyślną wartością jest wartość atrybutu elementFormDefault elementu schema, który zawiera atrybut. Wartość musi być jednym z poniższych ciągów: "qualified" lub "unqualified".

Jeśli element nadrzędny jest elementem schema, nie można używać tego atrybutu.

  • Jeśli wartość ta wynosi "unqualified", element nie musi być zdefiniowany za pomocą prefiksu przestrzeni nazw.
  • Jeśli wartość ta wynosi "qualified", element musi być zdefiniowany za pomocą prefiksu przestrzeni nazw.

maxOccurs

Dostępny. Określa maksymalną liczbę wystąpień elementu w kontekście rodzica. Wartość może być całkowitą liczbą większą lub równą zero. Jeśli nie chcesz ustawiać ograniczeń maksymalnej liczby, użyj ciągu "unbounded". Domyślną wartością jest 1.

Jeśli element nadrzędny jest elementem schema, nie można używać tego atrybutu.

minOccurs

Dostępne. Określa minimalną liczbę wystąpień elementu w kontekście nadrzędnym. Wartością może być całkowita liczba większa lub równa zero. Domyślna wartość to 1.

Jeśli element nadrzędny jest elementem schema, nie można używać tego atrybutu.

nillable

Dostępne. Wskazuje, czy można przypisać wyraźną wartość zerową temu elementowi. Dotyczy to treści elementu, a nie jego atrybutów. Domyślna wartość to false.

Jeśli nillable wynosi true, pozwala to na ustawienie wartości nil na true dla instancji elementu. Atrybut nil jest zdefiniowany jako część przestrzeni nazw XML schematu instancji.

Na przykład, następny segment definiuje pojedynczy element, jednocześnie ustawiając nillable na true.

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

Następny segment używa tego elementu i ma wyraźną wartość zerową (atrybut nil ustawiony na true).

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

abstract

Dostępne. Wskazuje, czy element może być używany w dokumencie instancji. Jeśli wartość wynosi true, element nie może się pojawiać w dokumencie instancji. W przeciwnym razie, inne elementy zawierające QName ograniczający tego elementu muszą się pojawiać w jego miejscu. Wiele elementów może odnosić się do tego elementu w atrybucie substitutionGroup. Domyślna wartość to false.

block

Dostępne. Pochodny typ. Atrybut block zapobiega użyciu elementu o określonym pochodnym typie do zastąpienia tego elementu. Wartość ta może zawierać #all lub listę, która jest podzbiorem rozszerzenia, ograniczenia lub zastąpienia:

  • extension - Zapobiega użyciu pochodnych elementów rozszerzających do zastąpienia tego elementu.
  • restriction - Zapobiega użyciu pochodnych elementów ograniczających do zastąpienia tego elementu.
  • substitution - Zapobiega użyciu pochodnych elementów zastępowalnych do zastąpienia tego elementu.
  • #all - Zapobiega użyciu wszystkich pochodnych elementów do zastąpienia tego elementu.

final

Dostępne. Ustawienie domyślnej wartości atrybutu final elementu. Jeśli element nadrzędny nie jest elementem schema, nie można używać tej atrybutu. Wartość ta może zawierać #all lub listę, która jest podzbiorem rozszerzenia lub ograniczenia:

  • extension - zapobiega zastępowaniu tego elementu przez pochodne elementy rozszerzone
  • restriction - zapobiega zastępowaniu tego elementu przez pochodne elementy ograniczone
  • #all - zapobiega zastępowaniu tego elementu przez wszystkie pochodne elementy

Każde atrybuty

Opcjonalne. Określa inne atrybuty z non-schema namespace.

Przykład

Przykład 1

Poniższy przykład to schema zawierające cztery proste elementy: "fname", "lname", "age" oraz "dateborn", typy to string, nonNegativeInteger oraz 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>

Przykład 2

Poniższy przykład to schema zawierające element o złożonym typie "note", który zawiera cztery proste elementy: "to", "from", "heading" oraz "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>

Przykład 3

Ten przykład jest podobny do przykładu 2, ale w tym przykładzie wybieramy użycie atrybutu ref do odniesienia się do nazwy elementu:

<?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>