• No results found

Client of a Native XML Database

N/A
N/A
Protected

Academic year: 2021

Share "Client of a Native XML Database"

Copied!
53
0
0

Loading.... (view fulltext now)

Full text

(1)

Fakulta elektrotechniky a informatiky

Katedra informatiky

Klient nativn´ı XML datab ´aze

Client of a Native XML Database

(2)
(3)

r´ad podˇekoval za spoustu informac´ı a za rady, kter´e mˇe vˇzdy navedly t´ım spr´avn ´ym smˇerem.

(4)

C´ılem t´eto diplomov´e pr´ace je implementace klientsk´eho softwaru pro pˇripojen´ı a z´ısk´an´ı poˇzadovan ´ych dat z existuj´ıc´ı nativn´ı XML datab´aze. V prvn´ı f´azi dokumentu bude pops´an jazyk XML, jeho funkcionalita a tak´e sezn´am´ı ˇcten´aˇre s problematikou dotazo-vac´ıch jazyk ˚u urˇcen ´ych pro vyhled´av´an´ı dat v XML dokumentech. Jedna kapitola je tak´e vˇenov´ana teoretick´emu popisu nativn´ıch XML datab´az´ı. Pot´e jiˇz n´asleduje podrobn ´y po-pis konkr´etn´ı zvolen´e nativn´ı XML datab´aze, jej´ıho API a v ´yvoje vlastn´ı klietsk´e aplikace, kter´a s touto datab´azi bude komunikovat. V pr ˚ubˇehu pr´ace byla vyv´ıjena experiment´aln´ı metoda komprese XML dat a vlastn´ı komponenta slouˇz´ıc´ı k zobrazov´an´ı XML doku-ment ˚u, jenˇz byly do aplikace zakomponov´any.

Kl´ıˇcov ´a slova: XML, XPath, XQuery, parser, nativn´ı XML datab´aze, klient, eXist,

kom-prese, komponenta

Abstract

Target of this thesis is to implement a client-side software for creating a connection to an existing native XML database and obtaining required data from the database. First part of this thesis will describe the XML language, its functionality and also will make viewers familiar with query languages for selecting data withing XML documents. One chapter is also devoted to theoretic definition of native XML databases. Then here comes a detailed exploration of a particular chosen XML database, its API and the development of a client application which will communicate with the database. During this work, an experimental method of XML data compression and own component for representing XML documents were developed. Both those were then integrated into the application.

Keywords: XML, XPath, XQuery, parser, native XML database, client, eXist,

(5)

XML – eXtensible Markup Language

DOM – Document Object Model

LAN – Local Area Network

API – Application Programming Interface SGML – Standard Generalized Markup Language

W3C – World Wide Web Consortium

UTF-8 – 8-bit UCS Transformation Format UCS – Universal Character Set

HTML – HyperText Markup Language PDF – Portable Document Format HTTP – HyperText Transfer Protocol

WWW – World Wide Web

CSS – Cascading Style Sheets

XSL – Extensible Stylesheet Language

XHTML – eXtensible HyperText Markup Language DTD – Document Type Definition

PCDATA – Parsed Character Data

CDATA – Character Data

XSD – XML Schema Definition

TCP – Transmission Control Protocol URI – Uniform Resource Identifier

JDK – Java Development Kit

GUI – Graphical User Interface REST – Representational State Transfer SOAP – Simple Object Access Protocol XML-RPC – XML Remote Procedure Call

(6)

Obsah

1 Uvod´ 4

2 Technologie XML 5

2.1 Popis . . . 5

2.2 Hlavn´ı rysy jazyka XML . . . 5

2.3 Syntaxe XML dokumentu . . . 5

2.4 S´emantika XML dokumentu . . . 7

2.5 DOM . . . 9

2.6 Srovn´an´ı s jazykem HTML . . . 10

3 Dotazovac´ı jazyky pro XML 13 3.1 Dostupn´e dotazovac´ı jazyky . . . 13

3.2 Jazyk XPath . . . 13

3.3 Jazyk XQuery . . . 15

4 XML datab´aze 17 4.1 V ´yznam XML datab´az´ı . . . 17

4.2 Typy XML dokument ˚u . . . 17

4.3 Datab´aze s podporou XML . . . 19

4.4 Nativn´ı XML datab´aze . . . 19

4.5 Popis datab´aze eXist . . . 21

5 Popis aplikace 24 5.1 N´avrh implementace . . . 24

5.2 Zvolen´e rozhran´ı k datab´azi eXist . . . 28

5.3 Implementace . . . 30

5.4 V ´ysledky test ˚u . . . 38

6 Z´avˇer 42 7 Reference 43 Pˇr´ılohy 44 A Datov´e typy v jazyce XPath 2.0 a XQuery 1.0 45 B Uˇzivatelsk´a pˇr´ıruˇcka 46 B.1 Instalace . . . 46

B.2 Spuˇstˇen´ı aplikace . . . 46

B.3 Grafick´e uˇzivatelsk´e rozhran´ı (GUI) . . . 46

(7)

Seznam obr ´azk ˚

u

1 Hierarchie datov ´ych typ ˚u obsaˇzen ´ych v jazyku XML Schema, podle [5] . . 10

2 Objektov ´y model dokumentu - DOM . . . 11

3 Vytvoˇren´ı stromov´e struktury DOM . . . 11

4 Java Admin rozhran´ı datab´aze eXist . . . 22

5 Srovn´an´ı v ´ykonu komprese XMill a gzip, podle [6] . . . 26

6 Zobrazen´ı XML dokumentu pomoc´ı WebBrowser komponenty . . . 27

7 Serverov´a aplikace . . . 33

8 Zobrazen´ı XML dokumentu pomoc´ı XMLenAView komponenty . . . 37

9 Srovn´an´ı ´urovnˇe komprese LenA a XMill . . . 39

10 Srovn´an´ı ˇcasov´e n´aroˇcnosti komprimace LenA a XMill . . . 40

11 Srovn´an´ı ˇcasov´e n´aroˇcnosti komponent XMLenAView a WebBrowser . . . 41

12 Datov´e typy v jazyce XPath 2.0 a XQuery 1.0, podle [3] . . . 45

(8)

Seznam v ´ypis ˚

u zdrojov ´eho k ´

odu

1 Syntakticky spr´avn ´y XML dokument . . . 6

2 Uk´azka jazyka DTD . . . 7

3 Uk´azka jazyka XML Schema . . . 8

4 Pˇr´ıklad pouˇzit´ı FLWOR v ´yrazu (aplikovan ´y na XML dokument z v ´ypisu 1) 16 5 Datovˇe orientovan ´y XML dokument . . . 18

6 Dokumentovˇe orientovan ´y XML dokument . . . 18

7 Odpovˇed’ datab´aze eXist na XPath dotaz . . . 30

8 Zpr´avy pro komunikaci server-klient . . . 31

(9)

1

Uvod

´

Technologie XML v souˇcasn´e dobˇe st´ale v´ıce pronik´a do nejr ˚uznˇejˇs´ıch odvˇetv´ı lidsk´e ˇcinnosti. Nejvˇetˇs´ı zastoupen´ı m´a pochopitelnˇe v oblasti informaˇcn´ıch technologi´ı, ale na-jdeme ji napˇr. i v kontextu geografick ´ych vˇed, archivnictv´ı a mnoha dalˇs´ıch. Rostouc´ı vyuˇz´ıv´an´ı form´at ˚u XML vˇsak s sebou pˇrin´aˇs´ı n´aroˇcnˇejˇs´ı poˇzadavky na ukl´ad´an´ı a spr´avu takov ´ych dat.

Jakoˇzto i u jin ´ych form´at ˚u dat, i u XML jsou k dispozici datab´azov´e syst´emy schopn´e tato data pojmout a spolehlivˇe uchov´avat. Pro XML dokumenty existuje speci´aln´ı typ datab´az´ı. Jedn´a se o tzv. nativn´ı XML datab´aze. Jejich nejsilnˇejˇs´ı v ´yhodou je ukl´ad´an´ı XML dokument ˚u v jejich pˇrirozen´e (nativn´ı) formˇe.

Aˇckoli je dnes tˇechto XML datab´azov ´ych produkt ˚u na trhu cel´a ˇrada, vˇetˇsina z nich pˇredpokl´ad´a v ´yvoj vlastn´ıho softwaru, kter ´y na z´akladˇe nˇejak´eho definovan´eho rozhran´ı API bude k datab´azi pˇristupovat a s daty pracovat. Vzhledem k tomu, ˇze nativn´ı XML datab´aze je pojem relativnˇe mlad ´y a cel´a tato problematika je neust´ale ve st´adiu v ´yzkumu a v ´yvoje, je takov ´ych klientsk ´ych aplikac´ı nedostatek. Jak je sloˇzit´e a praktick´e takovou aplikaci vytv´aˇret, se pokus´ım objasnit v t´eto pr´aci.

Vlastn´ı obsah pr´ace je rozdˇelen do dvou hlavn´ıch ˇc´ast´ı. Prvn´ı ˇc´ast (kapitoly 1 - 4) sezn´am´ı ˇcten´aˇre s teori´ı jazyka XML, s oblast´ı jazyk ˚u pro dotazovan´ı nad XML daty a nakonec s problematikou nativn´ıch XML datab´az´ı. V t´eto ˇc´asti tak´e bude zvolena jedna konkr´etn´ı XML datab´aze, ke kter´e pot´e bude vyv´ıjena klientsk´a aplikace.

V druh´e ˇc´asti (kapitola 5) jiˇz bude pops´an v ´yvoj samotn´e aplikace. Cel ´y v ´yvoj je rozdˇelen do tˇr´ı etap: n´avrh implementace, implementace a testov´an´ı s vyhodnocen´ım v ´ysledk ˚u. Jak jiˇz bylo ˇreˇceno, oblast nativn´ıch XML datab´az´ı je v neust´al´em v ´yvoji, hle-daj´ı se nov´e techniky, pˇr´ıstupy k dat ˚um apod. Proto i v m´e aplikaci budou zahrnuty vlastn´ı techniky pr´ace s XML daty - komprese a zobrazov´an´ı XML dat. Kaˇzd´a tato zkou-man´a technika bude podrobnˇe pops´ana jak v r´amci n´avrhu implementace, tak v samotn´e implementaci.

(10)

2

Technologie XML

Tato kapitola popisuje technologii XML, jej´ı vznik, princip, z´akladn´ı rysy jazyka XML a nejˇcastˇejˇs´ı pouˇzit´ı.

2.1 Popis

Extensible Markup Language (d´ale jen XML) [11] je znaˇckovac´ı jazyk otevˇren´eho stan-dardu (open standard) pro dokumenty obsahuj´ıc´ı strukturovan´a data. Hlavn´ım ´ukolem tohoto jazyka je usnadnit informaˇcn´ım syst´em ˚um ˇs´ıˇren´ı a v ´ymˇenu onˇech strukturovan ´ych dat, pˇredevˇs´ım pak pˇres lok´aln´ı poˇc´ıtaˇcov´e s´ıtˇe LAN nebo internet, ale i jinou formou. Vy-vinul se postupnˇe z univerz´aln´ıho jazyka SGML (Standard Generalized Markup Langu-age) a n´aleˇz´ı pod spr´avu W3C konsorcia (World Wide Web Consortium), kter´e tak´e XML v roce 1998 standardizovalo. D´ıky sv´e jednoduchosti a bezplatn´emu pouˇz´ıv´an´ı se st´av´a ˇc´ım d´al v´ıce popul´arn´ım u ˇsirok´e veˇrejnosti uˇzivatel ˚u. Slovo Extensible v n´azvu jazyka m ˚uˇzeme do ˇceˇstiny pˇreloˇzit jako rozˇsiˇriteln´y a toto oznaˇcen´ı nebylo zvoleno jen tak. Je to pˇredevˇs´ım z toho d ˚uvodu, ˇze si kaˇzd ´y uˇzivatel vytv´aˇr´ı znaˇcky (tagy) s´am podle vlastn´ıho uv´aˇzen´ı. Neexistuje ˇz´adn´a pˇredem dan´a mnoˇzina pˇreddefinovan ´ych tag ˚u, z´aleˇz´ı pouze a jenom na konkr´etn´ım uˇzivateli jak´e znaˇcky si pro sv ˚uj XML dokument zavede. Vzhle-dem k tomu, jak rychle a s jakou razanc´ı technologie XML pronik´a do r ˚uzn ´ych obor ˚u informaˇcn´ıch technologi´ı, m´a v budoucnu zajist´e velk ´y potenci´al. Vˇzdyt’ i s´am Bill Gates prohl´asil, ˇze XML je ”technologi´ı budoucnosti”.

