عنصر complexType XML Schema

تعریف و استفاده

عنصر complexType تعریف نوع پیچیده است. عناصر نوع پیچیده شامل عناصر و/یا ویژگی‌های XML دیگر هستند.

元素信息

اطلاعات عنصر تعداد ظاهر
در ساختار به صورت بی‌محدود است؛ در عنصر به صورت یک بار است. پدرعنصر
element،redefine،schema محتوای

annotation،simpleContent،complexContent،group،all،choice،sequence،attribute،attributeGroup،anyAttribute

نحوه‌ی استفاده
<complexType 
id=ID 
name=NCName 
abstract=true|false
mixed=true|false
block=(#all|لیست از (extension|restriction))
ویژگی‌های هرچه باشد
final=(#all|لیست از (extension|restriction))
> 
(annotation?,(simpleContent|complexContent|((group|all|
</complexType>

(؟ نماد اعلام شده در عنصر complexType است، این عنصر می‌تواند صفر یا یک بار ظاهر شود، * نماد اعلام شده عنصر می‌تواند صفر یا چند بار ظاهر شود.)

ویژگی‌ها

id

اختیاری. تعیین ID منحصر به فرد این عنصر.

name

اختیاری. تعیین نام عنصر.

abstract

اختیاری. تعیین اینکه آیا می‌توان از نوع پیچیده در مستند نمونه استفاده کرد یا خیر. اگر این مقدار true باشد، عنصر نمی‌تواند مستقیماً از نوع پیچیده استفاده کند، بلکه باید از نوع پیچیده مشتق شده استفاده کند. مقدار پیش‌فرض false است.

mixed

اختیاری. تعیین اینکه آیا داده‌های کاراکتری باید بین زیرعناصر نوع پیچیده وجود داشته باشد یا خیر. مقدار پیش‌فرض false است.

  • اگر عنصر simpleContent به عنوان زیرعنصر باشد، استفاده از ویژگی mixed مجاز نیست.
  • اگر عنصر complexContent به عنوان زیرعنصر باشد، ویژگی mixed می‌تواند توسط ویژگی mixed عنصر complexContent تغییر کند.

بلاک

اختیاری. جلوگیری از استفاده از نوع پیچیده با نوع مشتق شده مشخص شده برای جایگزینی نوع پیچیده. این مقدار می‌تواند شامل #all یا یک لیست باشد که شامل زیر مجموعه‌ای از extension یا restriction است:

  • توسعه - جلوگیری از استفاده از نوع پیچیده مشتق شده برای جایگزینی نوع پیچیده.
  • محدودیت - جلوگیری از استفاده از نوع پیچیده مشتق شده برای جایگزینی نوع پیچیده.
  • #all - جلوگیری از استفاده همه نوع پیچیده‌ای که می‌توانند به جای نوع پیچیده فعلی استفاده شوند.

final

اختیاری. جلوگیری از ارث‌برخورد از نوع پیچیده مشخص شده. این مقدار می‌تواند شامل #all یا لیستی باشد که شامل زیر مجموعه‌های extension یا restriction است.

  • extension - جلوگیری از ارث‌برخوردهای گسترش.
  • restriction - جلوگیری از ارث‌برخوردهای محدود.
  • #all - جلوگیری از همه ارث‌برخوردها (گسترش و محدودیت).

ویژگی‌های هرچه باشد

اختیاری. هرگونه ویژگی غیرشکلی با نام فضای نام non-schema را مشخص می‌کند.

مثال

مثال 1

در این مثال یک عنصر پیچیده به نام "note" وجود دارد:

<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>

مثال 2

در این مثال یک نوع پیچیده به نام "fullpersoninfo" وجود دارد که از طریق استفاده از سه عنصر اضافی (address، city و country) نوع ارث‌برخورده را گسترش می‌دهد، که از یک نوع پیچیده دیگر به نام "personinfo" پدیدار شده است:

<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

در مثال بالا، عنصر "employee" باید به ترتیب شامل عناصر زیر باشد: "firstname", "lastname", "address", "city" و "country".