Implementace XML signatur

Rozměr: px
Začít zobrazení ze stránky:

Download "Implementace XML signatur"

Transkript

1 MASARYKOVA UNIVERZITA V BRNĚ FAKULTA INFORMATIKY #ris m p Implementace XML signatur BAKALÁŘSKÁ PRÁCE Petr Neděla Brno, podzim 2005

2 Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Vedoucí práce: Ing. Petr Adámek 11

3 Poděkování Děkuji svému vedoucímu bakalářské práce Ing. Petrovi Adámkovi za četné konzultace, cenné rady a připomínky. Také bych chtěl poděkovat Šárce Grigarčíkové za gramatickou a stylistyckou korekturu. m

4 Shrnutí K ukládání a výměně informací se často využívá jazyk XML. Dokument v XML jazyku tvoří stromovou strukturu uzlů. Při některých způsobech vyhledávání je třeba tuto strukturu zohlednit. Signatury stromu jsou jednou z metod indexování struktury XML dokumentu, umožňující okamžitě vyhodnocovat strukturální vztahy mezi uzly stromu. Cílem práce je implementovat standardní a rozšířené signatury v systému XIQE a porovnat jejich vzájemnou efektivitu. IV

5 Klíčová slova XML, XML Tree Signatures, standardní signatury, rozšířené signatury, indexování, Dietzovo schéma, XIQE v

6 Obsah 1 Úvod 1 2 Standardy rodiny XML Jazyk XML Historie jazyka XML Syntaxe dokumentu XML Well formed dokument Model XML dokumentu Navigace ve stromu XML dokumentu Syntaxe jazyka XPath Rozhraní přístupu ke XML dokumentu Rozhraní SAX Rozhraní DOM Přístup ke XML databázím 7 3 Indexování struktury XML dokumentu Dietzovo kódovací schéma Signatury XML stromu Standardní signatury Osa ancestor Osa preceding Osa descendant Osa following Osa parent Osa child Osa preceding-sibling Osa following-sibling Osa self Osa ancestor-or-self Osa descendant-or-self Rozšířené signatury Osa ancestor Osa preceding Osa descendant Osa following Osa parent Osa child Osa preceding-sibling Osa following-sibling Osy self, ancestor-or-self a descendant-or-self Editace signatur Standardní signatury 15 vi

7 Přidání přímého potomka Přidání před kontextový uzel Odebrání uzlu Rozšířené signatury Přidání přímého potomka Přidání před kontextový uzel Odebrání uzlu Dynamické signatury 17 4 Implementace Použité technologie Programovací jazyk JAVA Balíkjava.nio Subversion Maven Jakarta Commons JUnit Systém XIQE Struktura systému Fungování systému Důležité třídy a rozhraní Třídy signatur XML stromu Funkční rozhraní signatur Struktura signatury Generování signatury Použití signatur 23 5 Testování efektivity Způsob testování XMark XPathMark Systém ExEx Experimenty Testovací konfigurace Prováděné experimenty Výsledky testů Vyhodnocení experimentů 27 6 Závěr 28 Bibliografie 29 vii

8 Kapitola 1 Úvod Nasazování nových výpočetních systémů a propojení počítačových sítí díky internetu způsobuje, že množství dat, které jsou zpracovávány a vyměňovány elektronicky, neustále roste. Hojně rozšířeným formátem pro ukládání a výměnu informací je také jazyk XML. Tento formát je oblíben zejména pro jeho otevřenost, rozšiřitelnost a snadné zpracování. Jazyk XML přidává k datům sémantiku a hierarchicky rozčleňuje dokument. S rostoucím objemem dat uložených v XML roste i potřeba efektivního vyhledávání v těchto datech, ale i v struktuře XML dokumentu. K tomuto účelu jsou využívány různé indexační metody, které kompaktně zachycují strukturu XML dokumentu a efektivně vyhodnocují strukturální vztahy mezi uzly XML dokumentu. Tato práce se zabývá indexováním XML dokumentů pomocí signatur XML stromu. Nejprve je představen jazyk XML a jsou zmíněny jeho hlavní rysy s ohledem na indexování. Dále jsou popsány signatury XML stromu, jejich struktura a princip fungování. Také je prezentován systém XIQE (XML Indexing and Querying Engine) vyvíjený na fakultě informatiky, který má za cíl porovnávat různé indexační metody. Cílem práce je popsat indexování XML dokumentu pomocí standardních a rozšířených signatur XML stromu, implementovat tuto metodu indexování v systému XIQE a zhodnotit efektivitu signatur pomocí vhodné sady experimentů. 1

9 Kapitola 2 Standardy rodiny XML Tato kapitola je zaměřena na základní popis jazyka XML a to především na strukturální vztahy uzlů. Popisuje model XML dokumentu jako strukturu uspořádaného stromu. Nastiňuje problém adresace jednotlivých uzlů dokumentu a seznamuje se syntaxí navigačního jazyka XPath. 2.1 Jazyk XML XML je hojně používaným značkovacím standardem. Používá se zejména v prostředí internetu jako vhodný formát pro výměnu informací. XML je populární hlavně pro možnost definování vlastních značek a pro oddělení sémantiky dat od jejich vizuální podoby v různých prostředích Historie jazyka XML XML (Extensible Markup Language) neboli rozšiřitelný značkovací jazyk, je metajazyk, který říká, jak vytvářet značkovací jazyky vhodné pro tvorbu dokumentů obsahujících strukturovaná data. Jedná se o standard konsorcia W3C, který se vyvinul z jazyka SGML (Standard Generalized Markup Language) jako jeho omezení a zjednodušení. Využívá se jako vhodný formát pro ukládání a výměnu informací, zejména pro jeho dobrou čitelnost pro člověka a snadné strojové zpracování Syntaxe dokumentu XML Dokumenty jazyka XML mají textový formát, jsou tvořeny textovými daty a značkami (tags). Značky přidávají k dokumentu dodatečné informace, hierarchicky člení dokument a určují sémantiku dat. Jsou pro ně rezervovány znaky lomených závorek, do kterých jsou uzavřeny. Nejpoužívanější typy značek jsou: komentáře: <! text komentáře > - umožňují vkládat do textu vlastní poznámky, které nejsou dále interpretovány; instrukce pro zpracování: <?identif ikator data? >-přidává k dokumentu informace pro aplikace, například analyzátory, XSLT procesory atd.; 2

