عناصر ترکیبی XSD

عنصر ترکیبی شامل عناصر دیگر و/یا ویژگی‌ها است.

عنصر ترکیبی چیست؟

عنصر ترکیبی به معنای عنصری است که شامل عناصر دیگر و/یا ویژگی‌ها است.

چهار نوع عنصر ترکیبی وجود دارد:

  • عنصر خالی
  • عناصری که شامل عناصر دیگر هستند
  • عناصری که تنها شامل متن هستند
  • عناصری که شامل عناصر و متن هستند

نکته:این عناصر می‌توانند ویژگی‌ها را شامل شوند!

مثال‌های عنصر ترکیبی

عنصر ترکیبی، "product"، خالی است:

<product pid="1345"/>

عنصر ترکیبی، "employee"، تنها شامل عناصر دیگر است:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

عنصر ترکیبی، "food"، تنها شامل متن است:

<food type="dessert">Ice cream</food>

عنصر ترکیبی، "description"، شامل عناصر و متن است:

<description>
این واقعه در <date lang="norwegian">03.03.99</date> رخ داد...
</description>

چگونه یک عنصر ترکیبی را تعریف کنیم؟

لطفاً این عنصر ترکیبی XML را ببینید، "employee"، که تنها شامل عناصر دیگر است:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

در XML Schema، ما دو روش برای تعریف عنصر ترکیبی داریم:

1. با نام‌گذاری این عنصر، می‌توانید مستقیماً عنصر "employee" را مشخص کنید، مانند این:

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

اگر از روش توضیح داده شده در بالا استفاده کنید، تنها عنصر "employee" می‌تواند از نوع ترکیبی مشخص استفاده کند. توجه داشته باشید که فرزندان آن، "firstname" و "lastname"، در داخل مولفه <sequence> محصور شده‌اند. این به این معناست که فرزندان باید به ترتیبی که مشخص شده‌اند ظاهر شوند. شما در مولفه‌های XSD این بخش برای یادگیری بیشتر در مورد مولفه‌ها

2. عنصر "employee" می‌تواند از ویژگی type استفاده کند، که نقش آن اشاره به نام نوع ترکیبی مورد استفاده است:

<xs:element name="employee" type="personinfo"/>
<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:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>
<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: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>