P R O G R A M U J E M EASP a databázy / 12. èas: XML I.V <strong>na</strong>šom seriáli venovanom ASP stránkam nemôeme ne−cha nepovšimnutú èoraz populárnejšiu technológiu XML.Technológia XML je otvorená a platformovo nezávislá. De−finuje formát údajov a operácie s nimi. Zjednodušene bysa dalo poveda, e tento formát pre výmenu údajov jerov<strong>na</strong>ko dobre èitate¾ný pre poèítaèe aj pre ¾udí. Tietoúdaje môeme ¾ahko <strong>na</strong>èíta a identifikova pomocoupomerne jednoduchej rutiny v ¾ubovo¾nom programova−com jazyku, a teda aj vo VBScripte (resp. JScripte). FormátXML môe takisto slúi ako alter<strong>na</strong>tívny formát pre ukla−danie údajov. V relaèných databázach sa ukladajú údaje vtabu¾kách, <strong>na</strong>príklad:meno vek povolanieJan Novak 35 <strong>sk</strong>ladnik v <strong>sk</strong>lade monitorovMirka Polakova 42 upratovackaHTML kód pre zobrazenie tejto tabu¾ky je síce pomernejednoduchý:menovekpovolanieJan Novak35<strong>sk</strong>ladnik v <strong>sk</strong>lade monitorovMirka Polakova42upratovacka ale zrozumite¾ný len pre z<strong>na</strong>lcov syntaxe jazyka HTML. V <strong>na</strong>−šom výpise je HTML kód preh¾adne formátovaný a <strong>na</strong>vyšesú záhlavia a údaje vypísané hrubým fontom, ale to len <strong>na</strong>ilustráciu. Ten istý efekt výpisu v okne prehliadaèa HTMLstránok toti dosiahneme aj pri pouití kódumenovekpovolanieJanNovak35 <strong>sk</strong>ladnik v <strong>sk</strong>lade monitorovMirkaPolakova42upratovackaAk si pozrieme príklad jednoduchého súboru XML,ktorý obsahuje tie isté údaje ako predchádzajúce HTMLkódy, predsa len zistíme, e stroje sú <strong>na</strong> tom, èo sa týkaèítania formátu XML, o nieèo lepšie, ale aj pri letmompoh¾ade vidíme, e ide o nejaký zoz<strong>na</strong>m zákazníkov.Jan Novak35<strong>sk</strong>ladnik v <strong>sk</strong>lade monitorovMirka Polakova42upratovackaAk <strong>na</strong>píšeme „jednoduchú“ šablónu v jazyku XSL (Ex−tensible Stylesheet language):- zí<strong>sk</strong>ame v okne HTML prehliadaèa celkom prijate¾ný výsle−dok (obr. 1)Obr. 1Z tohto jednoduchého porov<strong>na</strong>nia vidíme, e zatia¾ èosyntax HTML je urèená hlavne <strong>na</strong> vyjadrenie formy výpisu,syntax dokumentu XML je striktne zameraná <strong>na</strong> jehoobsah. Forma zobrazenia sa definuje pomocou štýlov.Definícia spôsobu dokumentu je teda dôsledne oddelenáod jeho obsahu. Ak potrebujeme importova údaje z do−kumentu XML alebo s nimi pracova, definície štýlov sivôbec nemusíme všíma.Vo vete Ak <strong>na</strong>píšeme „jednoduchú“ šablónu v jazykuXSL… v predchádzajúcom odseku je slovo jednoduchú vúvodzovkách oprávnene. Aby sme toti zobrazili obsahsúboru XML vo forme preh¾adnej tabu¾ky, nemusíme sauèi jazyk XSL. Vy<strong>sk</strong>úšajte si tento jednoduchý (tentoraz ubez úvodzoviek) HTML kód pre Internet Explorer 5.0 avyšší:Výsledok v okne prehliadaèa je ve¾mi uspokojujúci. Akoto funguje?Riadok vytvorí dátový ostrovèek XML. Tátokonštrukcia nám obsah HTML dokumentu nezobrazí, lensa vytvorí akýsi kontajner <strong>na</strong> uloenie údajov zo súboruXML. Údaje v ostrovèeku XML môu by vloené aj pria−mo, <strong>na</strong>príklad:Mirka Polakova42upratovackaObr. 2Údaje z dátového ostrovèeka XML môeme vklada dopríslušného miesta HTML stránky <strong>na</strong>príklad pomocoukonštrukcie .Hoci sa hovorí, e opakovanie je matkou múdrosti, v tom−to prípade to neplatí. Keby sme si pripomenuli tretiu èas se−riálu o ASP, kde sme pracovali s textovými súbormi, a <strong>na</strong>pí−sali pre <strong>na</strong>èítanie údajov zo súboru vo formáte XML a ich ná−sledné spracovanie <strong>na</strong> ASP stránke programový kód v štýle:Dim ObjSubor Vytvorime instanciu objektuFileSystemObjectSet ObjSubor =Server.CreateObject( Scripting.FileSystemObject )dim TxtSubor Otvorime existujuci textovysuborSet TxtSubor=ObjSubor.OpenTextFile( c:/zakaznici.xml)do while not TxtSubor.AtEndOfStreamadresa = TxtSubor.ReadLine...loopSet TxtSubor = CloseSet TxtSubor = NothingSet ObjSubor = Nothingasi by sme výhody XML formátu vôbec nepocítili a <strong>na</strong>vyšeby sme vyplytvali ve¾a energie <strong>na</strong> dosiahnutie cie¾a, ktorýsa dá dosiahnu ove¾a efektívnejšie.Kadý XML dokument musí obsahova jeden element<strong>na</strong>jvyššej úrovne, v <strong>na</strong>šom prípade sme pre tento elementpouili názov root_element.< Zoz<strong>na</strong>mZakaznikov >...obsah dokumentuPodobne ako element <strong>na</strong>jvyššej úrovne aj kadý ele−ment, ktorý tvorí obsah dokumentu, je uzavretý pomocoupárových z<strong>na</strong>kov (tagov), <strong>na</strong>príklad:Mirka Polakova42upratovackaAk si pozornejšie prezrieme súbor XML, zistíme, eobsahuje hierarchickú stromovú štruktúru (obr. 3).Táto štruktúra obsahuje objekty DOM (DocumentObject Model). DOM je API pre dokumenty HTML a XML.Na <strong>na</strong>èítanie údajov v takto organizovanom súbore je<strong>sk</strong>utoène programová konštrukcia <strong>na</strong> èítanie textovéhosúboru riadok po riadkudo while not TxtSubor.AtEndOfStreamadresa = TxtSubor.ReadLine...loop1/2002 PC REVUE 115
P R O G R A M U J E M EObr. 3ve¾mi neefektív<strong>na</strong>. DOM toti obsahuje uitoèné objekty s metódami pre browsovanie vhierarchickej štruktúre dokumentu XML, <strong>na</strong>príklad Node, NodeList a NamedNodeMap.Ukáme si jednoduchý kód v JavaScripte, ktorý sa vykoná <strong>na</strong> strane klienta <strong>na</strong> prechá−dzanie uzlami dokumentu XML.Parse XMLfunction parseXML(){// ********var domXMLData = dsoData;txtData.innerHTML = PodriadeneUzly(domXMLData, 0);}function PodriadeneUzly(nodNode, intLevel){// ***************var strNodes = ;var intCount = 0;var intNode = 0;strNodes += nodNode.nodeName+ Hodnota: + nodNode.nodeValue + ;// hladaj podriadene uzlyintCount = nodNode.childNodes.length;if (intCount > 0)// pre kazdy uzolfor (intNode = 0; intNode < intCount; intNode++)strNodes += PodriadeneUzly(nodNode.childNodes(intNode), intLevel + 1);return strNodes;}Funkciu PodriadeneUzly voláme rekurzívne pre kadú úroveò vnorenia. MetódanodeName vracia názov uzla a funkcia nodeValue vracia jeho hodnotu. MetódachildNodes vracia NodeList obsahujúci potomkov uzla. Na HTML stránke sa zobrazízoz<strong>na</strong>m názvov uzlov a ich hodnota (obr. 4).Hovorí sa, e <strong>na</strong> dobré sa ¾ahko zvyká. Keïe sme si u v tomto seriáli zvykli <strong>na</strong> slubydatabázového servera, budeme tieto sluby vyuíva aj pri práci s údajmi uloenými voformáte XML. Túto tému <strong>na</strong>plno rozvinieme v ïalšom pokraèovaní, teraz musíme splniešte jeden s¾ub z predchádzajúcej èasti.INTERNETOVÝ ÈASOPIS S ÈLÁNKAMI ULOENÝMI VO FORMÁ−TE XML. V predošlej èasti sme s¾úbili ukáza modifikáciu internetového èasopisu, keïèlánky budú uloené miesto databázyv súboroch XML. Zabralo by to ve¾a mies−ta (pribline dve pokraèovania seriálu) amedzitým som zistil, e práve takýto prí−klad je vynikajúcim spôsobom opísaný vknihe Homer, A. – Sussmen, D. – Francis,B.: Active Server Pages 3.0 Profesio−nálne, ktorú vydalo v preklade vydavate¾−stvo Computer Press v roku 2000. Ide kon−krétne o 28. kapitolu: Øízení novin po−mocí XML (pøípadová studie). Komplet−ný kód k tejto knihe je moné stiahnuz webovej adresy vydavate¾stva WROXp2p.wrox.com. Ukáeme si hlavnú strán−Obr. 4ku èasopisu, <strong>na</strong> ktorej je preh¾ad èlánkov(obr. 5), a stránku s èlánkom rubriky NEWS(obr. 6).Príklad v tejto prípadovej štúdii je pomerne jednoduchý a pritom komplexný. Akoúloi<strong>sk</strong>o údajov slúia adresáre so súbormi XML, usporiadané pod¾a jednotlivých rubríkmagazínu. Názvy súborov sú usporiadané pod¾a dátumu a èasu pri pouití konvencie:RubrikaRokMesiacDenPoradie <strong>na</strong>pr klad:news19991021001.xmlnews19991021002.xml...prièom Poradie urèuje poradie publikovania èlánku v daný deò.Uvedieme aj príklad uloenia jedného èlánku v súbore XML:Mayor to speak at luncheonBy John DoeOctober 21, 1999Mayor Phil Williams will speak at the Republican Ladies Novemberluncheon where he is expected to announce his run for re-election.The proposal to make dog owners more directly responsible forinjuries caused by aggressive animals, and to hike the pe<strong>na</strong>lties for violatingthe law, was discussed in Wednesday night s Administrative LiaisonCommittee meeting.........¼uboslav LackoLiteratúra: Homer, A. – Sussmen, D. – Francis, B.: Active Server Pages 3.0 Profesionálne.Computer Press 2000.http://<strong>www</strong>.xml.org, http://<strong>www</strong>.xml.com, http://<strong>www</strong>.xmlsoftware.comObr. 5 Obr. 6116 PC REVUE 1/2002