10 2.1. JAZYK XML počáteční a koncová značka elementu: < jmenoelementu> a </jmenoelementu> - párová značka, nejdůležitější značka, dává sémantiku obsahu vyskytujícímu se mezi těmito značkami, vytváří strukturu; prázdný element: < jmenoelementu/> - jedná se jen o zkrácený zápis elementu, který neobsahuje žádný element ani textový uzel. Počáteční značka elementu může obsahovat i definici atributů, které přidávají k elementu dále nestrukturované informace. Atribut je řetězec tvaru nazevatributu="hodnota", například: <auto objemmotoru="l, 9" barva="modrá">. XML klade na strukturu a syntaxi dokumentu mnohé požadavky. Například koncové značce elementu musí předcházet koncová značka vnořeného elementu. XML určuje i znaky, které se smí vyskytovat v názvu elementu Well formed dokument Dokument splňující všechna obecná pravidla XML se označuje jako well formed. Ukázku well formed dokumentu je možno vidět v příkladu Podle pravidel jazyka XML lze vytvářet obrovské množství dokumentů. Pro aplikace je však vhodné tuto množinu omezit a zpracovávat dokumenty jen určitých typů, u kterých aplikace ví, jak data interpretovat. K tomuto účelu se používá DTD (Document Type Definition), která svými pravidly umožňuje omezit množinu názvů elementů, kontext jejich výskytu, či určit přípustné hodnoty atributů. Použití DTD v XML dokumentu se deklaruje značkou <!DOCTYPE jmenoelementu ID-ExternihoDTD [InterniDTD]>. Řetězec jmenoelementu je názvem elementu na nejvyšší úrovni. Tento element se nazývá kořenový (root element) a musí být v dokumentu jediný. ID-ExternihoDTD je jméno souboru obsahující pravidla DTD. InterniDTD jsou pravidla vepsaná přímo do značky DTD. Ve značce nemusí být interní nebo externí část obsažena. Dokument splňující DTD se nazývá valid. <?xml version="l.0"?> <adresa> <ulice>mlýnská</ulice> <cislopopisne>2 9K/cislopopisne> <obec>velké Hoštice</obec> <psc>7473k/psc> </adresa> <! Nějaký komentář > Příklad 2.1.1: Ukázka well formed XML dokumentu 3

11 2.2. MODEL XML DOKUMENTU 2.2 Model XML dokumentu Na well formed dokumenty lze z logického hlediska pohlížet jako na uspořádané stromy, které jsou tvořeny několika typy uzlů. Kořenem tohoto stromu je abstraktní uzel označo vaný jako uzel dokumentu. Přímo na uzlu dokumentu je zavěšen kořenový element a uzly hlavičky dokumentu. Ukázku stromu XML dokumentuje možno vidět na obrázku 2.1. <^Nějaký komentář^ Obrázek 2.1: Model XML dokumentu Ve stromech se převážně vyskytují uzly těchto typů: elementy (elements); atributy (attributs); instrukce pro zpracování (processing instructions); komentáře (comments); textové uzly (text nodes); entity (entities); CDATA. Nejdůležitějším typem uzlů jsou elementy, které jako jediné mohou obsahovat další uzly a tvořit tak hierarchickou strukturu. Ostatní typy uzlů tvoří ve stromě listy. 4

12 2.3 Navigace ve stromu XML dokumentu 2.3. NAVIGACE VE STROMU XML DOKUMENTU Při práci s XML dokumenty je potřeba vybírat části dokumentu, odkazovat na jednotlivé uzly, zpracovávat některé atributy. Pro adresování uzlů dokumentu je určen jazyk XPath. XPath není plnohodnotným dotazovacím jazykem, neboť není schopen vybírat uzly z více dokumentů nebo je dále zpracovávat. Jedná se však o mocný nástroj k navigaci XML dokumentem, a proto se využívá i v mnoha dalších jazycích, jako jsou XQuery, XPoitner, XSLT, Schematron Syntaxe jazyka XPath XPath výraz se skládá z jednotlivých kroků. Kroky jsou tvořeny osou, testem uzlu a predikátem. Obecně se zapisují: osa: : testuz lu [predikát ]. Osa specifikuje množinu, ve které se bude uzel vyhledávat. TestUzlu určuje jméno nebo typ uzlu, který má být vybrán a predikát umožňuje zúžit výběr uzlů pomocí testu na některou vlastnost. Například výraz: child: : auto [@barva= "modrá" ], vybere elementy se jménem auto, které mají atribut barva s hodnotou rovnající se řetězci modrá. Jednotlivé kroky se dají skládat dohromady, jako oddělovač kroků slouží znak lomítko. Jednotlivé kroky se vyhodnocují zleva doprava a aplikují se na již dříve vybranou množinu uzlů. Výraz začínající lomítkem je absolutní a vyhodnocuje se vzhledem k uzlu dokumentu. Pokud úvodní lomítko chybí, začíná se s vyhodnocováním od kontextového uzlu. Ve výrazech jazyka XPath je možno setkat se s použitím dvou lomítek za sebou. Znamená to, že při vyhledávání odpovídajících uzlů lze přeskočit libovolné množství úrovní směrem do hloubky stromu dokumentu. To má však stejný význam, jako by se hledalo na ose descendant Pro tvorbu XPath výrazů je možné používat tyto osy: child - množina přímých potomků kontextového uzlu; descendant - množina všech potomků kontextového uzlu; descendant-or-self - množina všech potomků kontextového uzlu plus kontextový uzel; parent - množina obsahující rodiče kontextového uzlu; ancestor - množina všech předků kontextového uzlu; ancestor-or-self - množina všech předků kontextového uzlu plus kontextový uzel; selí- množina obsahující kontextový uzel; following - množina všech uzlů nacházejících se za kontextovým uzlem; following-sibling - množina všech sourozeneckých uzlů nacházejících se za kontextovým uzlem; 5

13 2.4. ROZHRANÍ PŘÍSTUPU KE XML DOKUMENTU preceding - množina všech uzlů nacházejících se před kontextovým uzlem mimo předků kontextového uzlu; preceding-sibling - množina všech sourozeneckých uzlů nacházejících se před kontextovým uzlem; attribute - množina atributů kontextového uzlu; namespace - množina uzlů jmenných prostorů deklarovaných pro daný uzel. Výchozí osou je osa child. Pokud se tedy v definici kroku osa vynechá, použije se osa child. Zpracování XPath výrazu po výběru množiny uzlů podle specifikované osy dále pokračuje vyhodnocením testu uzlu. Výběr uzlu lze omezit těmito funkcemi: * - vybere všechny uzly základního typu dané osy 1 ; nodeq - vybere všechny uzly dané předchozím výběrem; textq - vybere jen textové uzly; jmenoelementu - vybere elementy se zadaným jménem; commentq - vybere komentáře. Posledním omezením na výběr uzlů, které lze v jednotlivém kroku uplatnit, je predikát. Jedná se o libovolný výraz jazyka XPath, jehož vyhodnocením se získá pravdivostní hodnota. Tato hodnota určuje, zdali bude testovaný uzel zahrnut do výběru, či nikoliv. Predikát je uzavřen v hranatých závorkách. V XPath výrazech je možné narazit i na predikáty navracející přirozené číslo. V takovémto případě se jedná o test na pořadí uzlů, který se interpretuje jako position () = hodnotavyrazu. Například dojde-li k vyhodnocení výrazu /kniha/kapitola [5], bude navrácen uzel páté kapitoly knihy. 2.4 Rozhraní přístupu ke XML dokumentu Pro zpracovávání XML dokumentů aplikacemi existují dvě základní rozhraní nazývané SAX (Simple Api to XML) a DOM (Document Object Model). Jsou velice užitečná a každé má své výhody i nevýhody Rozhraní SAX SAX funguje na principu procházení souboru dokumentu a jeho analyzování. Pokaždé, když SAX rozpozná v dokumentu některý z uzlů dokumentu, zašle aplikaci zprávu o rozpoznaném uzlu a jeho hodnotě. Aplikace pak může vhodně reagovat a jednotlivé uzly zpracovávat. 1. Na ose attribute vybere atributy, na ose namespace vybere jmenné prostory. Na ostatních osách vybere elementy. 6

