Element ng XML Schema
定义和用法
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|list of (extension|restriction)) final=(#all|list of (extension|restriction)) Anumang mga attribute > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(? 符号声明在 element 元素中,该元素可出现零次或一次,* 符号声明元素可出现零次或多次。)
属性
id
可选。规定该元素的唯一的 ID。
name
可选。规定元素的名称。如果父元素是 schema 元素,则此属性是必需的。
ref
可选。对另一个元素的引用。ref 属性可包含一个命名空间前缀。如果父元素是 schema 元素,则不是使用该属性。
type
可选。规定内建数据类型的名称,或者规定 simpleType 或 complexType 元素的名称。
substitutionGroup
可选。规定可用来替代该元素的元素的名称。 该元素必须具有相同的类型或从指定元素类型派生的类型。
如果父元素不是 schema 元素,则不可以使用该属性。
default
可选。为元素规定默认值(仅当元素内容是简单类型或 textOnly 时使用)。
fixed
可选。为元素规定固定值(仅当元素内容是简单类型或 textOnly 时使用)。
form
Opisyal. Ang hugis ng elemento. Ang default na halaga ay ang halaga ng elementFormDefault na katangian ng schema na naglalaman ng katangian. Ang halaga ay dapat maging isa sa mga sumusunod na string: "qualified" o "unqualified".
Hindi puwedeng gamitin ang katangian na ito kung ang magulang na elemento ay ang schema na elemento.
- Kung ang halaga ay "unqualified", hindi kailangan ng prefix ng namespace ang elemento.
- Kung ang halaga ay "qualified", dapat magkaroon ng prefix ng namespace ang elemento.
maxOccurs
Opisyal. Tumutukoy sa pinakamalaki na bilang na maaaring lumabas ang elementong ito sa magulang na elemento. Ang halaga ay maaaring maging isang integer na mas malaki o katumbas ng 0. Kung ayaw mag-set ng anumang limitasyon sa pinakamalaki na bilang, gamitin ang string "unbounded". Ang default na halaga ay 1.
Hindi puwedeng gamitin ang katangian na ito kung ang magulang na elemento ay ang schema na elemento.
minOccurs
Opisyal. Tumutukoy sa pinakamaliit na bilang na maaaring lumabas ang elementong ito sa magulang na elemento. Ang halaga ay maaaring maging isang integer na mas malaki o katumbas ng 0. Ang default na halaga ay 1.
Hindi puwedeng gamitin ang katangian na ito kung ang magulang na elemento ay ang schema na elemento.
nillable
Opisyal. Mapagpahintulot ang pagtatalaga ng hayag na walang halaga sa elemento. Ang halaga na ito ay ginagamit para sa nilalaman ng elemento at hindi sa katangian ng elemento. Ang default na halaga ay false.
Kung ang nillable ay true, magiging posible para sa instance ng elemento na mag-set ng nil na halaga na true. Ang nil na halaga ay tinukoy bilang bahagi ng XML schema namespace ng instance.
Halimbawa, ang susunod na pahina ay nagtatalaga ng isang elemento at nagtatalaga ng nillable na true.
<xs:element name="myDate" type="xs:date" nillable="true"/>
Ang susunod na pahina ay gumagamit ng elemento na may hayag na walang halaga (nil na halaga ay naka-set sa true).
<myDate xsi:nil="true"></myDate>
abstract
Opisyal. Mapagpahintulot ang paggamit ng elemento sa dokumentong instance. Kung ang halaga ay true, ang elemento ay hindi dapat lumabas sa dokumentong instance. Sa halip, ang mga elemento na mayroong substitutionGroup na naglalaman ng pangalan ng elementong pinagmulan (QName) ay dapat lumabas sa lokasyon ng elemento. Maraming elemento ay maaaring magsiwalay sa paggamit ng elemento sa kanyang substitutionGroup. Ang default na halaga ay false.
block
Opisyal. Ang uri ng pagpapasadya. Ang block na katangian ay mapagbawal ang paggamit ng elemento na may tinukoy na uri ng pagpapasadya bilang kahalili ng elemento. Ang halaga ay maaaring maglaman ng #all o isang listahan, ang kung saan ay isang subset ng extension, restriction o substitution:
- extension - mapagbawal ang paggamit ng mga elemento na nagmula sa pagpapasadya bilang kahalili ng elemento na ito.
- restriction - Hindi magagamit ang elemento na pinaghihigpit upang palitan ang elemento.
- substitution - Hindi magagamit ang elemento na ginamit upang palitan ang elemento.
- #all - Hindi magagamit ang lahat ng nagmula sa elemento na ginamit upang palitan ang elemento.
final
Optional. I-set ang default na halaga ng atributo ng final sa elemento ng element. Kung ang magulang ng elemento ay hindi ang elemento ng schema, hindi magagamit ang attribute na ito. Ang halaga ay maaaring maglaman ng #all o isang listahan, ang listahan na ito ay kasama ng extension o restriction:
- extension - Hindi magagamit ang elemento na pinagpapaunlad upang palitan ang elemento
- restriction - Hindi magagamit ang elemento na pinaghihigpit upang palitan ang elemento
- #all - Hindi magagamit ang lahat ng nagmula sa elemento na ginamit upang palitan ang elemento
Anumang mga attribute
Optional. Mga atributo na may non-schema na pangalan ng namespace.
Mga halimbawa
Halimbawa 1
Ang halimbawa na ito ay isang schema, na mayroong apat na simpleng elemento: "fname", "lname", "age" at "dateborn", ang uri ay string, nonNegativeInteger at 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>
Halimbawa 2
Ang halimbawa na ito ay isang schema na mayroong elemento ng kompleks na may pangalan na "note", ang "note" na elemento ay naglalaman ng apat na simpleng elemento: "to", "from", "heading" at "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>
Halimbawa 3
Ang halimbawa na ito ay katulad ng halimbawa 2, ngunit sa halimbawa na ito, pinili naming gamitin ang atributo ng ref upang tumutukoy sa pangalan ng 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>