عنصر 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| 
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>

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

ویژگی‌ها

id

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

نام

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

نام‌گذاری

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

مکسید

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

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

بلاک

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

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

final

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

  • extension - جلوگیری از مشتق‌گیری از طریق گسترش.
  • restriction - جلوگیری از مشتق‌گیری از طریق محدودیت.
  • #all - جلوگیری از همه نوع مشتق (گسترش و محدودیت).

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

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

مثال

مثال 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".