14 2.4. ROZHRANÍ PŘÍSTUPU KE XML DOKUMENTU Výhodou SAX je hlavně jeho rychlost a jednoduchost, avšak klade větší nároky na samotnou aplikaci, která si musí pamatovat hodnoty jednotlivých uzlů a určovat závislosti mezi uzly Rozhraní DOM Naproti tomu stojí rozhraní DOM, to vytvoří podle dokumentu objektový model a předá ho aplikaci. Pro sestavování stromu dokumentu využívá DOM události generované SAX analyzátorem. Jedná se tedy o jakousi nadstavbu rozhraní SAX. Vytvářením objektové struktury celého dokumentu roste paměťová náročnost, zato však DOM poskytuje příjemnější práci s XML dokumentem Přístup ke XML databázím Rozhraní SAX a DOM jsou však využitelná spíše k přístupu k jednotlivým souborům. Při práci s kolekcemi dokumentů nebo v oblasti nativních XML databází, se jeví značně neefektivní procházet celý dokument a vytvářet objektové modely při každé operaci nad dokumentem. V těchto případech je vhodné dokumenty zpracovat jen jednou a to při vkládání do databáze nebo kolekce a rozdělit je na data a strukturu. Data lze uložit zvlášť za pomocí standardních metod užívaných v relačních databázích. Pro strukturu je důležité zvolit některou indexační metodu, strukturu dokumentu indexovat a vhodně uložit. Pak je možné dotazy efektivně vyhodnocovat nad daným indexem a přistupovat jen k uzlům, které je nezbytně nutné zpracovat. 7

15 Kapitola 3 Indexování struktury XML dokumentu Procházení objektové struktury stromu při vyhledávání v XML dokumentech se nejeví moc efektivní. Proto se hledají metody, jak vhodně a kompaktně zachytit stromovou strukturu a urychlit tím vyhledávání v XML dokumentech. Existuje více způsobů, jak vhodně strukturu dokumentu zakódovat. Například lze využít invertovaný index cest, kódovací schéma UID, SCIF, či prvočíselné číslovací schéma. Tyto metody jsou popsány v [ ]. Efektivním způsobem zachycení strukturálních vztahů jsou i signatury XML stromu. Tato kapitola ukazuje způsob indexování a popisuje vyhledávání pomocí signatur XML stromu. Při tvorbě této kapitoly bylo čerpáno převážně z [1] a [6]. 3.1 Dietzovo kódovací schéma Princip signatur je založen na Dietzově kódovacím schématu, které na určení strukturálních vztahů využívá sekvencí preorder a postorder. Obě tyto sekvence lze získat tak, že při průchodu stromem dokumentu do hloubky dochází k postupnému zařazování uzlů do sekvence. V případě preorder se zařazují při vstoupení do uzlu, který se v sekvenci ještě nevyskytuje. U sekvence postorder se uzly umisťují do sekvence až při jejich opouštění, tedy poté co dojde k zpracování všech potomků daného uzlu. Preorder tak odpovídá množině počátečních značek elementů a postorder je tvořen množinou koncových značek elementů, a to ve stejném pořadí v jakém se vyskytují v dokumentu. Na základě těchto sekvencí se přiřadí každému uzlu ve stromu elementů dokumentu dvojice čísel, která vyjadřují pozici uzlu v sekvenci preorder a v sekvenci postorder. Získá se tak indexovaný strom, ten je vidět na obrázku 3.1. Z takto indexovaného stromu lze již lehce určovat vzájemnou pozici dvou libovolných uzlů a to za využití vlastností sekvencí preorder a postorder. Nechť pozice uzlu a v sekvenci preorder je označena jako pre(a) a pozice uzlu a v sekvenci postorder jako post(a). Dále nechť k je kontextovým uzlem, tedy uzlem, ke kterému je vyhodnocení vztaženo. Pak při porovnání pozic v sekvencích dochází k následujícím situacím: pre(a) < pre(k): uzel a předkem nebo předchůdcem kontextového uzlu Je; pre(a) > pre(k): uzel a potomkem nebo následníkem kontextového uzlu Je; post(a) < post(k): uzel a předchůdcem nebo potomkem kontextového uzlu Je; 8

16 3.2. SIGNATURY XML STROMU Obrázek 3.1: Strom indexovaný Dietzovým kódovacím schématem post(a) > post(k): uzel a předkem nebo následníkem kontextového uzlu k. Je tedy zřejmé, že současné porovnání pozic v sekvenci preorder a postorder kontextového uzlu k a libovolného uzlu a daného stromu, jednoznačně určí základní osu jazyka XPath na které se uzel a, vzhledem ke kontextovému uzlu k, nachází. Příslušnost uzlu a k osám kontextového uzlu k je dána následujícími vztahy: pre(a) < pre(k) & post(a) < post(k): uzel a je prvkem osy preceding kontextového uzlu k; pre(a) < pre(k) & post(a) > post(k): uzel a je prvkem osy ancestor kontextového uzlu k) pre(a) > pre(k) & post(a) < post(k): uzel a je prvkem osy descendant kontextového uzlu k; pre(a) > pre(k) & post(a) > post(k): uzel a je prvkem osy following kontextového uzlu k. Tyto vlastnosti lze jednoduše zachytit v grafu, viz obrázek 3.2. Na jedné ose je vyneseno pořadí v sekvenci preorder, na druhé pak pořadí v sekvenci postorder. Rovnoběžky s osami, které jsou vedeny přes kontextový uzel, rozdělí graf na sektory uzlů základních os. Pro názornost byly do grafu vyneseny uzly ze stromu z obrázku 3.1. Jako kontextový uzel byl zvolen uzel e. 3.2 Signatury XML stromu Strom XML dokumentu opatřený Dietzovým kódovacím schématem je vhodnou strukturou pro vyhodnocování vztahů dvou uzlů stromu, ale neumožňuje již tak snadno určit všechny 9

