Již jsme si ukázali, jak jsou v DTD deklarovány elementy, atributy, znakové entity a parametrické entity. Dokončeme náš výlet do světa DTD představením typů atributů v XHTML.

Základní typy atributů XML

V XML existuje několik základních typů atributů, z nichž se v XHTML používají tyto:

  • CDATA – hodnotou atributu může být libovolný textový řetězec tvořený znaky ze znakové sady dokumentu i znakovými entitami. V těchto hodnotách byste se měli vyvarovat použití řádkových zlomů a více (než jednoho) bílých znaků (mezera, tabelátor) za sebou.
  • ID – hodnota atributu může být tvořena libovolným počtem písmen, číslic a znaků „-_:.“, přičemž musí začínat písmenem nebo znaky „_:“. Vzhledem ke kompatibilitě s HTML, HTTP, skriptovacími a stylovacími jazyky (CSS) se ale z písmen používají pouze znaky anglické abecedy (bez háčků a čárek) a hodnota vždy začíná písmenem. V dnešních prohlížečích se už pravděpodobně nesetkáte s problémy při plném využívání těchto možností XML, HTML je ale nepovolovalo, a proto byste se jim v rámci zpětné kompatibility měli vyhnout. Typ ID je v XHTML upotřeben pro jediný atribut – id. Ten se používá k pojmenování elementu pro účely odkazování na něj v hypertextových odkazech, skriptech a stylovacích jazycích (CSS). Jeho hodnota musí být pro celý dokument jedinečná, tzn. pokud si pojmenuji jeden element mujElement, už tak nemohu pojmenovat žádný jiný.
  • NMTOKEN (name token, tedy jmenný symbol) – hodnota atributu může být tvořena stejnými znaky jako u typu ID, ale již zde nejsou žádná omezení týkající se počátečního znaku. Pro tento typ ale obvykle platí v XHTML to samé jako pro typ ID. Typ NMTOKEN se totiž vyskytuje především u atributů name, které jsou v XHTML většinou z důvodů zpětné kompatibility s HTML a musí mít vždy stejnou hodnotu jako atribut id (ještě se k těmto atributům dostaneme).
  • IDREF, IDREFS (ID reference) – hodnotou atributu typu IDREF je jméno elementu z aktuálního dokumentu, určené pomocí atributu typu ID (v XHTML je to atribut se jménem id). Hodnotou atributů IDREFS jsou mezerou oddělená jména libovolného počtu elementů, určená stejně jako u typu IDREF.

Odvozené typy atributů v XHTML

XHTML používá k definici typu atributu základní typy atributů XML (které jsme si právě představili), kromě toho ale navíc ještě odvozuje z těchto základních typů svoje vlastní typy. Tyto typy jsou definovány jako parametrické entity (viz minulý díl), jejichž obsahem je vždy jméno základního typu atributu, z kterého jsou odvozeny. Kromě toho je u nich poznámka, co musí ten který odvozený typ splňovat (vedle nutnosti splňovat podmínky základního typu, z kterého je odvozen – viz výše). Nyní si odvozené typy představíme.

Text

Hodnotou atributu je text určený lidem (ke čtení, poslechu..).

V DTD je tento typ zastupován parametrickou entitou %Text;, deklarace:

<!ENTITY % Text „CDATA“>

URI

Hodnotou atributu je URI podle RFC 2396. URI (Universal Resource Identifier, tedy Univerzální identifikátor zdroje) je obecný identifikátor nějakého informačního zdroje, jeho podmnožinou je potom známější URL. Většinou se sestává ze třech částí:

  1. jmenné schéma – např. http://, ftp://, news: nebo mailto:.
  2. jméno stroje – např. interval.cz, www.seznam.cz nebo browsers.evolt.org.
  3. jméno zdroje, udávané jako cesta – např. clanek.asp?id=1051, TR/2001/REC-xhtml11-20010531 nebo stories/ – od jména stroje je odděleno znakem „/“. Někdy je jako jméno zdroje udávaná pouze cesta k adresáři (např. TR/). V takovém případě záleží na konfiguraci serveru, jaký soubor předloží (většinou to bývá index.html, default.html, index.php, default.asp apod.).

Tedy pokud máme URI http://email.server.cz/users/56/index.html, pak je jmenným schématem http://, jménem stroje email.server.cz a jménem zdroje users/56/index.html (v cestě jsou v URI povoleny pouze lomítko /, ne zpětné lomítko \).

