Article Index

Atributy

Základní atribut je určen k upřesnění obsahu značky (text, číslo, logická hodnota, jednotky, …).

Atribut typ - CDATA

Pokud vkládáme do atributu hodnotu, pak se nejčastěji využívá typ CDATA, sem spadá vše, co je v běžném atributu. Například v případě výše uvedeného příkladu zpráva, je atributem jazyk zprávy.

<zprava jazyk="cz"> …

<!ATTLIST jazyk zprava CDATA #REQUIRED>

Atribut typ – ID

V rámci jednoho XML dokumentu lze jednou použít atribut typu ID, které lze přirovnat k primárnímu klíči v případě databáze. Cílem je umožnit unikátní identifikaci dané položky. První znak daného řetězce v atributu musí být:

  • písmeno
  • _
  • :

<zamestnanec personalni_cislo=":123">
  <jmeno>Jan</jmeno>
  <prijmeni>Novák</prijmeni>
</zamestnanec>

<!ELEMENT zamestnanec (jmeno,prijmeni)>
<!ELEMENT jmeno (#PCDATA)>
<!ELEMENT prijmeni (#PCDATA)>
<IATTLIST personalni_cislo zamestnanec ID #REQUIRED>

Atribut typ – IDREF

Pokud použijeme typ ID jako primární klíč, pak je nutno mít možnost využít i principu cizího klíče, což nabízí typ IDREF. Zde se můžeme odkázat na vybranou hodnotu atributu ID. Jedná se o ekvivalent vazby 1:n.

<zamestnanec personalni_cislo=":123" katedra="kit">
  <jmeno>Jan</jmeno>
  <prijmeni>Novák</prijmeni>
</zamestnanec>

<!ELEMENT zamestnanec (jmeno,prijmeni)>
<!ELEMENT jmeno (#PCDATA)>
<!ELEMENT prijmeni (#PCDATA)>
<IATTLIST personalni_cislo zamestnanec ID #REQUIRED>
<IATTLIST katedra zamestnanec IDREF #REQUIRED>

Atribut typ – IDREFS

Jedná se o obdobu typu IDREF, ale s možností odkázat se na více ID – tedy použít ekvivalent vazby m:n.

<zamestnanec personalni_cislo=":123" katedra="kit kii">
  <jmeno>Jan</jmeno>
  <prijmeni>Novák</prijmeni>
</zamestnanec>

<!ELEMENT zamestnanec (jmeno,prijmeni)>
<!ELEMENT jmeno (#PCDATA)>
<!ELEMENT prijmeni (#PCDATA)>
<IATTLIST personalni_cislo zamestnanec ID #REQUIRED>
<IATTLIST katedra zamestnanec IDREFS #REQUIRED>

Kde jednotlivé odkazy na ID jsou odděleny pomocí whitespace znaku.

Atribut typ – ENTITY

Atribut typu ENTITY je možno použít pro opětovné použití opakujících se řetězců, případě nahrazení dlouhého řetězce zkratkou.

<zamestnanec personalni_cislo=":123" katedra="kit kii" foto="f123">
  <jmeno>Jan</jmeno>
  <prijmeni>Novák</prijmeni>
</zamestnanec>

<!ELEMENT zamestnanec (jmeno,prijmeni)>
<!ELEMENT jmeno (#PCDATA)>
<!ELEMENT prijmeni (#PCDATA)>
<IATTLIST personalni_cislo zamestnanec ID #REQUIRED>
<IATTLIST katedra zamestnanec IDREFS #REQUIRED>
<IATTLIST foto zamestnanec ENTITY #REQUIRED>
<!ENTITY f123 SYSTEM "http://adresaserveru.tld/foto/f123.jpg">

Deklarace atributu s možností využít entitu je řešená pomocí dvou zápisů – první je deklarace vlastního atributu a následně zápis entity.
Jiná možnost je použít typ ENTITY mimo atribut.

<!ENTITY copyright "Vasilenko KIT 2017">

Použití je pak <text>. Tento dokument je chráněn copyrightem &copyright; - obdoba entit v HTML.

Atribut typ – ENTITIES

Obdobně jako u typu IDREFS je i zde možno využít několik odkazů na entity, v atributu jsou opět odděleny pomocí whitespace znaku.

<zamestnanec personalni_cislo=":123" katedra="kit kii" foto="f123 f123-2">
  <jmeno>Jan</jmeno>
  <prijmeni>Novák</prijmeni>
</zamestnanec>

<!ELEMENT zamestnanec (jmeno,prijmeni)>
<!ELEMENT jmeno (#PCDATA)>
<!ELEMENT prijmeni (#PCDATA)>
<IATTLIST personalni_cislo zamestnanec ID #REQUIRED>
<IATTLIST katedra zamestnanec IDREFS #REQUIRED>
<IATTLIST foto zamestnanec ENTITY #REQUIRED>
<!ENTITY f123 SYSTEM "http://adresaserveru.tld/foto/f123.jpg">
<!ENTITY f123-2 SYSTEM "http://adresaserveru.tld/foto/f123-2.jpg">

Atribut typ – NMTOKEN

Jedná se o restriktivní podobu typu CDATA, v hodnotě atributu NMTOKEN jsou zakázány whitespace znaky a platí zde stejné omezení, jako pro název atributu nebo značky.

Atribut typ – NMTOKENS

Obdoba typu NMTOKEN s možností zadat několik NMTOKEN řetězců za sebou.

Atribut typ – ENUMERATION

V případě typu ENUMERATION máme možnost určit povolené hodnoty, kterých může atribut nabývat. V případě zprávy to může mít tuto podobu.

<zprava jazyk="cz">
<!ATTLIST jazyk zprava (cz | en | de) #REQUIRED>

Jednotlivé povolené výrazy jsou v závorce místo typu dat a jdou odděleny pomocí mezery, svislítka a mezery.