17 3.2. SIGNATURY XML STROMU postorder f Předci Následníci Předchůdci Potomci 0 preorder Obrázek 3.2: Sektory základních os kontextového uzlu e uzly dané osy vzhledem ke kontextovému uzlu. Tuto vlastnost však mají signatury stromu (XML Tree Signatures), které vhodně linearizují stromovou strukturu Dietzova stromu a tím získávají informaci, kde uzly dané osy hledat. Nejedná se o jedinou přínosnou vlastnost sig natur. Signatury se dají použít i k efektivnímu vyhledávání vzorů ve struktuře dokumentu. Touto problematikou se důkladně zabývá [6] Standardní signatury Struktura standardní signatury je tvořena polem dvojic (jmenouzlu, postorder), kde jmenouzlu udává název uzlu a postorder je pozice uzlu v sekvenci postorder. Tyto dvojice jsou v poli uspořádány podle pozice uzlu v sekvenci preorder (dále označována jako hodnota preorder). Pro ilustraci struktury signatury je na obrázku 3.3 zachycena signatura k Dietzově stromu z obrázku 3.1. K identifikaci jednotlivých uzlů v signatuře se používá přímo hodnota preorder. a:lo b;3 C!1 d!2 e;7 f!4 g!5 h!6 i 9 j 8 Obrázek 3.3: Struktura signatury Uspořádání uzlů podle hodnoty preorder se jeví jako velice vhodné. Z pozice kontex tového uzlu lze totiž predikovat, kde se nacházejí uzly jednotlivých os. Toto uspořádání způsobuje, že před libovolným uzlem se mohou vyskytovat pouze jeho předci nebo před chůdci a za uzlem se nacházejí nejdříve všechny uzly potomků a za nimi uzly následníků daného uzlu. Základní osy názorně ilustruje obrázek 3.4. K získání všech uzlů dané osy tak stačí procházet signaturu od kontextového uzlu da ným směrem a řídit se pravidly, které jsou uvedeny v následujících odstavcích. 10

18 3.2. SIGNATURY XML STROMU Předci Potomci k Předchůdci Kontextový uzel Následníci Obrázek 3.4: Poloha os v signatuře Osa ancestor Uzly předků se nacházejí před kontextovým uzlem. Mezi nimi se však mohou vyskytovat uzly předchůdců. Uzly předků a předchůdců se od sebe navzájem odlišují hodnotou postorder, která je u předků vyšší než postorder kontextového uzlu a u předchůdců je nižší než postorder kontextového uzlu. Celá osa ancestor se tedy získá procházením signatury od kontextového uzlu k počátku signatury a vybráním jen těch uzlů splňujících podmínku: post(a) > post(k), kde a je právě testovaný uzel a k je kontextový uzel. Tímto postupem je získána celá osa ancestor ve vhodném uspořádání Osa preceding Stejně jako u osy ancestor se uzly osy preceding nalézají před kontextovým uzlem. Je třeba projít všechny uzly před kontextovým uzlem a vybrat jen ty, které splňují opačnou pod mínku než u osy ancestor. Pro předchůdce tedy platí post(a) < post(k). Procházení je zapo čato v uzlu, který předchází kontextovému uzlu a končí v uzlu kořenového elementu. Ten již není třeba testovat, protože leží na ose ancestor Osa descendant Všechny uzly osy descendant jsou umístěny v souvislém bloku, který začíná bezprostředně za kontextovým uzlem. Všechny uzly osy descendatje tak možno získat průchodem signa turou od kontextového uzlu směrem ke konci signatury. Vyberou se všechny uzly, dokud se nenarazí na prvního následníka nebo na konec signatury. Tedy dokud bude platit podmínka post(a) <post(k) A Osa following Uzly této osy se také nacházejí za kontextovým uzlem a to v souvislé oblasti od posledního potomka do konce signatury. Takže je nejdříve nutné nalézt uzel prvního následníka. Tento uzel lze najít procházením od kontextového uzlu směrem ke konci signatury a testováním uzlů na podmínku post(a) > post(k). První uzel, který tuto podmínku splní, je hledaným uz lem prvního následníka. Dalšími uzly osy following jsou všechny uzly následující za tímto uzlem až do konce signatury. 11

19 3.2. SIGNATURY XML STROMU Druhou možností, jak tuto osu získat, je procházení signatury od konce signatury po uzel posledního potomka. Do výběru patří všechny uzly splňující podmínku post(a) > post(k). Tento způsob výběru je obecně efektivnější, neboť nedochází k procházení potomků. Získaná osa však má obrácené pořadí uzlů Osa parent Tato osa obsahuje vždy pouze jediný uzel. Jediná výjimka nastává, pokud je kontextovým uzlem kořenový element. To jest v případě pre(k) = 1. Tento uzel nemá žádného předka a osa zůstává prázdná. V ostatních případech se hledaný uzel odhalí procházením signatury od kontextového uzlu k počátku. První uzel, který vyhovuje podmínce post(a) > post(k), je hledaným uzlem Osa child Osa child je podmnožinou osy descendant Prohledávaná oblast je ohraničena kontextovým uzlem a uzlem prvního následníka. Prvním uzlem na ose child je uzel bezprostředně za kontextovým uzlem. Musí ale splňovat podmínku post(a) < post(k), jinak nemá kontextový uzel žádné potomky. Zbylé uzly osy chlid vyhovují podmínce post(a) > post(ch), kde post(a) je postorder právě testovaného uzlu a post(ch)je postorder posledního nalezeného uzlu osy child Osa preceding-sibling Jedná se o podmnožinu osy preceding. V signatuře se uzly této osy vyskytují mezi kontextovým uzlem a uzlem jeho předka. Pro stanovení této osy je třeba nejdříve nalézt předka p kontextového uzlu k. Od uzlu p se postupuje ke kontextovému uzlu k. Používá se přitom metoda získání osy child pro uzel p. Prohledávání končí při dosažení uzlu k. Z vymezené oblasti je tedy vybrán uzel bezprostředně za uzlem p a dále všechny uzly a splňující podmínku post(a) > post(ps), kde ps je poslední získaný uzel osy preceding-sibling Osa following-sibling U této osy je také potřeba nejdříve nalézt předka p kontextového uzlu k. Poté se postupuje od uzlu k až po prvního následníka uzlu p. Tedy dokud platí post(a) < post(p). Jako první uzel osy following-sibling je vybrán uzel a, pro který platí post(a) > post(k). Pro zbylé uzly osy following-sibling platí post(a) > post(fs), kde fs je poslední získaný uzel osy followingsibling Osa self Získání této osy je triviální. Jedná se o jednoprvkovou osu obsahující kontextový uzel k. 12