Hodnotou atributu typu %URI; může být také relativní cesta. V takovém případě neuvádíme jmenné schéma ani jméno stroje. Relativní cesta se odvozuje od aktuální cesty k dokumentu a od hodnoty elementu base (k tomu se ještě dostaneme). Můžeme zde využívat speciálního zápisu pomocí dvou teček, které nás dostanou o úroveň výš v adresářové struktuře. Příklad vše objasní:

<!– Nacházíme se na stránce, která má absolutní URI http://server.cz/onas/onas.html –>
<a href=“clanky.html“>Články</a>
<!– URI v atributu href ukazuje na http://server.cz/onas/clanky.html –>
<img src=“../img/fotka.gif“ alt=“Moje fotka před dvěma lety“ />
<!– URI v atributu src ukazuje na http://server.cz/img/fotka.gif –>

Také je důležité poznamenat, že i v URI musíte zapisovat znak &, který se často používá pro oddělení parametrů u dynamicky generovaných stránek, jako znakovou entitu, tedy:

<a href=“stranka.php?id=23&amp;user=56″>Naše stránka o letadlech</a>

Obsahem URI mohou být pouze znaky ASCII, ostatní znaky se musí zapisovat pomocí opisu %HH, kde HH je hexadecimální číslo reprezentující znak.

Tento typ je většinou citlivý na velikost písmen (DNS nerozlišuje malá a velká písmena ve jménu stroje, ale mnoho serverů rozlišuje malá a velká písmena ve jméně zdroje). V DTD je tento typ zastupován parametrickou entitou %URI;, deklarace:

<!ENTITY % URI „CDATA“>

Seznam URI

Hodnotou atributu je seznam URI oddělených mezerou.

O citlivosti na velká písmena zde platí to samé jako u předchozího typu. V DTD je tento typ zastupován parametrickou entitou %UriList;:

<!ENTITY % UriList „CDATA“>

Znak

Hodnotou atributu je jeden znak ze znakové sady dokumentu, může být reprezentován i znakovou entitou.

V DTD je tento typ zastupován parametrickou entitou %Character;:

<!ENTITY % Character „CDATA“>

Číslo

Hodnotou atributu je jedno nebo více čísel.

V DTD je tento typ zastupován parametrickou entitou %Number;:

<!ENTITY % Number „CDATA“>

MIME typ

Hodnotou atribtutu je MIME typ podle RFC 2045, také se můžete podívat na seznam všech doposud zaregistrovaných MIME typů. Příkladem MIME-typu je text/html, text/xhtml, image/png nebo video/mpeg.

Tento typ není citlivý na velikost písmen. V DTD je tento typ zastupován parametrickou entitou %ContentType;:

<!ENTITY % ContentType „CDATA“>

MIME typy

Hodnotou atributu jsou MIME typy oddělené čárkou (viz předchozí typ).

Tento typ není citlivý na velikost písmen. V DTD je tento typ zastupován parametrickou entitou %ContentTypes;:

<!ENTITY % ContentTypes „CDATA“>

Znaková sada

Hodnotou atributu je jedno z registrovaných kódování znaků podle RFC 2045.

Tento typ není citlivý na velikost písmen. V DTD je tento typ zastupován parametrickou entitou %Charset;:

<!ENTITY % Charset „CDATA“>

Znakové sady

Hodnotou atributu jsou kódování oddělená mezerou (viz předchozí typ).

Tento typ není citlivý na velikost písmen. V DTD je tento typ zastupován parametrickou entitou %Charsets;:

<!ENTITY % Charsets „CDATA“>

Kód jazyka

Hodnotou atributu je kód jazyka podle RFC 1766. Pro češtinu je cs, pro slovenštinu sk.

Tento typ není citlivý na velikost písmen. V DTD je tento typ zastupován parametrickou entitou %LanguageCode;:

<!ENTITY % LanguageCode „NMTOKEN“>

Délky

Následující tři typy slouží u XHTML atributů k udávání velikostí.

Pixely

Hodnotou atributu je číslo, které udává počet pixelů délky.

V DTD je tento typ zastupován parametrickou entitou %Pixels;:

<!ENTITY % Pixels „CDATA“>

Délka

Hodnotou atributu je délka udávaná buď pouze číslem (v takovém případě se jedná o pixely) nebo číslem následovaným znakem „%“ (v tom případě se jedná o procenta z dostupného prostoru).

