XML Schema element element
definition and usage
element defines an element.
element information
occurrence | the number of elements defined in the schema. |
parent element | schema、choice、all、sequence |
content | simpleType、complexType、key、keyref、unique |
grammar
<element id=ID name=NCName ref=QName type=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified maxOccurs=nonNegativeInteger|unbounded minOccurs=عدد مثبت غیرصفر nillable=true|false abstract=true|false block=(#all|لیست از (extension|restriction)) final=(#all|لیست از (extension|restriction)) ویژگیهای هرچه که باشد > 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
قابل انتخاب. شکل این عنصر. مقدار پیشفرض این مقدار مقدار attribute elementFormDefault عنصر schema دارای این ویژگی است. این مقدار باید یکی از رشتههای زیر باشد: "qualified" یا "unqualified".
اگر عنصر والد schema باشد، نمیتوان از این ویژگی استفاده کرد.
- اگر این مقدار "unqualified" باشد، نیازی به محدود کردن این عنصر با پیشوند نام فضای نام نیست.
- اگر این مقدار "qualified" باشد، باید این عنصر را با پیشوند نام فضای نام محدود کنید.
maxOccurs
قابل انتخاب. تعریف تعداد بیشینهای که عناصر element میتوانند در یک عنصر والد ظاهر شوند. این مقدار میتواند یک عدد صحیح بزرگتر یا برابر با صفر باشد. اگر نمیخواهید هیچ محدودیتی برای تعداد بیشینه تعیین کنید، از رشته "unbounded" استفاده کنید. مقدار پیشفرض 1 است.
اگر عنصر والد schema باشد، نمیتوان از این ویژگی استفاده کرد.
minOccurs
اختیاری است. تعداد最少 بارهایی که عنصر element میتواند در عنصر والد ظاهر شود را مشخص میکند. این مقدار میتواند عدد صحیحی از صفر یا بیشتر باشد. مقدار پیشفرض 1 است.
اگر عنصر والد schema باشد، نمیتوان از این ویژگی استفاده کرد.
nillable
اختیاری است. نشاندهنده این که آیا میتوان مقدار صفر مشخص شده را به این عنصر اختصاص داد یا خیر. این ویژگی برای محتوای عنصر اعمال میشود و ویژگی این عنصر نیست. مقدار پیشفرض false است.
اگر nillable به true تنظیم شود، باعث میشود که نمونه عنصر این عنصر بتواند ویژگی nil را به true تنظیم کند. ویژگی nil به عنوان بخشی از نام فضای XML架构 تعریف شده است.
به عنوان مثال، بخش بعدی یک عنصر تنها را تعریف میکند و مقدار nillable را به true تنظیم میکند.
<xs:element name="myDate" type="xs:date" nillable="true"/>
بخش بعدی از این عنصر استفاده میکند و مقدار صفر مشخص شده دارد (ویژگی nil به true تنظیم شده است).
<myDate xsi:nil="true"></myDate>
abstract
اختیاری است. نشاندهنده این که آیا عنصر میتواند در مستند نمونه استفاده شود یا خیر. اگر این مقدار true باشد، عنصر نمیتواند در مستند نمونه ظاهر شود. در عوض، عناصر دیگری که در ویژگی substitutionGroup نام限定 (QName) این عنصر را شامل میشوند، باید در جای این عنصر ظاهر شوند. چندین عنصر میتوانند در ویژگی substitutionGroup به این عنصر اشاره کنند. مقدار پیشفرض false است.
block
اختیاری است. نوع مشتق شده. ویژگی block از استفاده عنصرهایی که نوع مشتق شده مشخص شده است، جلوگیری میکند. این مقدار میتواند شامل #all یا یک لیست باشد که زیر مجموعه extension، restriction یا substitution است:
- extension - جلوگیری از استفاده عناصر مشتق شده برای جایگزینی این عنصر.
- restriction - جلوگیری از استفاده عناصر مشتق شده برای جایگزینی این عنصر.
- substitution - جلوگیری از استفاده عناصر مشتق شده برای جایگزینی این عنصر.
- #all - جلوگیری از استفاده همه عناصر مشتق شده برای جایگزینی این عنصر.
final
اختیاری است. تنظیم مقدار پیشفرض属性 final برای عنصر element. اگر عنصر والد schema نباشد، نمیتوان از این ویژگی استفاده کرد. این مقدار میتواند شامل #all یا یک لیست باشد که زیر مجموعه extension یا restriction است:
- extension - جلوگیری از استفاده از عناصر مشتق شده گسترش یافته برای جایگزینی این عنصر
- restriction - جلوگیری از استفاده از عناصر مشتق شده محدود شده برای جایگزینی این عنصر
- #all - جلوگیری از استفاده از تمامی عناصر مشتق شده برای جایگزینی این عنصر
ویژگیهای هرچه که باشد
اختیاری. تعیین هرگونه ویژگی دیگر با نامگذاری غیر اسکیمایی.
مثال
مثال 1
در اینجا مثالی از یک schema آورده شده است که شامل چهار عنصر ساده است: "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
در اینجا مثالی از یک schema با یک عنصر نوع پیچیده "note" آورده شده است. عنصر "note" شامل چهار عنصر ساده است: "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>