XML Schema element 元素
定義和用法
element 元素定義一個(gè)元素。
元素信息
出現(xiàn)次數(shù) | 在架構(gòu)中定義的元素的數(shù)目。 |
父元素 | schema、choice、all、sequence |
內(nèi)容 | 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|list of (extension|restriction)) final=(#all|list of (extension|restriction)) any attributes > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(? 符號(hào)聲明在 element 元素中,該元素可出現(xiàn)零次或一次,* 符號(hào)聲明元素可出現(xiàn)零次或多次。)
屬性
id
可選。規(guī)定該元素的唯一的 ID。
name
可選。規(guī)定元素的名稱。如果父元素是 schema 元素,則此屬性是必需的。
ref
可選。對(duì)另一個(gè)元素的引用。ref 屬性可包含一個(gè)命名空間前綴。如果父元素是 schema 元素,則不是使用該屬性。
type
可選。規(guī)定內(nèi)建數(shù)據(jù)類型的名稱,或者規(guī)定 simpleType 或 complexType 元素的名稱。
substitutionGroup
可選。規(guī)定可用來替代該元素的元素的名稱。 該元素必須具有相同的類型或從指定元素類型派生的類型。
如果父元素不是 schema 元素,則不可以使用該屬性。
default
可選。為元素規(guī)定默認(rèn)值(僅當(dāng)元素內(nèi)容是簡(jiǎn)單類型或 textOnly 時(shí)使用)。
fixed
可選。為元素規(guī)定固定值(僅當(dāng)元素內(nèi)容是簡(jiǎn)單類型或 textOnly 時(shí)使用)。
form
可選。該元素的形式。 默認(rèn)值是包含該屬性的 schema 元素的 elementFormDefault 屬性的值。 該值必須是下列字符串之一: “qualified” 或 “unqualified”。
如果父元素是 schema 元素,則不能使用該屬性。
- 如果該值是 “unqualified”,則無須通過命名空間前綴限定該元素。
- 如果該值是 “qualified”,則必須通過命名空間前綴限定該元素。
maxOccurs
可選。規(guī)定 element 元素在父元素中可出現(xiàn)的最大次數(shù)。該值可以是大于或等于零的整數(shù)。若不想對(duì)最大次數(shù)設(shè)置任何限制,請(qǐng)使用字符串 "unbounded"。 默認(rèn)值為 1。
如果父元素是 schema 元素,則不能使用該屬性。
minOccurs
可選。規(guī)定 element 元素在父元素中可出現(xiàn)的最小次數(shù)。該值可以是大于或等于零的整數(shù)。默認(rèn)值為 1。
如果父元素是 schema 元素,則不能使用該屬性。
nillable
可選。指示是否可以將顯式的零值分配給該元素。此項(xiàng)應(yīng)用于元素內(nèi)容并且不是該元素的屬性。 默認(rèn)值為 false。
如果 nillable 為 true,將使該元素的實(shí)例可以將 nil 屬性設(shè)置為 true。 nil 屬性被定義為實(shí)例的 XML 架構(gòu)命名空間的一部分。
例如,下段定義了單個(gè)元素,同時(shí)將 nillable 設(shè)置為 true。
<xs:element name="myDate" type="xs:date" nillable="true"/>
下段使用該元素并具有顯式零值(nil 屬性設(shè)置為 true)。
<myDate xsi:nil="true"></myDate>
abstract
可選。指示元素是否可以在實(shí)例文檔中使用。如果該值為 true,則元素不能出現(xiàn)在實(shí)例文檔中。 相反,substitutionGroup 屬性包含該元素的限定名 (QName) 的其他元素必須出現(xiàn)在該元素的位置。多個(gè)元素可以在其 substitutionGroup 屬性中引用該元素。默認(rèn)值是 false。
block
可選。派生的類型。 block 屬性防止具有指定派生類型的元素被用于替代該元素。該值可以包含 #all 或者一個(gè)列表,該列表是 extension、restriction 或 substitution 的子集:
- extension - 防止通過擴(kuò)展派生的元素被用來替代該元素。
- restriction - 防止通過限制派生的元素被用來替代該元素。
- substitution - 防止通過替換派生的元素被用來替代該元素。
- #all - 防止所有派生的元素被用來替代該元素。
final
可選。設(shè)置 element 元素上 final 屬性的默認(rèn)值。如果父元素不是 schema 元素,則不能使用該屬性。該值可以包含 #all 或者一個(gè)列表,該列表是 extension 或 restriction 的子集:
- extension - 防止通過擴(kuò)展派生的元素被用來替代該元素
- restriction - 防止通過限制派生的元素被用來替代該元素
- #all - 防止所有派生的元素被用來替代該元素
any attributes
可選。規(guī)定帶有 non-schema 命名空間的任何其他屬性。
實(shí)例
例子 1
下面的例子是一個(gè)schema,其中帶有四個(gè)簡(jiǎn)單元素:"fname", "lname", "age" 以及 "dateborn",類型是 string、nonNegativeInteger 以及 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>
例子 2
下面的例子是一個(gè)帶有復(fù)雜類型 "note" 元素的 schema。"note" 元素包含四個(gè)簡(jiǎn)單元素:"to", "from", "heading" 以及 "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>
例子 3
本例與例子 2 相同,但是在此例中,我們選擇使用 ref 屬性來引用元素名稱:
<?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>