XML Schema element 元素

定义和用法

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=عدد غیر منفی
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

اختیاری. ارجاع به عنصر دیگر. attribute 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

ممکن ہے۔element عناصر پر final اپنائی جانے والی اصل قیمت کا مقصد مقرر کرنا۔اگر والد عنصر schema عنصر نہیں ہے تو اس کا استعمال نہیں کیا جاسکتا۔اس قیمت میں #all یا ایک فہرست شامل ہو سکتی ہے، جو extension یا restriction کا ذیلی مجموعہ ہو:

  • extension - مشتق عناصر کو کسی توسیع کے ذریعے اس عنصر کی جگہ نہیں لینے کی روک تھام
  • restriction - مشتق عناصر کو کسی محدودیت کے ذریعے اس عنصر کی جگہ نہیں لینے کی روک تھام
  • #all - تمام مشتق عناصر کو اس عنصر کی جگہ نہیں لینے کی روک تھام

کسی خاصیت کی آزادانہ

اختیاری. کسی غیر 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>