Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /data/web/virtuals/280515/virtual/www/templates/vasv304/functions.php on line 202

Article Index

Přidání atributu

Atribut v případě elementu zpráva může být například id dané zprávy. V definici se v tomto případě přidá mezi ukončení sekvence a ukončení complexType. Zápis je stále jednoduchý - pomocí atributů name, use (required - povinný, implied - nepovinný, fixed - napevno) a type.

Atribut u kořenové značky - deklarace "s ostatními značkami".

XML

<zprava id="125">
  <od>Michal</od>
  <komu>Jan</komu>
  <predmet>Přednáška</predmet>
  <text>Vem to dnes prosím za mne.</text>
</zprava>

XSD

<?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:attribute name="id" use="required" type="xs:integer"/>
    </xs:complexType>
   </xs:element>
</xs:schema>

Atribut je tady v elementu uvnitř <xs:complexType>, ale mimo sekvenci - opět platí, že <xs:complexType> značí, že značka se skládá z dalších uzlů. Jedním z nich je tedy i atribut.

Pokud deklarujeme atribut pro "koncovou" značku, pak je to následovně:

<xs:element name="zprava">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

Opět je deklarace atributu součástí <xs:complexType>, ale zde už nejsou žádní potomci. Atribut je tedy deklarován v <xs:simpleContent> - tedy daný element nemá potomky, ale pouze atribut. Navíc zde značka obsahuje data. Je tam část, která deklaruje datový typ značky - <xs:extension base="xs:string" />.