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>