V DTD je tento typ zastupován parametrickou entitou %Length;:

<!ENTITY % Length „CDATA“>

Speciální délka

Hodnota atributu může být stejná jako u předchozího typu nebo může nabývat tzv. relativní délky. Ta je ve tvaru číslo*, což má následující význam: při přidělování místa jednotlivým elementům v prohlížeči je nejdříve přiděleno místo pixelovým a procentážním velikostem a až poté je rozděleno zbývající místo mezi elementy s relativní délkou. Každý takový element dostane místo podle toho, jaká je hodnota čísla předcházejícího *.

Vše vysvětlím na příkladu: po přidělení místa pixelovým a procentážním velikostem zbude 60 pixelů a zbývající relativní velikosti jsou 1*, 2* a 3*. Prohlížeč nejprve sečte všechna čísla předcházející * (dostane číslo 6), a tak rozdělí zbývající prostor na šestiny. Každý element pak dostane tolik šestin, kolik udává číslo před *. 1* dostane jednu šestinu, tedy 10 pixelů, 2* dostane dvě šestiny, tedy 20 pixelů, a 3* dostane tři šestiny, tedy 30 pixelů.

Pokud určíte jako hodnotu atributu jen *, je tato hodnota považována za 1*. Pokud proto uvedete např. tři přesné velikosti pomocí pixelů a budete chtít, aby se zbytek dopočítal podle velikosti okna, stačí uvést *. Prohlížeč pak zbylý prostor nerozdělí a celou ji přidělí tomuto prvku.

V DTD je tento typ zastupován parametrickou entitou %MultiLength;:

<!ENTITY % MultiLength „CDATA“>

Typy odkazu

Tento typ mají přiřazen pouze atributy rel a rev elementů a a link, proto se možným hodnotám tohoto typu budeme věnovat až při probírání těchto elementů.

V DTD je tento typ zastupován parametrickou entitou %LinkTypes;:

<!ENTITY % LinkTypes „CDATA“>

Popis media

Tento typ můžeme najít pouze u atributu media elementů style a link. Proto se mu budeme dopodrobna věnovat až při probírání těchto atributů.

V DTD je tento typ zastupován parametrickou entitou %MediaDesc;:

<!ENTITY % MediaDesc „CDATA“>

Datum a čas

Tento typ atributu najdeme pouze u atributu datetime elementů ins a del. Proto se mu budeme věnovat až při probírání těchto elementů.

V DTD je tento typ zastupován parametrickou entitou %Datetime;:

<!ENTITY % Datetime „CDATA“>

Skript

Tento typ zmiňuji jen pro pořádek, v seriálu se mu ještě budeme věnovat v části o skriptech.

V DTD je tento typ zastupován parametrickou entitou %Script;:

<!ENTITY % Script „CDATA“>

Styl

O tomto typu platí to samé jako o předchozím, budeme se mu ještě věnovat v části o stylech.

V DTD je tento typ zastupován parametrickou entitou %StyleSheet;:

<!ENTITY % StyleSheet „CDATA“>

Shape a Coords

Tyto dva typy slouží pro definici klikacích map, proto se jim budeme věnovat v části zaobírajícím se tímto tématem.

V DTD jsou tyto typy zastupovány parametrickými entitami %Shape; a %Coords;:

<!ENTITY % Shape „(rect|circle|poly|default)“>
<!ENTITY % Coords „CDATA“>

Toto jsou tedy všechny typy atributů v XHTML 1.0 Strict. Kromě nich ještě existují typy, které jsou využívány pouze již zavrženými atributy, a proto se vyskytují jen v XHTML 1.0 Transitional nebo XHTML 1.0 Frameset – jsou to %FrameTarget;, %ImgAlign;, %Color; a %MultiLengths;. Těmi se budeme zabývat zvlášť, po probrání XHTML 1.0 Strict.

Na závěr jsem si připravil několik příkladů deklarací atributů:

http-equiv   CDATA           #IMPLIED <!– Atribut http-equiv musí nabývat obsahu podle typu CDATA a není povinný –>
type         %ContentType;   #REQUIRED <!– Atribut type musí nabývat obsahu podle odovozeného XHTML typu %ContentType; a je povinný –>
xml:space    (preserve)      #FIXED ‚preserve‘ <!– Atribut xml:space může nabývat pouze hodnoty preserve –>

V příštím článku se budeme zabývat kódováním dokumentu, a také si řekneme, jak správně používat češtinu v XHTML.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět