Kumplikadong Elementong XSD

Ang pagsasama ng elemento ay naglalaman ng iba pang mga elemento at/o mga katangian.

Ano ang pagsasama ng elemento?

Ang pagsasama ng elemento ay tumutukoy sa XML na elemento na naglalaman ng iba pang mga elemento at/o mga katangian.

May apat na uri ng pagsasama ng elemento:

  • Hollow element
  • Ang elemento na naglalaman ng iba pang mga elemento
  • Ang elemento na naglalaman lamang ng teksto
  • Ang elemento na naglalaman ng mga elemento at teksto

Komentaryo:Ang mga elemento na ito ay maaaring maglalaman ng mga katangian!

Halimbawa ng pagsasama ng elemento

Ang pagsasama ng elemento, "product", ay walang laman:

<product pid="1345"/>

Ang pagsasama ng elemento, "employee", ay naglalaman lamang ng iba pang mga elemento:

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

Ang pagsasama ng elemento, "food", ay naglalaman lamang ng teksto:

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

Ang pagsasama ng elemento, "description", ay naglalaman ng mga elemento at teksto:

<description>
Nangyari ito sa <date lang="norwegian">03.03.99</date> ....
</description>

Paano ang paglalarawan ng pagsasama ng elemento?

Tingnan itong kumplikadong elemento na XML, "employee", na naglalaman lamang ng iba pang elemento:

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

Sa XML Schema, mayroon namin dalawang paraan upang tanggapin ang kumplikadong elemento:

1. Dahil sa pangalang ito, maaring idedeklara ang elemento na "employee" tulad nito:

<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>

Kung gamit mo ang ibang inilarawan na pamamaraan, ang "employee" lamang ang pwedeng gamitin ang tinutukoy na kumplikadong uri. Maaaring pansinin na ang mga anak na elemento, "firstname" at "lastname", ay nababakuran ng tagapagbigay-informasyon <sequence>. Ito nangangahulugan na ang mga anak na elemento ay dapat lumitaw sa kung anong uri na itinutukoy. Makikita mo ito sa Tagapagbigay-informasyon ng XSD Ito ang aralin sa kung paano mag-aral ng mas maraming kaalaman tungkol sa tagapagbigay-informasyon.

2. "employee" elemento ay pwedeng gamitin ang attribute na type, ang ginagampanan ng attribute na ito ay para tumutukoy sa pangalan ng kumplikadong uri na gagamitin:

<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>

Kung gamit mo ang ibang inilarawan na pamamaraan, maaaring gamitin ng ilang elemento ang parehong kumplikadong uri, tulad nito:

<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>

Maaari kang magdagdag ng ilang elemento sa ibang kumplikadong elemento na nakabase sa isang kumplikadong elemento, tulad nito:

<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>