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

عناصر ترکیبی خالی نمی‌توانند محتوا داشته باشند، تنها می‌توانند شامل attributes باشند.

عنصر ترکیبی خالی:

یک عنصر XML خالی:

<product prodid="1345" />

عنصر "product" بالا هیچ محتوایی ندارد. برای تعریف نوع بدون محتوا، باید نوعی را تعریف کنیم که فقط می‌تواند شامل عناصر باشد، اما در واقع هیچ عنصری را نمی‌افزاییم، مانند این:

<xs:element name="product">
  <xs:complexType>
    <xs:complexContent>
      <xs:restriction base="xs:integer">
        <xs:attribute name="prodid" type="xs:positiveInteger"/>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

در مثال بالا، ما یک نوع ترکیبی با محتوای ترکیبی تعریف کرده‌ایم. علامت‌دهی توسط عنصر contentCompoent نشان می‌دهد که ما قصد داریم محتوای مدل ترکیبی را محدود یا گسترش دهیم، و محدودیت integer یک attribute را مشخص می‌کند که هیچ عنصر محتوایی را وارد نمی‌کند.

اما، می‌توان این عنصر "product" را به صورت بیشتر جمع‌وجور‌تر بیان کرد:

<xs:element name="product">
  <xs:complexType>
    <xs:attribute name="prodid" type="xs:positiveInteger"/>
  </xs:complexType>
</xs:element>

یا می‌توانید یک نام برای یک عنصر complexType انتخاب کنید، سپس یک attribute type برای عنصر "product" تنظیم کنید و این نام complexType را ارجاع دهید (با این روش، چندین عنصر می‌توانند به یک نوع ترکیبی مشترک اشاره کنند):

<xs:element name="product" type="prodtype"/>
<xs:complexType name="prodtype">
  <xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>