2.2 Hlavn´ı rysy jazyka XML

V ´yˇcet bezpochyby nejd ˚uleˇzitˇejˇs´ıch vlastnost´ı jazyka XML: • bezplatn´e ˇs´ıˇren´ı a uˇz´ıv´an´ı (fee-free)

• velmi dobˇre zdokumentov´an - specifikace, doporuˇcen´ı (http://www.w3.org/XML/) • nez´avislost na pouˇzit´em softwaru, operaˇcn´ım syst´emu a prostˇred´ı

• mezin´arodn´ı podpora (pouˇz´ıv´an´ı Unicode, UTF-8 aj.)

• pˇresnˇe dan´a syntaxe jazyka, kter´a pˇredch´az´ı nekompatibilitˇe

• vysok ´y informaˇcn´ı obsah (vlastn´ı tagy k hlubˇs´ımu oznaˇcen´ı v ´yznamu ˇc´asti textu) • snadn´a konverze na jin´e form´aty (MS Word, MS Excel, PDF, HTML apod.)

2.3 Syntaxe XML dokumentu

Kaˇzd ´y XML dokument mus´ı spl ˇnovat nˇekolik krit´eri´ı, aby mohl b ´yt povaˇzov´an za spr´avnˇe strukturovan ´y (well-formed) a vhodn ´y pro dalˇs´ı zpracov´an´ı. Protoˇze je efektivita jazyka z´avisl´a na struktuˇre a integritˇe dat, jsou tyto pˇredpisy striktn´ı. O tom, zda je dokument spl ˇnuje nebo ne, rozhoduje tzv. syntaktick ´y analyz´ator (parser).

(11)

2.3.1 Pravidla XML dokumentu

• kaˇzd ´y XML dokument mus´ı m´ıt dan ´y typ k ´odov´an´ı textu (Unicode, v ˇCR ˇcasto pouˇz´ıvan ´y UTF-8, povolen´e jsou i jin´a k ´odov´an´ı)

• dokument m´a pr´avˇe jeden root (koˇrenov ´y) element

• kaˇzd ´y nepr´azdn ´y element je regul´ernˇe ohraniˇcen startovac´ı a ukonˇcovac´ı znaˇckou • pr´azdn ´y element je ohraniˇcen startovac´ı znaˇckou a ukonˇcen znaˇckou pr´azdn´y

ele-ment

• elementy mohou b ´yt vnoˇreny do sebe, nesm´ı vˇsak doj´ıt k jejich pˇrekr ´yv´an´ı, tzn. kaˇzd ´y element (kromˇe koˇrenov´eho), pokud je vnoˇren ´y do jin´eho elementu, tak pouze kompletnˇe

• v XML dokumentu se u jmen element ˚u rozliˇsuj´ı mal´a a velk´a p´ısmena, napˇr. znaˇcka <Name> a <name/> nen´ı validn´ı p´ar znaˇcek ohraniˇcuj´ıc´ı element Name

• prvek pouˇzit ´y s otazn´ıky <?name?> se pˇri zpracov´av´an´ı pˇreskakuje, pouˇz´ıv´a se mimo jin´e pˇri deklaraci XML dokumentu

• pozn´amky uˇzivatele v dokumentu se znaˇc´ı <!−−nˇejak´y koment´aˇr−−>

• pro speci´aln´ı znaky pouˇz´ıvan´e v syntaxi jazyka je tˇreba pouˇz´ıt z´astupn´e ˇretˇezce: - &amp; - pro znak &

- &lt; - pro znak < - &gt; - pro znak > - &apos; - pro znak ’ - &quot; - pro znak ”

2.3.2 Uk ´azka XML dokumentu

V ´ypis 1: Syntakticky spr´avn ´y XML dokument

<?xml version=”1.0” encoding=”utf−8”?>

<studium>

<skola name=”VSB−TUO” rok=”2008”> <student>Pavel Mitko</student> <student>Jan Novy</student> <student>Michal Polak</student> </skola>

<skola name=”UTB” rok=”2007”> <student>Jiri Vojta</student> <student>Petr Maly</student> </skola>

(12)

2.4 S ´emantika XML dokumentu

U XML dokumentu vˇsak ˇcasto potˇrebujeme kontrolovat tak´e jeho obsah po str´ance s´emantick´e. K tomu, jak uˇz napov´ıd´a n´azev, n´am slouˇz´ı analyz´atory s´emantick´e. K takov´e kontrole je tˇreba vytvoˇrit pˇredpis, kter ´y bude podobu spr´avn´eho dokumentu zachycovat. M ˚uˇzeme do nˇej zan´est jak´e elementy v dokumenty mohou, mus´ı, nebo naopak nesm´ı b ´yt obsaˇzeny, v jak´em sledu se budou vyskytovat, popˇr. jak´e obsahuj´ı atributy atd. Pro vytv´aˇren´ı ta-kov ´ych pˇredpis ˚u n´am slouˇz´ı dva jazyky. Prvn´ım jazykem je DTD (z angl. Document Type Definition), neboli definice typu dokumentu. V´ıce informac´ı o tomto jazyku a uk´azku pouˇzit´ı v kapitole 2.4.1. Druh ´ym jazykem v poˇrad´ı je XML Schema, popsan ´y v kapitole 2.4.2.

2.4.1 DTD

DTD [4] je ve skuteˇcnosti deklarativn´ı popis XML dokumentu, pomoc´ı kter´eho jsou n´asledovnˇe s´emantick´e analyz´atory schopn´e ovˇeˇrit validitu. V praxi se setk´ame s uˇz pˇreddefinovan ´ymi sch´ematy pro cel´e skupiny dokument ˚u se stejn ´ym ˇci podobn ´ym zamˇeˇren´ım. Pˇr´ıkladem m ˚uˇzeme uv´est sch´emata pro XML dokumentaci knih, novinov ´ych ˇcl´ank ˚u apod. (pˇredevˇs´ım vyuˇz´ıv´ano v evidenc´ıch knihoven). DTD pˇredpis je obvykle uloˇzen v extern´ım souboru, nen´ı vˇsak vylouˇceno ani jako souˇc´ast dokumentu. Pˇri z´apisu DTD jsou n´am k dispozici tak´e tyto z´astupn´e symboly vyjadˇruj´ıc´ı povinnost v ´yskytu:

+ v ´yskyt alespo ˇn jednou - <1,nekoneˇcno)

? nepovinn ´y v ´yskyt - <0,1>

* libovoln ´y poˇcet v ´yskyt ˚u - <0,nekoneˇcno)

Pro pˇredchoz´ı XML dokument (v ´ypis 1) bychom DTD mohli definovat napˇr´ıklad takto:

V ´ypis 2: Uk´azka jazyka DTD

