XHTML – typy atributů
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. TypID
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 elementmujElement
, 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 typuID
, 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 typID
. TypNMTOKEN
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 atributid
(ještě se k těmto atributům dostaneme).IDREF
,IDREFS
(ID reference) – hodnotou atributu typuIDREF
je jméno elementu z aktuálního dokumentu, určené pomocí atributu typuID
(v XHTML je to atribut se jménemid
). Hodnotou atributůIDREFS
jsou mezerou oddělená jména libovolného počtu elementů, určená stejně jako u typuIDREF
.
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í:
- jmenné schéma – např.
http://
,ftp://
,news:
nebomailto:
. - jméno stroje – např.
interval.cz
,www.seznam.cz
nebobrowsers.evolt.org
. - jméno zdroje, udávané jako cesta – např.
clanek.asp?id=1051
,TR/2001/REC-xhtml11-20010531
nebostories/
– 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&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.
Mohlo by vás také zajímat
-
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Windows App: Pracujte odkudkoliv, kdykoliv
3. listopadu 2024 -
Certifikáty Entrust ztratí důvěru Google Chrome
8. července 2024 -
AI v programování: Jak používat GitHub Copilot (část 2)
19. února 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024