عناصر ترکیبی 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 این بخش برای یادگیری بیشتر در مورد مولفه‌ها (indicator) است.

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>