عنصر 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|list of (extension|restriction)) final=(#all|list of (extension|restriction)) ویژگیهای هر > (annotation?,(simpleContent|complexContent|((group|all| choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)))) </complexType>
(? نشانهگذاری در عنصر complexType، عناصر میتوانند صفر یا یک بار ظاهر شوند، * نشانهگذاری نشان میدهد که عناصر میتوانند صفر یا چند بار ظاهر شوند.)
ویژگیها
id
اختیاری. تعیین میکند شناسه منحصر به فرد این عنصر.
name
اختیاری. تعیین میکند نام عنصر.
abstract
اختیاری. تعیین میکند که آیا میتوان از نوع پیچیده در مستند نمونه استفاده کرد یا خیر. اگر این مقدار true باشد، عنصر نمیتواند مستقیماً از این نوع پیچیده استفاده کند، بلکه باید از نوع پیچیده مشتق شده از آن استفاده کند. مقدار پیشفرض false است.
mixed
اختیاری. تعیین میکند که آیا دادههای حروفی بین زیرعناصر این نوع پیچیده مجاز است یا خیر. مقدار پیشفرض false است.
- اگر عنصر simpleContent به عنوان زیرعنصر باشد، ویژگی mixed مجاز نیست.
- اگر عنصر complexContent به عنوان زیرعنصر باشد، این ویژگی mixed میتواند توسط ویژگی mixed عنصر complexContent نوشته شود.
block
اختیاری. از استفاده از نوع پیچیده مشخص شده با نوع مشتق شده جلوگیری میکند. این مقدار میتواند شامل #all یا یک لیست باشد که زیر مجموعه extension یا restriction است:
- extension - از استفاده از نوع پیچیدههای مشتق شده از طریق گسترش جلوگیری میکند.
- restriction - از استفاده از نوع پیچیدههای مشتق شده از طریق محدودیت جلوگیری میکند.
- #all - از استفاده از تمامی نوع پیچیدههای مشتق شده از این نوع پیچیده جلوگیری میکند.
final
اختیاری. از استفاده از نوع پیچیده مشخص شده از این عنصر complexType جلوگیری میکند. این مقدار میتواند شامل #all یا یک لیست باشد که زیر مجموعه extension یا restriction است.
- گسترش - جلوگیری از ارثبرداری از طریق گسترش.
- محدودیت - جلوگیری از ارثبرداری از طریق محدودیت.
- #all - جلوگیری از همه نوع ارثبرداری (گسترش و محدودیت).
ویژگیهای هر
اختیاری. مشخص میکند که هر ویژگی غیرشبکهای با نام غیرشبکهای باید تعیین شود.
مثال
مثال 1
مثال میتواند یک نوع پیچیده element به نام "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".