عنصر شکل 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>