20 3.2. SIGNATURY XML STROMU Osa ancestor-or-self Nejdříve se vybere kontextový uzel Je. Zbylé uzly této osy se získají jako u osy ancestor Osa descendant-or-self Počátečním uzlem této osy je kontextový uzel. Za ním následují všechny uzly získané pomocí algoritmu pro osu descendant Rozšířené signatury Při procházení standardních signatur je často potřeba vyhledávat rodičovský uzel a vyhledat rozhraní mezi potomky a následníky. Pro zrychlení vyhledání jednotlivých os byly navrženy rozšířené signatury (extended signatures). Struktura rozšířené signatury je tvořena, podobně jako u standardních signatur, polem uzlů uspořádaných podle preorder, avšak uzly signatury jsou již tvořeny čtveřicí (jmenouzlu, postorder, first following, first ancestor). Atributy jmenouzlu a postorder mají stejný význam jako u standardních signatur. Atribut first following je ukazatelem na prvního následníka a first ancestor ukazuje na rodičovský uzel kontextového uzlu. Hodnota first following pro uzel kořenového elementu je definována jako 0. Uzly nemající následníky, mají hodnotu ukazatele na prvního následníka nastavenu na: first ancestor = length + 1, kde proměnná length obsahuje počet uzlů v signatuře. Přidání dvou nových ukazatelů výrazně urychluje určování uzlů jednotlivých os. Toto zrychlení je však vykoupeno větší paměťovou náročností, kdy každý uzel signatury zabírá dvojnásobné místo. Rozšíření signatur o nové ukazatele mění i způsob určování os jazyka XPath. Nové algoritmy jsou popsány v následujících odstavcích Osa ancestor V případě této osy bude urychlení velice výrazné. Ukazatel first ancestor totiž odkazuje přímo na rodiče uzlu. Jako první uzel osy ancestor je vybrán 1 uzel na pozici preorder = first ancestor. Dále je vždy vybrán uzel, na který odkazuje first ancestor posledně vybraného uzlu. Takto se postupuje, dokud se nenarazí na uzel kořenového elementu, který je vždy posledním uzlem na ose ancestor Osa preceding Nejdříve jsou vybrány všechny uzly od kontextového uzlu po uzel rodiče kontextového uzlu. Pak jsou postupně vybrány všechny uzly, které se nacházejí mezi sousedními předky kontextového uzlu. 1. Pokud kontextovým uzelem není kořenový element. 13

21 3.2. SIGNATURY XML STROMU Osa descendant Ukazatel first following shora ohraničuje oblast, ve které se vyskytují všechny uzly potomků. Získání osy descendant tedy spočívá ve vybrání všech uzlů od kontextového uzlu k prvnímu následníkovi. Uzel následníka a kontextový uzel se do výběru samozřejmě nezahrnují Osa following Pokud kontextový uzel má nějaké následníky, tedy platí first following < length, pak je jako první vybrán uzel, na který odkazuje first following. Poté jsou vybrány všechny následující uzly až do konce signatury Osa parent Je-li kontextový uzel zároveň i kořenovým elementem, je tato osa prázdná. Jinak obsahuje jediný uzel a to uzel, na který odkazuje first ancestor Osa child Osa child ke kontextovému uzlu je prázdná, pokud first following odkazuje na uzel následující ihned za kontextovým uzlem. Jinak je prvním uzlem osy child uzel bezprostředně za kontextovým uzlem. Na další uzel osy child odkazuje vždy ukazatel first following posledně vybraného uzlu. Posledním uzlem této osy je uzel a, pro který platí ffoll(a) = ffoll(k), ffoll(a) je označení pro ukazatel first following uzlu a Osa preceding-sibling Tato osa je získána procházením oblasti od kontextového uzlu až k rodiči kontextového uzlu. Vybrány jsou jen uzly, pro které platí fanc(a) = fanc(k). Kde fanc(a) je rodič uzlu a. V některých případech je efektivnější získávání této osy v reverzním směru. Prvním uzlem této osy je uzel bezprostředně následující za uzlem rodiče kontextového uzlu. Na další uzel vždy odkazuje ukazatel first following posledně vybraného uzlu dokud ffoll(a) < k Osa following-sibling Nejdříve se získají rodiče kontextového uzlu, protože jeho ukazatel first following uzavírá oblast, kde se mohou uzly osy following-sibling vyskytovat. Prvním uzlem je uzel, na který odkazuje ukazatel first following kontextového uzlu. Na další uzel vždy odkazuje ukazatel first following posledně vybraného uzlu dokud ffoll(a) < ffoll(fanc(v)). 14

22 3.3. EDITACE SIGNATUR Osy self, ancestor-or-self a descendant-or-self U osy self nedochází k žádné změně. Osy ancestor-or-self a descendant-or-self jsou osy získané pomocí postupu pro osu ancestor respektive descendant, na jejichž počátek je přidán kontextový uzel. 3.3 Editace signatur XML databáze nejsou jen statické systémy, které zodpovídají dotazy nad množinou dokumentů, ale většina z nich také poskytuje funkce pro úpravu dokumentů. Umožňují do jednotlivých dokumentů vkládat uzly, či je z nich korektně odebírat. Nebylo by vhodné při každé takové změně, znovu generovat indexační strukturu pro daný dokument, proto je vhodné, aby i indexační metoda byla schopna editace. Signatury XML stromu jsou schopny přidávat a odebírat jednotlivé uzly XML dokumentu. V Následujících odstavcích jsou popisovány způsoby vkládání a odebírání uzlů a změny, které v signatuře nastanou. Pro editaci signatur jsou definovány tři základní operace. Jedná se o vložení nového uzlu před kontextový uzel, dále o vložení nového uzlu jako posledního přímého potomka kontextového uzlu a nakonec o odebrání kontextového uzlu. Aby nedošlo k narušení stromové struktury dokumentu, není dovoleno vkládat nový uzel před uzel kořenového elementu. Při odstraňování uzlu se odstraní i všechny uzly jeho potomků Standardní signatury Při editaci standardních signatur je potřeba opravit preorder a postorder některých uzlů. Pořadí preorder se mění odsunutím bloku uzlů. Změna postorder je řešena přičtením nebo odečtením celého čísla vyjadřujícího počet přidaných nebo odebraných uzlů ke všem měněným uzlům Přidání přímého potomka Přidání nového uzlu x, jako posledního přímého potomka kontextového uzlu Je, se děje následujícím způsobem. Nejdříve je potřeba určit pozici nového uzlu v signatuře, tedy pre(x). Pozice nového uzlu bude odpovídat poloze prvního následníka kontextového uzlu ve staré signatuře. První následník kontextového uzlu se nalezne při procházení signatury od kontextového uzlu směrem ke konci signatury. První uzel a, který splňuje post(a) > post(k), je hledaným prvním následníkem. Jako hodnota postorder nového uzlu bude použita hodnota post(k). Na pozici prvního následníka se vloží nový uzel (post(k),x), přičemž uzel na této pozici a uzly za ním následující jsou odsunuty o jednu pozici vpravo. Předchozí úpravy však nevytvoří správnou signaturu. Aby byla signatura korektní a odpovídala provedené operaci, je potřeba opravit postorder všech předků a následníků nového uzlu. K postorder těchto uzlů musí být přičtena hodnota 1. V situaci kdy kontextový uzel nemá následníky, bude nový uzel přidán na konec signatury. Jako hodnota postorder nového uzlu bude také použita hodnota post(k). Po přidání 15

