عنصر شکل 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=عدد غیر منفی|بدون محدودیت 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
اختیاری. فرم این عنصر. مقدار پیشفرض برابر با مقدار ویژگی elementFormDefault عنصر شاخص دارای این ویژگی است. این مقدار باید یکی از رشتههای زیر باشد: "qualified" یا "unqualified".
اگر عنصر والد schema است، نمیتوان از این ویژگی استفاده کرد.
- اگر این مقدار "unqualified" باشد، نیازی به مشخص کردن عنصر با استفاده از پیشوند فضای نام نیست.
- اگر این مقدار "qualified" باشد، باید عنصر با استفاده از پیشوند فضای نام مشخص شود.
maxOccurs
اختیاری. تعداد بیشترین بارهایی که عنصر میتواند در عنصر والد ظاهر شود. این مقدار میتواند عدد صحیحی بزرگتر یا برابر با صفر باشد. برای عدم اعمال محدودیت بر تعداد بیشترین بارها از رشته "unbounded" استفاده کنید. مقدار پیشفرض 1 است.
اگر عنصر والد schema است، نمیتوان از این ویژگی استفاده کرد.
minOccurs
اختیاری. تعداد最少 بارهایی که عنصر میتواند در عنصر والد ظاهر شود. این مقدار میتواند عدد صحیحی بزرگتر یا برابر با صفر باشد. مقدار پیشفرض 1 است.
اگر عنصر والد schema است، نمیتوان از این ویژگی استفاده کرد.
nillable
اختیاری. نشاندهنده این که آیا میتوان مقدار صفر مشخصی (nil) به این عنصر اختصاص داده شود یا خیر. این ویژگی به محتوای عنصر اعمال میشود و ویژگی این عنصر نیست. مقدار پیشفرض false است.
اگر nillable به true تنظیم شده باشد، باعث میشود که نمونههای این عنصر بتوانند ویژگی nil را به true تنظیم کنند. ویژگی nil به عنوان بخشی از نام فضای XML شاخص تعریف شده است.
مثلاً در بخش بعدی یک عنصر تعریف شده است که مقدار nillable را به true تنظیم کرده است.
<xs:element name="myDate" type="xs:date" nillable="true"/>
در بخش بعدی از این عنصر استفاده شده و دارای مقدار صفر مشخصی (nil attribute تنظیم شده به 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 - جلوگیری از استفاده همه عناصر مشتق شده برای جایگزینی این عنصر
ویژگیهای هر
اختیاری. هر ویژگی دیگر با نامگذاری non-schema را مشخص میکند.
مثال
مثال 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>