V n∞kolika p°edchozφch Φφslech Computerworldu jsme se seznßmili s jazykem XML a s tφm jak v n∞m vytvß°et dokumenty. Jazyk XML je v²born² formßt pro p°enos dat mezi r∙zn²mi systΘmy. V urΦitΘm okam₧iku vÜak v₧dy do procesu zpracovßnφ dokument∙ a dat vstupuje Φlov∞k. V tomto okam₧iku je pot°eba dokument prezentovat ve form∞, kterß je pro Φlov∞ka nejsrozumiteln∞jÜφ.
Jazyk XML definuje pouze strukturu dokument∙. Chceme-li vÜak dokument p°ehledn∞ zobrazit, musφme n∞jak²m zp∙sobem definovat, jak se jednotlivΘ elementy zobrazφ -- jakou barvou, jak²m pφsmem, jak budou zarovnanΘ apod. Pro definici vzhledu dokument∙ se dnes pou₧φvajφ tzv. stylovΘ jazyky. Mezi t°i nejznßm∞jÜφ a nejpou₧φvan∞jÜφ pat°φ jazyky CSS, XSL a DSSSL. V dneÜnφm tΘmatu t²dne se na n∞ podφvßme podrobn∞ji a ukß₧eme si, jak vytvo°it XML dokument a odpovφdajφcφ styl tak, aby se dokument dal zobrazit v prohlφ₧eΦφch, kterΘ podporujφ XML (konkrΘtn∞ tedy v Internet Exploreru 5.0 a ve v²vojovΘ verzi Netscape Navigatoru znßmΘ pod nßzvem Gecko).
ZpoΦßtku se poΦφtaΦe pou₧φvaly jen jako inteligentnφ psacφ stroje. S rozvojem techniky se vÜak stßle zdokonalovaly i tiskßrny. Stalo se tak, ₧e poΦφtaΦovΘ tiskßrny zaΦaly zvlßdat tisk n∞kolika variantami pφsma, poslΘze i r∙zn²mi velikostmi pφsma a nynφ pro n∞ dφky prßci v grafickΘm re₧imu nenφ problΘm vytisknout cokoliv.
Programy pro zpracovßnφ textov²ch dokument∙ se s mo₧nostmi tiskßren vypo°ßdßvaly r∙zn∞. Prvnφ z p°φstup∙ spoΦφval v tom, ₧e do textovΘho dokumentu se p°φmo vklßdaly °φdφcφ k≤dy tiskßrny, kterΘ ovliv≥ovaly pou₧it² druh pφsma. Toto °eÜenφ nebylo pro autory dokument∙ moc p°φjemnΘ a navφc nebylo ani praktickΘ a elegantnφ. NovΘ typy tiskßren nebo tiskßrny od jin²ch v²robc∙ m∞ly odliÜnΘ °φdφcφ k≤dy, a tudφ₧ nebylo mo₧nΘ jeden dokument vytisknout na vφce r∙zn²ch tiskßrnßch.
Tento problΘm odstranily a₧ r∙znΘ formßtovacφ programy jako troff nebo TeX. Formßtovßnφ dokumentu se vyznaΦilo pomocφ specißlnφch znaΦek, kterΘ pak formßtovacφ program p°evedl do jazyka srozumitelnΘho pro jednotlivΘ druhy tiskßren.
Nerozvφjely se vÜak jen tiskßrny, ale celß oblast v²poΦetnφ techniky. Dφky velkokapacitnφm zßznamov²m mΘdiiφm a rychlejÜφm poΦφtaΦ∙m bylo mo₧nΘ textovΘ dokumenty uchovßvat, vyhledßvat v nich informace, sdφlet je se spolupracovnφky, modifikovat atd. TiÜt∞n² v²stup u₧ takΘ nebyl jedin²m druhem v²stupu, kter² musel b²t kvalitnφ. Dokumenty se zaΦaly prezentovat p°φmo na obrazovkßch poΦφtaΦ∙, Ülo je zφskavat i ze vzdßlen²ch mφst pomocφ poΦφtaΦov²ch sφtφ. Ukßzalo se, ₧e pou₧itφ formßtovacφch jazyk∙ zam∞°en²ch na tiÜt∞n² v²stup nenφ pro dokumenty ten sprßvn² formßt.
V∞tÜina dokument∙ jednoho druhu m∞la podobnou strukturu. Nap°φklad kniha mß kapitoly, podkapitoly a odstavce. V²voj vedl a₧ k jazyku SGML, kter² umo₧≥oval vytvß°et dokumenty a definovat jejich strukturu. Jednou z nejznßm∞jÜφch aplikacφ SGML je jazyk HTML pou₧φvan² pro tvorbu webov²ch strßnek. ZjednoduÜenφm pom∞rn∞ slo₧itΘho a komplexnφho jazyka SGML vzniklo XML.
Pou₧itφm jazyk∙ jako SGML a XML vy°eÜilo problΘmy s v²m∞nou dokument∙ mezi r∙zn²mi aplikacemi. Tyto jazyky vÜak postihujφ pouze strukturu dokumentu, nikoliv jeho vzhled. Chceme-li SGML/XML dokument vytisknout nebo zobrazit, musφme n∞jak definovat, jak se majφ jednotlivΘ elementy zobrazit.
V∞tÜina v²robc∙ nßstroj∙ pro prßci s SGML/XML dokumenty m∞la vlastnφ zp∙sob, jak definovat vzhled jednotliv²ch element∙. Postupem Φasu se vÜak ukßzalo, ₧e by bylo celkem praktickΘ, kdyby i definice vzhledu dokumentu byla n∞jak²m zp∙sobem standardizovßna. V²sledkem tΘto snahy bylo n∞kolik stylov²ch jazyk∙.
Mezi nejstarÜφ pat°φ FOSI (Formatting Output Specification Instance), jeho₧ autorem je americkΘ ministerstvo obrany. FOSI je podporovßno mnoha SGML aplikacemi. V²hodou je to, ₧e FOSI styl je sßm o sob∞ SGML dokumentem, tak₧e pro jeho editovßnφ lze vyu₧φvat stßvajφcφ nßstroje. Jazyk je to pouze deklarativnφ, nelze v n∞m provßd∞t n∞jakΘ v²poΦty nebo p°eskupovßnφ dokumentu pro pot°eby v²stupu.
Nßstupcem FOSI byl jazyk DSSSL (Document Style Semantics and Specification Language), kter² byl v roce 1995 p°ijat jako ISO/IEC norma s Φφslem 10 179. Syntaxe DSSSL vychßzφ z jazyk∙ pro operaci se seznamy jako je Lisp nebo Schema. DSSSL je kompletnφ programovacφ jazyk. Krom∞ specifikovßnφ vzhledu jednotliv²ch element∙ tak m∙₧eme provßd∞t r∙znΘ ·pravy dokumentu p°ed jeho v²sledn²m zformßtovßnφm. Typick²m p°φkladem je nap°φklad generovßnφ obsahu dokumentu nebo zm∞na struktury a po°adφ element∙ p°ed jejich vytiÜt∞nφm.
FOSI a DSSSL byly ·zce spjaty s jazykem SGML. DSSSL lze bez problΘm∙ pou₧φvat i s jazykem XML. DalÜφ ze stylov²ch jazyk∙ vznikl pro pot°eby jazyka HTML. Ano, mßme na mysli kaskßdovΘ styly dokument∙ CSS (Cascading Stylesheets). V polovin∞ 90. let ji₧ zasßhl Web do komerΦnφ sfΘry a v²robci prohlφ₧eΦ∙ rozÜi°ovali HTML o nestandardnφ prvky umo₧≥ujφcφ r∙znΘ grafickΘ efekty a lepÜφ kontrolu layoutu. KaskßdovΘ styly m∞ly b²t nßstrojem, kter² umo₧nφ nßvrat k ΦistÜφmu HTML k≤du, kter² se nepod°izuje pouze po₧adavk∙m na grafick² design. Bohu₧el, po dvou a p∙l letech od shvßlenφ finßlnφ verze standardu CSS konsorciem W3C musφme °φci, ₧e kaskßdovΘ styly se zatφm nevyu₧φvajφ tak, jak by mohly. Vinu nesou zejmΘna v²robci prohlφ₧eΦ∙, kte°φ do prohlφ₧eΦ∙ p°idßvajφ podporu CSS pomalu a pom∞rn∞ nekvalitn∞. Uspokojivou podporu kaskßdov²ch styl∙ m∞l a₧ Internet Explorer 4.0. Netsacape Navigator na nφ teprve Φekß, Navigator 4.0 byl jen hodn∞ nedokonal²m pokusem dobrΘ implementace CSS.
V lo≥skΘm roce byla schvßlena novß verze kaskßdov²ch styl∙ -- CSS2. Ta mimo jinΘ obsahuje zlepÜenou podporu jazyka XML -- styl lze nynφ p°i°adit i na zßklad∞ hodnot atribut∙. CSS jsou dnes asi nejpou₧φvan∞jÜφm stylov²m jazykem pro XML dokumenty. Podporujφ je i Internet Explorer 5.0 a v²vojovß verze Netscape Navigatoru 5.0. Pokud budeme dnes vytvß°et XML dokumenty, kterΘ majφ b²t p°φstupnΘ na Webu, pou₧ijeme pro definici jejich vzhledu nejspφÜe CSS. KaskßdovΘ styly jsou velice jednoduch² jazyk, kter² neumo₧≥uje nijak m∞nit strukturu dokumentu nebo nap°φklad generovat obsah dokumentu. Pro jednoduchΘ dokumenty jsou vÜak v∞tÜinou zcela postaΦujφcφ.
V mnoha aplikacφch je vÜak vhodnΘ, pokud m∙₧eme p°ed zobrazenφm (vytiÜt∞nφm) dokument n∞jak modifikovat -- nap°φklad vygenerovat obsah, p°eorganizovat informace apod. V tomto p°φpad∞ svΘ uplatn∞nφ nalezne jazyk XSL (eXtensible Stylesheet Language). Jazyk XSL, jak ostatn∞ napovφdß i jeho nßzev, vznikl a₧ specißln∞ pro pot°eby jazyka XML. Pro zßpis stylu se vyu₧φvß jazyk XML, tak₧e lze pou₧φt b∞₧nΘ XML editory. XSL umo₧≥uje dv∞ zßkladnφ v∞ci: (1) transformovat jeden XML dokument do jinΘho XML dokumentu; (2) specifikovat formßtovacφ vlastnosti jednotliv²ch Φßstφ dokumentu.
Mo₧nost transformovat jeden dokument do druhΘho se dnes vyu₧φvß nejΦast∞ji. JednotlivΘ XML elementy se mapujφ na fragmenty HTML k≤du, kter² specifikuje v²slednΘ zobrazenφ. Tento zp∙sob prßce s XML ji₧ dnes podporuje IE 5.0 a existuje i ActiveX komponenta, kterß umo₧≥uje pou₧φt XML+XSL v IE 4.0. Doufejme, ₧e podpora XSL bude zahrnuta i v Netscape Navigatoru 5.0.
Formßtovacφ model XSL vychßzφ z DSSSL a je pom∞rn∞ komplexnφ. To je takΘ asi jeden z d∙vod∙, proΦ dodnes neexistuje jeho po°ßdnß implementace. Objevujφ se sice prvnφ testovacφ implementace, ale dokud nep°ijde s podporou Microsoft nebo jinß velkß softwarovß firma, bude potencißl tΘto Φßsti jazyka XSL nevyu₧it. Pro ·plnost nesmφme zapomenout na to, ₧e narozdφl od ostatnφch stylov²ch jazyk∙, nenφ XSL dosud standardizovßno. Zatφm se jednß pouze o pracovnφ nßvrh konsorcia W3C. Implementace od Microsoftu z velkΘ Φßsti nßvrhu vyhovuje a p°inßÜφ n∞kterß rozÜφ°enφ. V dalÜφch verzφch Internet Exploreru hodlß Microsoft implementaci p°izp∙sobit standardu W3C.
SpoleΦn∞ s XML vyu₧ijeme zejmΘna CSS a XSL. CSS je pln∞ postaΦujφcφ pro jednoduchΘ aplikace, pro slo₧it∞jÜφ a nßroΦn∞jÜφ formßtovßnφ se bude vyu₧φvat XSL. Do tΘ doby ne₧ se rozÜφ°φ podpora XSL v aplikacφch bude p°edevÜφm pro kvalitnφ tiÜt∞n² v²stup pou₧φvßno i DSSSL.
KaskßdovΘ styly mohly b²t zapisovßny p°φmo do HTML
dokumentu. V XML tuto mo₧nost nemßme, styl musφ b²t definovßn
v externφm souboru. To mß tu v²hodu, ₧e jeden styl m∙₧eme
aplikovat na v∞tÜφ mno₧stvφ dokument∙ stejnΘho typu. P°ipojenφ stylu
k dokumentu je nezßvislΘ na pou₧itΘm stylovΘm jazyce a provßdφ se
pomocφ specißlnφ instrukce pro zpracovßnφ
xml-stylesheet
. P°ipojenφ stylu tak m∙₧e vypadat
nap°φklad takto:
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="styl.css" type="text/css"?> <dokument> ... </dokument>
Pomocφ atributu href
urΦujeme URL adresu (m∙₧e b²t i
relativnφ jako v naÜem p°φklad∞), na kterΘ je ulo₧en soubor se
stylem. Atribut type
urΦuje MIME typ pou₧itΘho stylovΘho
jazyka. Pokud pou₧φvßme XSL, pou₧ijeme
type="text/xsl"
.
Budete-li s XML a styly experimentovat, je d∙le₧itΘ dßt si
pozor na k≤dovßnφ ΦeÜtiny v dokumentech. XML za standardnφ
k≤dovßnφ pova₧uje utf-8
. V tomto k≤dovßnφ jsou ΦeskΘ
znaky zapsßny jako dvojice na prvnφ pohled nesrozumiteln²ch
bajt∙. Bohu₧el ne vÜechny editory jsou schopnΘ zapisovat soubory
v k≤dovßnφ UTF-8. Jß sßm vφm pouze o nadstavb∞ do editoru
Emacs a o WordPerfectu 9, kter² umφ XML a podporuje UTF-8 i
UTF-16. Pokud vφte o dalÜφch editorech, dejte mi v∞d∞t.
XML dokumenty m∙₧eme samoz°ejm∞ vytvß°et v libovolnΘm k≤dovßnφ
-- nap°. CP1250 ve Windows a ISO 8859-2 v Unixu. K≤dovßnφ musφme
urΦit pomocφ atributu encoding
v XML deklaraci:
<?xml version="1.0" encoding="windows-1250"?>
V IE 5.0 nebudou s takov²mi dokumenty problΘmy. Ty nastanou a₧ v Gecku. To zatφm nepodporuje r∙znß vstupnφ k≤dovßnφ dokumentu. Musφme proto pou₧φt bu∩ UTF-8 nebo diakritiku o₧elet a pou₧φt ASCII. Pokud pou₧ijeme jinΘ k≤dovßnφ a ΦeskΘ znaky, patrn∞ nßm p°i naΦφtßnφ dokumentu Gecko zhavaruje.
Poj∩me se vÜak podrobn∞ji podφvat na jednotlivΘ stylovΘ jazyky a jejich syntaxi.