PRG036 Technologie XML

PRG036 Technologie XML PRG036 Technologie XML Přednáší: Irena Mlýnková (mlynkova@ksi.mff.cuni.cz) Martin Nečaský (necasky@ksi.mff.cuni.cz) LS 2010 Stránka přednášky: http://www.ksi.mff.cuni.cz/~mlynkova/prg036/ 1 Osnova předmětu

Více

XML databáze. Přednáška pro kurz PB138 Moderní značkovací jazyky Ing. Petr Adámek

XML databáze. Přednáška pro kurz PB138 Moderní značkovací jazyky Ing. Petr Adámek XML databáze Přednáška pro kurz PB138 Moderní značkovací jazyky 22. 4. 2003 Ing. Petr Adámek xadamek2@fi.muni.cz http://www.bilysklep.cz/petr/ XML databáze Proč XML databáze Efektivní ukládání a vyhledávání

Více

Využití XML v DB aplikacích

Využití XML v DB aplikacích Využití XML v DB aplikacích Michal Kopecký Výběr ze slajdů k 7. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK Komunikace aplikace s okolím Databázová aplikace potřebuje často komunikovat s

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2006/2007 c 2006 2007 Michal Krátký Tvorba informačních systémů 1/37 Obsah 8.

Více

Ukládání a vyhledávání XML dat

Ukládání a vyhledávání XML dat XML teorie a praxe značkovacích jazyků (4IZ238) Jirka Kosek Poslední modifikace: $Date: 2014/12/04 19:41:24 $ Obsah Ukládání XML dokumentů... 3 Ukládání XML do souborů... 4 Nativní XML databáze... 5 Ukládání

Více

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky Otázka 20 A7B36DBS Zadání... 1 Slovníček pojmů... 1 Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky... 1 Zadání Relační DB struktury sloužící k optimalizaci

Více

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML. 24. XML Úvod Značkovací jazyk XML (extensible Markup Language) vznikl ze staršího a obecnějšího jazyku SGML (Standard Generalized Markup Language). XML byl vyvinut konsorciem W3C, aby poskytl standardní

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

Rozhraní pro práci s XML dokumenty. Roman Malo

Rozhraní pro práci s XML dokumenty. Roman Malo Rozhraní pro práci s XML dokumenty Roman Malo Práce s XML dokumenty Datově a dokumentově orientované XML dokumenty Problém preference elementů a atributů Strom elementů Strom uzlů Základní zpracování dokumentů

Více

Systém elektronického rádce v životních situacích portálu www.senorady.cz

Systém elektronického rádce v životních situacích portálu www.senorady.cz Systém elektronického rádce v životních situacích portálu www.senorady.cz Obec Senorady Miroslav Patočka 2006 Obsah: 1. Úvodní informace 1.1 Informace pro uživatele 1.1.1 Přístupnost HTML, PDA, WAP, XML

Více

Systém souborů (file system, FS)

Systém souborů (file system, FS) UNIX systém souborů (file system) 1 Systém souborů (file system, FS)! slouží k uchování dat na vnějším paměťovém médiu a zajišťuje přístup ke struktuře dat! pro uživatele možnost ukládat data a opět je

Více

Distanční opora předmětu: Databázové systémy Tématický blok č. 5: Dotazovací jazyk XPath Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Databázové systémy Tématický blok č. 5: Dotazovací jazyk XPath Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Databázové systémy Tématický blok č. 5: Dotazovací jazyk XPath Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 XPath 1.1 Cesta 1.2 Osy 1.3 Test uzlu 1.4 Podmínka 1.5 Vestavěné

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 23. Otázka : Datový model XML, dotazovací jazyky nad XML daty Obsah : 1 Úvod o XML 2 Vztah XML a databáze 2.1 Databázové systémy s podporou XML 2.2

Více

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9. Jazyk XSL - rychlá transformace dokumentů 9. prosince 2010 Osnova 1 Jazyk XSL Úvod Princip zpracování pomocí stylů Formátování dokumentu pomocí XSL FO Osnova 1 Jazyk XSL Úvod Princip zpracování pomocí

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

XQuery. Jirka Kosek. Visual FoxPro DevCon 21. 23. června 2005. Praha. Copyright 2005 Jiří Kosek

XQuery. Jirka Kosek. Visual FoxPro DevCon 21. 23. června 2005. Praha. Copyright 2005 Jiří Kosek XQuery Jirka Kosek Visual FoxPro DevCon 21. 23. června 2005 Praha úvod do XQuery základy XPath 2.0 FLWOR výrazy typový systém implementace XQuery Agenda 2 / 38 Úvod 3 / 38 Proč potřebujeme XQuery? XML

Více

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238) XML teorie a praxe značkovacích jazyků (4IZ238) Jirka Kosek Poslední modifikace: $Date: 2009/10/01 19:46:33 $ Obsah Základy syntaxe... 3 Elementy a atributy... 4 Znakový model XML... 5 Komentáře... 6 Instrukce

Více

Semestrální práce 2 znakový strom

Semestrální práce 2 znakový strom Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového

Více

PRODUKTY. Tovek Tools

PRODUKTY. Tovek Tools jsou desktopovou aplikací určenou k vyhledávání informací, tvorbě různých typů analýz a vytváření přehledů a rešerší. Jsou vhodné pro práci i s velkým objemem textových dat z různorodých informačních zdrojů.

Více

PRODUKTY. Tovek Tools

PRODUKTY. Tovek Tools Analyst Pack je desktopovou aplikací určenou k vyhledávání informací, tvorbě různých typů analýz a vytváření přehledů a rešerší. Jsou vhodné pro práci i s velkým objemem textových dat z různorodých informačních

Více

Stručně o XML (výhody, nevýhody) Proč komprimovat XML? Metody komprese XML XMill. Optimalizace komprese XML. Závěr

Stručně o XML (výhody, nevýhody) Proč komprimovat XML? Metody komprese XML XMill. Optimalizace komprese XML. Závěr Pavel Hruška Stručně o XML (výhody, nevýhody) Proč komprimovat XML? Metody komprese XML XMill Představení, princip, výsledky Analýza XML (možná úskalí) Optimalizace komprese XML Přeskládání kontejnerů

Více

Jazyky pro popis dat

Jazyky pro popis dat Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 Jazyky pro popis dat Pavel

Více

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek. http://www.kosek

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek. http://www.kosek Podpora XML v.net Podpora XML v.net Jirka Kosek nezávislý publicista http://www.kosek kosek.cz Co nás čeká? Co nás čeká?! podpora XML ve VisualStudio.NET! architektura System.Xml! čtení XML dokumentů!

Více

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz Vývoj moderních technologií při vyhledávání Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz INFORUM 2007: 13. konference o profesionálních informačních zdrojích Praha, 22. - 24.5. 2007 Abstrakt Vzhledem

