Veřejné identifikátory ve světě DTD

V našem Tématu týdne o XML (Computerworld 14/99) jsme si řekli, že XML dokument může vyhovovat určitému typu dokument...


V našem Tématu týdne o XML (Computerworld 14/99) jsme si řekli, že XML dokument
může vyhovovat určitému typu dokumentu. Definice typu dokumentu (Document Type
Definition, DTD) přitom říká, které elementy a atributy můžeme v dokumentu
použít a v jakých vzájemných vztazích.
DTD je tedy užitečný nástroj, který nám umožní hlídat, zda mají naše dokumenty
správnou strukturu. Ve světě se používá mnoho DTD, které vyhovují různým
požadavkům. Mezi jedno z nejznámějších patří například DocBook, které definuje
elementy a atributy vhodné pro značkování technické dokumentace.
Tím, že naše dokumenty založíme na určitém DTD, získáme hned dvě výhody. Jednak
můžeme pomocí parseru kontrolovat, zda má náš dokument správnou strukturu.
Druhá výhoda je patrná při použití standardních DTD, jako HTML nebo DocBook k
dispozici budeme mít mnoho užitečných a jednoúčelových nástrojů navržených pro
konkrétní DTD.
DTD se k dokumentu přidává pomocí deklarace typu dokumentu (DOCTYPE), která je
umístěna na začátku dokumentu ihned za XML deklarací. Nejčastěji je DTD uloženo
v samostatném souboru, aby mohlo být využíváno v mnoha dokumentech. V tomto
případě má deklarace tvar:
<!DOCTYPE kořenový_element SYSTEM "URL">
URL přitom udává adresu nebo jméno souboru, ve kterém je uloženo DTD. Kořenový
element je jméno elementu, který je v DTD definovaný jako kořenový tj. obsahuje
všechny další elementy dokumentu.
Pro některá běžně používaná a standardizovaná DTD je zbytečné, aby si parser a
další aplikace četly DTD vždy ze sítě. Mnohem logičtější by bylo, aby v systému
byla přítomna lokální kopie souborů s DTD. To je v XML možné pomocí takzvaných
veřejných identifikátorů. K označení DTD použijeme nějaký textový řetězec.
Aplikace pracující s XML pak ve svém konfiguračním souboru zjistí, ve kterém
souboru je uloženo příslušné DTD. Místo slova SYSTEM nyní použijeme výraz
PUBLIC, s nímž uvedeme identifikátor DTD. Nakonec však stejně musíme připojit
URL, které ukazuje na soubor s DTD, aby mohla aplikace DTD získat i v případě,
že nerozpozná veřejný identifikátor. Deklarace pak může dopadnout třeba takto:
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" "docbook.dtd">
DTD můžeme umístit i přímo do dokumentu pomocí následujícího zápisu.
<!DOCTYPE kniha [ ... DTD ...
]>
Umístění DTD přímo do dokumentu není příliš časté, protože pak ztrácíme možnost
sdílení jednoho DTD mezi několika dokumenty. Užitečnější je zato možnost
zkombinovat obě předešlé metody a externí DTD upravit pomocí lokálně uvedených
definic. Lokální část DTD se zpracovává ještě před částí externí a může tedy
změnit některé definice uložené v externím DTD.
<!DOCTYPE kniha SYSTEM "kniha.dtd" [ definice, které změní nebo rozšíří
kniha.dtd ]>
9 0925 / pahnVeřejné identifikátory
Použití veřejných identifikátorů má mnohé výhody. Abychom je mohli použít,
musíme mít na svém počítači lokální kopie všech souborů DTD, které používáme. V
souboru catalog pak musíme mít k dispozici mapování mezi veřejnými
identifikátory a soubory. Máme-li například DTD uložena v adresáři c:dtd,
budeme mít pro DocBook v katalogovém souboru řádek
PUBLIC "-//OASIS//DTD DocBook V3.1//EN" "c:dtddocbook.dtd"
Aby všechny aplikace katalogový soubor našly, musíme jeho umístění uložit do
proměnné prostředí SGML_CATALOG_FILES.
Samotný význam jednotlivých části veřejného identifikátoru vychází z SGML.
První znak "-" znamená, že identifikátor není zaregistrován. Znamená to, že
není zaručena jeho celosvětová jednoznačnost. Pro registrované identifikátory
se na tomto místě používá znak "+". Pokud je vlastníkem organizace ISO, uvádí
se na začátku řetězec ISO 8879:1986.
Další část identifikátoru označuje organizaci nebo osobu, která je vlastníkem
souboru označeného veřejným identifikátorem. Například pro HTML má
identifikátor tvar
-//W3C//DTD HTML 4.0 Transitional//EN
Na první pohled vidíme, že vlastníkem je W3C. U DocBooku je to zase firma Oasis.
Za dalšími dvěma lomítky následuje určení typu souboru. V našem případě tam
bude vždy DTD, protože se odkazujeme na soubor s DTD. Poté následuje textové
označení dokumentu například DocBook V3.1 pro verzi 3.1 systému DocBook. Za
posledními dvěma lomítky je kód jazyka, v němž je DTD zapsáno (angličtina).









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.