Article Index

Skupina značek

Jinou cestou k zjednodušení návrhu je využití skupin - ať značek nebo elementů. Skupinu pak můžeme odazovat na vybraném místě.

<xs:group name="adresa">
  <xs:sequence>
    <xs:element name="ulice" type="xs:string"/>
    <xs:element name="město" type="xs:string"/>
    <xs:element name="psč" type="xs:string"/>
  </xs:sequence>
</xs:group>

<xs:complexType name="osobni-info">
  <xs:sequence>
    <xs:element name="jmeno" type="xs:string"/>
    <xs:element name="prijmeni" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Skupinu máme připravenou, její vložení do struktury XSD je pak následující:

<xs:complexType name="kontakt">
  <xs:complexContent>
    <xs:extension base="osobni-udaje">
      <xs:sequence>
        <xs:group ref="adresa"/>
      </xs:sequence>
  </xs:complexContent>
</xs:complexType>

Skupina atributů

U zprávy můžeme kromě id evidovat ještě jazyk zprávy. Pak si můžeme pomoci skupinou atributů:

<xs:attributeGroup name="zprava-info">
  <xs:attribute name="id" type="xs:integer"/>
  <xs:attribute name="lang" type="xs:language"/>
</xs:attributeGroup>

Použití v XSD je následující:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="zprava">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="od" type="xs:string"/>
      <xs:element name="komu" type="xs:string"/>
      <xs:element name="predmet" type="xs:string"/>
      <xs:element name="text" type="xs:string"/>
     </xs:sequence>
    <xs:attributeGroup ref="zprava-info" /><!-- odkaz na skupinu atributů -->
    </xs:complexType>
   </xs:element>
</xs:schema>