Více

Základní datové struktury

Základní datové struktury Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu

Více

1 Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13 Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

Komprese a dotazování nad XML dokumenty

Komprese a dotazování nad XML dokumenty Komprese a dotazování nad XML dokumenty Prezentace diplomové práce Lukáš Skřivánek České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů květen 2007 Vedoucí práce: Ing. Miroslav

Více

Experimentální systém pro WEB IR

Experimentální systém pro WEB IR Experimentální systém pro WEB IR Jiří Vraný Školitel: Doc. RNDr. Pavel Satrapa PhD. Problematika disertační práce velmi stručný úvod WEB IR information retrieval from WWW, vyhledávání na webu Vzhledem

Více

XML terminologie a charakteristiky. Roman Malo

XML terminologie a charakteristiky. Roman Malo XML terminologie a charakteristiky Roman Malo XML extensible Markup Language (rozšiřitelný značkovací jazyk) Verze 1.0, 1.1 http://www.w3.org/xml Rozdíly v podpoře různých znakových sad a práci s řídícími

Více

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

Více

NOVÁ STROMOVÁ STRUKTURA VE VÝROBĚ

NOVÁ STROMOVÁ STRUKTURA VE VÝROBĚ NOVÁ STROMOVÁ STRUKTURA VE VÝROBĚ Obsah Popis základních změn... 2 1.1 Nové tabulky... 2 1.2 Změny stávajících tabulek... 2 1.3 Ostatní databázové změny... 3 1.4 Nová struktura busines objektů... 4 1.4.1

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. 13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny

Více

Datové typy a struktury

Datové typy a struktury atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro

Více

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů Tvorba informačních systémů 1/18 Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních systémů 2/18 Úvod

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Dynamicky vázané metody. Pozdní vazba, virtuální metody Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:

Více

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

Základy XML struktura dokumentu (včetně testových otázek)

Základy XML struktura dokumentu (včetně testových otázek) Základy XML struktura dokumentu (včetně testových otázek) Otakar Čerba Oddělení geomatiky Katedra matematiky Fakulta aplikovaných věd Západočeská univerzita v Plzni Přednáška z předmětu Počítačová kartografie

Více

Kolekce, cyklus foreach

Kolekce, cyklus foreach Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro

Více

Zpráva o zhotoveném plnění

Zpráva o zhotoveném plnění Zpráva o zhotoveném plnění Aplikace byla vytvořena v souladu se Smlouvou a na základě průběžných konzultací s pověřenými pracovníky referátu Manuscriptorium. Toto je zpráva o zhotoveném plnění. Autor:

Více

Oracle XML DB. Tomáš Nykodým

Oracle XML DB. Tomáš Nykodým Oracle XML DB Tomáš Nykodým xnykodym@fi.muni.cz Osnova Oracle XML DB Architektura Oracle XML DB Hlavní rysy Oracle XML DB Hlavní rysy Oracle XML DB - pokračování XMLType XML Repository Využívání databázových

Více

Dolování v objektových datech. Ivana Rudolfová

Dolování v objektových datech. Ivana Rudolfová Dolování v objektových datech Ivana Rudolfová Relační databáze - nevýhody První normální forma neumožňuje vyjádřit vztahy A je podtypem B nebo vytvořit struktury typu pole nebo množiny SQL omezení omezený

Více

Software602 Form Designer

Software602 Form Designer Software602 Form Designer Javascriptový vyhodnocovací mechanismus výrazů Aktualizováno: 17. 3. 2017 Software602 a.s. Hornokrčská 15 140 00 Praha 4 tel: 222 011 602 web: www.602.cz e-mail: info@602.cz ID

Více

Instalace a konfigurace web serveru. WA1 Martin Klíma

Instalace a konfigurace web serveru. WA1 Martin Klíma Instalace a konfigurace web serveru WA1 Martin Klíma Instalace a konfigurace Apache 1. Instalace stáhnout z http://httpd.apache.org/ nebo nějaký balíček předkonfigurovaného apache, např. WinLamp http://sourceforge.net/projects/winlamp/

Více

1. Webový server, instalace PHP a MySQL 13

1. Webový server, instalace PHP a MySQL 13 Úvod 11 1. Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit Jednoduché stránkování Operační systémy Přednáška 8: Správa paměti II Hlavní paměť rozdělená na malé úseky stejné velikosti (např. 4kB) nazývané rámce (frames). Program rozdělen na malé úseky stejné velikosti

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka Metody tvorby ontologií a sémantický web Martin Malčík, Rostislav Miarka Obsah Reprezentace znalostí Ontologie a sémantický web Tvorba ontologií Hierarchie znalostí (D.R.Tobin) Data jakékoliv znakové řetězce

Více

Tovek Tools. Tovek Tools jsou standardně dodávány ve dvou variantách: Tovek Tools Search Pack Tovek Tools Analyst Pack. Připojené informační zdroje

Tovek Tools. Tovek Tools jsou standardně dodávány ve dvou variantách: Tovek Tools Search Pack Tovek Tools Analyst Pack. Připojené informační zdroje jsou souborem klientských desktopových aplikací určených k indexování dat, vyhledávání informací, tvorbě různých typů analýz a vytváření přehledů a rešerší. Jsou vhodné pro práci s velkým objemem textových

Více

Správnost XML dokumentu

Správnost XML dokumentu Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 Správnost XML dokumentu Správně

Více

8.2 Používání a tvorba databází

8.2 Používání a tvorba databází 8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam

Více

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu:

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu: Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 Definice vzhledu Prezentace

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Dotazování nad XML daty a jazyk XPath

Dotazování nad XML daty a jazyk XPath 4 TVEZEWXYHMNR LSTVSKVEQY-RJSVQEXMOENITSHTSVSZ RETVSNIOXIQRERGSZER Q ^)ZVSTWO LSWSGM PR LSJSRHYEVS^TS XYLPEZR LSQ WXE4VEL] 4VELE)9-RZIWXYNIQIHSZE% FYHSYGRSWXM Dotazování nad XML daty a jazyk XPath BI-TWA

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2006/2007 c 2006 2008 Michal Krátký Tvorba informačních systémů 1/17 Úvod XML

Více

Lineární datové struktury

Lineární datové struktury Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Lineární datové

Více

Dotazování nad stromem abstraktní syntaxe

Dotazování nad stromem abstraktní syntaxe Fakulta jaderná a fyzikáln inºenýrská ƒeské vysoké u ení technické v Praze 3.6.2010 Osnova while 1 Reprezentace programu 2 AST a Java 3 Vyhledávání v AST 4 Aplikace body if expr Jak reprezentovat program

Více

Dynamické datové struktury IV.

Dynamické datové struktury IV. Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra

Více

Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny

Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny 1 TXV 003 63.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá XmlLib_v13 Říjen 2012 2 Druhé vydání,

Více

Další XML technologie

