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>