<!DOCTYPE studium [

<!ELEMENT studium (skola+)>

<!ELEMENT ˇskola (student∗)>

<!ELEMENT student (#PCDATA)>

<!ATTLIST skola

nameCDATA

rok ( 2006 | 2007 | 2008 ) ’ 2008’> ]>

Takov ´y z´apis pravidel n´am ˇr´ık´a, ˇze prvek studium mus´ı obsahovat aspo ˇn jeden vnoˇren ´y prvek s n´azvem skola. Ten d´ale m ˚uˇze obsahovat libovoln ´y poˇcet prvk ˚u student, kter ´y vˇsak uˇz neobsahuje vnoˇren´e prvky, pouze textovou hodnotu (oznaˇcen´ı #PCDATA, z an-glick´eho Parsed Character Data).

(13)

Pro kaˇzd ´y takto nadeklarovan ´y element naˇseho dokumentu m ˚uˇzeme urˇcit libovoln ´y poˇcet atribut ˚u. Atribut je ve skuteˇcnosti informace, kter´a nˇejak ´ym zp ˚usobem pˇresnˇeji definuje prvek. N´azvy atribut ˚u opˇet z´aleˇz´ı pouze na n´as.

Definice atribut ˚u ve v ´ypisu 2 zaˇc´ın´a kl´ıˇcov ´ym slovem ATTLIST. Takto bychom pro prvek skola zavedli dva atributy - name, kter ´y bude obsahovat nˇejak ´y text (CDATA z anglick´eho Character Data) a rok, jehoˇz pˇr´ıpustn´e hodnoty jsou d´any v ´yˇctem tˇr´ı moˇznost´ı, pˇriˇcemˇz standardnˇe nab ´yv´a hodnoty 2008.

Jazyk DTD s sebou nese nˇekolik nev ´yhod. Pˇredevˇs´ım to, ˇze v nˇem nejsou definov´any datov´e typy. Neumoˇz ˇnuje kontrolu pˇresn´eho poˇctu v ´yskyt ˚u. A v neposledn´ı ˇradˇe i fakt, ˇze samotn ´y z´apis DTD nen´ı ve form´atu XML dokumentu.

2.4.2 XML Schema

Dalˇs´ım jazykem pro popis obsahu XML dokumentu je XML Schema [7], jenˇz tak´e spad´a pod specifikace W3C konsorcia. Spr´avnˇe napsan´e sch´ema t´ımto jazykem je z´arove ˇn spr´avnˇe strukturovan ´y XML dokument, kter ´y pouˇz´ıv´a speci´aln´ıch element ˚u. Vˇsechny tyto ele-menty mus´ı patˇrit do jmenn´eho prostoru http://www.w3.org/2001/XMLSchema. Pro tento jmenn ´y prostor se obvykle pouˇz´ıv´a v z´apise prefix xs nebo xsd.

Velkou v ´yhodou jazyka XML Schema oproti DTD je pˇr´ıtomnost datov ´ych typ ˚u [9]. Je tak´e moˇzn´e definovat vlastn´ı datov´e typy, nejˇcastˇeji restrikc´ı nebo rozˇs´ıˇren´ım jiˇz exis-tuj´ıc´ıch datov ´ych typ ˚u. Takov´a moˇznost kontroly z XML Schema ˇcin´ı silnˇejˇs´ı n´astroj pro pˇredpis XML dokumentu neˇz je DTD, avˇsak ˇcasto h ˚uˇre ˇciteln ´ym a srozumiteln ´ym pro ˇclovˇeka.

N´azorn´a uk´azka je vˇzdy nejv ´ystiˇznˇejˇs´ı, proto si uvedeme pˇr´ıklad jazyka XML Sch´ema a na nˇem si pot´e vysvˇetl´ıme jeho hlavn´ı rysy. Jde opˇet o aplikaci na XML dokument uveden ´y v kapitole 2.3.2:

V ´ypis 3: Uk´azka jazyka XML Schema

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”> <xsd:element name=”studium”>

<xsd:complexType> <xsd:sequence>

<xsd:element name=”skola” maxOccurs=”unbounded”> <xsd:complexType>

<xsd:sequence>

<xsd:element name=”student” type=”xsd:string” maxOccurs=”unbounded” /> </xsd:sequence>

<xsd:attribute name=”name” type=”xsd:string” /> <xsd:attribute name=”rok” type=”xsd:int” /> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>

(14)

Cel´e sch´ema mus´ı b ´yt vnoˇreno do koˇrenov´eho elementu s n´azvem schema (xsd:schema vˇcetnˇe prefixu). Vzpome ˇnme, ˇze kaˇzd ´y spr´avnˇe strukturovan ´y XML dokument m´a pr´avˇe jeden koˇrenov ´y element. Nejinak tomu mus´ı b ´yt i v pˇr´ıpadˇe dokumentu obsahuj´ıc´ım XML Schema.

Pro kaˇzd ´y element urˇcujeme jeho typ. K dispozici m´ame dva typy - jednoduch´e a komplexn´ı. Mezi jednoduch´e patˇr´ı napˇr. ˇretˇezec, ˇc´ıslo, datum apod. Pokud vˇsak ele-ment obsahuje vnoˇren´e eleele-menty nebo atributy, mus´ıme pouˇz´ıt komplexn´ı typ (ve v ´ypisu xsd:complexType). D´ale pomoc´ı znaˇcky xsd:sequence urˇc´ıme poˇrad´ı vnoˇren ´ych element ˚u vzhledem k nadˇrazen´emu elementu. V naˇsem pˇr´ıpadˇe prvek studium obsahuje pouze

vnoˇren ´y element skola, avˇsak s neomezen ´ym poˇctem v ´yskyt ˚u (vlastnost maxOccurs=”unbounded”). Element ˇskola je d´ale tvoˇren vnoˇren ´ym elementem student, kter ´y obsahuje hodnotu typu

ˇretˇezec (type=”xsd:string”). U tohoto elementu tak´e definujeme dva atributy s n´azvy name a rok vˇcetnˇe typ ˚u jejich hodnot.

Na obr´azku 1 je uvedena hierarchie datov ´ych typ ˚u obsaˇzen ´ych v jazyku XML Schema. 2.5 DOM

Z pˇredchoz´ıch kapitol jiˇz v´ıme, co je dokument XML a co je sch´ema popisuj´ıc´ı jeho struk-turu. Nyn´ı se bl´ıˇze pod´ıv´ame na to, jak s vlastn´ımi daty pracovat.

Objektov ´y model dokumentu (z anglick´eho DOM neboli Document Object Model) [1] zpˇr´ıstup ˇnuje dokument XML jako stromovou strukturu v pamˇeti a nab´ız´ı tak kaˇzd´emu program´atorovi snadno pouˇziteln´e prostˇred´ı. DOM definuje standardn´ı sadu objekt ˚u a rozhran´ı pro manipulaci s XML, zajiˇst’uje pˇr´ıstup k dokument ˚um, element ˚um i atri-but ˚um. Pomoc´ı rozhran´ı DOM m ˚uˇzeme vyj´adˇrit cel ´y dokument XML jako objekt, takˇze je moˇzn´e pracovat s n´ım jako s kter ´ymkoli jin ´ym objektem v syst´emu - k dispozici je kva-litnˇe zdokumentovan´e API (rozhran´ı pro programov´an´ı aplikac´ı) s uˇziteˇcn ´ymi metodami a vlastnostmi. Stromovou strukturu XML dokumentu tak, jak ji ch´apeme pˇri pouˇzit´ı ob-jektov´eho modelu dokumentu, ilustruje obr´azek 2.

Na DOM se m ˚uˇzeme d´ıvat jako na dynamick ´y objekt s urˇcitou hierarchi´ı. Je d ˚uleˇzit´e si uvˇedomit, ˇze poˇc´ıtaˇc vid´ı objekt, kter´emu my ˇr´ık´ame XML dokument, jako posloupnost bajt ˚u. Protoˇze tato kolekce bajt ˚u m´a formu prost´eho textu, m ˚uˇze b ´yt snadno naˇcten a tak´e pˇren´aˇsen po s´ıti ˇci pˇres internet.

Aby vˇsak poˇc´ıtaˇc mohl pracovat s dokumentem XML a manipulovat s ´udaji, kter´e jsou v nˇem uloˇzeny, mus´ı se nejprve dokument zmˇenit v objekt um´ıstˇen ´y v operaˇcn´ı pamˇeti. V tomto stavu je uˇz l´epe pˇrizp ˚usoben ke zpracov´av´an´ı r ˚uzn ´ymi aplikacemi na-psan ´ymi v modern´ıch programovac´ıch jazyc´ıch. Tato zmˇena se prov´ad´ı vytvoˇren´ım in-stance DOM, kter´a spust´ı XML analyz´ator (parser), a ten rozdˇel´ı cel ´y dokument na jed-notliv´e ˇc´asti. Analyz´ator naˇc´ıt´a dokument znak po znaku a pˇritom urˇcuje, zda novˇe naˇcten ´y znak patˇr´ı ke znaˇckov´an´ı nebo obsahu. V tomto st´adiu se tak´e parser d´ıv´a, zda k dokumentu n´aleˇz´ı nˇejak´e XML sch´ema nebo DTD, jenˇz by pˇredepisovaly strukturu do-kumentu. V pˇr´ıpadˇe, ˇze takov´e sch´ema existuje, cel´e ho naˇcte a pot´e provˇeˇr´ı, zda doku-ment vyhovuje struktuˇre, kter´a je v nˇem pops´ana. Pokud vˇsak analyz´ator ˇz´adn´e sch´ema nenalezne, postupuje podle obecn ´ych pravidel spr´avnˇe strukturovan´eho dokumentu.

(15)

Obr´azek 1: Hierarchie datov ´ych typ ˚u obsaˇzen ´ych v jazyku XML Schema, podle [5]

Jakmile je analyz´ator s provˇeˇren´ım platnosti hotov a v dokumentu nebyly nalezeny ˇz´adn´e chyby, vytvoˇr´ı sadu uzl ˚u, kter´e maj´ı urˇcit´e vlastnosti. V tabulce 1 je uveden se-znam moˇzn ´ych typ ˚u uzl ˚u, kter´e jsou obsaˇzeny v implementaci DOM od firmy Microsoft. Pr ˚ubˇeh cel´eho procesu vytv´aˇren´ı struktury DOM je vyobrazen na obr´azku 3.

2.6 Srovn ´an´ı s jazykem HTML

Stejnˇe jako XML, i jazyk HTML (HyperText Markup Language), kter ´y se do podvˇedom´ı lid´ı dostal pˇredevˇs´ım d´ıky obrovsk´emu rozmachu internetov ´ych str´anek (www str´anky) za posledn´ıch nˇekolik let, vych´az´ı z p ˚uvodn´ıho SGML. Z toho tak´e plyne jejich podob-nost v mnoha smˇerech (pˇredevˇs´ım v oblasti syntaxe). Podstatn ´y rozd´ıl je ale ten, ˇze v jazyku HTML existuje koneˇcn´a mnoˇzina znaˇcek, kter´e lze v r´amci jazyka pouˇz´ıvat. To ovˇsem u jazyka XML neplat´ı. V jazyku HTML jednotliv´e tagy prakticky urˇcuj´ı vzhled

(16)

Obr´azek 2: Objektov ´y model dokumentu - DOM

Obr´azek 3: Vytvoˇren´ı stromov´e struktury DOM

webov´e str´anky - interpretaci, jakou budou data pod´ana uˇzivateli. Kdeˇzto u jazyka XML se vzhled a to, jak bude dokument zobrazen, definuje pouˇzit´ım tzv. styl ˚u. Nejzn´amˇejˇs´ımi z´astupci stylov ´ych jazyk ˚u pouˇz´ıvan ´ych spolu s XML jsou zcela urˇcitˇe kask´adov´e styly (CSS) a XSL (eXtensible Stylesheet Language).

Spoleˇcnost´ı W3C byl z jazyka XML vyvinut nov ´y znaˇckovac´ı jazyk urˇcen ´y pro tvorbu hypertextov ´ych dokument ˚u v prostˇred´ı www str´anek. Jazyk nese oznaˇcen´ı XHTML (Ex-tensible HyperText Markup Language) a hovoˇr´ı se o nˇem dokonce jako o nevyhnuteln´em n´astupci jazyka HTML. V souˇcasn´e dobˇe se intenzivnˇe pracuje jak na nov´e verzi jazyka HTML 5, tak na XHTML 2.0. U jazyka HTML je naprost´a vˇetˇsina softwarov ´ych interne-tov ´ych prohl´ıˇzeˇc ˚u ochotn´a a schopn´a tolerovat menˇs´ı chyby v syntaxi dokument ˚u, jako

(17)

Tabulka 1: Typy uzl ˚u definovan´e v DOM od firmy Microsoft, podle [1]

N´azev Popis

NODE ELEMENT Uzel pˇredstavuj´ıc´ı element

NODE ATTRIBUTE Uzel pˇredstavuj´ıc´ı atribut elementu NODE TEXT Uzel pˇredstavuj´ıc´ı textov ´y obsah tagu NODE CDATA SECTION Uzel pˇredstavuj´ıc´ı sekci CDATA ve zdroji

XML

NODE ENTITY REFERENCE Uzel pˇredstavuj´ıc´ı odkaz na entitu v do-kumentu XML

NODE ENTITY Uzel pˇredstavuj´ıc´ı rozvinutou entitu NODE PROCESSING INSTRUCTION Uzel pˇredstavuj´ıc´ı instrukci pro

zpra-cov´an´ı z dokumentu XML

NODE COMMENT Uzel pˇredstavuj´ıc´ı koment´aˇr v doku-mentu

NODE DOCUMENT Tento uzel reprezentuje objekt doku-mentu, kter ´y coby koˇren cel´eho stromu zajiˇst’uje pˇr´ıstup k cel´emu dokumentu XML

NODE DOCUMENT TYPE Uzel pˇredstavuj´ıc´ı deklraci typu dokumentu zadanou pomoc´ı tagu <!DOCTYPE>

NODE DOCUMENT FRAGMENT Tento uzel vyjadˇruje fragment doku-mentu

NODE DOCUMENT NOTATION Uzel pˇredstavuj´ıc´ı notaci v deklaraci typu dokumentu

napˇr. opom´ın´an´ı ukonˇcovac´ıch znaˇcek element ˚u, pˇrekr ´yv´an´ı prvk ˚u, pouˇz´ıv´an´ı mal ´ych i velk ´ych p´ısmen v n´azvech prvk ˚u. Jak uˇz bylo zm´ınˇeno v ´yˇse, vˇsechny tyto nepˇresnosti jsou v syntaxi XML striktnˇe kontrolov´any, tud´ıˇz ani jazyk XHTML je logicky nepˇripouˇst´ı.

(18)

3

Dotazovac´ı jazyky pro XML

Tato ˇc´ast pr´ace nast´ın´ı problematiku dotazovac´ıch jazyk ˚u urˇcen ´ych pro XML. Budou uve-deni nˇekteˇr´ı z´astupci a nejzn´amˇejˇs´ı z nich budou prozkoum´ani hloubˇeji v kapitol´ach 3.2 a 3.3.

3.1 Dostupn ´e dotazovac´ı jazyky

Vzhledem k tomu, ˇze form´at XML je schopen data pojmout, je z´asadn´ı m´ıt k dispozici prostˇredky, kter ´ymi data opˇet z´ısk´ame zpˇet. Tak jak v re´aln´em ˇzivotˇe, i pˇri obnovov´an´ı dat vˇsak chce uˇzivatel ˇcasto z´ıskat jen nˇekter´e konkr´etn´ı informace. Ty, kter´e odpov´ıdaj´ı jeho dotazu. Odtud tak´e n´azev dotazovac´ı jazyky [8]. Dotazovac´ı jazyk m ˚uˇzeme defino-vat jako ˇclovˇeku srozumiteln ´y prostˇredek, kter ´ym je schopen interpretodefino-vat sv´e logick´e dotazy a pouˇz´ıvat ho pro vyhled´av´an´ı urˇcit ´ych informac´ı. Kaˇzd ´y takov ´y jazyk vˇsak m´a svoje pravidla, kter´a mus´ı dodrˇzovat.

Dotazovac´ıch jazyk ˚u pracuj´ıc´ıch nad XML daty je dnes cel´a ˇrada, nˇekter´e uˇz velmi dobˇre zn´am´e, jin´e m´enˇe. Vˇetˇsina z nich vˇsak ve st´adiu neust´al´eho v ´yvoje. Mezi nejzn´amˇejˇs´ı urˇcitˇe patˇr´ı jazyky jako XPath, XQuery, XML-QL (XML Query Language), XQL, X2QL nebo SQL/XML. Jazyku XPath je vˇenov´ana n´asleduj´ıc´ı kapitola 3.2 a jazyku XQuery ka-pitola 3.3.

3.2 Jazyk XPath

Jazyk XPath (zkr´aceno z anglick´eho XML Path Language) [2] je standardem W3C konsor-cia. Pˇri procesu dotazov´an´ı pomoc´ı tohoto jazyka se pracuje nad stromovou strukturou odpov´ıdaj´ıc´ı XML dokumentu. K proch´azen´ı stromu se pot´e pouˇz´ıvaj´ı tzv. osy (relace mezi uzly stromu), kter ´ymi definujeme cestu k n´ami hledan ´ym dat ˚um.

V souˇcasn´e dobˇe je jiˇz jazyk XPath ve verzi 2.0. Ne kaˇzd ´y XML datab´azov ´y syst´em podporuje tuto verzi jazyka, ovˇsem kaˇzd ´y by mˇel podporovanou verzi ve sv ´ych specifi-kac´ıch uv´adˇet. Od verze 1.0 se jazyk liˇs´ı pˇredevˇs´ım pˇrid´an´ım podpory v´ıce datov ´ych typ ˚u [3]. Datov´e typy jazyka XPath 2.0 jsou uveden´e v obr´azku 12, kter ´y je souˇc´ast´ı pˇr´ıloh.

Datov ´ym modelem jazyka je strom, kter ´y m ˚uˇze b ´yt tvoˇren sedmi druhy uzl ˚u: doku-ment, eledoku-ment, atribut, text, jmenn ´y prostor, koment´aˇr a instrukce ke zpracov´an´ı. Uzlem dokument je myˇslen koˇrenov ´y uzel. Z´akladn´ı ˇc´ast´ı jazyka je vyj´adˇren´ı cesty (path expres-sion). Ta se zapisuje jako posloupnost pˇrechod ˚u mezi uzly oddˇelen ´ych lom´ıtky (podobn ´y z´apis jako URL v prostˇred´ı internetu nebo adres´aˇrov´a struktura na poˇc´ıtaˇci). Kaˇzd ´y pˇrechod je urˇcen tˇremi sloˇzkami [17]:

• osa (axis) • test (node test) • predik´at (precidate)

Ne vˇsechny tyto poloˇzky jsou povinn´e, nejjednoduˇsˇs´ı z´apis obsahuje pouze ˇc´ast test a m´a tvar napˇr.:

(19)

/A/B/C.

Takov ´y z´apis oznaˇcuje element C, kter ´y je potomkem elementu B, ten je potomkem ele-mentu A a ten je z´arove ˇn koˇrenov ´ym elementem cel´eho dokuele-mentu. V ´ysledkem nemus´ı b ´yt pouze jeden element, v naˇsem pˇr´ıpadˇe C, ale m ˚uˇze j´ım b ´yt cel´a mnoˇzina element ˚u, kter´e odpov´ıdaj´ı t´eto cestˇe ve stromov´e struktuˇre. V z´apisu jednotliv ´ych dotaz ˚u m ˚uˇzeme, a urˇcitˇe i hojnˇe vyuˇzijeme z´astupn´e symboly, kter´e jsou v jazyce XPath k dispozici. Jejich pˇrehled najdeme v tabulce 2.

Tabulka 2: Tabulka symbol ˚u v syntaxi jazyka XPath

Symbol Funkce symbolu

- jak ´ykoliv jednotliv ´y uzel / oddˇeluje uzly v cestˇe | sjednocuje uzly ? 0-1 v ´yskyt uzlu + 1-v´ıce v ´yskyt ˚u uzlu * 0-v´ıce v ´yskyt ˚u uzlu

[] obsahuje logick´e podm´ınky @ oznaˇcuje atribut

() precedence (urˇcen´ı priorit)

U pokroˇcilejˇs´ıch dotaz ˚u se jiˇz pˇrid´av´a poloˇzka osa. Implicitnˇe se pouˇz´ıv´a osa child (po-tomek), ale podle potˇreby m´ame v moˇznostech jazyka os nˇekolik. Z´apis os se oddˇeluje dvˇemi dvojteˇckami. Cel ´y dotaz pak jeˇstˇe m ˚uˇzeme doplnit o logick´e podm´ınky (pre-dik´aty), kter´e se uzav´ıraj´ı do hranat ´ych z´avorek. Jako pˇr´ıklad poslouˇz´ı napˇr. tento dotaz:

/A/B/child::*[attribute::cena=”100”]

kter ´y vybere vˇsechny elementy, kter´e jsou potomky elementu B a obsahuj´ı atribut cena s hodnotou 100, pˇriˇcemˇz element B je potomkem koˇrenov´eho elementu A.

Os, kter´e definuj´ı mnoˇzinu uzl ˚u relativnˇe k aktu´aln´ımu uzlu, je celkem 13. Uvedeme si je pro lepˇs´ı pochopen´ı moˇznost´ı dotazov´an´ı pomoc´ı XPath.

• ancestor (pˇredek) - obsahuje vˇsechny pˇredky aktu´aln´ıho uzlu (uzly leˇz´ıc´ı bl´ıˇze ke koˇrenov´emu uzlu)

• ancestor-or-self (pˇredek vˇcetnˇe sebe) - obsahuje vˇsechny uzly jako ancestor vˇcetnˇe aktu´aln´ıho uzlu

• parent (rodiˇc) - obsahuje rodiˇce aktu´aln´ıho uzlu (prvn´ı uzel bl´ıˇze ke koˇrenov´emu uzlu)

• child (potomek) - obsahuje vˇsechny potomky aktu´aln´ıho uzlu • attribute - obsahuje vˇsechny atributy aktu´aln´ıho uzlu

• descendant - obsahuje vˇsechny uzly, pro kter´e je aktu´aln´ı uzel pˇredkem • descendant-or-self - obsahuje uzly jako descendant vˇcetnˇe aktu´aln´ıho uzlu

(20)

• preceding - obsahuje vˇsechny uzly, kter´e se nach´az´ı pˇred aktu´aln´ım uzlem, kromˇe jeho pˇredk ˚u

• preceding-sibling - obsahuje uzly, kter´e jsou sourozenci aktu´aln´ıho uzlu a nach´az´ı se pˇred n´ım

• following - obsahuje vˇsechny uzly, kter´e se nach´az´ı po aktu´aln´ım uzlu, kromˇe jeho potomk ˚u

• following-sibling - obsahuje uzly, kter´e jsou sourozenci aktu´aln´ıho uzlu a nach´az´ı se po nˇem

• namespace - obsahuje vˇsechny namespace uzly aktu´aln´ıho uzlu • self - obsahuje aktu´aln´ı uzel

Nˇekolik jednoduch ´ych dotaz ˚u pomoc´ı jazyka XPath (aplikovan´e na XML dokument z v ´ypisu 1):

• /studium/skola/student - vˇsechny elementy student, kter´e jsou potomky elementu skola a ten je potomkem koˇrenov´eho elementu studium

• //skola/student - vˇsechny elementy student, kter´e jsou potomky elementu skola a ten je potomkem koˇrenov´eho elementu

• //skola[attribute::name=’TUO’] - vˇsechny elementy skola s hodnotou VSB-TUO v atributu name , kter´e jsou potomky koˇrenov´eho elementu

• //skola[@name=’VSB-TUO’ and @rok > 2007]/student - vˇsechny elementy student, kter´e jsou potomky elementu skola s hodnotou VSB-TUO v atributu name a hodno-tou vˇetˇs´ı neˇz 2007 v atributu rok a ten je potomkem koˇrenov´eho elementu studium • //skola/student[position()=1] - vˇsechny elementy student, kter´e jsou prvn´ımi

po-tomky elementu skola a ten je potomkem koˇrenov´eho elementu

• //skola/student[text()=’Pavel Mitko’] - vˇsechny elementy student s textovou hodno-tou Pavel Mitko, kter´e jsou potomky elementu skola a ten je potomkem koˇrenov´eho elementu

3.3 Jazyk XQuery

Dotazovac´ı jazyk XQuery je stejnˇe jako XPatch produktem W3C konsorcia. Postupnˇe byl vyvinut z jazyka Quilt, jenˇz vych´az´ı z nˇekolika dalˇs´ıch jazyk ˚u jako XPath 1.0, XML-QL, XQL, SQL. Doporuˇcen´ım W3C se stal 23. ledna 2007. Aktu´aln´ı verze jazyka je 1.0. V po-rovn´ın´ı s XPath se jedn´a o pokroˇcilejˇs´ı dotazovac´ı jazyk. Kromˇe z´akladn´ıch v ´yraz ˚u, kter´e pˇreb´ır´a od jazyka XPath (vyj´adˇren´ı cesty, porovn´av´an´ı, predik´aty), poskytuje uˇzivateli

(21)

mnoh´a dalˇs´ı vylepˇsen´ı. T´ım jsou nepochybnˇe v ´yrazy typu FLWOR1, podm´ınˇen´e v ´yrazy,

moˇznost tˇr´ıdˇen´ı nebo konstruktory. V ´yrazy pro urˇcen´ı cesty v XML dokumentu jsou stejn´e jako v jazyku XPath 2.0.

Pro pr´aci s daty je v XQuery pˇreddefinov´ano nˇekolik vstupn´ıch funkc´ı. Nejd ˚uleˇzitˇejˇs´ımi jsou tyto:

• doc() - vrac´ı dokument identifikovan ´y URI

• collection() - vrac´ı kolekci dokument ˚u spojenou s URI • root() - vrac´ı koˇren aktu´aln´ıho dokumentu

Nˇekolik jednoduch ´ych dotaz ˚u pomoc´ı jazyka XQuery (aplikovan´e na XML dokument z v ´ypisu 1):

• doc(’studium.xml’)//skola - vˇsechny elementy skola, kter ´y je potomkem koˇrenov´eho elementu v dokumentu studium.xml

• doc(’studium.xml’)/studium/skola[student=’Pavel Mitko’] - vˇsechny elementy skola obsahuj´ıc´ı element student s hodnotou Pavel Mitko, kter ´y je potomkem koˇrenov´eho elementu studium v dokumentu studium.xml

• doc(’studium.xml’)/studium/skola/student[1] - vˇzdy prvn´ı element student, kter ´y je potomkem elementu skola a ten je potomkem koˇrenov´eho elementu studium v dokumentu studium.xml

Velmi d ˚uleˇzitou ˇc´ast´ı jazyka XQuery jsou tzv. FLWOR v ´yrazy [10], kter´e m ˚uˇzeme pˇrirovnat k SELECT-FROM-WHERE dotaz ˚um v jazyku SQL. N´azev je tvoˇren prvn´ımi p´ısmeny jednotliv ´ych klauzul´ı tvoˇr´ıc´ı v ´yraz:

• F for - asociace jedn´e nebo v´ıce promˇenn ´ych k v ´yrazu • L let - pˇriˇrazen´ı v ´ysledku v ´yrazu promˇenn´e

• W where - omezuj´ıc´ı podm´ınka • O order by - setˇr´ıdˇen´ı

• R return - v ´ysledek

for $b in doc(’studium.xml’)/studium/skola

where $b/student = ’Pavel Mitko’ order by $b/@name

return $b

V ´ypis 4: Pˇr´ıklad pouˇzit´ı FLWOR v ´yrazu (aplikovan ´y na XML dokument z v ´ypisu 1) Pˇr´ıklad uveden ´y ve v ´ypisu 4 vyp´ıˇse vˇsechny elementy skola seˇrazen´e podle hodnoty atributu name, ve kter ´ych se vyskytuje student s hodnotou Pavel Mitko.

1

(22)

4

XML datab ´aze

V t´eto ˇc´asti si objasn´ıme co jsou XML datab´aze, jejich v ´yznam v dneˇsn´ı dobˇe a zp ˚usob pˇr´ıstupu do nich. Postupnˇe se zamˇeˇr´ıme na nativn´ı XML datab´aze.

4.1 V ´yznam XML datab ´az´ı

Jednou z hlavn´ıch oblast´ı vyuˇzit´ı XML dokument ˚u je dlouhodob´e uchov´av´an´ı dat v pˇrehledn´e formˇe. To je tak´e principem cel´e XML technologie. Totiˇz dokumenty v n´ı vy-tvoˇren´e jsou sv ´ym zp ˚usobem samopopisn´e. To je d´ano v ´yznamem jednotliv ´ych znaˇcek, atribut ˚u, i samotn´e struktury dokumentu. Je zˇrejm´e, ˇze dnes vytvoˇren ´y XML dokument archivuj´ıc´ı napˇr. knihu ve vˇedeck´e knihovnˇe, kter ´y je ps´an podle mezin´arodnˇe dan ´ych sch´emat pro tento obor, bude i za nˇekolik let jednoduˇse ˇciteln ´y a bude plnit svou funkci. Pr´avˇe toto ˇc´ım d´al ˇcastˇeji vede instituce i jednotlivce zvolit XML jako zp ˚usob archivace dat. Potˇreba uchov´av´an´ı velk´eho mnoˇzstv´ı XML dokument ˚u d´av´a za pˇr´ıˇcinu vzniku nov ´ych datab´azov ´ych server ˚u - s podporou XML a nativn´ıch XML datab´az´ı.

4.2 Typy XML dokument ˚u

Pˇred samotn ´ym prozkoum´an´ım problematiky XML datab´az´ı a toho, jak se v nich XML soubory ukl´adaj´ı, si rozdˇel´ıme XML dokumenty na 2 odliˇsn´e typy [8]. Prvn´ı skupinou jsou XML dokumenty zamˇeˇren´e pˇredevˇs´ım na datov ´y obsah. V literatuˇre jsou nejˇcastˇeji oznaˇcov´any jako datovˇe orientovan´e (anglicky data-oriented, data-based nebo data-centric). Druhou skupinu tvoˇr´ı dokumenty, kter´e se vyznaˇcuj´ı pˇredevˇs´ım sm´ıˇsen ´ym obsahem ve sv´e struktuˇre a obvykle jsou urˇceny pro potˇreby ˇclovˇeka neˇz poˇc´ıtaˇce. Naz ´yvaj´ı se doku-mentovˇe orientovan´e (anglicky document-oriented, document-based ˇci document-centric). Oba typy si podrobnˇeji pop´ıˇseme v n´asleduj´ıc´ıch podkapitol´ach.

4.2.1 Datov ˇe orientovan ´a XML data

Tento typ XML dat se vyznaˇcuje pˇredevˇs´ım svou pravidelnou strukturou. Obsah neb ´yv´a nijak v ´yraznˇe sm´ıˇsen ´y, sp´ıˇse se opakuj´ıc´ı. Samotn´a struktura nen´ı pro zpracov´an´ı aˇz tak d ˚uleˇzit´a, podstatn´a jsou obsaˇzen´a data. Nejˇcastˇeji se tyto dokumenty pouˇz´ıvaj´ı jako jak´esi zapouzdˇren´ı, do kter´eho vkl´ad´ame data. Nejmenˇs´ı nez´avisl´e jednotky dat jsou v tomto pˇr´ıpadˇe na ´urovni prvk ˚u typu atribut nebo PCDATA. Typick ´ym znakem je tak´e fakt, ˇze pˇri pr´aci s datovˇe orientovan ´ym dokumentem nez´aleˇz´ı na poˇrad´ı element ˚u na stejn´e ´urovn´ı (tzv. sourozenc ˚u).

Takov´a data ˇcasto nejsou tvoˇrena ˇclovˇekem, n ´ybrˇz napˇr. generov´ana nˇejakou apli-kac´ı. Jako pˇr´ıklad si m ˚uˇzeme pˇredstavit nˇejak ´y internetov ´y obchod, kde jsou uchov´av´any informace o jednotliv ´ych objedn´avk´ach jeho z´akazn´ık ˚u. Ty jsou pot´e odes´ıl´any jin´emu syst´emu, kter ´y vyˇrizuje expedici jednotliv ´ych z´asilek ze skladu. Takov´a situace vyˇzaduje, aby se obˇe (jak odes´ılaj´ıc´ı, tak druh´a strana) aplikace spolu domluvily. Snadn ´ym ˇreˇsen´ım m ˚uˇze b ´yt kaˇzdou objedn´avku odeslat jako spr´avnˇe form´atovan ´y XML dokument, jenˇz tvoˇr´ı v dneˇsn´ı dobˇe ˇc´ım d´al v´ıce obl´ıben ´y standard. Druh´a strana pˇresnˇe to oˇcek´av´a a

(23)

bude moci data pˇrijmout k dalˇs´ımu zpracov´an´ı. Pˇr´ıklad takov´e objedn´avky by mohl vy-padat n´asledovnˇe:

V ´ypis 5: Datovˇe orientovan ´y XML dokument

<objednavka ˇc´ıslo= ”GT157T” ze dne=”20.3.2009”> <dodaci adresa>

<jmeno>Pavel</jmeno> <prijmeni>Mitko</prijmeni> <ulice>1.kv ˇetna 457</ulice> <mesto>Zl´ın</mesto> <psc>47557</psc> </dodaci adresa> <fakturacni adresa> <jmeno>Pavel</jmeno> <prijmeni>Mitko</prijmeni> <ulice>1.kv ˇetna 457</ulice> <mesto>Zl´ın</mesto> <psc>47557</psc> </fakturacni adresa>

<zbozi id=”12544” nazev=”AMD X2 8400+”> <kusy>1</kusy>

<cena>4700</cena>

<dph procent>19</dph procent> </zbozi>

<zbozi id=”411” n ´azev=”GA MF457−GU”> <kusy>2</kusy> <cena>5100</cena> <dph procent>19</dph procent> </zbozi> ... </objednavka>

4.2.2 Dokumentov ˇe orientovan ´a XML data

Dokumenty zastupuj´ıc´ı tuto skupinu m´ıvaj´ı naopak nepravidelnou strukturu, m´alo se opakuj´ıc´ı a ˇcasto i sm´ıˇsen ´y obsah. Nejmenˇs´ı jednotkou jsou ˇcasto elementy obsahuj´ıc´ı sm´ıˇsen ´y obsah, ale m ˚uˇze to b ´yt i cel ´y dokument. Je to pr´avˇe struktura, kter´a je na cel´em dokumentu nepostradateln´a a jak´akoliv z´amˇena poˇrad´ı element ˚u by se projevila na jeho v ´yznamu. Obvykle je tento typ dokumentu vytv´aˇren ˇclovˇekem, kter ´y do nˇej zan´aˇs´ı nˇejakou skuteˇcnost odpov´ıdaj´ıc´ı realitˇe (v re´aln´em svˇetˇe pˇrevl´ad´a mnohotv´arnost) a ˇcasto je pro ˇclovˇeka i urˇcen. Pˇr´ıkladem takov ´ych dokument ˚u m ˚uˇze b ´yt kniha, elektronick´a poˇsta (email), novinov ´y ˇcl´anek a podobnˇe.

V ´ypis 6: Dokumentovˇe orientovan ´y XML dokument

<clanek rubrika=”sport” datum=”10.4.2009”>

<nadpis> ˇCesk ´a osmn ´actka napjat ˇe sledovala duel</nadpis> <odstavec> ˇCeˇsi po por ´aˇzk ´ach s N ˇemeckem 3:4 a favorizovanou

(24)

Kanadou 3:4 v prodlouˇzen´ı museli napjat ˇe ˇcekat, zda N ˇemci neuhraj´ı bod.

</odstavec>

<odstavec> N ˇemecko bylo v utk ´an´ı se ˇSv´ycary po pˇredchoz´ıch

vystoupen´ıch na turnaji pap´ırov´ym favoritem. Porazilo ˇCechy, se ˇSv ´edy bojovalo o vyrovn ´an´ı do posledn´ı vteˇriny.

</odstavec> ... </clanek>

<clanek rubrika=”sport” datum=”10.4.2009”> ...

</clanek>

4.3 Datab ´aze s podporou XML

Pˇredchoz´ı rozdˇelen´ı XML dokument ˚u na dva typy je d ˚uleˇzit´e z hlediska volby samotn´eho ukl´ad´an´ı XML soubor ˚u. Pˇri v ´ybˇeru ´uloˇziˇstˇe m´ame totiˇz, jak uˇz to b ´yv´a, v´ıce moˇznost´ı. Je moˇzn´e pouˇz´ıt nˇekterou z dostupn ´ych relaˇcn´ıch datab´az´ı, kter´a umoˇz ˇnuje uchov´av´an´ı XML dat. Obvykle jsou takov´e syst´emy oznaˇcov´any pojmem XML-enabled (”XML pod-porov´ano”). Z nejzn´amˇejˇs´ıch z´astupc ˚u m ˚uˇzeme uv´est Microsoft SQL Server 2000, Oracle, IBM DB2. I kdyˇz tyto datab´azov´e syst´emy ukl´adaj´ı sv´a data ve formˇe tabulek, dok´aˇz´ı bez probl´emu zpracovat, uloˇzit a vr´atit n´ami poˇzadovan ´y XML dokument. Avˇsak pozornost si zaslouˇz´ı fakt, ˇze datab´aze m ˚uˇze uˇzivateli navr´atit XML dokument rozd´ılnˇe struktu-rovan ´y, neˇz jak byl p ˚uvodnˇe uloˇzen. Tento nedostatek odr´aˇz´ı zp ˚usob, jak ´ym relaˇcn´ı da-tab´azov´e syst´emy mapuj´ı XML dokumenty do tabulek. Z toho vypl ´yv´a, ˇze tento zp ˚usob je dostateˇcn ´y pro datovˇe orientovan´a, ale nen´ı pˇr´ıliˇs vhodn ´y pro dokumentovˇe oriento-van´a XML data. Pr´avˇe pro tyto ´uˇcely byly vyvinuty (a st´ale se vyv´ıjej´ı nov´e) nativn´ı XML datab´aze (anglicky native xml database).

4.4 Nativn´ı XML datab ´aze

Hlavn´ım ´ukolem nativn´ı XML datab´aze je uchov´an´ı dokumentu pˇresnˇe tak, jak je tvoˇren origin´al. Tzn. vˇcetnˇe jeho kompletn´ı logick´e struktury a vˇsech prvk ˚u, kter´e obsahuje (tak´e koment´aˇre, deklarace atd.). Pˇredpokl´ad´a se takt´eˇz, ˇze pˇri poˇzadavku na urˇcit ´y XML do-kument nebo na ˇc´ast nˇejak´eho dodo-kumentu (viz dalˇs´ı kapitoly), datab´aze vr´at´ı dodo-kument pˇresnˇe odpov´ıdaj´ıc´ı ukl´adan´emu origin´alu. Je jasn´e, ˇze nativn´ı XML datab´azov´e syst´emy jsou vhodn´e pro ukl´ad´an´ı jak datovˇe tak dokumentovˇe orientovan ´ych XML soubor ˚u. To z nich ˇcin´ı nejlepˇs´ı kandid´aty pro volbu ´uloˇziˇstˇe dat tohoto form´atu.

Spojen´ı nativn´ı XML datab´aze bylo poprv´e pouˇzito u projektu Tamino, veden ´ym fir-mou Software AG. Dnes je jiˇz tento v ´yraz bˇeˇznˇe pouˇz´ıv´an vˇsemi v ´yvoj´aˇri zab ´yvaj´ıc´ımi se touto problematikou. Neust´ale se tento obrat tak´e vr ´yv´a pod k ˚uˇzi ˇsirˇs´ı veˇrejnosti. V dobˇe psan´ı t´eto pr´ace je jiˇz na trhu dostupn ´ych, trouf´am si ˇr´ıci, nˇekolik des´ıtek exis-tuj´ıc´ıch nativn´ıch XML datab´azov ´ych syst´em ˚u. Nˇekter´e jsou licencov´any za nemal´e fi-nanˇcn´ı ˇc´astky a nˇekter´e se naopak pyˇsn´ı pˇr´ıvlastkem open source, neboli zdarma ˇs´ıˇriteln´e. Je obt´ıˇzn´e bez dalˇs´ıho zkoum´an´ı ˇci testov´an´ı ˇr´ıci, kter´a z dostupn ´ych nativn´ıch XML

(25)

da-tab´az´ı je lepˇs´ı a kter´a horˇs´ı. Krit´eria, kter´a vˇsechny takov´e syst´emy spojuj´ı, at’ uˇz jsou placen´e ˇci nikoli, jsou pˇredevˇs´ım rychlost zpracov´an´ı a ukl´ad´an´ı jednotliv ´ych XML do-kument ˚u do datab´aze, podpora celosvˇetovˇe uzn´avan ´ych W3C standard ˚u pro n´asledn´e dotazov´an´ı nad tˇemito dokumenty a do tˇretice opˇet rychlost, tentokr´at proveden´ı dotazu. Nejv ´yznamnˇejˇs´ımi podporovan ´ymi standardy pro z´ısk´av´an´ı ˇc´ast´ı nebo i cel ´ych XML do-kument ˚u z datab´aze jsou jazyky XPath a XQuery, pro prov´adˇen´ı zmˇen v dodo-kumentech pak jazyk XUpdate. Jazyk ˚um XPath a XQuery jsou vˇenov´any kapitoly 3.2 a 3.3. Pˇrehled nˇekolika nejzn´amˇejˇs´ıch syst´em ˚u postaven ´ych na nativn´ıch XML datab´az´ıch je uveden v n´asleduj´ıc´ı tabulce 3. V tabulce je u produktu vˇzdy uvedena aktu´aln´ı verze, technologie pouˇzit´a pˇri implementaci, podporovan´e jazyky pro pr´aci s XML daty a tv ˚urce syst´emu.

Tabulka 3: Pˇr´ıklady nativn´ıch XML datab´azov ´ych syst´em ˚u

N´azev Verze Jazyk Dotazovac´ı jazyky Autor syst´emu

eXist 1.2 Java XQuery 1.0, XPath 2.0 Wolfgang Meier -

ve-douc´ı projektu

XIndice 1.1 Java XPath, XUpdate The Apache Software

Foundation

dbXML 2.0 Java XPath dbXML Group

Tamino XML

server

4.4 XQuery Software AG

XHive/DB 8 Java XQuery, XPath, XLink,

XPointer, DOM Traversal

X-Hive Corporation

Progress Sonic XML Server

7.6.1 Java XPath, XQuery Progress software Cor-poration

Oracle Berkeley DB XML

2.4.16 C++ XPath, XQuery, XUpdate Oracle Corporation

MonetDB XQuery

4.28.0 C XQuery, XUpdate CWI

Jak je z v ´yˇctu na prvn´ı pohled patrn´e, naprost´a vˇetˇsina nativn´ıch XML datab´az´ı je implementov´ana v prostˇred´ı Javy. Zcela urˇcitˇe vol´ı v ´yvoj´aˇri tento jazyk pr´avˇe kv ˚uli jeho snadn´e pˇrenositelnosti mezi r ˚uzn ´ymi platformami (vˇzdyt’ pr´avˇe nez´avislost na platformˇe je z´akladn´ım pil´ıˇrem cel´eho jazyka Java). Spoleˇcn ´ymi rysy vˇsech nativn´ıch XML datab´az´ı jsou pˇredevˇs´ım tyto vlastnosti:

• XML data jsou ukl´ad´ana na ´urovni dokumentu (dokument jako nejmenˇs´ı datov ´y jednotka)

• XML dokumenty obvykle seskupov´any do kolekc´ı

• implementov´an minim´alnˇe jeden dotazovac´ı jazyk, nˇekter´e disponuj´ı v´ıce jazyky • pouˇz´ıv´ano indexov´an´ı pro zrychlen´ı pr´ace s daty

(26)

Stejnˇe jako v relaˇcn´ıch datab´az´ıch si m ˚uˇzeme pˇredstavit jeden ˇr´adek libovoln´e tabulky jako nejmenˇs´ı jednotku dat, v nativn´ı XML datab´az´ı je touto jednotkou XML dokument. Jak bylo zm´ınˇeno, jednotliv´e XML datab´azov´e syst´emy obvykle seskupuj´ı XML doku-menty do tzv. kolekc´ı. Pokud si tedy pˇredstav´ıme XML dokudoku-menty jako ˇr´adky tabulky, kolekce pak budou logicky odpov´ıdat jednotliv ´ym tabulk´am. Nˇekter´e datab´aze vyˇzaduj´ı ukl´adat v r´amci jedn´e kolekce pouze dokumenty sobˇe podobn´e. To je zaruˇceno sch´ematy, kter ´ym sv ´ym obsahem dokumenty jedn´e kolekce mus´ı odpov´ıdat. Takov´a vlastnost da-tab´aze se naz ´yv´a z´avislost na sch´ematu (anglicky schema-dependent). Naopak najdeme i XML datab´aze takov´e, kter´e ˇz´adnou podobnost dokument ˚u n´aleˇz´ıc´ıch do stejn´e kolekce nevyˇzaduj´ı. Kolekce pak oznaˇcujeme jako nez´avisl´e na sch´ematu (schema-independent).

Nˇekter´e, ne vˇsak zdaleka vˇsechny, nativn´ı XML datab´aze umoˇz ˇnuj´ı takt´eˇz editaci XML dat. Pˇr´ıkladem z tabulky 3 je syst´em XIndice od firmy Apache Software. K ´upravˇe XML dat je zde pouˇz´ıv´an jazyk XUpdate. ´Uprava XML dokument ˚u je vˇsak nepˇr´ımo moˇzn´a i u jin ´ych syst´em ˚u. Napˇr´ıklad tak, ˇze je cel ´y dokument z datab´aze nahr´an, pozmˇenˇen (nˇejak ´ymi n´astroji pro editaci XML dokumentu), pot´e opˇet cel ´y uloˇzen do datab´aze a p ˚uvodn´ı origin´al smaz´an. Princip je vlastnˇe stejn ´y, pouze pˇri pouˇzit´ı jazyka pro ´upravu XML dat za n´as veˇsker´e ´ukony spojen´e s editac´ı dokumentu prov´ad´ı pˇr´ımo datab´azov ´y syst´em.

Indexov´an´ı uloˇzen ´ych dat obecnˇe napom´ah´a urychlen´ı vyhled´av´an´ı v tˇechto datech, tud´ıˇz i celkov´e pr´aci s nimi. Nejinak je tomu u ukl´ad´an´ı dat ve form´atu XML. Z´akladn´ım typem je indexov´an´ı vˇsech element ˚u a atribut ˚u v dokumentech. To samozˇrejmˇe urychluje zpracov´an´ı dotaz ˚u, pˇri kter ´ych se v datech vyhled´av´a pr´avˇe podle n´azv ˚u element ˚u ˇci atribut ˚u. Dotazy tohoto typu jsou ostatnˇe nejˇcastˇejˇs´ı. Pokroˇcilejˇs´ım typem indexov´an´ı je tzv. full-textov´e, kdy se indexuje veˇsker ´y text obsaˇzen ´y v elementech nebo v hodnot´ach atribut ˚u. Tento typ indexov´an´ı nemus´ı b ´yt souˇc´ast´ı kaˇzd´e nativn´ı XML datab´aze.

Transakce je dalˇs´ı pojem, kter ´y nesm´ı b ´yt ciz´ı ˇz´adn´emu modern´ımu datab´azov´emu syst´emu. Stejnˇe je tomu i u syst´em ˚u urˇcen ´ym pro ukl´ad´an´ı a pr´aci s XML daty. Zamyk´an´ı je moˇzn´e na ´urovn´ı cel ´ych XML dokument ˚u, proto se m ˚uˇze st´at a st´av´a se, ˇze v jeden moment k urˇcit´emu XML dokumentu m ˚uˇze pˇristupovat (ve smyslu upravov´an´ı doku-mentu) pouze jeden uˇzivatel. Ostatn´ı uˇzivatel´e mus´ı poˇckat, dokud prvn´ı uˇzivatel pr´aci s dokumentem neukonˇc´ı. Na moˇznosti uzamyk´an´ı ˇc´ast´ı dokument ˚u se jiˇz v dneˇsn´ı dobˇe usilovnˇe pracuje a v nejbliˇzˇs´ı dobˇe se pravdˇepodobnˇe zaˇcne v syst´emech objevovat.

4.5 Popis datab ´aze eXist

Ze vˇsech mnou prozkouman ´ych nativn´ıch XML datab´az´ı uveden ´ych v tabulce 3 bylo nutn´e zvolit jednu, na kter´e pot´e bude postavena m´a klientsk´a aplikace. Nakonec jsem se pˇriklonil k datab´azi eXist [12]. A to jednak z d ˚uvodu voln´eho ˇs´ıˇren´ı tohoto produktu (jedn´a se o open-source datab´azi) a nav´ıc pro v ´ybornˇe zpracovanou dokumentaci API datab´aze. API, neboli zp ˚usob pˇr´ıstupu do datab´aze, kter´e jsem pro svou aplikaci zvolil, je bl´ıˇze pops´ano v kapitole 5.2. Cel´a XML datab´aze je vytvoˇrena v programovac´ım jazyce Java a pro jej´ı spr´avn ´y bˇeh je nezbytn´e m´ıt nainstalovan´e JDK (nejl´epe aktu´aln´ı verzi).

Na domovsk´e internetov´e str´ance datab´aze [12] je vˇzdy k dispozici nejnovˇejˇs´ı sta-biln´ı verze (v dobˇe psan´ı t´eto pr´ace to je soubor eXist-setup-1.2.5-rev8668.jar). Po staˇzen´ı

(27)

staˇc´ı tento soubor spustit na poˇc´ıtaˇci a zapoˇcne se samotn´a instalace. Cel ´y proces insta-lace je intuitivn´ı. Po uˇzivateli se poˇzaduje pouze zadat adres´aˇr pro instalaci a vytvoˇrit si heslo pro pozdˇejˇs´ı pˇr´ıstup k datab´aze. To vˇsak nen´ı povinn´e, pouze doporuˇcen´e pro za-bezpeˇcen´ı. Doporuˇcuji si tak´e nechat vytvoˇrit ikony na ploˇse syst´emu, aby byl pˇr´ıstup k datab´azi co nejjednoduˇsˇs´ı. Po dokonˇcen´ı instalace staˇc´ı spustit datab´azi ikonou s n´azvem eXist Database Startup.

Syst´em EXist poskytuje uˇzivateli dvˇe moˇznosti pˇr´ıstupu ke sv´e spr´avˇe. Prvn´ı moˇznost´ı je www rozhran´ı. Datab´aze totiˇz obsahuje integrovan ´y www server, kter ´y se na poˇc´ıtaˇci nastartuje spolu s datab´az´ı. Implicitnˇe se k t´eto webov´e str´ance pˇristupuje zad´an´ım ad-resy http://localhost:8080/exist/index.xml do kter´ehokoli webov´eho prohl´ıˇzeˇce (MS In-ternet Explorer, Mozilla Firefox, Opera apod.). Na str´ance v menu vlevo najdeme moˇznost pˇrihl´aˇsen´ı jako administr´ator - uˇzivatelsk´e jm´eno admin (za pomoc´ı hesla, kter´e jsme za-dali pˇri instalaci, v opaˇcn´em pˇr´ıpadˇe bez hesla). Pot´e m ˚uˇzeme prov´adˇet z´akladn´ı ´ukony s datab´az´ı (pˇrid´avat ˇci odeb´ırat XML dokumenty, prov´adˇet dotazov´an´ı, z´alohovat celou datab´azi aj.).

Druhou moˇznost´ı spr´avy datab´aze je vyuˇz´ıt pˇredchystan´eho administr´atorsk´eho gra-fick´eho rozhran´ı. Toto GUI je implementov´ano takt´eˇz v jazyce Java a spouˇst´ı se na zm´ınˇen´e webov´e str´ance odkazem Launch v sekci menu Administration. Na ´uvodn´ı obrazovce je uˇzivatel vyzv´an zadat uˇzivatelsk´e jm´eno a heslo. Opˇet jako jm´eno uvedeme admin a heslo to, kter´e jsme zadali pˇri instalaci. Pokud jsme ˇz´adn´e nevytvoˇrili, nech´ame pole pr´azdn´e. Po ´uspˇeˇsn´em pˇrihl´aˇsen´ı jiˇz vid´ıme samotn ´y program pro spr´avu (obr´azek 4). V horn´ı ˇc´asti okna je k dispozici uˇzivatelsk´e menu, pod n´ım nˇekolik uˇziteˇcn ´ych ikok (zaloˇzen´ı kolekce, vloˇzen´ı XML dokumentu, prov´adˇen´ı dotaz ˚u atd.). Hlavn´ı ˇc´ast okna tvoˇr´ı v ´ypis obsahu datab´aze.

(28)

Osobnˇe d´av´am pˇrednost pouˇz´ıv´an´ı Java Admin rozhran´ı pro spr´avu datab´aze pˇred webov ´ym rozhran´ım. Pomoc´ı nˇeho jsem se k datab´azov´emu syst´emu pˇrihl´asil jako ad-ministr´ator a pot´e jiˇz nebyl probl´em v datab´azi vytvoˇrit kolekci s n´azvem moje a vloˇzit do n´ı dva existuj´ıc´ı XML dokumenty. Jedn´ım z nich je dokument studium.xml, jehoˇz ob-sah je zobrazen ve v ´ypisu 1 a na jenˇz se odkazuji v pr ˚ubˇehu cel´e t´eto pr´ace. Druh ´ym je dokument map.xml.

Jak jiˇz bylo ˇreˇceno, jednotliv´e dokumenty b ´yvaj´ı v XML datab´az´ıch ˇcasto hierarchicky uspoˇr´ad´any do kolekc´ı (m ˚uˇzeme si pˇredstavit jako sloˇzky soubor ˚u na poˇc´ıtaˇci). Nejinak je tomu u syst´emu eXist. V hlavn´ı ˇc´asti okna programu se uˇzivateli vypisuj´ı jak n´azvy ko-lekc´ı, tak XML dokument ˚u. Poznat rozd´ıl je velice jednoduch´e. XML dokument narozd´ıl od kolekce obsahuje v n´azvu pˇr´ıponu .xml. Pokud v oknˇe dvakr´at klikneme na n´azev kolekce, logicky do n´ı vstoup´ıme a program vypisuje jej´ı obsah. Pokud vˇsak klikneme na XML dokument, otevˇre se n´am nov´e okno se samotn ´ym obsahem dokumentu.

Na obr´azku 4 lze vidˇet v ´ypis obsahu kolekce s n´azvem moje (obsahuje dva xml sou-bory) a otevˇren ´y v ´ypis obsahu dokumentu studium.xml. Datab´aze je tedy plnˇe funkˇcn´ı a obsahuje uˇz i data, nad kter ´ymi bude pozdˇeji moˇzn´e pomoc´ı vlastn´ı klientsk´e aplikace prov´adˇet dotazy a vyhodnocovat je.

(29)

5

Popis aplikace

Tato kapitola popisuje klientskou aplikaci v jazyku C#, kter´a byla vytv´aˇrena soubˇeˇznˇe s touto prac´ı. M´a za ´ukol pˇribl´ıˇzit ˇcten´aˇri jednotliv´e etapy v ´yvoje, popsat pˇr´ıstup k API vybran´e nativn´ı XML datab´aze a n´asledn´e pˇripojen´ı k nˇemu. D´ale popisuje, jak aplikace funguje a jak z´ıskan´a data z datab´aze zobrazuje. V posledn´ı ˇc´asti kapitoly jsou uvedeny v ´ysledky testov´an´ı vlastn´ıch experiment´aln´ıch metod zobrazovan´ı ˇci komprese dat ve srovnan´ı s jiˇz existuj´ıc´ımi zp ˚usoby.

5.1 N ´avrh implementace

Stˇeˇzejn´ım ´ukolem t´eto bakal´aˇrsk´e pr´ace je vytvoˇren´ı klientsk´e aplikace schopn´e pˇripojen´ı k nativn´ı XML datab´azi, odesl´an´ı uˇzivatelem definovan´eho dotazu a n´asledn´eho obdrˇzen´ı v ´ysledku, kter ´y pot´e aplikace uˇzivateli zobraz´ı odpov´ıdaj´ıc´ım zp ˚usobem. Z´arove ˇn vˇsak, jako d´ılˇc´ı ´ukoly, mi byla zad´ana implementace vlastn´ı metody zobrazov´an´ı v ´ysledn´eho XML souboru a metody komprese XML dat pˇri pˇrenosu pˇres poˇc´ıtaˇcovou s´ıt’.

K cel´emu probl´emu je nutn´e pˇristupovat ze dvou pohled ˚u. Za pˇredpokladu, ˇze se ve fin´aln´ı verzi aplikace bude pˇripojovat k existuj´ıc´ı datab´azi, zvolen´e jiˇz v kapitole 4.5, je jasn´e, ˇze v takov´e situaci nebude moˇzn´e pouˇz´ıvat ˇz´adn´e metody komprese pˇri pˇrenosu dat. Nativn´ı XML datab´aze, kter´e jsem zkoumal, jednoduˇse takov´e prostˇredky neposky-tuj´ı. Nejinak je tomu u datab´azov´eho syst´emu eXist. S metodou zobrazen´ı v ´ysledn ´ych dat by takov ´y probl´em nastat nemˇel, jelikoˇz je uˇz z´aleˇzitost´ı ˇcistˇe klienta, jak bude s pˇrijat ´ymi daty nakl´adat, resp. jak je bude uˇzivateli zobrazovat. Nab´ız´ı se ot´azka, jak tedy cel ´y v ´yvoj aplikace smˇeˇrovat? Jedin ´ym moˇzn ´ym ˇreˇsen´ım, kter´e mi umoˇzn´ı splnˇen´ı vˇsech zadan ´ych ´ukol ˚u, je implementace nˇejak´e jednoduch´e obdoby XML datab´aze vedle samotn´eho kli-enta. Slovo ”obdoba” bylo pouˇzito z´amˇernˇe, protoˇze se zajist´e nebude jednat o plnohod-notnou datab´azi srovnatelnou s existuj´ıc´ımi XML nativn´ımi datab´azemi. Sp´ıˇse by se mˇelo jednat o jakousi serverovou aplikaci, kter´a bude schopna reagovat na poˇzadavky pˇrijat´e pˇres poˇc´ıtaˇcovou s´ıt’ a odpov´ıdat na nˇe.

5.1.1 Vlastn´ı XML datab ´aze, server-klient komunikace

V prvn´ı f´azi v ´yvoje bude vhodn´e zaˇc´ıt implementac´ı dvou jednoduch ´ych aplikac´ı - serve-rov´e a klientsk´e. Serverov´a ˇc´ast zde bude plnit ´ulohu jiˇz zm´ınˇen´e vlastn´ı XML datab´aze. Takto vytvoˇren´a datab´aze nemus´ı vyuˇz´ıvat dotazovac´ıch jazyk ˚u. Bude dostateˇcn´e, kdyˇz bude schopna na poˇzadavek ze strany klienta odeslat konkr´etn´ı XML dokument, kter ´y ve sv´em ´uloˇziˇsti obsahuje. Aby bylo prostˇred´ı pro komunikaci klienta se serverem v ˚ubec moˇzn´e, je d ˚uleˇzit´e nejprve zvolit nˇejak ´y komunikaˇcn´ı protokol, popˇr. navrhnout sv ˚uj vlastn´ı. A to z toho d ˚uvodu, ˇze komunikace bude prob´ıhat pˇres poˇc´ıtaˇcovou s´ıt’ (lok´aln´ı, i pˇres internet). V ´yjimkou je samozˇrejmˇe stav, kdy obˇe aplikace, jak klient tak server, bˇeˇz´ı na stejn´em poˇc´ıtaˇc. Ne vˇzdy tomu ale tak je. Nav´ıc, i v t´eto situaci je potˇreba pouˇzit´ı nˇejak´eho spoleˇcn´eho komunikaˇcn´ıho protokolu. Definice protokolu (pˇrevzato z [17]) ve smyslu informatiky zn´ı takto: Protokol je v informatice konvence nebo standard, podle kter´eho prob´ıh´a elektronick´a komunikace a pˇrenos dat mezi dvˇema koncov ´ymi body

(30)

(re-alizovan´e nejˇcastˇeji poˇc´ıtaˇci). V nejjednoduˇsˇs´ı podobˇe protokol definuje pravidla ˇr´ıd´ıc´ı syntaxi, s´emantiku a synchronizaci vz´ajemn´e komunikace. Protokoly mohou b ´yt reali-zov´any hardwarovˇe, softwarovˇe a nebo kombinac´ı obou.

Jin ´ymi slovy jde o spoleˇcnou ”ˇreˇc” obou stran. Strana klienta mus´ı vˇedˇet, jak pˇresnˇe poˇzadavek formulovat a v jak´e formˇe oˇcek´avat odpovˇed’. Naopak strana serveru nutnˇe mus´ı zn´at strukturu pˇr´ıchoz´ıho poˇzadavku a zn´at postup pˇri pos´ıl´an´ı odpovˇedi zpˇet entovi. V m´em pˇr´ıpadˇe bude nutn´e zav´est mnoˇzinu zpr´av, kter´e se budou pos´ılat od kli-enta na server a naopak. Zpr´avy ve smyslu napˇr. ”Jsem klient a ted’ pos´ıl´am poˇzadavek XXX”. Naopak server bude odpov´ıdat napˇr. ”Jsem server, odpovˇed’ na poˇzadavek XXX je YYY”. Takto si komunikaci samozˇrejmˇe jen pˇredstavujeme, re´aln´a implementace m ˚uˇze vypadat jinak. Mnoho r ˚uzn ´ych standard ˚u komunikace jiˇz existuje, v m´em pˇr´ıpadˇe bude zˇrejmˇe nejlepˇs´ım ˇreˇsen´ım n´avrh vlastn´ıho modelu, kter ´y budu vyuˇz´ıvat.

5.1.2 Pouˇzit´ı komprese pˇri pˇrenosu XML dat

Jakmile bude splnˇena prvn´ı f´aze implementace - server bude schopen odeslat klientovi XML dokument a ten jej ve stejn´e formˇe obdrˇz´ı, nic nebude br´anit v ´ytvoˇren´ı vlastn´ı me-tody komprese pˇri pˇrenosu dat. Server jeˇstˇe pˇred odesl´an´ım dat XML dokument nˇejak ´ym zp ˚usobem zakomprimuje tak, aby byl co nejmenˇs´ı, a teprve pot´e jej odeˇsle. Na druh´e stranˇe klient mus´ı b ´yt nutnˇe schopen obdrˇzen ´y komprim´at opˇet dekomprimovat. Podoba v ´ysledn´eho XML dokumentu u klienta mus´ı b ´yt shodn´a s podobou origin´aln´ıho doku-mentu na stranˇe serveru. Z toho plyne, ˇze server mus´ı implementovat metodu komprese a klient naopak metodu dekomprese.

Je logick´e, ˇze v ´yvoj bude podle n´asleduj´ıc´ı koncepce:

1. Implementovat metodu komprese a zakomponovat ji do serverov´e ˇc´asti aplikace. 2. Zvr´atit proces komprese, ˇc´ımˇz vznikne metoda dekomprese, zakomponovat ji do

klientsk´e ˇc´asti aplikace.

Pˇri kompres´ıch se obecnˇe snaˇz´ıme vyuˇz´ıt toho, ˇze se nˇejak´e ˇc´asti text ˚u (soubor ˚u) opa-kuj´ı. Jiˇz z povahy struktury XML dokument ˚u vypl ´yv´a, ˇze se v nich jistˇe budou opakovat n´azvy element ˚u i atribut ˚u. V praxi tak tomu opravdu je, pˇredevˇs´ım u datovˇe oriento-van ´ych dokument ˚u, nejen vˇsak u nich. Jeden tent ´yˇz element se ˇcasto v r´amci dokumentu opakuje mnohokr´at. O co se budeme snaˇzit, je nahrazen´ı vˇsech n´azv ˚u element ˚u a atribut ˚u za n´azvy jin´e, co moˇzn´a nejkratˇs´ı. Pˇritom si vˇzdy nˇekam poznamen´ame, jak´e ˇretˇezce jsme vymˇenili za jak´e, aby bylo moˇzn´e cel ´y proces obr´atit. Princip komprese tedy spoˇc´ıv´a ve slovn´ıkov´em nahrazovan´ı jmen element ˚u a atribut ˚u v XML dokumentech.

Jako prvn´ı bylo navrˇzeno nahrazov´an´ı n´azv ˚u za postupnˇe nar ˚ustaj´ıc´ı celoˇc´ıseln´e hod-noty. Syntaxe jazyka XML vˇsak standardnˇe neumoˇz ˇnuje, aby jm´ena element ˚u zaˇc´ınala ˇc´ıslic´ı. K tomuto faktu zˇrejmˇe budume muset pˇrihl´ednout a hledat jin´e ˇreˇsen´ı, napˇr. ˇretˇezcov´e hodnoty (obsahuj´ıc´ı p´ısmena), kter´e jiˇz jsou v syntaxi povoleny.

Jelikoˇz se bude jednat ˇcistˇe o experiment´aln´ı metodu komprimace, je nutn´e ji po do-konˇcen´ı otestovat. Pˇri tomto testov´an´ı mi bylo doporuˇceno v ´ysledky srovnat s existuj´ıc´ım

(31)

n´astrojem pro komprimaci XML soubor ˚u s n´azvem XMill [6]. Tento projekt, kter ´y byl vy-vinut firmou AT&T Labs Research v americk´em mˇestˇe New Jersey v roce 1999, je zdarma k dispozici na internetov ´ych str´ank´ach http://www.liefke.com/hartmut/xmill/xmill.html. Jedn´a se o jeden z nejefektivnˇejˇs´ıch algoritm ˚u komprese pro XML data, ba dokonce moˇzn´a i nejv ´ykonˇejˇs´ı. Je implementov´an v jazyce C++ a vyuˇz´ıv´a pˇredevˇs´ım seskupov´an´ı ˇretˇezc ˚u v souborech XML s urˇcit ´ymi podobnostmi. Dosahuje lepˇs´ıch v ´ysledk ˚u neˇz renomovan´e kompresn´ı n´astroje, jako napˇr. WinZip, WinRar i gzip. Pro pˇredstavu v ´ykonosti XMill komprese je na obr´azku 5 srovn´an´ı s programem gzip. Obr´azek obsahuje v ´ysledky nˇekolika zp ˚usob ˚u komprese XMill a dvou zp ˚usob ˚u komprese gzip.

Obr´azek 5: Srovn´an´ı v ´ykonu komprese XMill a gzip, podle [6]

Nepˇredpokl´ad´am, ˇze bych svoj´ı metodou komprese pˇrekonal n´astroj XMill, nicm´enˇe to do v ´yvoje pˇrid´av´a jistou v ´yzvu. Grafick´e porovn´an´ı v ´ysledk ˚u dosaˇzen ´ych vlastn´ı me-todou komprese s v ´ysledky komprese XMill jsou uvedeny v kapitole 5.4.1.

5.1.3 Zobrazen´ı XML dat

Dalˇs´ım d´ılˇc´ım ´ukolem m´e pr´ace je implementace komponenty pro zobrazen´ı XML do-kumentu a jej´ı n´asledn´e zapojen´ı do grafick´eho rozhran´ı klienta. Jako jak´asi pˇredloha pˇri tvorbˇe m ˚uˇze b ´yt pouˇzita komponenta s n´azvem WebBrowser, jenˇz je v implementaˇcn´ım prostˇred´ı .NET k dispozici. Jedn´a se o obdobu programu MS Internet Explorer. Na obr´azku 6 je podoba XML dokumentu studium.xml (v ´ypis 1) tak, jak ji zobraz´ı WebBrowser.

Na zp ˚usobu zobrazen´ı XML dokumentu pomoc´ı komponenty WebBrowser jsou d ˚uleˇzit´e pˇredevˇs´ım dvˇe skuteˇcnosti.

Zaprv´e WebBrowser zv ´yraz ˇnuje syntaxi jazyka XML pouˇzit´ım barev a stylu p´ısma (tuˇcn´e). Vid´ıme, ˇze ´uvodn´ı deklarace je obarvena modrou barvou. Uzav´ırac´ı znaˇcky ele-ment ˚u (<, > a />) spolu se znaky = a ” jsou takt´eˇz zobrazen´e v modr´e barvˇe. N´azvy

(32)

Obr´azek 6: Zobrazen´ı XML dokumentu pomoc´ı WebBrowser komponenty

element ˚u a atribut ˚u jsou tmavˇe ˇcerven´e a nakonec textov´e hodnoty element ˚u i atribut ˚u jsou vyps´any tuˇcn ´ym ˇcern ´ym p´ısmem.

Zadruh´e u element ˚u, kter´e obsahuj´ı nˇejak´e vnoˇren´e prvky, se vlevo zobrazuje mal ´y symbol -. Pokud na tento symbol klikneme, dojde k zabalen´ı elementu, tzn. jeho vnoˇren´e elementy (jeho potomci) jsou skryti. Symbol - se pot´e automaticky zmˇen´ı na +, kter ´ym lze element opˇet rozbalit.

WebBrowser na prvn´ı pohled funguje velmi slibnˇe. Nicm´enˇe po hlubˇs´ım prozkoum´an´ı bylo zjiˇstˇeno, ˇze pˇri zobrazov´an´ı velk ´ych XML dokoment ˚u (1 Mb a v´ıce) doba zobrazen´ı rapidnˇe nar ˚ust´a. Pˇri implementaci vlastn´ı komponenty se pokus´ıme tomuto probl´emu pˇredej´ıt.

M´ame za ´ukol implementovat komponentu, kter´a by mˇela obsahovat stejn´e funkce jako WebBrowser, tzn. jak zv ´yraznˇen´ı syntaxe XML jazyka, tak moˇznost zabalov´an´ı a rozbalov´an´ı element ˚u ve stromov´e struktuˇre. Vlastnost´ı nav´ıc by mˇela b ´yt tak´e schopnost vyhled´av´an´ı textu v dokumentu zobrazen´em touto komponentou. Pokud je text nalezen, komponenta jej zv ´yrazn´ı, napˇr. podbarven´ım textu.

Z vlastn´ıch zkuˇsenost´ı jiˇz v´ım, ˇze pokud chceme v prostˇred´ı .NET pouˇz´ıvat barevn´e v ´ypisy textu, slouˇz´ı n´am k tomu existuj´ıc´ı kompenenta RichTextBox. Jedn´a se o nadstavbu klasick´e komponenty TextBox, kter´a je velmi hojnˇe pouˇz´ıvan´a i v jin ´ych implementaˇcn´ıch prostˇred´ıch. Pˇredpokl´adejme tedy, ˇze architektura m´e zobrazovac´ı komponenty bude n´asleduj´ıc´ı:

• bude dˇedit vlastnosti existuj´ıc´ı komponenty RichTextBox (schopnost zobrazovat barevn ´y text)

(33)

• nav´ıc bude implementovat moˇznost zabalov´an´ı a rozbalov´an´ı stromov´e struktury Nˇekolikr´at jiˇz byl zm´ınˇen pojem RichTextBox. Jak ´y je vˇsak rozd´ıl mezi komponentami TextBox a RichTextBox? Z´akladn´ı odliˇsnost je ta, ˇze TextBox neposkytuje zobrazov´an´ı barevn´eho textu. Kdeˇzto komponenta RichTextBox, jak uˇz ostatnˇe nese ve sv´em n´azvu, umoˇz ˇnuje pˇriˇrazen´ı speci´alnˇe form´atovan´eho textu, tzv. RichText Form´atu.

RTF [16] je firmou Microsoft vyvinut ´y form´at textu, kter ´y obsahuje bohatou mnoˇzinu form´atovac´ıch pˇr´ıkaz ˚u, kter ´y je nez´avisl ´y na platformˇe. Vznikl jiˇz v roce 1987. Pomoc´ı tohoto form´atu je obecnˇe moˇzn´e vymˇe ˇnovat dokumenty mezi nejr ˚uznˇejˇs´ımi programy pro zpracov´an´ı textu se zachov´an´ım vzhledu a form´atu. Na rozd´ıl od vˇetˇsiny vlastn´ıch form´at ˚u soubor ˚u textov ´ych editor ˚u je RTF ˇciteln ´y i v prost´e textov´e podobˇe, tedy jeho obsah vypad´a jako zvl´aˇstn´ı text ASCII, nikoliv jako zmˇet’ nesmysln ´ych znak ˚u.

Pomoc´ı spr´avnˇe definovan´eho ˇretˇezce textu ve form´atu RTF tedy budeme schopni komponentˇe RichTextBox ˇr´ıci, kdy m´a jakou barvou kter ´y text vypsat.

Co se t ´yˇce implementace funkce zabalov´an´ı a rozbalov´an´ı element ˚u ve vypsan´em XML dokumentu, je nutn´e ch´apat zobrazen ´y dokument sp´ıˇse jako jednotliv´e ˇr´adky textu. Samotn´e znaky - a + bude rozumnˇejˇs´ı vykreslovat nalevo od vypsan´eho textu (mimo plochu s vlastn´ım textem), neˇz pˇr´ımo do textu, jak je tomu u WebBrowseru. Probl´em bude pravdˇepodobnˇe rozloˇzen do tˇr´ı hlavn´ıch ´ukol ˚u:

1. Urˇcit, ke kter ´ym ˇr´adk ˚um (ˇr´adky, kter´e obsahuj´ı otev´ırac´ı tagy element ˚u) znak - nebo + vykreslit.

2. Spr´avnˇe (ve smyslu horizont´aln´ı pozice) pˇriˇradit vykreslen´e symboly - nebo + k ˇr´adk ˚um textu a zajistit jejich odpov´ıdaj´ıc´ı posun z´arove ˇn s posunem textu.

3. Po zabalen´ı elementu zobrazovan ´y text pˇrekreslit tak, aby vnoˇren´e prvky elementu nebyly vidˇet a naopak.

Podle prvotn´ı anal ´yzy bude zˇrejmˇe nutn´e cel ´y XML dokument, kter ´y m´a b ´yt kompo-nentou zobrazen, rozdˇelit na jednotliv´e ˇr´adky a s tˇemi pot´e pracovat. Pokud bychom totiˇz toto neprovedli, museli bychom pravdˇepodobnˇe pˇri manipulaci s kter ´ymkoli ˇr´adkem (pˇri operaci zabalov´an´ı a rozbalov´an´ı, tzn. skr ´yv´an´ı a odkr ´yv´an´ı) vˇzdy proch´azet cel ´y text od zaˇc´atku aˇz po n´ami poˇzadovan ´y ˇr´adek. Struktura a zp ˚usob uchov´av´an´ı jednotliv ´ych ˇr´adk ˚u textu v pamˇeti bude vyˇreˇsena aˇz v r´amci implementace.

5.2 Zvolen ´e rozhran´ı k datab ´azi eXist

Nativn´ı XML datab´azov ´y syst´em eXist nab´ız´ı program´ator ˚um celou ˇradu rozhran´ı API, pomoc´ı kter ´ych lze k syst´emu pˇristupovat (XML:DB API, XML-RPC, REST, SOAP). Vˇsechna jsou velmi dobˇre zdokumentov´ana v program´atorsk´e pˇr´ıruˇcce [13]. My k datab´azi potˇrebujeme pˇristupovat zp ˚usobem, kter ´y bude nez´avisl ´y na tom, zda je klient spuˇstˇen na stejn´em poˇc´ıtaˇci jako datab´aze, anebo komunikuje ze vzd´alen´e stanice pˇres poˇc´ıtaˇcovou s´ıt’. Tento a tak´e fakt, ˇze aplikace bude implementov´ana v odliˇsn´em programovac´ım jazyce neˇz na-tivn´ı XML datab´aze, n´as vede k potˇrebˇe nˇejak´eho univerz´aln´ıho rozhran´ı, kter´e je mimo

References

Related documents

Scribd makes all content easily readable on the mobile web, and provides an even better reading experience for people who download Scribd's apps.. Get detailed stats on readership

Furthermore Winograd (1987) explains that for achieving language understanding, a computer that “as a language machine, manipulates symbols without respect to

6 Minta daftar persediaan yang mencakup nama barang, kualitas, dan harga per tanggal neraca serta cocokkan dengan buku besar.. 7 Lakukan penelaah analitis (analytical review)

─ is low (similar to concrete); HOWEVER a rock mass can have even less tensile strength..

or information about their expertise, which is repeated mainly with Negation feedback. Social: we mean context information related to a user’s role at work, and

This slope is inconsistent with theories of spiral galaxy structure, which predict metal-rich inner regions and relatively metal-poor outer regions; the observed oxygen

As demonstrated above, the National Green Building Standard is clearly equivalent to LEED NC when individual green categories are compared, and far more stringent than LEED NC

Minutes of 95 th AC Meeting: January 29, 2013 Page 3 The applicant organization is required to induct experts in under mentioned areas and the shortfall of the experts is to be