Další XML technologie XML teorie a praxe značkovacích jazyků (4IZ238) Jirka Kosek Poslední modifikace: $Date: 2012/05/17 18:58:55 $ Obsah Odkazy... 3 Odkazy v rámci jednoho dokumentu... 4 XLink (XML Linking Language)... 5 XLink

Více

Autor. Potřeba aplikací sdílet a udržovat informace o službách, uživatelích nebo jiných objektech

Autor. Potřeba aplikací sdílet a udržovat informace o službách, uživatelích nebo jiných objektech Adresářová služba X.500 a LDAP Autor Martin Lasoň Abstrakt Potřeba aplikací sdílet a udržovat informace o službách, uživatelích nebo jiných objektech vedla ke vzniku specializovaných databází adresářů.

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů - 1.1 - Kapitola 1: Úvod Účel databázových systémů Pohled na data Modely dat Jazyk pro definici dat (Data Definition Language; DDL) Jazyk pro manipulaci s daty (Data Manipulation Language; DML) Správa

Více

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)

Více

Základy algoritmizace. Hašování

Základy algoritmizace. Hašování Základy algoritmizace Hašování Problematika hašování Hašování - nástroj na jednoduchý způsob "zakódování vstupních dat. Vstupní data jsou zpracována hašovací funkcí jsou jistým způsobem komprimována. Relativně

Více

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Přednáška Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského

Více

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty Pokročilé techniky tvorby sestav v Caché ZENové Reporty Úvodem Jednoduché sestavy Pokročilé sestavy Ladění Historie ZEN reporty sdílejí podobný princip definování obsahu jako ZENové stránky Byly uvedeny

Více

Výměnný formát XML DTM DMVS PK

Výměnný formát XML DTM DMVS PK Výměnný formát XML DTM DMVS PK Představení partnerským krajům Praha 8. 2. 2016 Krajský úřad Plzeňského kraje Odbor informatiky Koncept etapizace tvorby výměnného formátu XML aktualizačních zakázek Digitální

Více

Vyhledávač datových referencí. Dokumentace

Vyhledávač datových referencí. Dokumentace Dokumentace goshoom 18.8.2010 OBSAH Obsah... 1 Základní informace... 2 Podporované verze Microsoft Dynamics AX... 2 Podporované jazyky... 2 Instalace... 3 Uživatelská příručka... 4 Jak používat Vyhledávač

Více

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody Obsah 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody 3) 4) Mantichora Mantichora je moderní aplikace, který

Více

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ Úvod do problematiky VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ Databáze je uspořádaná množina velkého množství informací (dat). Příkladem databáze je překladový slovník, seznam PSČ nebo telefonní seznam. Databáze

Více

Windows Server 2003 Active Directory

Windows Server 2003 Active Directory Windows Server 2003 Active Directory Active Directory ukládá informace o počítačích, uživatelích a ostatních objektech v síti. Zpřístupňuje tyto zdroje uživatelům. Poskytuje komplexní informace o organizaci,

Více

Pole a kolekce. v C#, Javě a C++

Pole a kolekce. v C#, Javě a C++ Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java

Více

MINISTERSTVO PRO MÍSTNÍ ROZVOJ Č.j. 7022/ R O Z H O D N U T Í č. 19/2016. ministryně pro místní rozvoj. ze dne

MINISTERSTVO PRO MÍSTNÍ ROZVOJ Č.j. 7022/ R O Z H O D N U T Í č. 19/2016. ministryně pro místní rozvoj. ze dne MINISTERSTVO PRO MÍSTNÍ ROZVOJ Č.j. 7022/2016-56 R O Z H O D N U T Í č. 19/2016 ministryně pro místní rozvoj ze dne 18. 2. 2016 o Pravidlech správy otevřených dat Ministerstva pro místní rozvoj S účinností

Více

Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny

Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny 1 TXV 003 63.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá XmlLib_v13 OBSAH 1 Úvod...3 2

Více

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Seznamy a stromy Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Klíčové pojmy: Seznam, spojový seznam, lineární seznam, strom, list, uzel. Úvod

Více

Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV 003 49.01

Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV 003 49.01 PROGRAMOVATELNÉ AUTOMATY Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV 003 49.01 KNIHOVNA RecDBXLib DATABÁZE V DATABOXU 2. vydání řijen 2008 OBSAH 1. ÚVOD...3 2. KNIHOVNA RecDBXLib DATABÁZE V DATABOXU...4

Více

13. blok Práce s XML dokumenty v databázi Oracle

13. blok Práce s XML dokumenty v databázi Oracle 13. blok Práce s XML dokumenty v databázi Oracle Studijní cíl Tento blok je věnován práci s XML dokumenty, možnostmi jejich uložení a práce s nimi v databázi Oracle a datovému typu XMLType. Doba nutná

Více

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Dokumentace k programu MMDoc Vypracoval: Petr Dvořák Datum: 15.prosince 2005 1. Úvod 1.1. Účel tohoto dokumentu

Více

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz

Více

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U P R O G R A M O V É V Y B A V E N Í Studijní obor: 18-20-M/01 Informační technologie Školní

Více

O Apache Derby detailněji. Hynek Mlnařík

O Apache Derby detailněji. Hynek Mlnařík O Apache Derby detailněji Hynek Mlnařík Agenda Historie Vlastnosti Architektura Budoucnost Historie 1997 Cloudscape Inc. - JBMS 1999 Informix Software, Inc. odkoupila Cloudscape, Inc. 2001 IBM odkoupila

Více

ADT/ADS = abstraktní datové typy / struktury

ADT/ADS = abstraktní datové typy / struktury DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní

Více

APLIKACE XML PRO INTERNET

APLIKACE XML PRO INTERNET APLIKACE XML PRO INTERNET Jaroslav Ráček Fakulta Informatiky, Masarykova Universita Brno Abstrakt Text je věnován možnostem využití XML technologie pro prezentaci dokumentů pomocí Internetu. V úvodu je

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Stromové struktury v relační databázi

Stromové struktury v relační databázi Stromové struktury v relační databázi Stromové struktury a relační databáze Zboží Procesory Intel Pentium IV Celeron Paměti AMD Duron DDR DIMM Athlon http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů. Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové

Více

Maturitní projekt do IVT Pavel Doleček

Maturitní projekt do IVT Pavel Doleček Maturitní projekt do IVT Pavel Doleček CO FILMBOOK JE Filmbook je uzavřená webová aplikace pro celkovou správu informací a dat souvisejících se sledováním filmů. Primárně je zaměřen na uchovávání a spravování

Více

IS pro podporu BOZP na FIT ČVUT

IS pro podporu BOZP na FIT ČVUT IS pro podporu BOZP na FIT ČVUT Závěrečná zpráva pro 2. iteraci 21. dubna 2011 Zadavatel: Ing. Jiří Chludil Řešitelský tým: Jiří Kopecký Jan Kratochvíl Milan Matějček Štefan Pinďák Kristýna Streitová Úvod

Více