عنصر 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|قائمة من (الإضافة|الحدود))
final=(#all|قائمة من (الإضافة|الحدود))
كل خصائص
>
(annotation?,(simpleContent|complexContent|((group|all| 
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>

(? علامة التبويب معلن في عنصر complexType، يمكن أن يظهر العنصر صفر مرة أو مرة واحدة، * علامة التبويب معلن يمكن أن يظهر العنصر صفر مرة أو مرات متعددة.)

الخصائص

الـID

اختياري. تحديد ID الفريد للعنصر.

الاسم

اختياري. تحديد اسم العنصر.

abstract

اختياري. تحديد ما إذا كان يمكن استخدام النوع المعقد في مستند الصيغة. إذا كان القيمة صحيحة، فإن العنصر لا يمكن استخدام هذا النوع المعقد مباشرة، بل يجب استخدامه من خلال النوع المعقد المشتق. القيمة الافتراضية هي false.

mixed

اختياري. تحديد ما إذا كان يمكن أن يظهر بيانات النص بين عناصر هذا النوع المعقد. القيمة الافتراضية هي false.

  • إذا كان عنصر simpleContent هو عنصر فرعي، فإن خاصية mixed غير مسموح بها.
  • إذا كان عنصر complexContent هو عنصر فرعي، فإن الخاصية mixed يمكن أن يتم تعديلها من قبل خاصية mixed لعنصر complexContent.

حجب

اختياري. منع استخدام النوع المعقد المشتق المحدد لتعويض هذا النوع المعقد. يمكن أن يحتوي هذا القيمة على #all أو قائمة، القائمة هي مجموعة من الإضافات أو الحدود:

  • الإضافة - منع استخدام النوع المعقد المشتق من خلال الإضافة لتعويض هذا النوع المعقد.
  • الحد - منع استخدام النوع المعقد المشتق من خلال الحد لتعويض هذا النوع المعقد.
  • #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".