Definice element∙

XML schΘmata v∞tÜinou nabφzejφ n∞kolik mo₧nostφ, jak n∞co definovat. U element∙ je asi nejjednoduÜÜφ p°φpad, kdy₧ element nem∙₧e obsahovat ji₧ ₧ßdnΘ dalÜφ elementy, pouze n∞jakou konkrΘtnφ hodnotu. Definice elementu nazev, kter² m∙₧e obsahovat textov² °et∞zec, m∙₧e vypadat t°eba takto:

<element name="nazev" type="string"/>

Pokud mß element obsahovat jeÜt∞ n∞jakΘ dalÜφ vno°enΘ elementy, uvedou se jako souΦßst definice typu elementu.

<element name="odberatel">
  <type>
    <element name="nazev" type="string"/>
    <element name="adresa" type="string"/>
    <element name="ico" type="string"/>
    <element name="dic" type="string"/>
  </type>
</element>

Pokud by elementy nazev, adresa atd. byly n∞jakΘho slo₧it∞jÜφho typu a obsahovaly by dalÜφ elementy, pou₧il by se v definici elementu pouze odkaz na jejich podrobnou definici.

<element name="odberatel">
  <type>
    <element ref="nazev"/>
    <element ref="adresa"/>
    <element ref="ico"/>
    <element ref="dic"/>
  </type>
</element>

<element name="nazev" type="string"/>

<element name="adresa" type="string"/>

<element name="ico" type="string"/>

<element name="dic" type="string"/>

Narozdφl od DTD je ve schΘmatech velice jednoduchΘ urΦit poΦet opakovßnφ n∞jakΘho elementu. Slou₧φ k tomu atributy minOccurs a maxOccurs, kter² urΦujφ minimßlnφ a maximßlnφ poΦet v²skyt∙. M∙₧eme v nich pou₧φt libovolnΘ hodnoty, u maxOccurs m∙₧eme navφc uvΘst i hodnotu *, kterß zastupuje nekoneΦno.

<element name="faktura">
  <type>
    <element ref="odberatel"/>
    <element ref="dodavatel"/>
    <element ref="polozka" minOccurs="1" maxOccurs="*"/>
  </type>
</element>

Samoz°ejm∞, ₧e m∙₧eme vytvß°et i slo₧it∞jÜφ modely obsahu. Pokud bychom cht∞li vytvo°it element para se smφÜen²m obsahem, pou₧ijeme p°φdavn² atribut u definice typu elementu:

<element name="para">
  <type content="mixed">
    <element name="em" type="string"/>
  </type>
</element>

Obvykle se majφ elementy v dokumentu vyskytovat v po°adφ, kterΘ specifikujeme ve schΘmatu. N∞kdy se m∙₧e hodit, aby se vyskytly v libovolnΘm po°adφ. T°eba u jmΘna je nßm jedno, zda je nejprve uvedeno k°estnφ jmΘno nebo p°φjmenφ. Tuto mo₧nost nßm ji₧ DTD v XML nenabφzejφ.

<element name="jmΘno">
  <type>
    <group order="all">
      <element name="k°estnφ" type="string"/>
      <element name="p°φjmenφ" type="string"/>
    </group>
  </type>
</element>

Element group m∙₧e v atributu order obsahovat jeÜt∞ hodnoty seq a choice. Prvnφ z nich °φkß, ₧e elementy se musφ v dokumentu vyskytovat ve stejnΘm po°adφ jako ve schΘmatu. Druhß varianta pak °φkß, ₧e v dokumentu se smφ vyskytnout jen jeden z element∙ definovan²ch ve skupin∞. Samoz°ejm∞, ₧e skupiny lze podle pot°eby do sebe vzßjemn∞ zano°ovat.

⌐ Ji°φ Kosek 2000-2001