Interaktivní databáze s webovým rozhraním pro uchovávání a

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

Download "Interaktivní databáze s webovým rozhraním pro uchovávání a"

Transkript

1 Mendelova univerzita v Brně Provozně ekonomická fakulta Interaktivní databáze s webovým rozhraním pro uchovávání a vyhledávání BibT E Xových odkazů Diplomová práce Vedoucí práce: Ing. Oldřich Trenz, Ph.D. Bc. Jitka Grohmanová Brno, 2010

2 Místo této strany, zde bude vloženo zadání diplomové práce.

3 Prohlašuji, že jsem diplomovou práci na téma Interaktivní databáze s webovým rozhraním pro uchovávání a vyhledávání BibT E Xových odkazů vypracovala samostatně a postupovala dle odborných rad vedoucího. Veškeré literární a elektronické zdroje, jež byly v práci použity, jsou uvedeny v seznamu literatury. V Brně dne 24. května

4 Tímto bych chtěla poděkovat vedoucímu své diplomové práce Ing. Oldřichu Trenzovi, Ph.D. za jeho čas, cenné rady a doporučení, které mi během tvorby této práce poskytl. Dále patří dík doc. Ing. Janu Žižkovi, CSc. za poskytnutí BibT E X citací použitých v rámci implementace systému, jež se stará o uchování a vyhledávání nad těmito daty.

5 5 Abstract Bc. Grohmanová, J. An interactive database with a web interface for storage and retrieval of BibT E X links. Diploma Thesis. Brno, 2010 This diploma thesis deals with the exchange of data in the XML format, problems of storage, retrieval and transformation of XML documents. From the theoretical point of view, all sorts of approaches to the storage of XML documents are taken into account, namely storage in the file server concerned, in the relational database or in the native XML database. The theoretical pieces of knowledge are used in the design and creation of the system for storing and searching BibT E X citations. The system will be used by users from various fields in England, Czech Republic, Russia and Spain. Keywords XML, XPath, XQuery, XSLT, Relax NG, native XML database, Sedna, PHP, Bib- TeX Abstrakt Bc. Grohmanová, J. Interaktivní databáze s webovým rozhraním pro uchovávání a vyhledávání BibT E Xových odkazů. Diplomová práce. Brno, Tato diplomová práce se zabývá výměnou dat ve formátu XML, problematikou ukládání, vyhledávání a transformací XML dokumentů. Z teoretického hlediska jsou zohledněny nejrůznější přístupy k ukládání XML dokumentů, ať už se jedná o ukládání na souborovém serveru, v relační databázi nebo v nativní XML databázi. Teoretické poznatky jsou využity při návrhu a tvorbě systému pro uchovávání a vyhledávání BibT E X citací. Systém bude využit uživateli z různých oborů v Anglii, České republice, Rusku a Španělsku. Klíčová slova XML, XPath, XQuery, XSLT, Relax NG, nativní XML databáze, Sedna, PHP, Bib- TeX

6 OBSAH 6 Obsah 1 Úvod a cíl práce Úvod Cíl práce Teoretická východiska práce XML Historie a současnost Syntaxe XML Schémata XML dokumentů Document Type Definition W3C XML Schema RELAX NG Schematron Jazyky XSL XSL-FO XSLT Dotazovací jazyky XPath XQuery Možnosti ukládání XML dat Soubory v souborovém systému Relační databázový systém Nativní XML databázový systém Citace literárních zdrojů LaTeX BibTeX PHP Objektově orientovaný přístup Podpora XML v PHP Smarty šablony AJAX Metodika řešení Funkční požadavky Uživatelé Návrh grafického uživatelského rozhraní Volba použitých technologií Návrh formy BibT E X citací Volba nativního XML databázového systému Návrh a implementace systému Vývoj aplikace

7 OBSAH Práce s aplikací Ověření použitelnosti Vlastní řešení Průzkum Výsledky průzkumu Zhodnocení průzkumu Schéma XML dat Konkrétní typy BibT E X citací Schéma RELAX NG Šablony pro transformaci XML dat Šablona transformace XML na XHTML Šablona transformace XML na BibT E X Nativní XML databázový systém Sedna Testování výkonu Grafické uživatelské rozhraní Uživatelé Registrace uživatele Přihlášení a odhlášení uživatele Administrace Administrace uživatelů BibT E X citace Import citací z XML dokumentu Vytvoření nové citace Smazání citace Úprava citace Vyhledávání Vyhledávání nad celým obsahem databáze Vyhledávání definované uživatelem Diskuze a závěr 60 6 Literatura 62 Přílohy 65 A Ukázka dobře strukturovaného XML dokumentu 66 B Příklad datového modelu XML 67 C Ukázka použití jazyka XSLT 68 D Datový model XPath 70 E Model tradiční webové aplikace a AJAXu 71

8 OBSAH 8 F Asynchronní a synchronní komunikace 72 G Dotazník: Webové technologie a XML 73

9 1 ÚVOD A CíL PRÁCE 9 1 Úvod a cíl práce 1.1 Úvod Internet se stal pro většinu z nás každodenním prostředkem komunikace s okolním světem. Ještě před vznikem lokálních a veřejných sítí si lidé vyměňovali informace prostřednictvím záznamových médií. V dnešní době postačí připojení k Internetu, uživatel si vyhledá potřebné informace a případně si je uloží do svého počítače pro pozdější použití. Za posledních třicet let počet uživatelů připojených k Internetu rapidně vzrostl. S přibývajícím počtem uživatelů se také zvyšovaly nároky na přenosovou rychlost a na uživatelsky přívětivější prostředí webových aplikací. Původně vznikaly statické webové stránky napsané v jazyce HTML (Hyper Text Markup Language), které zobrazovaly pouze obrázky a text. HTML má striktně vymezené značky, které lze použít (jsou definovány v jeho DTD Definition Data Language). U vzniku jazyka XML měli jeho vývojáři vysoké ambice, že plně nahradí jazyk HTML a webové stránky budou psány pouze v jazyce XML. Ovšem i dnes se HTML stále hojně využívá. XML vzniklo výběrem toho nejlepšího z jazyka SGML, jež neměl kvůli své robustnosti úspěch. Zkratka XML je odvozena z anglického sousloví extensible Markup Language, což znamená rozšířitelný značkovací jazyk. Jazyk XML může obsahovat libovolné značky a tím přesněji popsat význam a vazbu jednotlivých částí dokumentu. Oproti HTML umožňuje lepší vyhledávání informací. XML slouží především pro výměnu dat. Má textovou podobu, a proto je možné s ním pracovat v jakémkoliv textovém editoru. XML dnes působí kromě vývoje webových aplikací i v mnoha dalších oborech. S tím jak lidé stále více využívají XML technologie, vzniká potřeba najít pro ně vhodný způsob uložení a vyhledávání. Výrobci databázových systémů a jiných softwarových produktů se přizpůsobují, v současnosti již nabízí mnoho produktů podporujících tento formát. Jaký typ centralizovaného úložiště zvolit záleží na struktuře i velikosti XML dokumentů, zda potřebujeme z databáze získat zpátky totožný XML dokument a jestli chceme mít možnost dokumenty i po vložení do databáze upravovat. Relační SŘBD byly vyvíjeny pro zcela odlišnou strukturu dat, než je XML. Nativní XML databázové systémy 1 jsou speciálně uzpůsobeny pro XML dokumenty, ukládají je v přirozené podobě a poskytují mnoho nástrojů pro práci s nimi. Pro vyhledávání v XML dokumentech existuje kromě jazyka XPath nově také jazyk XQuery, tyto jazyky se využívají i v nativních XML databázových systémech. Proč o technologii XML hovoříme tak dlouho? Jelikož se jeví jako vhodný kandidát k vyřešení následujícího problému. Pracovní skupina SoNet se zabývá vědeckým výzkumem (základní výzkum, aplikace a projekty v rámci posouzení), vzděláváním, dále publikuje nejrůznější články a pořádá workshopy. SoNet je tvořen českými i zahraničními uživateli z různých oborů. V odborných textech se autoři musí odkazovat na použité literární zdroje. Jelikož skupina SoNet publikuje prostřednictvím systému TEX, využívá pro samotné odkazy literárních zdrojů rozšíření tohoto sys- 1 Nativní XML databáze se označuje zkratkou NXD.

10 1.2 Cíl práce 10 tému nazývaným BibT E X. Za dobu působení této organizace se již využilo stovek citací. Proto vznikla potřeba ukládat bibliografické citace do databáze, zprostředkovat uživatelům vyhledávání nad touto databází a také možnost do ní ukládat nové informace. BibT E X slouží pro uchování odkazů a také se sám stará o výsledný vzhled a formát citace na základě uživatelem vybraného názvu stylu. Struktura BibT E X citací je velice různorodá, typ literárního zdroje udává, které položky budou povinné a které budou volitelné. Uživatel má dále možnost definovat své vlastní položky. Struktura jednotlivých BibT E X záznamů může být velice odlišná. Pokud bychom tato data ukládali do relačního typu SŘBD, v tabulce by se nevyužilo mnoho sloupců, případně by hrozilo neustálé rozšiřování tabulky o nové sloupce. Citace tedy budou uloženy ve formátu XML, jež umožní snazší vyhledávání. XML dokumenty s nepravidelnou strukturou je možné ukládat do nativního XML databázového systému a následně s nimi jednodušše pracovat. Proto bude převážná část práce věnována XML a všem technologiím, jež budou při implementaci systému využity. 1.2 Cíl práce Cílem diplomové práce je návrh a implementace systému pro správu BibT E X odkazů a také tvorba vyhledávání nad těmito daty. Kroky k naplnění cíle byly stanoveny takto: analýza současného stavu a zvolení vhodného centrálního úložiště pro uchovávání BibT E X citací, vytvoření a zhodnocení průzkumu v oblasti XML technologií a jejich uchovávání, návrh systému pro správu BibT E X odkazů, implementace systému. Teoretická část práce se zabývá jazykem XML obecně, BibT E Xem, dotazovacími jazyky, pomocí nichž lze v XML dokumentech vyhledávat, jazyky umožňující transformaci XML na jiný výstup, možnostmi uložení XML dokumentů, opomenuty také nebudou další technologie použité při tvorbě informačního systému. Dále budou zpracovány a popsány výsledky průzkumu. Teoretické poznatky budou využity při návrhu a implementaci systému pro pracovní skupinu SoNet, jež bude uchovávat a vyhledávat informace o publikacích ve formě BibT E X odkazů. BibT E X citace budou ukládány ve formátu XML pro snazší vyhledávání a možnost převést výsledek do jakéhokoliv vzhledu. Citace mají velice nepravidelnou strukturu, proto bude místo relačního databázového systému využit nativní XML databázový systém. Systém bude komunikovat s uživateli anglickým jazykem, což je dáno spektrem uživatelů z různých částí světa. Práce se systémem by měla být jednoduchá a intuitivní.

11 2 TEORETICKÁ VÝCHODISKA PRÁCE 11 2 Teoretická východiska práce Tato část diplomové práce představuje souhrn veškerých technologií, jež budou využity při návrhu a implementaci systému pro správu BibT E X citací. Ze začátku pojednáme o základních faktech týkajících se jazyka XML a jeho syntaxe. Dále se budeme soustředit na schémata jazyka XML, jež umožňují definovat strukturu XML dokumentu, popř. i datové typy jednotlivých elementů. Nesmíme opomenout jazyky umožňující transformaci XML dokumentu na definovaný výstup. Abychom mohli z XML dokumentů získávat jednoduchým způsobem námi požadovaná data, potřebujeme znát určité dotazovací jazyky. Následující část bude tvořit přehled nejrůznějších přístupů k ukládání a uchovávání XML dokumentů. Jelikož budeme pracovat s BibT E X odkazy, bylo by vhodné nastínit, jakým způsobem BibT E X funguje. Na závěr budou lehce vysvětleny technologie použité při tvorbě webového rozhranní. 2.1 XML Historie a současnost XML bylo vyvinuto vývojáři z XML Working Group pod záštitou W3C (World Wide Web Consorcium) v roce XML vychází stejně jako HTML z jazyka SGML (Standard Generalized Markup Language). Značkovací jazyk SGML je standardizovaný (ISO 8879), velice robustní, univerzální, ale také složitý, a proto nenašel velké uplatnění. V současnosti jej stále využívají některé státní organizace v USA, firma Boeing a pravděpodobně i firma IBM pro tvorbu svých dokumentů. Jak XML, tak HTML jsou značkovací jazyky, které rozšiřují data o další informace. Jazyk HTML má striktně vymezenou skupinu značek, které lze použít (<html>, <body>, <head>, <title>, <div>, <p> atd.). Tvůrcům webových stránek přestaly tyto značky stačit a začali tak vytvářet nepřehledné kódy, jen aby dosáhli požadovaného výsledku. Toto byl impuls pro vytvoření nového rozšířitelného značkovacího jazyka, jímž se stal jazyk XML. Dnes jsou dostupné verze XML 1.0 páté vydání a XML 1.1 druhé vydání. Mezi důležité přednosti XML se řadí: XML je čitelné pro člověka, strojově lehce zpracovatelné, zpětně kompatibilní se SGML, podporuje jej široká škála aplikací, umožňuje rychlé vytvoření XML dokumentů, snadnou přípravu vzhledu, nezávislost na operačním systému i použitém programovacím jazyce a mnohé další. XML podporuje univerzální znakovou sadu Unicode (ISO 10646), čímž umožňuje zápis značek i jejich obsahu v různých světových jazycích. Použití jiného kódování musí být definováno v hlavičce dokumentu. XML je svázáno i s celou řadou dalších standardů a norem, navíc jde o open standard, díky čemuž je možné XML využít celosvětově. (W3C, 2008) XML se primárně využívá pro výměnu dat, nejčastěji mezi rozdílnými aplikacemi. Pokud se jedná o firemní prostředí, firmy potřebují komunikovat s obchodními partnery i se svými zákazníky. Formát XML tak hraje důležitou roli v businessto-business (B2B), ale i v business-to-customer (B2C) aplikacích. Partneři si před

12 2.1 XML 12 začátkem výměny dat ustanoví strukturu XML dokumentů a své aplikace jim uzpůsobí. Dále našlo své uplatnění také při výměně geografických dat a v knowledge managementu v bioinformatice. XML hraje prim ve webových technologiích. Při tvorbě webových stránek lze využít jazyka XHTML i technologie AJAX (zasílá změny do prohlížeče prostřednictvím XML, ovšem může být použit i jiný formát), publikovat zprávy lze prostřednictvím formátů RSS či Atom. XML se také skrývá ve vektorovém grafickém formátu SVG a moderních RIA 2 prostředích Silverlight (XAML) a Flash (MXML). Formát XML poskytuje velké množství metainformací, proto se implementuje pro snazší vyhledávání. Portál Seznam využívá formát XML při vyhledávání zboží v registrovaných internetových obchodech. I Google vylepšuje své vyhledávání prostřednictvím XML. Pokud potřebujeme tatáž data zobrazit na různých zařízeních (PC, PDA, smartphone), popř. v různých formátech (HTML, PDF, DOC, clear text) je vhodné takový projekt implementovat v jazyce XML a pro výsledný vzhled použít technologii XSL. Většina desktopového software podporuje výstup ve formátu XML, čímž usnadňuje přenos dat v rámci rozdílných operačních systémů i aplikací. (Kosek, 2009) Syntaxe XML Fyzická struktura XML dokumentu se skládá z jednotlivých elementů ohraničených počáteční (<p>) a koncovou (</p>) značkou, jinak řečeno tagem. XML procesor zpracovává XML dokument a zpřístupňuje jeho obsah a strukturu. U XML dokumentu je důležité, aby byl dobře strukturovaný (v angličtině well-formed ), nebo-li aby dodržoval předem stanovená pravidla. Dokument musí vždy obsahovat jeden kořenový element, v němž se nachází obsah celého dokumentu. Element může obsahovat samotná data, další element, smíšený nebo prázdný obsah. Pokud je element definován v kontextu nadřazeného elementu, musí být počáteční i koncová značka uvnitř rodičovského elementu. Značky se nesmí navzájem křížit, tento zápis není dobře strukturovaný: <p>část obsahu elementu chceme <i>zvýraznit špatným zápisem.</p></i> Element musí být vždy ukončen. Můžeme použít buď počáteční a koncový tag <p>obsah odstavce.</p>, nebo pokud se jedná o element s prázdným obsahem můžeme použít zkrácený zápis <br />. (W3C, 2008) Na obrázku 7 v příloze A je uveden jednoduchý dobře strukturovaný XML dokument včetně prvků, jež může obsahovat. Každý prvek si následně trochu rozebereme. V praxi se využívají také jmenné prostory a sekce CDATA. Pomocí jmenných prostorů můžeme v dokumentu používat najednou více sad značek. V sekci CDATA nemusíme nahrazovat určité znaky entitami (např. <, >, atd.), čehož se samozřejmě využívá pro usnadnění vkládání HTML, XHTML či XML kódu. 2 RIA Rich Internet Apllication

13 2.1 XML 13 Deklarace XML Hned na začátku každého XML dokumentu by neměla být opomenuta deklarace, ve které autor určí, jakou verzi XML a znakovou sadu používá. Všechny aplikace pracující s XML musí umět zpracovat dokumenty v kódování UTF-8 či UTF-16, proto je vhodné dát přednost jednomu z těchto dvou typů kódování. Celkově se jeví jako výhodnější kódování UTF-8, kde se každý znak dělí na 8bitová slova (zabírá 1 4 B), zatímco v UTF-16 se dělí na 16bitová slova (zabírá 2 nebo 4 B). UTF-8 je zpětně kompatibilní s historickou znakovou sadou ASCII, proto se také využívá při přenosu a ukládání dat na internetu. UTF-16 se snadněji zpracovává, dovoluje dvojí zápis posloupnosti bajtů big endian nebo little endian. Použití kódování UTF-16 se doporučuje tehdy, pokud využíváme znaky nad rámec ASCII (znak by totiž zabíral zbytečně dvakrát více místa než v kódování UTF-8). Instrukce pro zpracování V XML dokumentu lze použít i nestandardní informace, které XML parser nezpracovává, ale pouze je předá nadřazené aplikaci. Instrukce je možno použít kdekoliv v dokumentu. Pomocí instrukcí ke zpracování se můžeme odkazovat na použitý styl (viz uvedený příklad) či použít příkazy skriptovacího jazyka (stejně jako vkládáme části PHP kódu do HTML stránky, tak jej můžeme uvést v rámci XML dokumentu). Komentáře V rámci komentáře může být vysvětlen následující úsek dokumentu, skryta jeho část nebo uvedeny poznámky autora. XML parser komentáře zcela ignoruje. Komentář je ohraničen znaky <!-- a -->. Zapisuje se v takovémto tvaru: <!-- Můj komentář. --> Komentář může obsahovat jakékoliv znaky až na posloupnost --, čímž se znemožňuje zanořování komentářů do sebe. V komentáři lze například schovat i část XML dokumentu: <!-- <text>element text je skrytý.</text> --> Elementy a atributy Elementy tvoří základní stavební prvek XML dokumentů. V obsahu dokumentu nelze použít určité znaky, bez toho aniž bychom je nahradili znakovými entitami: znak < za entitu < znak > za entitu > znak & za entitu & znak za entitu &apos; znak " za entitu " U zápisu počátečních a koncových tagů je potřeba dávat pozor na velikost písmen, XML je totiž oproti HTML case-sensitive. XML parser by nad následujícím kódem zahlásil chybu, protože element <ukázka> není uzavřen a element <Ukázka> nemá počáteční značku: <ukázka>obsah elementu ukázka nebo Ukázka?</Ukázka>

14 2.2 Schémata XML dokumentů 14 Autor si může zvolit libovolné názvy elementů či atributů, pouze musí splňovat určitá pravidla. Na prvním znaku se musí objevit pouze písmeno nebo znak podtržítko, u dalších znaků jsou povolena navíc i čísla, znak tečka a pomlčka. Atributy se zapisují vždy k počáteční značce elementu a oddělují se od sebe mezerou, hodnota atributu je ohraničena uvozovkami či apostrofy, viz element <bibitem> a jeho atributy type a id z příkladu v příloze A. Datový model XML XML dokument je tvořen jedním kořenovým elementem a dalšími vnořenými potomky. Pokud bychom zanoření elementů znázornili graficky, dostali bychom hierarchickou stromovou strukturu. Uzly datového modelu zastupují buď elementy, nebo textový obsah elementů. Jednoduchý příklad datového modelu XML je uveden v příloze B. Nejpoužívanější rozhraní pro práci s XML je Document Object Model zkráceně DOM, dále lze použít API 3 SimpleXML, SAX, XMLReader. DOM umí objektovým modelem věrohodně zobrazit strukturu XML, velikost dokumentu je ovlivněna dostupnou pamětí, umí zpracovat i HTML. SimpleXML namapuje XML do jednoduché objektové struktury, velikost XML dokumentu je omezena na velikost dostupné paměti, nepodporuje smíšený obsah elementů. SAX parser čte XML dokument a postupně generuje události, využívá tzv. push model. SAX není paměťově náročný, lze tedy zpracovat libovolně velký soubor. XMLReader čte postupně XML dokument, je-li o to žádán. XMLReader využívá tzv. pull model, je velice rychlý a má malé paměťové nároky. (Kosek, 2009) 2.2 Schémata XML dokumentů Obrovská přednost XML spočívá v možnosti použít jakékoliv tagy. Vytváříme-li XML dokument s použitím určitých značek, zároveň s ním vzniká i nový značkovací jazyk. Ovšem volnost XML je potřeba ve většině případů omezit. Pokud si vyměňujeme s okolím XML zprávy, je důležité znát strukturu dat dopředu. Právě schémata XML dokumentů slouží k formální a jednoznačné definici nového značkovacího jazyka. Schémata určují elementy a atributy, které mohou být v rámci XML dokumentu použity, jak je lze vzájemně uspořádat a také definují datový typ jejich obsahu. Pokud máme vytvořené schéma, lze jím ověřit validitu dokumentu. Je-li dokument validní, víme, že autor dodržel námi definovaný formát. Aplikace pracující s validními XML dokumenty již nemusí ošetřovat jejich chybovost. Mezi nejznámější schémata patří DTD, W3C XML Schema, RELAX NG a Schematron Document Type Definition Definice typu dokumentu je nejstarším schématem. Pochází z jazyka SGML, čímž má zajištěnu velkou podporu v rámci aplikací. DTD má sice jednoduchou syntaxi, ovšem nikde jinde ji v XML nenalezneme. Novější schémata již používají XML 3 Application Programming Interface rozhraní pro programování aplikací.

15 2.2 Schémata XML dokumentů 15 zápis, čímž z nich lze pomocí XSLT vygenerovat dokumentaci. DTD oproti novějším jazykům nepodporuje datové typy a jmenné prostory, i přesto se stále řadí mezi nejpoužívanější schémata. Původně se XML využívalo pouze pro dokumenty, které obsahovaly text knihy, dokumentace, články a jiné. U těchto typů dokumentů je DTD plně dostačující. Právě definice typu dokumentu určuje strukturu jazyků odvozených od SGML (HTML, XHTML, XML). Jak syntaxe jazyka DTD vypadá, si můžeme ukázat na následujícím schématu, kterému by vyhovoval příklad v příloze B: <!ELEMENT authors (author+)> <!ELEMENT author (firstname, lastname)> <!ELEMENT firstname (#PCDATA)> <!ELEMENT lastname (#PCDATA)> Kořenový element <authors> musí obsahovat alespoň jeden element <author>, který je určen svým křestním jménem (firstname) a příjmením (lastname). Elementy <firstname> a <lastname> obsahují již samotná textová data W3C XML Schema XML se rozšířilo do různých oblastí, kde již pouze textový obsah nestačí, je potřeba rozlišovat také číslo, datum apod. W3C XML Schema odstraňuje dříve zmíněné nedostatky jazyka DTD. Již z názvu schématu vyplývá, že jej doporučuje a dále také vyvíjí konsorcium W3C. Konsorcium přetvořilo XML schéma v roce 2001 z jazyka XDR (XML-Data Reduced). Pro jazyk W3C XML Schema se často používají zkratky WXS nebo XSD (XSD je formát, v němž se XML Schema ukládá). WXS podporuje jmenné prostory a zavádí datové typy. XML Schema se dnes hojně využívá a podporují jej všechny velké firmy i open source aplikace. Rozsáhlejší specifikace a určité nedostatky XML Schema vedly k vývoji jazyku RELAX NG, které již dokáže specifikovat i složité struktury. Ukázku syntaxe WXS budeme opět aplikovat na příklad z přílohy B: <xs:schema xmlns:xs=" <xs:element name="authors"> <xs:complextype> <xs:sequence> <xs:element name="author" minoccurs="1" maxoccurs="10" > <xs:complextype> <xs:sequence> <xs:element name="firstname"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:length value="20"/> </xs:restriction> </xs:simpletype> </xs:element> <xs:element name="lastname">

16 2.2 Schémata XML dokumentů 16 <xs:simpletype> <xs:restriction base="xs:string"> <xs:length value="50"/> </xs:restriction> </xs:simpletype> </xs:element> </xs:sequence> </xs:complextype> </xs:element> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> Z příkladu je zřejmé, že je schéma velice obsáhlé, což je dáno také specifičtějším zápisem, než tomu bylo u DTD. Omezili jsme počet autorů od jedné do desíti. Každý autor musí obsahovat jedno křestní jméno a jedno příjmení. Obsah elementu <firstname> i <lastname> bude datový typ řetězec. Řetězec lze dále přesněji specifikovat. V našem případě jsme omezili jejich délku na 20 respektive 50 znaků. Pomocí restrikcí můžeme vytvářet ze základních datových typů námi upravené datové typy RELAX NG RELAX NG se stává stále více oblíbený, jelikož je na naučení velice jednoduchý. Je standardizován sdružením OASIS i normou ISO. Tvůrce schématu si může vybrat z klasické nebo kompaktní syntaxe 4, která zestručňuje a zjednodušuje zápis. Celé schéma v jazyce RELAX NG je vzorem dokumentu, tvůrce schématu dále podrobněji definuje vzory pro elementy, atributy a textové uzly. Těmto vzorům lze určit jejich vzájemné pořadí, povinnost či volitelnost, násobnost a jejich kombinaci. Podpora datových typů není nijak oslnivá, tento nedostatek tvůrci RELAX NG odstranili možností implementovat libovolnou externí knihovnu datových typů. Nejčastěji se používají datové typy z W3C XML Schema. Knihovnu datových typů určíme atributem datatypelibrary, jejímž obsahem bude URI knihovny datových typů 5. Schéma v RELAX NG pro XML dokument z přílohy B by vypadalo následovně: <element xmlns=" name="authors"> <oneormore> <element name="author"> <element name="firstname"><text/></element> <element name="lastname"><text/></element> </element> 4 Pokud bychom potřebovali v jazyce PHP ověřit validitu XML dokumentu oproti schématu RELAX NG, musíme použít klasickou syntaxi, kompaktní syntaxe prozatím není v knihovně libxml podporována. 5 Knihovna datových typů z WXS má URI:

17 2.3 Jazyky XSL 17 </oneormore> </element> Schematron Zcela jiný pohled na strukturu dokumentu umožňuje jazyk Schematron. Využívá silného dotazovacího jazyka XPath. Strukturu vyjadřuje pomocí podmínek pro daný element, které musí být v rámci jednoho či více dokumentů splněny. Schematron se využívá pouze pro validaci XML dokumentu. Do schématu v jazyce W3C XML Schema nebo RELAX NG můžeme začlenit i část kódu v jazyce Schematron a tím využít jeho předností. (Kosek, 2009) 2.3 Jazyky XSL Konsorcium W3C vyvinulo speciální nástroj XSL (extensible Stylesheet Language) pro definici výsledného vzhledu XML dokumentů. XSL dělíme do tří částí: XSL-FO jazyk pro formátování XML dat, XSLT jazyk pro transformaci XML dat, XPath 6 jazyk pro orientaci a hledání v XML datech XSL-FO XSL formátovací objekty (v původním znění XSL Formatting Objects, odtud zkratka XSL-FO) jsou založeny na jazyku XML. Dnes se jazyk XSL-FO formálně nazývá XSL. Formátovací objekty vytvářejí výsledný vzhled XML dat, který je určen pro obrazovku, papír popřípadě další média. Již v roce 2001 se stalo XSL-FO, formálně XSL, webovým standardem. XSL-FO dokument se ukládá s příponou.fo,.fob či.xml, jelikož současně představuje také XML dokument. Podle výsledného formátu je potřeba zvolit vhodný XSL procesor, který vygeneruje výsledný dokument. Mezi nejznámější patří: Altova s StyleVision výsledný formát HTML, RTF, PDF, Word 2007+, Ecrion s XF Products výsledný formát PDF (PDF/X i PDF/A), AFP, Postscript, XPS, TIFF, Silverlight, Word, PowerPoint a další, Antenna House Formatter V5 výsledný formát PDF či tisk. (W3Schools, c b) XSLT XSL transformace (transformations) vytváří z XML jiný XML, XHTML, HTML dokument či prostý text. XSLT se velice často využívá při výměně dat mezi aplikacemi, které používají sice tatáž data, ale v jiném schématu. XSLT procesor transformuje vstupní XML dokument v cizím schématu na XML dokument používající jiný 6 XPath patří především mezi dotazovací jazyky, proto bude popsán v kapitole 2.4.1

18 2.3 Jazyky XSL 18 sémantický slovník a generuje výsledek. XSLT lze zařadit také mezi dotazovací jazyky, protože ze zpracovávaného XML dokumentu můžeme vybrat na základě XSLT pouze určité elementy. Tento jazyk tvoří stěžejní část XSL. Pro orientaci v rámci dokumentu využívá jazyku XPath. XSLT dokument popisuje pomocí pravidel (šablon) transformaci z původního na nový dokument. Pravidlo spustí akci, pokud část XML dokumentu vyhovuje vzoru. XSLT je programovací jazyk, v němž lze používat proměnné, podmínky, cykly atd., ovšem XSLT příkazy se vykonávají v závislosti na struktuře XML dokumentu. XSLT dokument je zároveň XML validním dokumentem oproti schématu XSL. Schéma XSL musí být definované u kořenového elementu stylesheet pomocí URI a verze (na výběr máme verzi 1.0 nebo ): (Pokorný, 2008) <?xml version="1.0" encoding="utf-8"> <xsl:stylesheet xmlns:xsl=" version="1.0"> <!-- obsah stylu --> </xsl:stylesheet> Na začátku obsahu stylu je vhodné nastavit výstupní formát elementem output. V praxi se nejčastěji využívá převod do HTML v kódování UTF-8: <xsl:output method = "html" encoding="utf-8"/>. Konsorcium W3C u XSLT 1.0 povoluje širokou škálu atributů a hodnot pro nastavení výstupu: <xsl:output method = "xml" "html" "text" qname-but-not-ncname version = nmtoken encoding = string omit-xml-declaration = "yes" "no" standalone = "yes" "no" doctype-public = string doctype-system = string cdata-section-elements = qnames indent = "yes" "no" media-type = string /> V XSLT 2.0 je definice výstupu rozšířena o další atributy a nové hodnoty. Například ve verzi 2.0 je již zahrnuta možnost převést XML dokument na XHTML. (W3C, 1999) Samotný styl je tvořen šablonami, které určují, jak se má část dokumentu vybraná pomocí jazyku XPath 8 přetransformovat, obecný zápis vypadá takto: <xsl:template match = "..výraz v jazyce XPath.."> <!-- akce, které budou vykonány --> </xsl:template> 7 XSLT 2.0 není prozatím v jazyce PHP5 podporováno. 8 XSLT 1.0 používá XPath 1.0, zatímco XSLT 2.0 pracuje s XPath 2.0.

19 2.4 Dotazovací jazyky 19 K výběru uzlů XML dokumentu využívá XSLT silného dotazovacího nástroje XPath. Při výběru šablony jsou z jazyka XPath povoleny pouze osy child (/, nebo //) a attribute (/@). V predikátech je již možné jazyk XPath využít naplno. Transformace začíná vytvořením stromu pro zpracovávaný XML dokument a založením prázdného výsledného XML dokumentu. Strom se prochází od kořene po potomky, pokud pro daný uzel existuje šablona, provedou se akce a následně se podle nich upraví výsledný XML dokument. Potomci uzlu, na který je šablona aplikována, nejsou zpracováváni automaticky. To lze jednoduše zařídit vložením akce <xsl:apply-templates/>. Pokud však tuto akci neuvedeme, budou se hledat pouze šablony pro sourozence, nikoliv pro potomky zpracovávaného uzlu. Akce kromě elementu apply-templates a template mohou obsahovat: element call-template zavolání šablony se jménem definovaným v atributu name, totožný atribut musí být zároveň uveden u elementu template, samotný text či element text jedná se o HTML značky, popisky dat či rozšíření dynamických dat o statický text, element value-of vypíše obsah textového uzlu, jež je potomkem uzlu, který byl vybrán XPath výrazem v atributu select, element for-each pokud nechceme spoléhat na automatický průchod dokumentem, je vhodné použít cyklus, XPath výrazem v atributu select opět získáme uzel, na nějž se bude cyklus aplikovat, element sort seřadí výsledná data podle našeho požadavku, použít jej lze v rámci elementu for-each nebo apply-templates, element if pokud je podmínka splněna (definice podmínky v atributu test), bude část šablony provedena, nemůžeme již definovat, co se stane, pokud není podmínka splněna, element choose definuje několikanásobné větvení na základě splnění podmínky (element when), či provedení akce v případě nesplnění ani jedné podmínky (element otherwise), element element generuje na výstup element s daným jménem (získán z atributu name) a obsahem, element attribut generuje na výstup atribut s daným jménem (získán z atributu name) a obsahem. Seznam není kompletní, existují i další příkazy jazyka XSLT, např. pro import čí vložení externího XSL dokumentu, vytvoření globální proměnné a jiné. Pro přiblížení zápisu v jazyce XSLT slouží příklad z přílohy C, který z XML dokumentu obsahující autory, vytvoří HTML, ve kterém budou autoři vypsáni ve formátu příjmení, křestní jméno a navzájem odděleni anglickou spojkou and. (Kosek, 2009)(Pokorný, 2008) 2.4 Dotazovací jazyky Již od roku 1998 se rozvíjí koncepce pro dotazování XML-QL, XQL a mnohé další. Mezi dotazovací jazyky se řadí XPath 1.0 a 2.0, XQuery 1.0, XLink 1.0 a Xpointer.

20 2.4 Dotazovací jazyky 20 XPath je podmnožinou jazyka XQuery. Jelikož jazyky XPath a XQuery tvoří důležitou součást XML technologií, budeme se jimi zabývat podrobněji. Jazyk XLink, nebo-li XML Linking Language, slouží ke vkládání elementů do XML dokumentů, čímž dojde k jejich vzájemnému provázání. Přesněji se jedná spíše o prostředek k modelování nad XML, který ovlivňuje koncipování dotazovacího jazyka. XPointer, celým názvem XML Pointer Language, přiřazuje k uzlům XML dokumentu identifikátor, jež je adresován pomocí URI. (Pokorný, 2008) Identifikátory mohou určovat jakékoliv internetové médium typu text/xml, text/xml-external-parsed-entity, application/xml, application/xml-external-parsed-entity a další média založená na XML. (W3C, 2003) XPath Jazyk XPath se využívá k rychlému nalezení uzlů, případně výpisu výpočtu hodnoty z těchto uzlů (součet, průměr, jméno uzlu, pozice uzlu... ) a nalezení uzlů v DOM stromu. XPath tvoří základ jazyků XSLT, XQuery a XPointer. V jazyce XPath zapisujeme cestu k elementům XML dokumentu podobně, jako jsme zvyklí u zápisu cesty k souborům v operačním systému. XPath nepoužívá syntaxi XML. Například příkaz /auhthors/author/lastname/text() vybere všechna příjmení autorů. Jednotlivé části cesty jsou odděleny lomítky, funkce text() vrací textový uzel nadřazeného elementu. Model dat je v jazyce XPath stromově orientovaný, může obsahovat sedm typů uzlů: uzel představující kořen dokumentu, element, atribut, komentář, instrukce pro zpracování, jmenný prostor, textový uzel. Ukázkový příklad jednoduchého XML dokumentu včetně jeho datového modelu XPath je uveden v příloze D. Tvorba dotazů v XPath Absolutní cesta obsahuje na začátku znak /, cestu musíme popsat od kořenového elementu. Relativní cesta se značí // a můžeme začínat elementem na jakékoliv úrovni. Chceme-li získat potomky daného uzlu nezávisle na jejich pojmenování, postačí nám symbol *. Pro odlišení elementu od atributu se atribut zapisuje XPath dotaz nám může vrátit množinu uzlů, použijeme-li XPath funkce, pak se může jednat i o číslo, řetězec nebo pravdivostní hodnotu. Množinu uzlů lze více specifikovat pomocí predikátů. Predikáty se zapisují do hranatých závorek přímo za uzel, kterého se týkají. V predikátech jsou povoleny aritmetické operátory, relační operátory, čísla, XPath dotazy i funkce. Samotné číslo uvnitř predikátu říká, kolikátý element má být vybrán. Příklady dotazů: / vybere celý dokument. /authors/author[@id = 1] nalezne autora, který má atribut id roven jedné. /authors/author[2] vrátí druhého autora v pořadí. /authors/author/* vybere všechny potomky autora. /authors/author[last()] vrátí posledního autora.

21 2.4 Dotazovací jazyky 21 Tyto příklady využívají zkrácený zápis. = 1] je totožný s dotazem /child::authors/child::author[attribute::id = 1]. V souvislosti s plným tvarem bychom se také měli zmínit o tom, že XPath rozlišuje několik os, po kterých se můžeme v rámci dotazů pohybovat. Nejčastěji používané osy včetně jejich zkrácených tvarů (uvedeny v závorkách) jsou child:: (/), parent::node (..), self::node() (.), attribute:: (@), descendant-or-self::node()/ (//) a mnohé další. Funkce pro práci s uzly position() zjistí pozici aktuálního uzlu, last() vrátí pozici posledního uzlu, nebo-li počet uzlů v daném kontextu, count(<<množina uzlů>>) spočítá kvantum uzlů daného seznamu, id() nalezne uzel elementu s přiřazeným ID, local-name(<<množina uzlů>>) vrátí lokální část názvu uzlu, namespace-uri(<<množina uzlů>>) získáme URI adresu jmenného prostoru, do nějž uzel náleží, name(<<množina uzlů>>) sdělí celý název uzlu. Číselné funkce number(<<jakýkoliv objekt>>) umí převést jakýkoliv objekt na číselnou hodnotu, round(<<číslo>>) zaokrouhlí číslo na nejbližší celé číslo, ceiling(<<číslo>>) zaokrouhlí číslo na nejbližší vyšší celé číslo, floor(<<číslo>>) zaokrouhlí číslo na nejbližší nižší celé číslo, sum(<<množina uzlů>>) sečte hodnoty v seznamu uzlů. Pravdivostní funkce boolean(<<jakýkoliv objekt>>) převede jakýkoliv objekt na pravdivostní hodnotu, not(<<boolean>>) vrací negaci pravdivostního výrazu, true() vrací true, false() vrací false, lang(<<řetězec>>) zjistí, zda má uzel nastaven určitý jazyk. Funkce pro práci s řetězci string(<<jakýkoliv objekt>>) převede jakýkoliv objekt na řetězec, concat(<<řetězec>>, <<řetězec>>,...) spojí řetězce do jednoho, string-length(<<řetězec>>) vrátí délku řetězce, starts-with(<<řetězec>>, <<hledaný řetězec>>) vrátí true, pokud se na začátku řetězce vyskytuje hledaný řetězec, jinak false, contains(<<řetězec>>, <<hledaný řetězec>>) vrátí true, obsahuje-li řetězec hledaný řetězec, jinak false,

22 2.4 Dotazovací jazyky 22 substring(<<řetězec>>, <<začátek>>, <<délka>>) vyjme část řetězce o zadané délce, substring-before(<<řetězec>>, <<hledaný řetězec>>>) vrací část řetězce, která se vyskytuje před hledaným řetězcem, substring-after(<<řetězec>>, <<hledaný řetězec>>>) vrací část řetězce, která se vyskytuje za hledaným řetězcem, translate(<<řetězec>>, <<znaky k nahrazení>>, <<nové znaky>>) v řetězci zamění znaky k nahrazení za nové znaky, normalize-space(<<řetězec>>) v řetězci budou odstraněny přebytečné mezery. (Kosek, 2009)(Pokorný, 2008) XQuery XQuery se využívá pro komplexní dotazování nad samotnými XML dokumenty a databázemi uchovávající XML dokumenty. XQuery vyvinulo konsorcium W3C z jazyků XML-QL, XQL, Quilt, YALT. XQuery kombinuje prvky jazyků XPath 2.0 a SQL, kdy se snaží o jednodušší práci s databázemi uchovávající XML. Podpora XQuery v databázových systémech je široká, od relačních, přes objektově relační až po nativní XML databáze. Nativní XML databázové systémy často poskytují rozšíření jazyka XQuery, pomocí něhož lze data také upravovat, mazat či vkládat nová. Oproti XPath 2.0 je XQuery rozšířeno o konstruktory, FLWOR výrazy, podmíněné výrazy, třídění. S XPath 2.0 sdílí stejný datový model. Pokud umíme tvořit dotazy v XPath 2.0, stejně tak jsme schopni pracovat s XQuery 1.0. (Pokorný, 2008) XQuery se využívá pro vyjmutí informací z webové služby, transformaci XML na XHTML, vyhledávání informací ve webových dokumentech a vytvoření souhrnných reportů. XQuery je case-sensitive. Elementy, atributy a proměnné musí mít názvy validní podle XML. Proměnné začínají znakem dolar, např. $item. Komentáře jsou vymezeny (: a :), např. (:Toto je komentář.:). V XQuery dotazech mohou být řetězce ohraničeny apostrofy či uvozovkami. FLWOR výrazy jsou pojmenovány podle jejich struktury For, Let, Where, Order by, Return. Podmínka where a seřazení order by jsou nepovinné. Příklad FLWOR dotazu, který vrátí všechny literární zdroje vydané po roce 2000 a seřazené podle názvu: for $item in collection( bibtex )//bibitem where $item/year > 2000 order by $item/title return $item Funkce collection(<<název kolekce>>) umožňuje pracovat s kolekcí dokumentů, také existuje funkce doc(<<název dokumentu>>), která otevře XML dokument. Klauzule for uloží všechny bibliografické citace do proměnné $item. V části where jsou citace omezeny pouze na ty, které mají element year větší než Seřazení dat se definuje za klíčovým slovem order by, v uvedeném příkladu budou

23 2.5 Možnosti ukládání XML dat 23 výsledná data seřazena podle elementu title. Co má dotaz vrátit, určuje klauzule return, v našem případě vrátí celou bibliografickou citaci. (W3Schools, c a) 2.5 Možnosti ukládání XML dat Vývojáři webových služeb, aplikací pro výměnu dat (v oblasti B2B, B2C) a dalších aplikací pracujících s XML daty, potřebují XML data ukládat perzistentním způsobem. Poněkud zastaralým způsobem se může jevit uložení v rámci souborového systému nebo v DBS reprezentovat XML data nestrukturovaně jako znakové objekty. Tyto způsoby totiž stěžují tvorbu jakýchkoliv aplikací. Potřebujeme-li XML data aktualizovat, dotazovat se nad nimi a využít předností, které jazyk XML nabízí, je vhodné XML soubory spravovat přes databázový systém. Odpověď na otázku, jaký databázový systém zvolit, není jednoduchá. Vždy záleží na struktuře XML souborů a jak s nimi budeme dále nakládat. Zpočátku bude vhodné definovat typy XML dat a některé základní pojmy související s ukládáním XML dat. Pojem round-tripping Hovoříme-li o ukládání XML dat, je nutné zavést pojem round-tripping. Tímto pojmem se rozumí problém zpětné rekonstrukce dat tak, jak byly uživatelem do databáze zadány. U relačních DBS dochází ke změně dat nejčastěji při vstupu, kdy se ignorují komentáře, pořadí elementů, formátovací prvky (mezery mezi elementy), sekce CDATA, instrukce pro zpracování, které mohou být potřebné při strojovém zpracování či při ověření dokumentu pomocí elektronického podpisu. (Pokorný, 2005) Datově orientované XML dokumenty U data-centric dokumentů je hlavní důraz kladen na data. Příkladem tohoto typu mohou být produktové katalogy, faktury, objednávky, export databázových tabulek do XML formátu včetně zaznamenání všech relací. Jsou vytvářeny a zpracovávány převážně strojově. U tohoto typu dokumentů se data poměrně často opakují, na pořadí elementů většinou nezáleží. Vhodnějším způsobem uložení se prozatím jeví relační databázový systém. Většina komerčních relačních DBS podporuje nástroje pro práci s XML. Samozřejmě lze tato data uložit do nativních XML DBS kvůli struktuře dokumentu 9, rychlosti získání dokumentu z databáze 10, či chceme-li využít specifických XML technologií. Dokumentově orientované XML dokumenty Document-centric dokumenty většinou představují nestrukturovaná data v podobě článků, knih, ů, webových stránek apod. Zabýváme se dílčími částmi doku- 9 Nevhodná struktura dokumentu pro relační databázi může být taková, že by mapováním XML dokumentu do ní vznikalo mnoho sloupců s prázdným obsahem (hodnotou null), popř. by se dokument namapoval do velkého množství tabulek. 10 Rychlost závisí na konkrétní NXD. Musí-li být odpověď na dotaz pospojována z mnoha tabulek, pravděpodobně bude NXD rychlejší.

24 2.5 Možnosti ukládání XML dat 24 mentu dle jejich sémantického významu, struktura je nepravidelná a málo členitá, může záležet na pořadí elementů. Tento typ dokumentů je vytvářen a zobrazován uživateli, zapříčinil vznik nativních XML DBS. U těchto databázových systémů dosahuje round-tripping své optimální úrovně, dokument uloží včetně logické struktury a zpět vrátí tatáž data. NXD je samozřejmě možné využít i pro datově orientované XML dokumenty. Kromě nativních XML DBS mohou být dokumentově orientované XML dokumenty uloženy do souborů v souborovém systému nebo jako BLOB (CLOB) 11 data v relačním DBS. Hranice mezi těmito typy dat není pevně stanovena, často se setkáváme s hybridními XML dokumenty, u nichž jeden typ částečně převládá. Velice záleží na konkrétním dokumentu a jeho pojetí. (Žižka, 2003) (Pokorný, 2008) (Michalička, 2009)(Vanický, 2004) Nyní je možné představit několik možností, jakým způsobem XML data ukládat Soubory v souborovém systému XML dokumenty může být vhodné ukládat v souborovém systému, vlastníme-li větší množství malých XML souborů. Další výhodou tohoto typu uložení je použití standardních nástrojů při prohledávání souborů, ovšem dotazování je velice omezeno. Dokument je možné upravovat pouze jako celek, nelze je vhodným způsobem indexovat a prohledávat Relační databázový systém Relační databáze se skládá z určitého počtu tabulek (entit) zastupující prvky reálného světa. Prvek reálného světa má určité vlastnosti, které se v relační databázi nazývají atributy, jedná se o sloupce tabulky. Každý záznam tvoří jeden řádek tabulky, který představuje základní jednotku relační databáze. Každá tabulka zobrazuje relaci mezi řádky a sloupci. Tabulky jsou mezi sebou provázány určitým typem vazby. Data z tohoto typu databází se získávají dotazovacím jazykem SQL. Nepodporuje-li databázový systém formát XML, lze do něj data přenést prostřednictvím aplikační vrstvy nazývané middleware (např. IBM XML for Tables, Microsoft ADO a další). Existuje více možností, jakým způsobem lze XML data v rámci relačního DBS uchovávat: Datový typ BLOB (CLOB) Celý XML dokument je uložen do jednoho sloupce s datovým typem BLOB nebo CLOB, také jako s celkem se s ním musí dále pracovat. Relační DBS nám takto poskytne víceuživatelský přístup a transakce. Vyhledávání a indexace nad BLOB daty je u většiny relačních DBS neefektivní, jedná se však o nenáročnou implementaci. 11 BLOB Binary Large OBject, CLOB Character Large OBject.

25 2.5 Možnosti ukládání XML dat 25 Relační databázové systémy s podporou XML Databáze s označením XML enabled již obsahují určitý algoritmus, který transformuje data mezi datově orientovaným XML dokumentem a relační databází. Datový model XML je hierarchický. Mohou, ale nemusí, se v něm opakovat určité části, a proto je velice obtížné (někdy i nemožné) převést XML data do relační databáze. Relační model má slabou podporu pro hierarchická data 12. U relačního modelu dat nezáleží na pořadí 13. Existuje mnoho způsobů mapování XML dat do relační databáze. V praxi jsou potřebná XML data často rozdělena do velkého počtu tabulek, čímž se dotazy nad daty zesložiťují a návrat hodnot se časově prodlužuje. Ovšem některé typy dotazů převedené do jazyka SQL mohou být velice rychlé. Rozložení a následné složení XML dokumentů je již časově náročnější. Objektově relační databázové systémy s podporou XML Tento typ databáze se více hodí pro uložení datově orientovaných XML dokumentů. Mapování smíšeného obsahu elementu z dokumentově orientovaných XML dokumentů není efektivní. Původní struktura XML souboru není při mapování do databáze plně zachována. Mezi výhody tohoto způsobu uložení se řadí indexace a vyhledávání, práce s částí XML dokumentu (nemusíme již pracovat s XML dokumentem jako celkem). Nativní XML typ Již existují i relační DBS, které nabízí nativní XML úložiště se všemi funkcemi. Pracovat s nativním XML typem je velice transparentní, podporovány jsou dotazovací jazyky XQuery a SQL/XML 14. Vývoj relačních SŘBD tíhne k podpoře nativního XML typu. Uživatelé tak mohou pracovat jak s relačními, tak XML daty zároveň (přitom se s XML daty zachází nativně). (Vanický, 2004)(Kosek, c ) Příklady relačních databázových systémů Microsoft SQL Server 2005 zajišťuje správu, silné dotazování, modifikaci a indexaci relačních i XML dat v jediné databázi. XML data můžeme používat zároveň s relačními daty a SQL aplikacemi. SQL Server 2005 používá kódování UTF-16. Jedná se o jakési rozšíření možností pracovat s XML daty. Samozřejmostí je také záloha, obnovení a replikace XML dat. Na straně serveru se XML data rozparsují do tabulek pomocí OpenXML. Uživatel zadává dotazy nad XML daty v jazyce SQLXML (podmnožina jazyka XPath). Dotaz SELECT je upraven o klauzuli FOR XML (namísto FOR), který vrátí z databáze množinu XML elementů. OpenXML vyhodnotí XPath výraz z hodnot záznamů v tabulkách. Tato verze databázového systému již podporuje W3C XML Schema (XML dokument může, ale také nemusí, 12 Hierarchii lze v relační databázi implementovat pouze pomocí cizího klíče. 13 Pro určení pořadí dat v tabulce bychom museli vytvořit nový sloupec. 14 SQL/XML je rozšířením jazyka SQL o: datový typ XML, vytváření XML dat a mapovací pravidla pro převod mezi XML a relačními daty.

26 2.5 Možnosti ukládání XML dat 26 mít určeno schéma/kolekci schémat). Nabízí možnost tvorby šablon v rámci XML dokumentů, kde jej můžeme rozšířit o dynamickou část, která se bude měnit v závislosti na výsledku FOR XML dotazu. Širokou možnost manipulace s XML daty zajišťuje podpora jazyka XQuery. Tento typ SŘBD má také svá úskalí. Mapování XML dat do tabulek je výhodné pouze pro plně strukturované XML dokumenty. Jazyk SQLXML nepodporuje operátor pro přístup k potomku na jakékoliv nižší úrovni (//). Pořadí elementů v rámci XML dokumentů nejsou zachována, což je pro správu dokumentů velkou nevýhodou. Společnost Microsoft si je těchto nedostatků vědoma, pracuje na jejich odstranění a zaměřuje se nativní podporu XML. Podpora XML formátu je již od verze MS SQL Server (Pal, Fussell, Dolobowsky, 2005) Oracle Database 11g je nejnovější verze SŘBD od firmy Oracle, jež je lídrem ve svém oboru. Zahrnuje v sobě vysoce výkonnou technologii XML DB. XML DB je nativním XML úložištěm, které umožňuje: využít výhod relační databáze i XML, transformaci relačních dat do formátu XML i opačným směrem, správu XML Schema, správu životního cyklu XML informací (Information Lifecycle Management ILM) nová data jsou ukládána na výkonnějším úložném stupni, zatímco pro starší data postačí pomalejší a méně drahý úložný stupeň, indexovat obsah tabulky s různými typy sloupců (funkce XMLIndex - umí pracovat s SQL, XML Schema a XQuery datovými typy), používat jazyk XQuery, SQL/XML, Java Specification Requests a XML dokumenty založené na schématu či nikoliv. XML data se ukládají binárně 15, nebo jako datový typ CLOB (Character Large Object Binary). Samozřejmě jsou dodržovány standardy W3C, IETF, ANSI/ISO (např. podpora SQL/XML). Funkce XMLTable umožňuje seskupovat a řadit XML data. Oracle XML DB umí rozdělit obrovské tabulky na menší díly partitions, které se lépe spravují, rychleji se vyhledávají data a není nutné dotazy nad databází určitým způsobem upravovat. S těmito částmi tabulek lze pracovat pomocí DML operací. Tato verze SŘBD je vylepšena o cache pro Schema validátor a podporu průmyslových schémat (např. OAGIS, MPEG-7, GML... ). Určitá podpora XML existuje již od verze Oracle 8i. (Lee, 2009) IBM DB2 Universal Database již v roce 2003 zajišťovala relační a objektově relační podporu XML. Součásti, které poskytovaly podporu XML po doinstalování k základnímu balíčku databáze, se nazývaly DB2 XML Extender a datablade. Uživatelé již mohli využít jazyka XPath, podmnožiny funkcí z jazyka SQL/XML, jež rozšířila základní verzi o nové datové typy, funkce, vyhledávání a indexaci XML 15 Binární XML data lze ukládat více způsoby v závislosti na požadovaném výkonu a samotné aplikaci.

27 2.5 Možnosti ukládání XML dat 27 dat. XML dokument je transformován do relační tabulky jako XML sloupec, XML kolekce či jako CLOB. Uložení do XML sloupce je vhodné, pokud potřebujeme nad daty často vyhledávat a data minimálně upravovat. XML sloupec může být trojího datového typu: XMLVarchar (pro uložení menších XML dokumentů), XMLCLOB (pro uložení větších XML dokumentů) nebo XMLFile (vazba na soubor uložený v lokálním souborovém systému). Indexaci určitých elementů lze určit pomocí Data Access Definition (DAD přeloženo do češtiny definice přístupu k datům ). XML kolekcí využijeme tehdy, předpokládáme-li častou aktualizaci uložených dat. XML kolekce je množina relačních tabulek, mapování z XML do relačních dat a naopak je definováno v DAD. (Chaudhri, Rashid, Zicari, 2003) Firma IBM deklarovala, že bude IBM DB2 9 první relační databází, která bude podporovat přístup a uložení XML dokumentů v nativní podobě. To se IBM opravdu podařilo, v současnosti nabízí: relační a plně nativní XML datový server (purexml), podporu jazyka XQuery, SQL/XML, XML Schema, DTD, aktualizace a uložení dobře strukturovaných XML dokumentů jako datový typ XML (v přirozené podobě), nástroje DB2 podporující XML Control Center, command line processor, IBM Data Studio a DB2 Development Add-In pro Microsoft R Visual Studio.NET, podporu XML v mnoha programovacích jazycích C, C++, C#, Visual Basic, PHP, Perl, Java, COBOL, vylepšení indexace dat, tím také zrychlení vyhledávání a mnohé další. (IBM, 2010) Postgres a MySQL jsou zástupci open source databázových systémů, které s podporou XML oproti výše zmíněným dlouho otálely. Od verze Postgres 8.3 se již objevuje podpora XML přímo v jádru systému, lze použít jazyk SQL/XML pro generování XML dokumentů, XML schémat či pro mapování relačních dat do XML. (Stěhule, 2009) MySQL 6.0 ukládá XML data jako datový typ varchar, nabízí podporu jazyka XPath včetně jeho funkcí pracujících s XML daty (např. ExtractValue(), UpdateXML()... ), export a import dat v XML formátu. (Stephens, 2010) Nativní XML databázový systém Nativní XML databázové systémy (zkráceně NXDBS) jsou speciálně vyvinuty pro ukládání XML dokumentů. Při ukládání XML dokumentu v přirozené (nativní) podobě pracuje NXD s datovým modelem XML, čímž je uložený XML dokument totožný s původním XML dokumentem. Pro uložení dokumentově orientovaných XML dokumentů je NXDBS nejlepší volbou. NXDBS jsou vhodné i pro ukládání datově orientovaných XML dokumentů, jelikož je většinou návrat celého XML dokumentu rychlejší než v relačním DBS (nemusí se provádět mapování z relačního do XML

28 2.5 Možnosti ukládání XML dat 28 datového modelu a spojování tabulek). Logická forma uložených dat v databázi již může být libovolná. V závislosti na způsobu uložení dělíme NXDBS na dva typy: Text-based textově orientované NXDBS ukládají data v textové podobě, nad níž si vytvářejí indexy pro snazší vyhledávání a lepší orientaci v datech. Model-based modelově orientované NXDBS uchovávají objektový model (Infoset, DOM, SAX, XPath apod.) XML dokumentu uložený v relačním, objektově relačním nebo vlastním formátu. Jsou-li uloženy v relačním či objektově relačním formátu, není výkonnost systému nějak odlišná od relačních databázových systémů s podporou XML. Vlastní formát je tvořen ukazateli na místa uložení uzlů, přesná implementace není většinou známa. Modelové NXDBS s proprietárním formátem jsou výkonově shodné s textovými NXDBS. Základním prvkem NXDBS je XML dokument, ten může být uložen samostatně, nebo v rámci kolekce XML dokumentů. Kolekce XML dokumentů se mohou do sebe zanořovat a vytvářet tak hierarchickou strukturu, většinou se jedná o XML dokumenty se společným schématem (není to však podmínkou). Přirovnáním k relačnímu databázovému systému je XML dokument řádkem tabulky a kolekce XML dokumentů tabulkou. Stejně jako ostatní typy databází poskytují NXD zabezpečení, transakce, víceuživatelský přístup, dotazovací jazyk a mnohé další. Při přerušení komunikace či výpadku databáze zajistí transakce konzistentní a spolehlivé zpracování požadavků. Na konzistentnost dat se při souběžném přístupu kladou tyto požadavky: atomicita, konzistence, nezávislost, trvanlivost (zkratka ACID). Ještě před několika lety byl problém uzamknout během transakce pouze určitý uzel, uzamykal se celý XML dokument. Touto problematikou se zabýval také S. Dekeyser, který navrhl určitá řešení. Dnes již většina NXDBS umí uzamknout určitou část XML dokumentu. Skupina XML:DB vyvinula jazyk XUpdate, což je rozšíření jazyka XQuery o mazání, vkládání a úpravu částí XML dokumentů bez závislosti na jejich původu. R. Bourret uvádí ve svém výčtu 40 nativních XML databázových systémů, mezi nejznámější lze zařadit Berkeley DB XML, exist, Sedna XML DBMS, Tamino, Xindice a mnohé další 16. (Bourret, 2010) Příklady nativních XML databázových systémů Představitelů této kategorie existuje opravdu mnoho. Zaměříme se na open source systémy, které se neustále vyvíjí a jsou mezi uživateli oblíbené. Pro porovnání databázových systémů pracujících s XML dokumenty se provádějí výkonnostní testy pomocí XBench, XMark či The Michigan Benchmark. exist-db 1.4 je aktuální verze open source databázového systému založeném na XML technologii. Na jeho tvorbě se podílí skupina vývojářů včele s Wolfgangem Meierem již od roku Některé vlastnosti exist-db: 16 Celý přehled nativních NXDBS se nachází na adrese:

29 2.5 Možnosti ukládání XML dat 29 naprogramována v jazyce Java, čímž je zajištěno multiplatformní použití (v systému musí být nainstalována Java5), data jsou ukládána v XML datovém modelu, indexace celého textu ukládána do struktury B+ stromů pomocí stránkování souborů (probíhá při tvorbě uzlu), podporuje XQuery 1.0, XPath 2.0, XSLT 1.0 nebo XSLT 2.0, XUpdate, XQuery update rozšíření a triggery, zaměřuje se na podporu nových modulů XQuery, jako je např. XProc (procesor pro práci s XML dokumenty), XForms (přemění XML na webovou stránku XHTML včetně JavaScriptu), poskytuje různé webové rozhraní WebDAV, SOAP, XML-RPC, Atom Publishing Protocol..., přístupová práva na úrovni kolekcí a samotných XML dokumentů, záloha dat ve formátu XML, implicitní a explicitní validace dokumentů, velikost XML dokumentu není nijak omezena, nepodporuje transakce, umožňuje rozšířit funkčnost o další nabízené moduly: komprese dat, časové datové typy, práce se soubory a adresáři, HTTP klient, uložení obrázků do databáze, odesílání ů, matematické funkce, SQL modul pro dotazování nad relačními databázovými systémy, podpora XSL-FO a další. Výčet není zcela úplný, pro získání podrobných informací odkazujeme na stránky (Meier, 2009) Sedna 3.3 je dalším zástupcem open source NXDBS, který se vyvíjí od roku 2003 na akademické půdě pod záštitou Institu systémového programování a Ruské akademie věd. Autoři od začátku pracovali na vlastním databázovém systému (nepoužili pro uložení dat databázi od jiných výrobců), který uzpůsobovali pro práci s XML daty. Síťový protokol Sedny je binární. Sedna se chlubí malými paměťovými nároky a vysokým výkonem. Přehled vlastností Sedny: oproti ostatním NXDBS 17 je implemenotvána v jazyce C/C++, vyžaduje Appache webový server, poskytuje modul pro spojení s Appache serverem, indexace pomocí B+ stromů, podpora kódování Unicode (UTF-8), plné využití ACID transakcí (lze nastavit Manual/Auto Commit/Rollback), podporuje datový typ BLOB, XUpdate (založen na jazyce XQuery, umožňuje měnit jednotlivé uzly dokumentu), XPath, XQuery (validováno pomocí W3C XQuery Test Suite), full-textové vyhledávání pomocí XQuery dotazů (musí být doinstalováno dt- Search), 17 Ostatní NXDBS jsou implementovány v jazyce Java.

30 2.6 Citace literárních zdrojů 30 import/export zálohy databáze (při přechodu na jiné verze), průběžná záloha databáze (archivace změn v databázi), poskytuje širokou nabídku API: Java, C, C#, Perl, PHP, Python, Ruby, Delphi, a další, zabezpečení v podobě správy uživatelů, nastavení jejich rolí a oprávnění v kolekcích XML dokumentů i u XML dokumentů samotných, XML dokumenty mohou být do Sedny uloženy přímo z či ftp:// umístění, možnost navázat SQL spojení z XQuery, rozšíření jazyka XQuery o podporu triggerů, implementace externích funkcí XQuery v jazyce C/C++. Podrobnější informace získáte na webových stránkách tohoto databázového systému 18. Podrobný popis procesů a uložení dat databázového systému Sedna je popsán na grinev/mypapers/sedna.pdf. (Institute for System Programming RAS, c ) 2.6 Citace literárních zdrojů Při tvorbě odborných publikací, knih, článků apod. se neobejdeme bez citací použitých literárních zdrojů. Citace je umístěna v textu, na konci kapitoly, na konci dokumentu nebo pod čarou. Pokud dokument obsahuje i seznam použité literatury, stačí, když citace obsahuje alespoň jednu informaci, která zajistí propojení mezi těmito dvěma místy, čímž identifikuje citovaný zdroj, a zároveň místo jeho použití. Nejčastěji se používá číslo (pořadí v seznamu literatury), nebo jméno autora a rok vydání, popřípadě rozsah stránek. V češtině musí citace dodržet určitý tvar a styl podle normy ČSN ISO 690 a ČSN ISO Nově vzniká mezinárodní norma ISO/DIS 690, která by v budoucnu měla nahradit obě dosavadní normy a rozšířit je o citace zvukových či obrazových dokumentů a map. Novinkou v oblasti citování jsou trvalé jedinečné identifikátory citovaného zdroje (DOI, URN, HDL, ARK), které lze nalézt v databázích autoritních dat, zařazují se do URL adres. V budoucnu by mohlo postačit v citaci uvést pouze tento jedinečný identifikátor. (Bratková, 2008) LaTeX Volně šiřitelný sázecí systém TEX 19, se od doby svého vzniku (1983) téměř nezměnil. Vzniklo několik nadstaveb, z nichž nejvýznamnější je L A TEX. Obrovskou výhodou systému TEX je vysázení graficky dokonalého dokumentu a přizpůsobení se jakémukoliv národnímu jazyku. 18 Více na 19 TEX přeloženo do češtiny znamená technologie, umění.

31 2.6 Citace literárních zdrojů 31 Systém L A TEX umožňuje sázet články, zprávy, knihy, matematické vzorce atd. Ukážeme si, jakým způsobem je možné sázet citace a seznam literatury. Pro pochopení následujícího textu se předpokládá alespoň základní znalost syntaxe systému L A TEX (více např. na adrese Seznam literatury uvedený na konci dokumentu se sází pomocí prostředí thebibliography, jehož položky jsou uvozeny příkazem \bibitem{označení}text. Stejné označení se pak používá přímo v textu dokumentu v odkazu na citovaný zdroj, který vytvoříme příkazem \cite{označení}. Položky seznamu literatury jsou číslovány automaticky. Uvedeme názorný příklad, nejdříve zdrojový text ve formátu L A TEX: \documentclass[12pt]{article} \usepackage{czech} \usepackage[cp1250]{inputenc} \begin{document} Určitý text, který vznikl za použití literárního zdroje uvedeného v seznamu literatury~\cite{rybicka03}. \begin{thebibliography} \bibitem {rybicka03} Rybička,~J. \emph {LaTeX pro začátečníky}. 3.\,vydání. Brno: KONVOJ, ~s. ISBN \end{thebibliography} \end{document} Výsázený text bude vypadat takto: Určitý text, který vznikl za použití literárního zdroje uvedeného v seznamu literatury [1]. [1] Rybička, J. LaTeX pro začátečníky. 3. vydání. Brno: KONVOJ, s. ISBN Sázení citací pomocí L A TEXu je velice jednoduché. Ovšem pokud publikujeme častěji a vlastníme větší množství bibliografických citací, je již jejich správa a přepracování výsledného stylu daleko pracnější. Tyto nevýhody řeší nástroj BibT E X, který se nejčastěji používá ve spojení s L A TEX dokumenty. (Rybička, 2003) BibTeX Seznam použité literatury se nemusí nacházet přímo v publikovaném dokumentu, ale lze jej ukládat i do samostatného textového souboru s koncovkou.bib, jemuž se říká bibliografická databáze. Prostřednictvím nástroje BibT E X se odkazujeme na tyto tituly v jakémkoliv L A TEX dokumentu, v němž BibT E X automaticky vygeneruje seznam literatury podle použitých citací. BibT E X uživateli usnadní mnoho věcí. Nemusí se starat o to, které položky budou ve výsledku zobrazeny a ani jakým stylem bude seznam literatury vysázen. Stačí BibT E Xu zadat název stylu a o vše ostatní se postará sám. Existuje široká nabídka

32 2.6 Citace literárních zdrojů 32 předdefinovaných stylů, lze si vytvořit i vlastní styl. Pokud jsou dokumenty sázeny v češtině, měl by se použít jeden z modifikovaných stylů vyhovující českým normám, např.: czechiso.bst 20 nebo csplainnat.bst 21. BibT E X není case-sensitive, je tedy jedno, jakým způsobem zapíšeme malá a velká písmena v klíčových slovech. (Martinek, 2008) Oproti předchozí verzi není třeba L A TEX dokument mnoho upravovat. Je nutné použít balíček cite, popř. jiný, pokud je použitý styl odvozen od jiného balíčku. V textu se uvádějí odkazy na citace klasickým způsobem. Styl, který má BibT E X pro vysázení použít, určíme takto: \bibliographystyle{nazev_stylu}. U příkazu pro vysázení seznamu literatury je potřeba uvést název bib souboru, který obsahuje seznam bibliografických citací: \bibliography{nazev_bib_souboru}. Takto může vypadat bibliografická citace v souboru db ref.bib author = {J. Rybi\v{c}ka}, title = {LaTeX pro začátečníky.}, publisher = {KONVOJ}, year = {2003}, pages = {238}, isbn = { } } Za se nachází typ literárního zdroje, v ukázkovém příkladě se jedná o knihu. Mezi další typy patří: článek v časopise (article), brožura (booklet), kapitola nebo stránky v knize (inbook), článek ve sbírce (incollection), článek na konferenci (inproceedings), technický manuál (manual), diplomová (bakalářská) práce (masterthesis), dizertační práce (phdthesis), sborník konference (proceedings), technická zpráva (techreport), dokument nepublikovaný veřejně (unpublished), ostatní dokumenty (misc). Každý typ má definovány své povinné a nepovinné položky. Pokud uživateli definované položky nestačí, může si přidat další libovolné položky, ovšem ty BibT E X při zpracování zcela ignoruje. Jedinou společnou povinnou položkou je klíč citace (v našem příkladu: rybicka03), který se používá v odkaze na literární zdroj. Povinné položky u knihy jsou autor, název knihy, vydavatelství a rok vydání. Z příkladu lze vyčíst, že jsou jednotlivé položky odděleny čárkou, identifikátory leží na levé straně od znaménka = a na pravé straně jsou uvedeny ve složených závorkách jejich hodnoty. Existuje i jiný zápis hodnot, ale pro nás bude zmíněný způsob postačující. Občas se může stát, že BibT E X neumí u autora správně rozeznat, co je jméno a co příjmení, pokud obsahuje diakritiku. Pro správné vysázení se doporučuje náhrada diakritických znamének za \, \", \v. Chceme napsat článek a použít odkaz na citaci z naší strohé bibliografické databáze. Článek bude uložen v souboru article.tex : 20 Styl czechiso je možné stáhnout z této adresy: martinek/latex/czechiso.html.cs.iso Styl csplainnat je k dispozici na:

33 2.7 PHP 33 \documentclass[11pt]{article} \usepackage{cite} \begin{document} \title{můj článek} Informace uvedené v tomto odstavci jsem získala z jedné knihy.~\cite{rybicka03}. \bibliography{db_ref} \bibliographystyle{alpha} \$end{document} Nyní stačí soubor article.tex zkompilovat: latex article bibtex article latex article latex article I u jiných typů odkazů musíme průchod provést dvakrát, aby se ve výsledném dokumentu projevily změny, BibT E X není výjimkou. (Feder, 2006) Lidé mají potřebu sdílet bibliografické informace. Otázkou je, jaké zvolit centralizované úložiště. Existuje softwarový produkt Php Bibtex Database Manager 22, jež se vyvíjí již od roku Bohužel tento produkt slouží pouze k užití v rámci lokální sítě. Tento typ databáze nelze využít v prostředí Internetu kvůli nedostatečnému zabezpečení, implemetována je pouze slabá autentifikace uživatele. Bibtex Database Manager vyžaduje webový server s podporou PHP a MySQL databázi. (Totel, c ) Pokud bychom data ukládali do relační databáze, nevyhneme se neefektivnímu využití definovaných sloupců tabulek. Tento problém lze vyřešit uchováním bibliografických citací ve formátu XML v nativním XML databázovém systému. 2.7 PHP PHP 23 je nejpoužívanějším skriptovacím programovacím jazykem pro tvorbu serverových částí webových aplikací, přestože trpí určitými nedostatky. PHP je oblíbené zejména kvůli své jednoduchosti, dobré dokumentaci a velkému množství volně šiřitelného kódu. Syntaxe jazyka PHP je odvozena od několika programovacích jazyků Perl, Java, C a Pascal. PHP umožňuje přístup téměř ke všem databázovým systémům, dále podporuje řadu internetových protokolů a není závislé na operačním systému. Webhostingové služby považují PHP za jakýsi standard. První verze PHP vznikla roku 1995, nejnovější verze nese označení My se v dalším popisu zaměříme především na změny v jazyce PHP5 a na podporu jazyka XML. (PHP, 2010) 22 Odkaz ke stažení tohoto produktu: 23 Původní znění zkratky PHP Personal Home Page bylo změněno na Hypertext Preprocessor.

34 2.7 PHP 34 Již verze PHP3 nabízela omezenou funkcionalitu pro práci s XML pomocí rozhraní, které bylo inspirováno rozhraním SAX. Verze PHP4 rozšířila podporu XML o nestandardní rozhraní DOM, XSLT procesor implementovaný pomocí knihovny libxml2, libxslt a XSLT procesor Sablotron od českých tvůrců. Teprve s příchodem PHP5 v roce 2004 mohli programátoři začít tvořit aplikace pomocí vylepšeného objektově orientovaného přístupu, využít lepší podpory jazyka XML a získat rozšíření komunikace s databázovým systémem MySQL. Dnes jsou podporovány pouze verze PHP 5.0 a vyšší, PHP5 není zpětně kompatibilní s PHP Objektově orientovaný přístup V PHP4 se objevily určité špatně pojaté základy objektově orientovaného přístupu. Ve verzi PHP5 je již OOP implementován v pořádku. Současný trend upřednostňuje před procedurálním přístupem přístup objektově orientovaný. U větších projektů je OOP nutností. OOP zajistí snazší úpravu kódu, znovu použitelnost a některé problémy umí vyřešit snadněji než procedurální přístup. V PHP5 jsou objekty předávány odkazem. Existuje velké množství funkcí pro práci s objekty, ať už se jedná o konstruktory, destruktory, rozhraní, abstraktní třídy, statické, veřejné, chráněné, soukromé proměnné či metody atd. V PHP5 definuje třída objekt. Jeho proměnné a metody (modifikátory) určují, jak bude použit. Několikanásobná dědičnost není v PHP5 povolena, dědičnost pomáhá přizpůsobit objekty různým okolnostem. V projektu je zapotřebí vytvořit PHP skript s danou třídou, tuto třídu v potřebném skriptu includovat a vytvořit její instanci, s kterou lze dále pracovat Podpora XML v PHP 5.3 Podpora XML je zajištěna knihovnami libxml2 a libxslt. Pro práci s XML jsou implementována API: SimpleXML, DOM, SAX, XMLReader (viz kapitola 2.1.2). Generovat XML dokument v PHP 5.3 lze pomocí XMLWriter. Dále podporuje jazyk XSLT (viz kapitola 2.3.2), XPath (viz kapitola 2.4.1) a webové služby (SOAP a WSDL). J. Kosek doporučuje ve většině případů používat rozhraní XMLReader nebo DOM v závislosti na velikosti XML dokumentu. Jak již bylo zmíněno v kapitole 2.1.2, XML používá kódování Unicode. Ovšem řetězce v PHP jsou binární, nejsou abstrakcí Unicode. Pokud by měl skript nastaveno jiné kódování, musel by být u všech vstupů a výstupů v XML formátu zajištěn převod mezi znakovými sadami 24. V PHP skriptech se doporučuje používat kódování UTF-8. Omezení validace XML dokumentů oproti schématům jsou zobrazena v tabulce 1. V XML knihovnách jazyka PHP5 prozatím panuje nejednotný přístup k obsluze chyb. Předání chyb skriptu PHP a následnou vlastní obsluhu lze zajistit pomocí tohoto příkazu: libxml_use_internal_errors(true). V knihovnách libxml2 a libxslt chybí podpora těchto novějších technologií: XSLT 2.0, XSL-FO, XQuery, XProc. (Kosek, c2009) 24 Funkce pracující s XML vrací zpět řetězec v kódování UTF-8 bez ohledu na kódování vstupů.

35 2.8 Smarty šablony 35 Tab. 1: Možnost validace XML dokumentů v PHP5. Zdroj: (str. 18). API/Schéma DTD W3C XML Schema RELAX NG Schematron SimpleXML ano ne ne ne DOM ano ano ano ano, přes XSLT SAX ne ne ne ne XMLReader ano ano ano ne 2.8 Smarty šablony Současný trend vývoje webových aplikací směřuje k oddělení prezentační a aplikační logiky, nebo-li oddělení PHP/Perl skriptů od HTML/XHTML kódu. Tento přístup se vřele doporučuje větším projektům, na kterých se podílí více lidí. Kodéři se starají pouze o stránku vzhledu a nezasahují do práce programátorů. Vztah působí i obráceným směrem, kdy programátor nenarušuje stránku vzhledu. Trend je ale výhodné využít i u menších projektů, kód se velice zpřehlední. Šablonovací systém Smarty 25 je velice dobře přizpůsobený programovacímu jazyku PHP 26. Smarty je možno použít po té, co rozbalíme instalační archiv. V kořenové složce 27, kde jsou uloženy soubory webových stránek, založíme novou složku s názvem smarty a přesuneme do ní následující soubory: složku internals, složku plugins, Config File.class.php, debug.tpl, Smarty.class.php, Smarty Compiler.class.php. Dále je nutné vytvořit v kořenové složce složky: cache složka musí mít povolen zápis, budou se zde ukládat dočasné soubory, config slouží pro konfigurační soubory, templates do tohoto adresáře si uživatel ukládá své Smarty šablony s příponou.tpl, templates_c v tomto adresáři se dočasně ukládají zkompilované šablony, proto musí mít také povolena práva pro zápis. Nyní je potřeba Smarty nastavit předefinované cesty k jednotlivým adresářům. Vytvoříme potomka třídy Smarty a do jednotlivých cest k adresářům, jež Smarty používá, vložíme nové hodnoty. Skript NewSmarty.php vykoná vše zmíněné: <?php require smarty/smarty.class.php ; class NewSmarty extends Smarty { public function construct(){ $this->smarty(); $this->template_dir =./templates/ ; 25 Instalaci Smarty šablon je možné stáhnout z: 26 Smarty šablony lze použít od verze PHP a výše. 27 Pokud pracujeme na lokálním serveru, bude cesta k projektu projektu.

36 2.8 Smarty šablony 36 } $this->config_dir =./config/ ; $this->compile_dir =./templates_c/ ; $this->cache_dir =./cache/ ; }?> Ve skriptu index.php musíme includovat třídu potomka Smarty a vytvořit jeho instanci: <?php // --- include smarty require_once( scripts/class/newsmarty.php ); // --- vytvoření instance třídy NewSmarty - nyní můžeme se Smarty pracovat $smarty = new NewSmarty(); $date_time = Date("H:i:s, d. n. Y"); $smarty->assign( datum_cas,$date_time); $smarty->display( index.tpl );?> Pro práci se systémem Smarty jsou k dispozici dvě metody: assign a display. Metoda assign definuje proměnnou v systému Smarty (první parametr určí její název a druhý je její hodnota). Metoda display zajistí, že se do definovaných proměnných dosadí jejich hodnoty a uloží zkompilovanou Smarty šablonu do složky templates_c. Šablona pro hlavní stránku (index.tpl) obsahuje toto: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html xmlns=" xml:lang="cs" lang="cs"> <head> <title>úvodní stránka</title> </head> <body> {* takto se zapisuje komentář *} <h1>vítáme Vás!</h1> <p>aktuální datum a čas: {$datum_cas}</p> </body> </html> V šablonovacím systému můžeme používat nejen proměnné (v příkladu se jednalo o proměnnou $datum_cas), ale i komentáře, funkce, atributy, cykly, podmínky atd. (Mrozek, 2006)

37 2.9 AJAX AJAX Uživatelé kladli na webové aplikace neustále nové a nové požadavky, čímž také řídili jejich samotný vývoj. Webové aplikace implementované pomocí současných technologií (X/HTML, PHP, ASP, ASP.NET) dosahují při tvorbě interaktivního rozhraní pomyslného stropu. Omezením těchto technologií je především nutné znovunačtení při změně stavu a neschopnost zapamatovat si stavové informace. Neustálé odesílání informací od klienta na server a zpět snižuje rychlost a komfortnost aplikace. Uživatelé požadují, aby webové aplikace byly stejně uživatelsky přívětivé jako desktopové. Tento problém řeší AJAX, aktualizuje se pouze určitá část webové stránky (bez nutného znovunačtení celé stránky). Pojem AJAX poprvé použil v roce 2005 J. J. Garret ve svém článku AJAX: A New Approach to Web Applications, nebo-li AJAX: Nový přístup k webovým technologiím. Garret vytvořil schéma (viz obrázek 10 v příloze E), kde poukazuje na rozdíl mezi modelem klasických webových aplikací a modelem AJAXu. Je označován za technologii třetího tisíciletí. Přesněji řečeno AJAX není novou technologií, ale je určitým použitím několika technologií zároveň. O jaké technologie se jedná, již napoví plné znění této zkratky Asynchronous JavaScript and XML. Pro prezentaci využívá XHTML s CSS styly. Interaktivní komunikace a dynamické zobrazování údajů zajišťuje DOM. Požadavky a odpovědi mezi serverem a klientem se posílají prostřednictvím technologií XML, XSLT. Nejčastěji AJAX komunikuje se serverem asynchronně pomocí objektu XMLHttpRequest. JavaScript propojuje všechny technologie dohromady. Technologie, jež AJAX využívá, nejsou striktně vymezeny. Lze použít i synchronní komunikaci 28, rozdíl mezi asynchronní a synchronní komunikací demonstruje obrázek 11 z přílohy F. Formát pro zasílání zpráv nemusí být nutně v jazyce XML 29 a jako skriptovací jazyk nemusí být použit JavaScript. Ovšem základ AJAXu tvoří vždy objekt XMLHttpRequest, který zajišťuje komunikaci mezi skriptem a serverem. Provede-li uživatel na stránkách nějakou akci, Javascript na straně klienta zavolá na pozadí server, ten požadavek zpracuje (nejčastěji se používá skript PHP). Server odešle odpověď ve formátu XML, kterou JavaScript zpracuje a může tak zaktualizovat webovou stránku bez nutnosti jejího znovunačtení. Nejčastějším příkladem webových aplikací používajících AJAX jsou aplikace Googlu, ať už se jedná o známé Google Maps (mapy), Google Suggest (inteligentní našeptávač při vyhledávání), Gmail (poštovní klient) a podobně. Webové aplikace od Googlu si získaly oblibu právě díky své interaktivitě. Také dnes velice populární Facebook využívá všech výhod, které AJAX nabízí. Příkladů by se dala uvést celá řada, jelikož weboví programátoři používají AJAX velice často. (Lacko, 2008) Pro usnadnění práce webovým programátorům bylo vytvořeno několik knihoven (frameworků): jquery, DWR (Direct Web Remoting), GWT (Google Web Toolkit), ATF (AJAX Toolkit Framework), Dojo AJAX Toolkit, Prototype, Echo 2 a mnohé 28 Je-li použita synchronní komunikace, pak se v podstatě jedná o klasickou webovou aplikaci. 29 Dnes se pro zasílání zpráv velice často používá formát JSON.

38 2.9 AJAX 38 další. Webové stránky používající knihovny mají určité nevýhody: velikost knihoven, zpomalení načítání stránek, neustálé aktualizace knihoven, stahování totožných dat na server. Google pro vyřešení tohoto problému navrhl AJAX Libraries API. Google tak umožňuje využít jeho silnou infrastrukturu k hostování standardních javascriptových knihoven, což poskytuje tyto výhody: zajišťuje komplexní přístup k nejpopulárnějším JavaScriptovým knihovnám, vložení AJAX Libraries API do kódu stránek je velice jednoduché, je potřeba jej rozšířit pouze o jeden řádek, sníží latenci rychlá odezva při načítání knihoven z infrastruktury Googlu, aktualizace knihoven se provádí přepsáním čísla verze, knihovny jsou komprimovány, využívá paralelismus a zlepšuje cachování. Snížení latence se projevuje nejvíce v okamžiku, kdy k aplikaci přistupují lidé z různých částí světa, čehož by se dalo v rámci naší aplikace využít. Google dnes uvádí podporu těchto knihoven: jquery, jquery UI, Prototype, script.aculo.us, MooTools, Dojo, SWFObject, Yahoo! User Interface Library (YUI), Ext Core, Chrome Frame. Samozřejmě má toto řešení také své nevýhody. Hlavní nevýhodou je závislost na poskytovateli, který může službu vypnout, či jeho server nemusí být dostupný. U větších společností jako je Google, je server vždy dostupný a službu s velkou pravděpodobností rušit nebude. Ovšem velkou nevýhodou je bezpečnostní riziko 30, kdy vkládáme do stránky skript, nad nímž nemáme plnou kontrolu. (Google, c2010)(malý, 2010) 30 JavaSript se může dostat k citlivým informacím, či na serveru něco vykonávat.

39 3 METODIKA ŘEŠENí 39 3 Metodika řešení Po provedení důkladné analýzy současného stavu použitých technologií, lze začít s návrhem a tvorbou samotného systému pro uchovávání a vyhledávání BibT E X citací. Již v úvodu diplomové práce byl nastíněn problém vytvoření centrálního úložiště BibT E X citací. Skupina SoNet za dobu svého působení sesbírala kolem dvou set bibliografických citací, které byly poskytnuty k návrhu a implementaci systému. Skupina SoNet je tvořena uživateli z České republiky, Anglie, Španělska a Ruska, kteří působí v různých vědních disciplínách. Nejdříve byl problém prokonzultován s členem skupiny SoNet. Jedním z požadavků je, že výsledný systém musí komunikovat v anglickém jazyce. Mezi další požadavky lze zařadit uživatelskou přívětivost, příjemný grafický design a jednoduchou práci se systémem. Systém by měl umožnit vyhledávání na základě nejrůznějších kritérií a správu BibT E X citací. Tvorba systému probíhala v několika krocích. 3.1 Funkční požadavky Je potřeba stanovit základní vlastnosti systému: Modul pro práci s databází bude potřeba vytvořit metody, které obstarají základní práci s datovým úložištěm. Administrace uživatelů přidání nového uživatele a zařazení do skupiny s danými oprávněními, data o uživatelích budou uložena v samostatném XML dokumentu. Přihlášení, odhlášení uživatelů základní zabezpečení přístupu do informačního systému. Ověřování správnosti zadaného jména, hesla a přístupových práv budou probíhat porovnáním se záznamem v XML dokumentu, jež bude obsahovat všechny vytvořené účty uživatelů. Heslo bude uchováno v nerozluštitelném tvaru vytvořeném hashovací funkcí SHA-1. Registrace uživatelů uživatelé si založí vyplněním registračního formuláře vlastní účet. Import BibT E X citací z XML dokumentu uživatelům bude dovolen import bibliografických citací z XML dokumentu, musí být validní podle navrhnutého schématu a identifikátory jednotlivých citací musí být jedinečné. Uložení bibliografické citace tato funkce bude dovolena přihlášeným uživatelům. Administrace bibliografických citací bude určena pro přihlášené uživatele, bude se jednat o úpravu a mazání uložených citací. Vyhledávání nad všemi položkami uložených dat zadaný řetězec bude porovnáván se všemi položkami bibliografických citací. Rozšířené vyhledávání uživatelé budou specifikovat, dle jakých parametrů má být vyhledáváno.

40 3.2 Uživatelé Uživatelé Nepřihlášení uživatelé budou moct v daném informačním systému pouze vyhledávat. Registrovaní uživatelé informačního systému budou rozděleni do tří skupin: administrátoři, manažeři a uživatelé. Přihlášení uživatelé budou mít práva rozšířena o administraci vlastních BibT E X citací. Manažeři mohou spravovat uživatelské účty stejné nebo nižší úrovně a také všechny citace bez ohledu na jejich vlastníka. Administrátoři mají práva rozšířena o správu veškerých uživatelských účtů, XML dokumentů a kolekcí XML dokumentů v rámci databáze. 3.3 Návrh grafického uživatelského rozhraní Grafické uživatelské rozhraní bude navrhnuto moderním stylem, ovšem zároveň si bude brát za cíl být přehledné a pro uživatele intuitivní a příjemné. GUI bude implementováno pomocí CSS stylů. Stránka bude rozvržena na jednotlivé oblasti: hlavička s horizontálním menu bude tvořit vrchní část stránky, střední část bude rozdělena na hlavní obsah stránky a pravý sloupec, ve spodní části bude umístěna patička. Výsledný vzhled bude testován v internetových prohlížečích: Internet Explorer, Mozilla, Opera a Google Chrome. 3.4 Volba použitých technologií Data budou uložena v nativním XML databázovém systému Sedna. Nejdříve je tedy nutné poskytnutá data převést do formátu XML. Pro jednoznačnost importovaných dat a snazší práci s těmito daty je nutné navrhnout schéma XML dat. V této oblasti bude použit jazyk RELAX NG, který vyhovuje našim požadavkům. Při výběru dat z databáze je potřeba je převést do určitého formátu, což nám zajistí šablony XSLT. Aplikační část projektu je naprogramována v jazyce PHP, jež je přímo určeno pro tvorbu webových aplikací. Při tvorbě systému bude využita podpora XML a předností objektově orientovaného přístupu, jež PHP5 nabízí. Samotná struktura webové stránky dodržuje standard XHTML 1.0, dbáme také na validitu stránek. Vzhled informačního systému definují CSS styly. Smarty šablony zajistí oddělení prezentační a aplikační logiky. Pro příjemnější práci se systémem budou určité prvky systému aktualizovány prostřednictvím knihovny jquery. 3.5 Návrh formy BibT E X citací Data bibliografických citací byla poskytnuta ve formátu BibT E X. Nejdříve byla nastudována problematika citování literárních zdrojů a BibT E X citací samotných (viz kapitola 2.6). Struktura dat záleží na typu dané citace. Téměř každý typ literárního zdroje má odlišné povinné a volitelné parametry. Takovouto strukturu dat by bylo velice složité a neefektivní ukládat do relačního databázového systému, proto byl zvolen NXDBS (viz kapitola 2.5). BibT E X citace tedy budou uloženy v XML formátu.

41 3.6 Volba nativního XML databázového systému 41 Chceme-li s daty dále pracovat, provádět nad nimi vyhledávání a umožnit uživatelům import dat ve formátu XML, je potřeba určitým způsobem definovat jejich strukturu, povolené povinné a nepovinné elementy a jejich datové typy. Tato problematika byla nastíněna v kapitole 2.2. W3C XML Schema je v současnosti velmi oblíbené a dosáhlo velké podpory. Bohužel jej nelze využít pro náš typ dat. Potřebujeme na základě typu citace rozeznat, které elementy se musí/mohou v rámci citace objevit. RELAX NG poskytuje možnost rozvětvení schématu na základě hodnoty atributu, proto byl RELAX NG zvolen jazykem vhodným k definici našeho schématu. Komfortní práci s XML soubory jakéhokoliv typu nabízí software <oxygen/> XML Editor 31. Firma <oxygen/> nabízí zkušební verzi po dobu 30 dní, která je pro naše účely postačující. Tohoto softwaru bude využito nejen pro samotný návrh schématu. 3.6 Volba nativního XML databázového systému Ve výsledné aplikaci bude využito jako centrální datové úložiště nativní XML databázový systém. Chceme ukázat, že lze již dnes tento typ databázového systému využít pro mnoho druhů aplikací. Nejlépe jej lze využít ve firemním prostředí v B2B nebo v B2C systémech, v systémech spravující firemní dokumenty ve formátu XML (může se jednat o y, dokumentace, návody, faktury atd.), v systémech pro správu právnických dokumentů či zdravotnických zpráv. Uchovávání dat v XML formátu je také vhodné, chceme-li zajistit výstup dat na libovolném typu zařízení či v různých formách. Příkladů by se dalo uvést mnoho. Proč byl zvolen NXDBS, jsme se již snažili vysvětlit v průběhu této práce. Především o této volbě rozhodla nepravidelná struktura dat, kterou lze velice jednoduše převést na XML dokument (spíše dokumentově orientovaný). Dokumentově orientované XML dokumenty je vhodné ukládat do databáze s nativní podporou XML. Touto problematikou jsme se zabývali v kapitole 2.5. Volba NXDBS probíhala mezi exist-db a Sednou. Jedná se o open source systémy, které jsou neustále vyvíjeny a podporovány, poskytují velké množství nástrojů pro práci s XML daty. Názor odborníka z této oblasti se více přikláněl k DBS Sedna. Nakonec byl zvolen DBS Sedna, jelikož nepotřebuje pro svůj provoz Javu (oproti exist-db), je velice výkonná a rychlá. Dále nabízí na implementaci jednoduché rozhraní pro programovací jazyk PHP a mnoho dalšího (viz kapitola 2.5.3). 3.7 Návrh a implementace systému Vývoj aplikace Vývoj aplikace bude probíhat v lokálním prostředí. Sedna bude zprovozněna v operačním systému Linux s nainstalovaným webovým serverem Appache. Dále bude doinstalováno API pro komunikaci se Sednou v jazyce PHP. Se Sednou lze také 31 Více informací naleznete na adrese

42 3.8 Ověření použitelnosti 42 komunikovat přes příkazový řádek, čehož bude využito pro základní instrukce. Celé řešení je nezávislé na operačním systému počítače, jelikož Sednu lze nainstalovat na všech nejpoužívanějších operačních systémech Práce s aplikací Aplikace bude určena pro uživatele z různých zemí. Pro práci se systémem budou potřebovat pouze internetový prohlížeč, který je součástí instalace jakéhokoliv operačního systému. Pokud budou chtít využívat dalších funkcí systému, postačí, aby se zaregistrovali. Pro správnou funkčnost systému je požadováno, aby uživatelé měli ve svém prohlížeči povolen JavaScript. Aplikace bude nezávislá na operačním systému, použitém SW i HW. 3.8 Ověření použitelnosti Ověření použitelnosti daného řešení bude provedeno vystavením systému na internetové stránky skupiny SoNet. Členové této skupiny budou informováni o systému pro uchovávání a vyhledávání BibT E Xcitací, tento systém si budou moct vyzkoušet a zhodnotit jej. Na základě jejich reakcí může být systém určitým směrem dále vylepšován.

43 4 VLASTNí ŘEŠENí 43 4 Vlastní řešení 4.1 Průzkum Průzkum byl vytvořen pro získání informací a názorů od odborné veřejnosti. Hlavním cílem průzkumu je poskytnout informace o všeobecném povědomí a využívání XML technologií. Průzkum byl rozdělen na tyto dílčí cíle: zda se respondent zabývá tvorbou webových aplikací, jaké technologie využívá pro tvorbu webu (pokud se zabývá tvorbou webových aplikací), zda ví, co je XML, zda používá technologii XML, jaké druhy XML technologií využívá, jakým způsobem uchovává XML data. Dotazník byl vytvořen pomocí technologie Google Docs a respondentům byl distribuován pouze v elektronické podobě. Respondenti byli požádáni o vyplnění sedmi otázek (v případě záporných odpovědí i méně). Dotazník byl vystaven na diskusním fóru portálu jakpsatweb.cz a programujte.com, dále byl rozeslán mezi studenty informatických oborů a tvůrce webových aplikací. Celý dotazník je možno shlédnout v příloze G. Celkem se průzkumu zúčastnilo 95 respondentů Výsledky průzkumu Z výsledků průzkumu můžeme tvrdit, že se jej z převážné části účastnila odborná veřejnost. Na otázku, zda se zabývají tvorbou webových aplikací, odpovědělo přes 88 % respondentů kladně. Přehled nejpoužívanějších technologií poskytly odpovědi na otázku č. 2. Z obrázku 1 jasně vyplývá, že webové aplikace jsou nejčastěji vy- Obr. 1: Používané technologie pro tvorbu webových aplikací.

44 4.1 Průzkum 44 tvářeny kombinací CSS stylů, PHP skriptů a JavaScriptu. Dále se hojně využívá AJAX a knihovna jquery. Nejméně respondentů volí Perl a ASP.NET. Jako ostatní technologie, které respondenti využívají, byly uvedeny: X/HTML, MySQL, Ruby, Python, DocBook, XML/XSL, PL/SQL, Zend Framework, CGI, bashscript. Pouze tři respondenti z celkového počtu nevědí, co je XML. Téměř 97 % kladných odpovědí lze přisoudit tomu, že převážná většina respondentů se zabývá tvorbou webových aplikací, takže se již s některými XML technologiemi určitě setkali. Ovšem povědomí a použití XML technologií je věc rozdílná. XML technologie používá už jen 67 % respondentů. Jaké XML technologie respondenti nejčastěji využívají, můžeme vyčíst z obrázku 2. Nejčastěji používají formát RSS pro publiko- Obr. 2: Používané XML technologie. vání a příjem zpráv, dále XML pro výměnu dat, s čímž souvisí i používání schémat XML dokumentů. Na 4. pořadí se umístil export dat z databáze a poslední místo obsadily XSLT šablony. Jako ostatní XML technologie byly uváděny: SVG, XML konfigurační soubory, uložení dat aplikace či projektu a XAML. Nejdůležitější součástí průzkumu bylo získání informace týkající se uložení XML dat. Výsledné preference respondentů jsou zobrazeny na obrázku 3. Lidé stále nejčastěji uchovávají XML data na souborovém serveru či osobním počítači. Pokud jsou XML data ukládána do databáze, pak lidé volí ve stejném poměru datový typ BLOB, CLOB a relační databázi s podporou XML. Nativní XML databázi překvapivě nevyužívá žádný z dotázaných. V závěru dotazníku mohl respondent sdělit svůj názor na současné XML technologie. Někteří z respondentů si myslí, že o XML stále mnoho lidí nic neví. Někdo XML chválí, jiný naříká nad příliš robustními nástroji a pomalejší interpretací. Někdo raději volí místo XML formát JSON. Další respondent zastává názor, že mnoho lidí neví o možnosti odebírání RSS zpráv. Jeden z respondentů využívá export a import XML dokumentů ke vzájemné spolupráci domén v jeho vlastnictví.

45 4.2 Schéma XML dat 45 Obr. 3: Uchovávání XML dat Zhodnocení průzkumu Z výsledků výzkumu vyplývá, že mezi tvůrci webových aplikací již povědomí o XML existuje a mnoho z nich tuto technologii také využívá. Ovšem uložení XML dat se odehrává na souborových serverech, osobních počítačích a v menší míře jsou uchovávány v relačních databázových systémech. Před zahájením průzkumu se předpokládalo vyšší procento uchovávání XML dokumentů v relačních databázových systémech s podporou XML. Tento výsledek je pravděpodobně ovlivněn typem XML dat, jež respondenti využívají. Nejčastěji se jedná o RSS zprávy, výměnu dat a export dat v rámci databází, k čemuž starší typy uchování XML dat plně postačují. Nativní XML databázové systémy prozatím nevyužívá nikdo z dotázaných, což může být opět ovlivněno jak samotným využitím XML dat, tak také možnou nevědomostí, že takovéto typy databázových systémů existují. Pro ověření této domněnky by bylo potřebné v průzkumu doplnit otázku týkající se povědomí o XML nativních databázových systémech. 4.2 Schéma XML dat Schéma XML dat je vytvořeno za účelem správného importu a jednotné práce s BibT E X citacemi. Při návrhu XML schéma se vychází ze specifikace typů a jednotlivých položek BibT E X citací 32. Položky BibTeX citací jsou rozděleny do tří skupin: 32 Specifikace typů a jednotlivých položek BibTeX citací byla získána z tohoto elektronického dokumentu:

46 4.2 Schéma XML dat 46 Povinné pokud tato položka v citaci chybí, BibT E X podá varovnou zprávu. Zřídka se může stát, že výsledná citace bude špatně naformátována. Pokud uživateli povinné položky nevyhovují, je potřeba se zamyslet nad tím, zda vybral správný typ citace. Volitelné je-li položka vyplněna, je v rámci citace vysázena. Ignorované tyto položky jsou BibT E Xem ignorovány, kromě povinných a volitelných položek může uživatel uvést libovolné další. Uživatelé často uchovávají jako ignorovanou položku abstrakt, ISBN, ISSN a další Konkrétní typy BibT E X citací Article článek z novin či časopisu. Povinné položky: author, title, journal, year. Volitelné položky: volume, number, pages, month, note. Book kniha či monografie s výslovným vydavatelem. Povinné položky: author nebo editor, title, publisher, year. Volitelné položky: volume nebo number, series, address, edition, month, note. Booklet práce, která byla vytištěna a svázána bez jmenovaného vydavatele nebo bez sponzorování určitou institucí. Může se jednat o brožuru. Povinná položka: title. Volitelné položky: author, howpublished, address, month, year, note. Conference, inproceedings článek z konference. Povinné položky: author, title, booktitle, year. Volitelné položky: editor, volume nebo number, series, pages, address, month, organization, publisher, note. Inbook část knihy, kterou může být kapitola nebo rozsah stránek. Povinné položky: author nebo editor, title, chapter a/nebo pages, publisher, year. Volitelné položky: volume nebo number, series, type, address, edition, month, note. Incollection část knihy, která má svůj vlastní název. Povinné položky: author, title, booktitle, publisher, year. Volitelné položky: editor, volume nebo number, series, type, chapter, pages, address, edition, month, note. Manual technická dokumentace. Povinná položka: title. Volitelné položky: author, organization, address, edition, month, year, note. Mastersthesis, phdthesis diplomová (bakalářská) a dizertační práce mají stejně definované položky. Povinné položky: author, title, school, year. Volitelné položky: type, address, month, note. Misc tento typ se používá tehdy, pokud nám nevyhovuje nic jiného. Povinné položky nejsou definovány. Volitelné položky: author, title, howpublished, month, year, note. Proceedings sborník konference. Povinné položky: title, year. Volitelné položky: editor, volume nebo number, series, address, month, organization, publisher, note.

47 4.2 Schéma XML dat 47 Techreport technická zpráva zveřejněná školou či jinou institucí. Povinné položky: author, title, institution, year. Volitelné položky: type, address, month, note. Unpublished Dokument, který sice má svého autora a název, ale dosud nebyl publikován veřejně. Povinné položky: author, title, note. Volitelné položky: month, year Schéma RELAX NG Nyní je potřeba vytvořit schéma, které bude přesně specifikovat výše popsanou strukturu BibT E X citací. Schéma je popsáno v jazyce RELAX NG na bezmála 400 řádcích. Rozsáhlost zapříčinila, že zde nelze uvést celé schéma. V příloze diplomové práce je ovšem možno shlédnout Full Model View tohoto schématu. Kořenovým elementem XML dokumentu musí být <bibitems>, ten obsahuje jednotlivé citace. Každá citace je ohraničena elementem <bibitem>, dále musí obsahovat typ (atribut type) a klíčové slovo citace (atribut id). Schéma striktně popisuje, které typy citací se mohou v dokumentu objevit. Na základě typu citace se rozlišuje, které dětské elementy mohou být v citaci obsaženy. Schéma vymezuje i skupinu společných elementů, které byly odvozeny z poskytnutých dat a mohou být použity u jakéhokoliv typu citace. Většina z nich je volitelná, ovšem povinně musí být vyplněny položky: časová značka (element <timestamp>) a uživatel, jež BibT E X citaci vkládá do systému (element <owner>). Všechny vzory citací jsou implementovány podobným způsobem. Pro názornost lze uvést vzor pro citaci článku z novin či časopisu: <define name="cont_article"> <interleave> <a:documentation>mandatory elements of the article.</a:documentation> <ref name="authors"/> <element name="title"><text/></element> <element name="journal"><text/></element> <element name="year"><data type="gyear"/></element> <a:documentation>optional elements of the article.</a:documentation> <optional><element name="volume"><text/></element></optional> <optional> <element name="number"><data type="unsignedshort"/></element> </optional> <optional><element name="pages"><text/></element></optional> <optional><element name="note"><text/></element></optional> <ref name="common_elements" /> </interleave> </define> Tento vzor se zavolá, pokud je u položky <bibitem> definován typ article. Povinnými položkami jsou název článku, název novin či časopisu, rok vydání. Nepovinné položky jsou ohraničeny vzorem optional, který říká, že se element může, ale

48 4.3 Šablony pro transformaci XML dat 48 také nemusí vyskytnout. Vzor článku obsahuje i odkazy na další vzory, jimiž jsou authors a common_elements. Všechny tyto položky mohou být uvedeny v libovolném pořadí, což zajistí vzor interleave. Vzor authors definuje strukturu zápisu autora/autorů dané citace. U článku je tento vzor povinný. Každý autor je určen svým jménem (element firstname) a příjmením (element lastname), které jsou uvedeny v rámci rodičovského elementu author. Všichni autoři jsou pak potomci kořenového elementu <authors>. Vzor common_elements obsahuje již zmíněné společné elementy, z nichž se musí v dané citaci vyskytnout elementy <timestamp> a <owner>. Volitelné elementy tohoto vzoru jsou: abstract, annote, citeseerurl, contens, copyright, crossref, doi, isbn, issn, file, keywords, language, lccn, order_no, price, url. Tento XML dokument by byl dle navrženého schématu validní: <?xml version="1.0" encoding="utf-8"?> <bibitems> <bibitem type="article" id="bruce99"> <authors> <author> <firstname>rebecca F.</firstname> <lastname>bruce</lastname> </author> <author> <firstname>janyce M.</firstname> <lastname>wiebe</lastname> </author> </authors> <title> Recognizing subjectivity: A case study in manual tagging </title> <journal>natural Language Engineering</journal> <year>1999</year> <volume>5</volume> <pages> </pages> <number>2</number> <abstract> In this paper, we describe a case study of a sentence-level... </abstract> <owner>nata</owner> <timestamp> </timestamp> </bibitem> </bibitems> 4.3 Šablony pro transformaci XML dat BibT E X citace budou v databázi uchovány ve formátu XML validním dle navrženého schématu. Pro prezentaci dat získaných z databáze využijeme stylů, které

49 4.3 Šablony pro transformaci XML dat 49 zajistí převod z XML formátu na námi požadovaný výstup. V budoucnu lze systém rozšiřovat o další šablony, nyní nám postačí vytvořit v jazyce XSLT dvě šablony Šablona transformace XML na XHTML Šablona transform.xsl bude využita při výpisu BibT E X citací v rámci informačního systému. Nejčastěji se používá při zobrazení výsledků vyhledávání. Styl lze rozdělit na tyto dílčí části: hlavičku stylu, předávané parametry, nastavení výstupu a jednotlivé šablony. Jakým způsobem bude vypadat výpis bibliografické citace, je znázorněno na obrázku 4. Obr. 4: Výsledný výpis BibT E X odkazu. Hlavička stylu obsahuje základní údaje uvádějící, že je styl napsán v jazyce XSLT 1.0 a bylo použito kódování UTF-8. Bohužel nebylo možné využít novější verze XSLT 2.0 (ta již umožňuje převod přímo do XHTML), jelikož PHP5 tuto verzi prozatím nepodporuje. Výstupem proto bude formát XML bez definované hlavičky. Při výpisu obsahu každé citace musíme zajistit, aby se zobrazily možnosti pro úpravu a smazání položky pouze oprávněnému uživateli. Tedy tomu, kdo citaci uložil, nebo uživateli ze skupiny administrátorů či manažerů. Toto ošetření vyžaduje předávání parametrů o uživateli mezi PHP skriptem a XSLT stylem. Všem uživatelům bude také k dispozici tlačítko pro zobrazení citace v BibT E X formátu Právě při stisknutí tohoto tlačítka bude použita následující šablona pro převod na formát BibT E X.

50 4.3 Šablony pro transformaci XML dat 50 Dále potřebujeme si v rámci parametrů předat URL adresu, na které je citace vypsána. Po smazání citace nebo po výpisu citace v BibT E X formátu, potřebujeme vědět, na jakou URL adresu se máme vrátit 34. Styl obsahuje jednu základní šablonu pro zpracování celého XML dokumentu a 10 dílčích šablon. Ty jsou v základní šabloně implementovány, pokud se v právě zpracovávané BibT E X citaci nachází takový element, který zajistí aplikaci určité šablony. Dílčí šablony řeší odlišný výpis 10 elementů: název citace, název knihy, autor/autoři, editor/editoři, dva typy URL adres, datum vložení citace, informační řádek (kdo a kdy citaci uložil), zpracování abstraktu a v něm uvedené odřádkování Šablona transformace XML na BibT E X Šablona transform_to_bibtex.xsl byla vytvořena, protože uživatelé požadují možnost si zkopírovat citaci v BibT E X formátu do vlastní bibliografické databáze. Jak vypadá citace ve formátu BibT E X, jsme si již uvedli v kapitole Hlavička i nastavení výstupu je totožné jako u výše popsaného stylu. Šablona převede citaci z formátu XML na BibT E Xem definovanou strukturu. Je-li v abstraktu použito odřádkování, je při transformaci zdvojeno 35. Zdrojový kód šablony vypadá následovně: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration = "yes" /> <xsl:template select="./@type"/> {<xsl:value-of select="./@id"/>, <br /><xsl:apply-templates select="authors" /> <xsl:apply-templates select="editors" /> <xsl:apply-templates select="abstract" /> <xsl:for-each select="*[name()!= authors and name()!= editors and name()!= abstract ]"> <div class="subelement"> <xsl:value-of select="name()"></xsl:value-of> <xsl:text> = {</xsl:text><xsl:value-of select="."/>} <xsl:if test="position()!=last()"><xsl:text>,</xsl:text></xsl:if> </div> </xsl:for-each> } </xsl:template> <xsl:template match="authors"> 34 Zpáteční adresa je pro nás důležitá, pokud uživatel nemá povolen JavaScript. 35 V L A TEXu je nový odstavec definován teprve prázdným řádkem.

51 4.4 Nativní XML databázový systém Sedna 51 <div class="subelement"> author = {<xsl:for-each select="author"><xsl:value-of select="lastname"/><xsl:text>, </xsl:text> <xsl:value-of select="firstname" /> <xsl:if test="position()!= last()"> and </xsl:if></xsl:for-each>}, </div> </xsl:template> <xsl:template match="editors"> <div class="subelement"> editor = {<xsl:for-each select="editor"><xsl:value-of select="lastname" /><xsl:text>, </xsl:text> <xsl:value-of select="firstname" /> <xsl:if test="position()!=last()"> and </xsl:if></xsl:for-each>}, </div> </xsl:template> <xsl:template match="abstract"> <div class="subelement"> <xsl:value-of select="name()"></xsl:value-of> <xsl:text> = {</xsl:text><xsl:apply-templates />} <xsl:if test="position()!=last()"><xsl:text>,</xsl:text></xsl:if> </div> </xsl:template> <xsl:template match="br"> <br /><br /> </xsl:template> </xsl:stylesheet> 4.4 Nativní XML databázový systém Sedna Informační systém je vyvíjen a testován v lokálním prostředí. Pod operačním systémem Linux Debian je spuštěn webový server Appache 2.0 Handler. Na webovém serveru se pracuje s verzí PHP , mimo jiné je zde zapnuta podpora těchto balíčků: dom, json 1.2.1, libxml 2.7.7, sedna (doinstalovaný balíček přímo od vývojářů NXDBS Sedna), xml (libxml ), xsl (libxslt ). Veškerá data a soubory databázového systému Sedna 3.2 jsou po instalaci dostupné v adresáři /usr/local/sedna/. Zde se nachází veškerá dokumentace, ukázkové příklady, data uložená v databázi a také konfigurační soubory. Nastavení databáze je uloženo v XML souboru /usr/local/sedna/etc/sednaconf.xml. Po instalaci je DBS dostupný přes uživatelské jméno SYSTEM, heslo MANAGER a tvůrce databáze SYSTEM. Přes příkazový řádek lze spravovat uživatelské účty a nastavovat práva uživatelů pro samotný dokument, kolekci dokumentů, index nebo modul. Přes příkazový řá-

52 4.4 Nativní XML databázový systém Sedna 52 dek lze také data z databáze exportovat či importovat, popřípadě provést zálohu dat. V adresáři /usr/local/sedna/data/ nalezneme log soubory. Mezi nejdůležitější příkazy v CL 36 lze zařadit spuštění Sedny pomocí se_gov [options], naopak potřebujeme-li činnost Sedny zastavit, postačí příkaz se_stop [options]. Pokud máme Sednu spuštěnu, můžeme vytvořit/smazat databázi příkazem se_cdb/se_ddb [options] názevdatabáze. Abychom mohli s vytvořenou databází pracovat, musíme ji spustit příkazem se_sm [options] názevdatabáze (pro zastavení činnosti databáze se v příkazu místo se_sm použije klíčové slovo se_smsd). Ostatní práce s databází probíhá přes PHP API. Připojení k databázi v samotném PHP skriptu zajišťuje funkce sedna_connect. Pro uzavření spojení s databází je definována funkce sedna_close. Vykonávání XQuery dotazů nad daty umožňuje funkce sedna_execute. Pole výsledků posledního dotazu nad databází získáme pomocí funkce sedna_result_array. Pro ukládání souborů do databáze slouží funkce sedna_load (dokument lze uložit samostatně, nebo v rámci kolekce). Sedna také nabízí funkce pro transakce, chybová hlášení a stav připojení. Tyto funkce jsou využity ve třídě Database.php, která zajišťuje práci s databází Testování výkonu Po spuštění Sedny byla založena databáze BibtexDb, v rámci této databáze byla vytvořena kolekce bibtex, do níž bude vloženo 200 poskytnutých BibT E X citací. Vyvstala otázka, kolik záznamů by měl obsahovat jeden XML soubor dané kolekce, aby výsledky dotazů byly co nejvíce efektivní. Stanovili jsme si 7 nejčastějších XQuery dotazů a citace rozdělili do XML dokumentů o 200, 100, 50 a 25 záznamech. První dotaz vrátí počet všech BibT E X citací uložených v databázi. Druhý dotaz vyhledává slovo article ve všech položkách záznamů. Třetí dotaz vyfiltruje pouze ty citace, které jsou vydány po roce Články z konference, jejichž autor má příjmení začínající písmenem B, nalezne čtvrtý dotaz. Pátý dotaz smaže citaci s identifikátorem finn06, šestý dotaz tuto citaci vloží zpět do databáze a sedmý dotaz změní její autory. Tab. 2: Rychlost navrácení výsledku dotazu. Dotaz/zázn. na soub dotaz 0, s 0, s 0, s 0, s 2. dotaz 0, s 0, s 0, s 0, s 3. dotaz 0, s 0, s 0, s 0, s 4. dotaz 0, s 0, s 0, s 0, s 5. dotaz 0, s 0, s 0, s 0, s 6. dotaz 0, s 0, s 0, s 0, s 7. dotaz 0, s 0, s 0, s 0, s 36 CL Command Line, do češtiny přeloženo příkazový řádek.

53 4.5 Grafické uživatelské rozhraní 53 Výsledky rychlosti vykonání dotazů jsou zapsány v tabulce 2. Tento test proběhl několikrát pro každý dotaz i způsob uchování záznamů, následně byl vybrán nejlepší výsledek. Návrat dotazu se pro testovaný případ pokaždé lišil, proto musíme brát hodnoty pouze orientačně. V rámci testovaného dotazu se časy podstatně neliší. Tento test byl prováděn na 200 záznamech, jednoznačnějších výsledků bychom dosáhli při větším počtu záznamů. V informačním systému se bude nejčastěji vyhledávat, takže bychom měli více přihlédnout k výsledkům dotazu. Trochu lepších výsledků lze dosáhnout uložením dat po 50 či 100 záznamech na soubor. Citace budou v rámci kolekce bibtex ukládány po padesáti záznamech na jeden soubor. Pro tyto účely bude v rámci databáze používán samostatný soubor obsahující statistiky používaných XML dokumentů v rámci kolekce. Abychom dosáhli aktuálních údajů v rámci statistik, je potřeba použít triggerů. Nad každým XML souborem budou založeny dva triggery, které budou po vložení, nebo smazání záznamu aktualizovat údaje statistik. Bohužel Sedna nepodporuje vytvoření triggeru nad samotným XML dokumentem v rámci kolekce, čehož bychom jistě v našem případě rádi využili. Pro ukázku můžeme uvést, jak vypadá vytvoření triggeru, který bude aktivován po smazání citace z kolekce: $trigger_del = "CREATE TRIGGER tr_del_".$id_doc." AFTER DELETE ON collection( bibtex )//bibitem FOR EACH STATEMENT DO { UPDATE replace \$b in doc( docs )//doc[@id=".$id_doc."] with <doc id= ".$id_doc." > <name>".$name_doc."</name> <sum>{count(document( ".$name_doc.", bibtex )//bibitem)}</sum> <timestamp>{fn:current-datetime()}</timestamp> </doc>; }"; V proměnné $id_doc je uchován identifikátor nově vytvořeného dokumentu, proměnná $name_doc představuje celý název tohoto dokumentu. Po smazání záznamu je aktualizována statistika daného dokumentu. Totožně vypadá trigger aktivovaný po vložení záznamu do kolekce, pouze je místo klíčového slova DELETE použito INSERT. Triggery jsou vytvářeny v rámci metody createqueryupdate() ve třídě Bibtex.php, pokud v databázi neexistuje dokument s volnou kapacitou. 4.5 Grafické uživatelské rozhraní Grafické uživatelské rozhraní bylo navrhnuto tak, aby působilo jednoduchým a příjemným dojmem. O výsledku se můžeme přesvědčit z obrázku 5. Při tvorbě CSS stylů je kladen důraz na jejich validitu a téměř shodné zobrazení v nejpoužívanějších webových prohlížečích. Základ vzhledu byl přebrán z volně šiřitelné šablony,

54 4.6 Uživatelé 54 Obr. 5: Výsledný vzhled systému pro uchování a vyhledávání BibT E X odkazů. postupně byla upravována podle našich požadavků. Ikony byly vybrány také z volně šiřitelných balíčků, ikony typů citací vznikly úpravou a přetvořením původních ikon. 4.6 Uživatelé Není-li uživatel přihlášen, může v systému pouze vyhledávat. Pokud se chce také podílet na tvorbě databáze BibT E X citací, musí se registrovat Registrace uživatele Nemá-li uživatel založen účet, může tak učinit v rámci odkazu Register v pravém sloupci stránky (oblast pro přihlášení). Další možností je, že nový účet založí uživatel ze skupiny administrátorů či manažerů. Registrační formulář obsahuje čtyři povinné položky: přihlašovací jméno, heslo, potvrzení hesla a skupinu uživatelských práv. Pokud se uživatel registruje sám, je mu automaticky přidělena skupina user a pole pro výběr skupiny se mu nezobrazí. Registruje-li jej uživatel s vyššími právy, může být zařazen do skupiny user, manager nebo admin 37. Položky formuláře jsou 37 Skupina admin je dostupná pouze pro administrátory.

55 4.7 Administrace 55 ošetřeny jak pomocí knihovny jquery, tak také přímo v PHP skriptu. Login musí být v rámci registrovaných uživatelů unikátní, obě zadané hesla se musí shodovat. Je-li zobrazeno pole pro zařazení uživatele do skupiny, musí být jedna z možností vybrána. Po správném vyplnění formuláře je do samostatného XML dokumentu users vložen nový uživatel, jež se může následně přihlásit. Heslo je uloženo v hashi vygenerovaném pomocí funkce SHA Přihlášení a odhlášení uživatele Přihlašovací formulář je dostupný v pravém sloupci stránky, po jeho odeslání se zjistí, zda se v databázi nachází účet se zadaným přihlašovacím jménem (nezáleží na velikosti písmen). Je-li záznam nalezen, je na zadané heslo aplikována funkce SHA-1 a pokud se s hashem z databáze shoduje, je uživatel úspěšně přihlášen. Informace o přihlášeném uživateli jsou uchovávány pomocí session. Odhlášení je provedeno vymazáním obsahu session a přesměrováním na hlavní stránku. 4.7 Administrace Administrace je přístupná přihlášeným uživatelům ze skupiny manager a admin. Manažeři mohou spravovat pouze uživatelské účty, administrátoři mají navíc právo spravovat kolekce a samostatné XML dokumenty. Správa kolekcí a XML dokumentů je využívána při tvorbě a ladění informačního systému. Administrátoři mohou vytvářet, přejmenovávat a mazat kolekce. XML dokumenty mohou uložit buď v rámci existující kolekce, nebo jako samostatný XML dokument Administrace uživatelů Manažeři a administrátoři mohou zakládat nové uživatelské účty, více podrobností je uvedeno v sekci Je jim poskytnut přehledný výpis všech registrovaných uživatelů, které mohou mazat, popřípadě upravovat jejich heslo či skupinu uživatelských práv. Jedná-li se o manažera může mazat a upravovat všechny účty kromě administrátorů. Administrátoři nejsou ve svých právech nijak omezeni. 4.8 BibT E X citace Přihlášení uživatelé mohou rozšiřovat databázi o nové citace prostřednictvím importu z XML dokumentu, nebo vyplněním formuláře. Citace může být smazána buď uživatelem, který tuto citaci vložil do systému, nebo uživatelem ze skupiny manažerů či administrátorů. Stejná pravidla platí pro úpravu citací. Zobrazení odkazu pro smazání a úpravu citace je ošetřeno v šabloně pro převod XML na XHTML.

56 4.8 BibT E X citace Import citací z XML dokumentu Prostřednictvím importu může uživatel vložit několik citací najednou. Povolen je import dokumentu typu XML. Celý proces importu XML dokumentu je vykonán pomocí metody loadbibfromxml() ve třídě Bibtex.php. Nejdříve je ověřena validita oproti navrženému schématu v jazyce RELAX NG. Není-li dokument validní, vypíší se uživateli všechny nalezené chyby. Při importu je také ověřována jedinečnost identifikátoru citace oproti záznamům v databázi. Jedinečnost identifikátoru v rámci importovaného XML dokumentu je zajištěna již samotnou validací. Před uložením záznamu do databáze je zavolána metoda createqueryupdate(), která ověřuje, zda v kolekci bibtex existuje dokument, v němž nebyl překročen maximálně stanovený počet citací na jeden XML dokument. Neexistuje-li soubor, do nějž by se dal záznam vložit, vytvoří se nový XML dokument. Nad nově vytvořeným XML dokumentem jsou založeny triggery aktivované po vložení či smazání záznamů z kolekce. Následně je založen záznam o statistikách tohoto dokumentu v rámci souboru docs.xml. Teprve nyní může být soubor vložen do databáze. Uživatelům je poskytnut odkaz na používané schéma, model tohoto schématu a odkaz na dokumentaci. Dokumentace definuje všechny typy citací včetně jejich povinných atributů, povinných, volitelných a ignorovaných elementů. Dále je popsán obsah atributů a některých vybraných elementů. Na závěr dokumentace jsou uvedeny 4 ukázkové příklady XML dokumentů, jež jsou dle našeho schématu validní Vytvoření nové citace Rozšířit databázi o nový záznam může jakýkoliv přihlášený uživatel prostřednictvím odkazu Add new BibTeX citation v horním menu. Nejdříve se uživateli zobrazí nabídka druhů citací, každý druh citace obsahuje nápovědu, která se zobrazí po najetí myši nad dané místo. Po zvolení druhu citace je zobrazen formulář pro přidání nové citace. Opět je ošetřena validita zadaných hodnot a u jednotlivých polí je uvedena nápověda. Po odeslání formuláře je citace uložena do databáze v rámci XML dokumentu, jež nedosáhl maximálního počtu citací na XML dokument Smazání citace Smazání citace je implementováno jak pomocí AJAXu, tak také pouze prostřednictvím PHP skriptů pro případ, že nebude mít uživatel povolen JavaScript Úprava citace Chce-li uživatel citaci upravit, musí mít potřebná oprávnění. S požadavkem na úpravu citace je zároveň odeslán také identifikátor citace, podle nějž se nalezne potřebný záznam v databázi. Z výsledku ve formátu XML jsou do pole pomocí 38 Před vložením záznamu do databáze je stejně jako u importu zavolána metoda createquery- Update(), která obstará vše potřebné.)

57 4.9 Vyhledávání 57 DOMu vloženy názvy elementů a jejich hodnoty. Tyto hodnoty jsou následně předány formuláři pro úpravu citace pro nastavení výchozích hodnot polí. Dále záleží na uživateli, jak původní hodnoty upraví. 4.9 Vyhledávání Uživatelé informačního systému si mohou vybrat ze dvou typů vyhledávání Vyhledávání nad celým obsahem databáze Tento typ vyhledávání je uživatelům přímo dostupný v pravém sloupci stránky, kde stačí do formuláře zadat slovo, či sousloví, které se má v citaci nacházet. K totožnému formuláři se lze také dostat přes odkaz Fulltext search v horním menu. Po odeslání formuláře je klíčové slovo očištěno o HTML znaky, jsou v něm odstraněny přebytečné mezery, apostrofy a uvozovky jsou nahrazeny entitami. Pro snazší porovnání se hledaný řetězec i data v databázi převedou na malá písmena. Výpis výsledků začíná informací uživatele, kolik vyhovujících záznamů bylo nalezeno. Pokud danému dotazu nevyhoví žádná citace, je o tom uživatel informován. V opačném případě se získané citace převedou pomocí XSLT šablony na formát XHTML a následně jsou vypsány na výstup. XQuery dotaz, jež obstarává tento typ vyhledávání, je uchován v proměnné $query (dotaz je součástí PHP kódu). Tato proměnná je následně předložena funkci pro vykonání dotazu nad databází. Proměnná $value obsahuje upravený hledaný řetězec. Celý dotaz vypadá takto: $query = " let \$items := for \$bibitem in collection( bibtex )//bibitem order by \$bibitem/title ascending empty least, \$bibitem/year descending empty least return \$bibitem for \$item in \$items let \$pom := for \$children in \$item/* where name(\$children)!= abstract and name(\$children)!= authors and name(\$children)!= editors and contains(lower-case(\$children/text()), ".$value." ) return true let \$pom2 := for \$abstract in \$item/abstract//text() where contains(lower-case(\$abstract), ".$value." ) return true let \$pom3 :=

58 4.9 Vyhledávání 58 for \$author in \$item/authors/author/* where contains(lower-case(\$author), ".$value." ) return true let \$pom4 := for \$editor in \$item/editors/editor/* where contains(lower-case(\$editor), ".$value." ) return true return if (\$pom = true or \$pom2 = true or \$pom3 = true or \$pom4 = true or contains(lower-case(\$item/@id), ".$value." ) or contains(lower-case(\$item/@type), ".$value." )) then \$item else ()"; Jelikož využíváme funkci contains(<<řetězec>>, <<hledaný podřetězec>>), která vyžaduje parametry typu xs:string, musel být dotaz rozčleněn na více částí. V proměnné pom uchováváme hodnotu true, pokud byl v jakémkoliv potomku kromě položky abstract, authors a editors elementu <bibitem> nalezen hledaný řetězec. Element <abstract> může obsahovat několik textových uzlů oddělených prázdnými elementy <br/>, jež zajišťují odřádkování textu. Element <authors> nám opět může vrátit více autorů najednou, proto je také zpracováván odděleně. Stejným způsobem je zpracováván element <editors>. Na závěr dotazu je pro každou citaci vyhodnocen celkový výsledek, zda se hledaný řetězec nachází v elementech či atributech citace. Citace bude zahrnuta mezi výsledky, je-li závěrečná podmínka pravdivá Vyhledávání definované uživatelem Formulář pro tento typ vyhledávání je dostupný přes odkaz Advanced search, který se nachází jak v rámci hlavního menu, tak v pravém sloupci stránky. Formulář umožňuje uživateli lépe specifikovat hledanou BibT E X citaci. Uživatel vyplní položky, které mají být splněny v rámci výsledné citace. Vyhledávat lze podle klíčového slova citace, příjmení autora, příjmení editora, názvu díla, názvu knihy, vydavatele nebo názvu novin, roku vydání, typu citace, kdo a kdy citaci vložil do systému. V závěru formuláře může být definováno seřazení výsledků. Ke každé položce formuláře je poskytnuta nápověda. Na obrázku 6. je znázorněn formulář tohoto typu vyhledávání. Podle zadaných kritérií byla nalezena jedna citace, ta již musela být uvedena na samostatném obrázku 4 39, který byl využit již v rámci kapitoly Dotaz je vytvářen dynamicky v závislosti na vyplněných polích formuláře. Testována byla také verze, kdy byl založen index nad rokem vydání literárního díla. Byla-li tato položka ve formuláři vyplněna, hledaly se nejdříve pouze ty citace, které při porovnání s indexovanou hodnotou vyhoví. Zbylá část dotazu následně pracovala pouze s navrácenými položkami. Oproti našemu původnímu řešení jsme však 39 Pokud by byla do obrázku zahrnuta i výsledná citace, obrázek by byl příliš vysoký.

59 4.9 Vyhledávání 59 Obr. 6: Vyhledávání definované uživatelem. dosahovali v rychlosti zpracování horších výsledků. Rozdíl se pohyboval kolem 0,5 s, proto nebylo ve výsledném systému vyhledávání pomocí indexu nad rokem vydání implementováno. Nabídka položek příjmení autora, příjmení editora, název novin a vydavatel je generována přímo z dat uložených v databázi. Všechny položky formuláře jsou opět ošetřeny před škodlivým HTML kódem a určitým způsobem upraveny. Ve vyhledávacím formuláři není žádná položka povinná, ošetřen je pouze formát roku vydání a datum uložení citace do databáze. Má-li uživatel povolen JavaScript, tak se mu při nesprávném vyplnění dané položky zobrazí informace o tom, proč je zadaný text nevyhovující. Pro případ, že by JavaScript nebyl povolen, jsou tato políčka ověřena pomocí regulárních výrazů i v rámci PHP kódu.

60 5 DISKUZE A ZÁVĚR 60 5 Diskuze a závěr V průběhu této práce jsme se zabývali podrobnou analýzou XML technologií, jejich uchováváním, technologiemi, jež byly použity při implementaci systému a také nástrojem BibT E X. Hlavní tvůrci relačních databázových systémů směřují k podpoře nativního XML typu, kdy mohou uživatelé současně pracovat s relačními i XML daty, a tak využívat výhod obou přístupů najednou. Jako centrální úložiště byl zvolen nativní XML databázový systém Sedna. Musela být prostudována jeho dokumentace, osvojeny dotazovací jazyky, schémata a šablony pro transformaci XML dat na jiný formát. BibT E X je velmi zdařilý nástroj používaný v rámci L A TEX dokumentů. Je vhodný pro ty, kteří publikují často a jež vlastní větší počet bibliografických citací. Správa a přepracovávání výsledného stylu citací pouze v rámci L A TEXu je za těchto předpokladů náročná. Z výsledků našeho průzkumu můžeme tvrdit, že většina tvůrců webových aplikací sice zná a využívá XML technologie, ale pro jejich uchovávání používají hlavně souborové servery a osobní počítače. Pouze malé procento z dotázaných využívá relační typ databázového systému s podporou XML, nativní XML databázový systém dokonce nevyužívá žádný z dotázaných. Tento výsledek byl nejspíše zapříčiněn používanými XML technologiemi a možnou neznalostí novějších podpor XML formátu v oblasti databázových systémů. Skupina SoNet využívá pro publikaci nástroj BibT E X. Vznikla tak potřeba vytvořit centrální úložiště bibliografických citací, kde mohou uživatelé navzájem sdílet BibT E X citace a pohodlně nad nimi vyhledávat. Po provedení důkladné analýzy a návrhu systému začala samotná implementace systému. Vytvořený systém poskytuje uživatelům víceuživatelský přístup, import a správu citací, vyhledávání a mnoho dalšího. Import citací vyžaduje, aby byl XML dokument validní dle námi navrženého schématu, proto byla v rámci systému vytvořena dokumentace popisující jednotlivé povinné a volitelné elementy a atributy. K dispozici je vystaven model schématu a také samotné schéma. Systém byl prozatím vyvíjen v lokálním prostředí, následně bude umístěn na stránkách skupiny SoNet ( Jak dobře byl systém navrhnut a implementován, prozradí názory uživatelů, kteří budou tento systém používat. Pokud by nebyla dokumentace pro import citací z XML postačující, měla by být doplněna o další podrobnější informace. V budoucnu by bylo dobré vyzkoušet rychlost fulltextového vyhledávání. Sedna sice tento typ vyhledávání podporuje, ale není součástí základní instalace. Jelikož by se musela nainstalovat odlišná verze databázového systému a využít rozšíření dtsearch třetí strany, bylo od tohoto záměru prozatím upuštěno. Další negativní stránkou databázového systému Sedna je, že nepodporuje založení triggeru nad dokumentem v rámci kolekce. Nyní je možné založit trigger buď pouze nad samostatným XML dokumentem, nebo nad celou kolekcí dokumentů. Tento nedostatek je způsoben společným descriptive scheme nad dokumenty uloženými v rámci kolekce. Jakmile by databáze obsahovala větší množství citací, bylo by vhodné zopakovat výkonnostní testy a ověřit si, zda je 50 záznamů

61 5 DISKUZE A ZÁVĚR 61 na jeden XML soubor vyhovující. Určité funkce systému byly implementovány také pomocí AJAXu a knihovny jquery, aby uživatelům zpříjemnili práci se systémem. Tímto způsobem by mohly být v budoucnu implementovány i další části systému. Systém je v současné verzi stabilní a funkční. Neměli bychom opomenout zmínit, že v současnosti je nejvýznamnější světový informační zdroj v oblasti výzkumu a vývoje Web of Science (zkráceně WoS). Jedná se o soubor vysoce kvalitních databází s informacemi o článcích, jejich obsahu, autorech, referencích, edičních údajích a citovanosti. Obsahuje bibliografické záznamy počínaje rokem 1945 včetně jejich abstraktů, citace prací autorů z celého světa a výjimečně i plné texty. Databáze je aktualizována jedenkrát do týdne a je dostupná online. Cílem práce bylo navrhnout a implementovat systém pro správu BibT E X citací a také vytvořit vyhledávání nad těmito daty, čehož bylo úspěšně dosaženo. Přínosem této diplomové práce je získání obrovského množství informací týkajících se nástroje BibT E X, mnoha druhů XML technologií a jejich uložení v rámci databázových systémů. Z praktického hlediska byly získány zkušenosti s XML formátem, tvorbou schémat, šablon, XQuery dotazů a samotná práce s nativním XML databázovým systémem Sedna. Systém bude aplikován v praxi. Doufejme, že svým uživatelům poskytne spokojenost a také úsporu času při vyhledávání publikací a také okamžitém generování citace v BibT E X formátu.

62 6 LITERATURA 62 6 Literatura Bourret, R. Ronald Bourret : Consulting, writing, and research in XML and databases [online] [cit ]. Dostupné z WWW: < Bratková, E. Metody citování literatury a strukturování bibliografických záznamů podle mezinárodních norem ISO 690 a ISO : metodický materiál pro autory vysokoškolských kvalifikačních prací [online]. Verze 2.0, aktualiz. a rozšíř. Praha : Odborná komise pro otázky elektronického zpřístupňování vysokoškolských kvalifikačních prací, Asociace knihoven vysokých škol ČR, [cit ]. 60 s. (PDF). Dostupné z WWW: < Feder, A. BibTeX [online] [cit ]. Dostupné z WWW: < Google. Google AJAX Libraries API [online]. c2010 [cit ]. Dostupné z WWW: < Chaudhri, A. B.; Rashid, A.; Zicari, R. XML data management: Native XML and XML-Enabled Database Systems. 1. vyd. Boston: Addison-Wesley, s. ISBN IBM. PureXML overview DB2 as an XML database [online] [cit ]. Dostupné z WWW: < Institute for System Programming RAS Sedna: Native XML Database System [online]. c [cit ]. Dostupné z WWW: < Kosek, J. Domovská stránka Jirky Koska - VŠE O WWW [online]. c [cit ]. Ukládání XML do souborů. Dostupné z WWW: < Kosek, J. Domovská stránka Jirky Koska - VŠE O WWW [online]. c2009 [cit ]. XML v PHP5. Dostupné z WWW: < Kosek, J. PHP a XML. Praha: Grada Publishing, a. s., s. ISBN Lacko, L. Ajax: hotová řešení [online] [cit ]. Brno : Computer Press, s. ISBN Malý, M. Zdroják.cz [online] [cit ]. Hostujte část webu zdarma u Google. Dostupné z WWW: < Martinek, D. LaTeXové speciality [online]. 2005, [cit ]. Jak používat BibTeX. Dostupné z WWW: < martinek/latex/bibtex.html>.

63 6 LITERATURA 63 Meier, W. M. exist-db Open Source Native XML Database [online] [cit ]. Dostupné z WWW: < Michalička, P. Zhodnocení nativní XML DB Oracle Berkeley [online]. Praha, červen s. Bakalářská práce. České vysoké učení technické v Praze Fakulta elektrotechnická. Dostupné z WWW: < 2009bach.pdf>. Mrozek, J. Smarty v PHP [online] [cit ]. Dostupné z WWW: < Pal, S.; Fussell, M.; Dolobowsky, I. MSDN: Microsoft Developement, MSDN Subscription, Resources, and More [online]. Microsoft Corporation, 2005 [cit ]. XML Support in Microsoft SQL Server Dostupné z WWW: < Lee, G. In Oracle XML DB Development and Product Management Team. Oracle Database 11g Release 2 XML DB New Features. Redwood Shores, CA: Oracle Corporation, 2009 [cit ]. Dostupné z WWW: < xml%20db%2011.2%20nf%20twp%20v3.pdf>. PHP In Wikipedia: the free encyclopedia [online]. St. Petersburg (Florida): Wikipedia Foundation, , [cit ]. Dostupné z WWW: < Pokorný, J. aj. XML technologie: Principy a aplikace v praxi. 1. vyd. Praha: Grada Publishing, a. s., s. ISBN Pokorný, J. XML databáze: současný stav a perspektivy. [online] URL: < pokorny/papers/datakon04-ready.pdf>. Rybička, J. LaTeX pro začátečníky. 3. vyd. Brno: KONVOJ, s. ISBN Stephens, J. MySQL [online]. c2010 [cit ]. Using XML in MySQL 5.1 and 6.0. Dostupné z WWW: < Stěhule, P. PostgreSQL [online]. 2009, [cit ]. Slon nezapomíná (co nás čeká v PostgreSQL 8.3). Dostupné z WWW: < nezapomíná (co nás čeká v Postgre- SQL 8.3)>. Totel, E. BibTeX Database Manager [online]. c [cit ]. Dostupné z WWW: < Vanický, M. XML a databáze [online]. Praha, s. Diplomová práce. Vysoká škola ekonomická v Praze. Dostupné z WWW: < XML a DB.pdf>. W3C. Extensible Markup Language (XML) 1.0 (Fifth Edition) [online] [cit ]. Dostupné z WWW: <

64 6 LITERATURA 64 W3C. XPointer Framework [online] [cit ]. Dostupné z WWW: < W3C. XSL Transformations (XSLT) Version 1.0 [online] [cit ]. Dostupné z WWW: < W3Schools. XQuery Tutorial [online]. c a [cit ]. Dostupné z WWW: < W3Schools. XSL-FO Tutorial [online]. c b [cit ]. Dostupné z WWW: < Žižka, P. Interval.cz [online] [cit ]. Nativní XML databáze nástin teorie. Dostupné z WWW: <

65 Přílohy

66 A UKÁZKA DOBŘE STRUKTUROVANÉHO XML DOKUMENTU 66 A Ukázka dobře strukturovaného XML dokumentu Obr. 7: Well-formed XML dokument s popisem jeho prvků.

67 B PŘíKLAD DATOVÉHO MODELU XML 67 B Příklad datového modelu XML Pro zjednodušení si vybereme z předchozího příkladu v příloze A pouze podstrom s autory dané citace: <authors> <author> <firstname>erik</firstname> <lastname>boiy</lastname> </author> <author> <firstname>marie-francine</firstname> <lastname>moens</lastname> </author> </authors> Datový model tohoto jednoduchého XML dokumentu můžete shlédnout na obrázku 8. Do modra jsou zbarveny textové uzly (obsah elementu) a nazelenale jsou znázorněny elementy. Obr. 8: Datový model Infoset z předcházejícího příkladu.

68 C UKÁZKA POUŽITí JAZYKA XSLT 68 C Ukázka použití jazyka XSLT Zdrojový XML dokument s autory: <?xml version="1.0" encoding="utf-8"?> <authors> <author> <firstname>lada A.</firstname> <lastname>adamic</lastname> </author> <author> <firstname>natalie</firstname> <lastname>glance</lastname> </author> </authors> XSLT převede XML na HTML s definovaným výpisem autorů: <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:output method="html" encoding="utf-8" /> <xsl:template match="/"> <html> <head> <title>html output of authors</title> </head> <body> <h1>autors: </h1> <xsl:call-template name="authors" /> </body> </html> </xsl:template> <xsl:template name="authors"> <p> <xsl:for-each select="/authors/author"> <xsl:value-of select="lastname" /> <xsl:text>, </xsl:text> <xsl:value-of select="firstname" /> <xsl:if test="position()!= last()"> and </xsl:if> </xsl:for-each> </p> </xsl:template> </xsl:stylesheet>

69 C UKÁZKA POUŽITí JAZYKA XSLT 69 Výsledný HTML dokument by vypadal následovně: <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>html output of authors</title> </head> <body> <h1>autors: </h1> <p>adamic, Lada A. and Glance, Natalie</p> </body> </html>

70 D DATOVÝ MODEL XPATH 70 D Datový model XPath Mějme jednoduchý XML dokument: <authors> <author id="1"> <firstname>erik</firstname> <lastname>boiy</lastname> </author> <author id="2"> <firstname>marie-francine</firstname> <lastname>moens</lastname> </author> </authors> Datový model XPath pro tento dokument je znázorněn na obrázku 9. Umělý kořenový element se zapisuje lomítkem (nereprezentuje žádný uzel v dokumentu), uzel typu element je zabarven zeleně, fialově jsou označeny atributové uzly a textové uzly jsou označeny modře. Obr. 9: Datový model XPath.

71 E MODEL TRADIČNí WEBOVÉ APLIKACE A AJAXU 71 E Model tradiční webové aplikace a AJAXu Obr. 10: Srovnání tradičního modelu webové aplikace (nalevo) s modelem AJAXu (napravo). Zdroj:

72 F ASYNCHRONNí A SYNCHRONNí KOMUNIKACE 72 F Asynchronní a synchronní komunikace Obr. 11: Porovnání synchronní komunikace tradiční webové aplikace (nahoře) s asynchronní komunikací AJAXové aplikace (dole). Zdroj:

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

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

Obsah prezentace. Co je to XML? Vlastnosti. Validita

Obsah prezentace. Co je to XML? Vlastnosti. Validita Obsah prezentace Co je to XML? Vlastnosti Validita Co je to XML? EXtensible Markup Language Účelem je usnadnit sdílení dat napříč informačními systémy Popis dokumentu z hlediska věcného obsahu Vyvinuto

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Značkovací jazyky a spol. HTML/XHTML XML JSON YAML Markdown, Texy!

Značkovací jazyky a spol. HTML/XHTML XML JSON YAML Markdown, Texy! Značkovací jazyky a spol. HTML/XHTML XML JSON YAML Markdown, Texy! Značkovací jazyky Angl. termín "MARKUP" ("vyznačování") Smyslem je přidat do textu metainformace: formátovací sémantické Výsledek je prostý

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

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 databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování 4 fáze vytváření

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

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

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

Alena Malovaná, MAL305

Alena Malovaná, MAL305 Alena Malovaná, MAL305 GML WFS WMF Geografický značkovací jazyk (Geographic Markup Language - GML) Jedná se o velmi rozšířený standard pro popis geodat umožňující sdílení i integraci dat. Jeho základem

Více

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Databázové systémy Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Vývoj databázových systémů Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace 60.-70. léta Program Komunikace Výpočty

Více

Operátory ROLLUP a CUBE

Operátory ROLLUP a CUBE Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz

Více

Tabulkový procesor. Základní rysy

Tabulkový procesor. Základní rysy Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupní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

XML a XSLT. Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML

XML a XSLT. Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML XML a XSLT Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML Zdroje: M. ŽÁK: XML (začínáme programovat), Grada Publishing, 2005 I. MLÝNKOVÁ, M. NEČASKÝ, J. POKORNÝ, K.

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

Použití databází na Webu

Použití databází na Webu 4IZ228 tvorba webových stránek a aplikací Jirka Kosek Poslední modifikace: $Date: 2010/11/18 11:33:52 $ Obsah Co nás čeká... 3 Architektura webových databázových aplikací... 4 K čemu se používají databázové

Více

Ukazka knihy z internetoveho knihkupectvi

Ukazka knihy z internetoveho knihkupectvi Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz PHP a XML 5 Stručný obsah Předmluva... 13 Úvod... 15 1. Syntaxe XML... 17 2. Přehled podpory XML v PHP5... 43 3. (Ne)podpora Unicode v PHP... 67

Více

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema: 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 XQuery XQuery dotazovací

Více

SCHÉMOVÉ JAZYKY. Přednáška z předmětu KMA/POK. Otakar ČERBA Západočeská univerzita v Plzni

SCHÉMOVÉ JAZYKY. Přednáška z předmětu KMA/POK. Otakar ČERBA Západočeská univerzita v Plzni SCHÉMOVÉ JAZYKY Přednáška z předmětu KMA/POK Otakar ČERBA Západočeská univerzita v Plzni Poslední aktualizace: 16. 10. 2010 Schémové jazyky Jazyky pro popis dokumentu XML schémata XML Schema Languages

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

ANOTACE vytvořených/inovovaných materiálů

ANOTACE vytvořených/inovovaných materiálů ANOTACE vytvořených/inovovaných materiálů Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Formát Druh učebního materiálu Druh interaktivity CZ.1.07/1.5.00/34.0722 III/2 Inovace a

Více

Profilová část maturitní zkoušky 2017/2018

Profilová část maturitní zkoušky 2017/2018 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Úvod do tvorby internetových aplikací

Úvod do tvorby internetových aplikací CVT6 01a Úvod do tvorby internetových aplikací Osnova předmětu (X)HTML a tvorba webu pomocí přímého zápisu kódu Tvorba web designu a skládání stránek z kousků Skriptovací jazyky na webu Návrh software

Více

Inovace výuky prostřednictvím šablon pro SŠ

Inovace výuky prostřednictvím šablon pro SŠ Název projektu Číslo projektu Název školy Autor Název šablony Název DUMu Stupeň a typ vzdělávání Vzdělávací oblast Vzdělávací obor Tematický okruh Inovace výuky prostřednictvím šablon pro SŠ CZ.1.07/1.5.00/34.0748

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

Tvorba WWW stránek. Mojmír Volf mojmir.volf@tul.cz https://www.nti.tul.cz/wiki/wikiuser:mojmir.volf 485 353 675

Tvorba WWW stránek. Mojmír Volf mojmir.volf@tul.cz https://www.nti.tul.cz/wiki/wikiuser:mojmir.volf 485 353 675 Tvorba WWW stránek Mojmír Volf mojmir.volf@tul.cz https://www.nti.tul.cz/wiki/wikiuser:mojmir.volf 485 353 675 Zdroje KRUG: Web design - nenuťte uživatele přemýšlet.. Computer Press, 2003. PROKOP M.: CSS

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

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

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

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

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT Dnešní téma Oblasti standardizace v ICT Případové studie standardizace v ICT: 1) Znakové sady 2) Jazyk 1. technická infrastruktura transfer a komunikace informací, přístup k informacím, sdílení zdrojů

Více

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím ICT Číslo projektu: CZ.1.07/1.5.00/34.0940

Více

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě PHP PHP původně znamenalo Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. PHP je skriptovací programovací jazyk, určený především

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

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

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

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Základy informatiky. 08 Databázové systémy. Daniela Szturcová Základy informatiky 08 Databázové systémy Daniela Szturcová Problém zpracování dat Důvodem je potřeba zpracovat velké množství dat - evidovat údaje o nějaké skutečnosti. o skupině lidí (zaměstnanců, studentů,

Více

Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Databázové systémy Tématický blok č. 4: XML, DTD, XML v SQL Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 XML 2 DTD 2.1 Atributy 2.2 Entity 3. XML v SQL Serveru Studijní cíle

Více

6. blok část C Množinové operátory

6. blok část C Množinové operátory 6. blok část C Množinové operátory Studijní cíl Tento blok je věnován problematice množinových operátorů a práce s množinovými operátory v jazyce SQL. Čtenáři se seznámí s operátory, UNION, a INTERSECT.

Více

Úvod do aplikací internetu a přehled možností při tvorbě webu

Úvod do aplikací internetu a přehled možností při tvorbě webu CVT6 01a Úvod do aplikací internetu a přehled možností při tvorbě webu Internet a www Internet? Služby www ftp e-mail telnet NetNews konference IM komunikace Chaty Remote Access P2P aplikace Online games

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

Více

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen 18.5.1974

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen 18.5.1974 základní informace Databázové systémy Úvodní přednáška předměty: KI/DSY (B1801 Informatika - dvouoborová) KI/P502 (B1802 Aplikovaná informatika) ukončení: Zápočet + Zkouška / 5kb ki.ujep.cz termínovník,

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/46 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/46 Obsah

Více

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23 Stručný obsah 1. Stručný úvod do relačních databází 13 2. Platforma 10g 23 3. Instalace, první přihlášení, start a zastavení databázového serveru 33 4. Nástroje pro administraci a práci s daty 69 5. Úvod

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Základy WWW publikování

Základy WWW publikování Ing. Igor Kopetschke Oddělení aplikované informatiky Ústav nových technologií a aplikované informatiky Fakulta mechatroniky a mezioborových inženýrských studií Technická univerzita v Liberci Email : igor.kopetschke@tul.cz

Více

Analýza dat a modelování. Speciální struktury

Analýza dat a modelování. Speciální struktury Analýza dat a modelování Speciální struktury XML extensible Markup Language jazyk pro popis struktury dat (zejména se používá pro dokumenty) výrazná podobnost s HTML proč? protože má stejný původ v jazyce

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Jak ukládat a efektivně zpracovávat

Více

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL, Anotace sady: Dynamické internetové stránky, VY_32_INOVACE_PRG_PHP_01 Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL, Stupeň a typ vzdělávání: gymnaziální vzdělávání, 4. ročník

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

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

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/46 Obsah 8.

Více

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Návrh a tvorba WWW stránek 1/14. PHP a databáze Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované

Více

Mgr. Stěpan Stěpanov, 2013

Mgr. Stěpan Stěpanov, 2013 Mgr. Stěpan Stěpanov, 2013 Abstrakt V tomto kurzu se seznámíme se základními pojmy HTML, klíčovými pravidly pro práci se značkami a atributy a strukturou dokumentu. Také se dozvíte, jak a v čem lze vytvářet

Více

HTML Hypertext Markup Language

HTML Hypertext Markup Language HTML Hypertext Markup Language je jazyk určený na publikování a distribuci dokumentů na Webu velmi jednoduchý jazyk používá ho mnoho uživatelů má výkonné prostředky (příkazy) k formátování dokumentů (různé

Více

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D. VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ Ing. Lukáš OTTE, Ph.D. Ostrava 2013 Tento studijní materiál vznikl za finanční podpory

Více

Databázové systémy. Cvičení 6: SQL

Databázové systémy. Cvičení 6: SQL Databázové systémy Cvičení 6: SQL Co je SQL? SQL = Structured Query Language SQL je standardním (ANSI, ISO) textovým počítačovým jazykem SQL umožňuje jednoduchým způsobem přistupovat k datům v databázi

Více

Příklad buňka tabulky

Příklad buňka tabulky 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 Pojmenované šablony Pojmenované

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1 3. cvičení XML (extensible Markup Language) JavaScript AJAX (Asynchronous JavaScript and XML) 2007/10 ver.2.0 1 XML podmnožina SGML (Standard Generalized Markup Language) popis dat (rozdíl oproti HTML)

Více

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

Databázové systémy trocha teorie

Databázové systémy trocha teorie Databázové systémy trocha teorie Základní pojmy Historie vývoje zpracování dat: 50. Léta vše v programu nevýhody poměrně jasné Aplikace1 alg.1 Aplikace2 alg.2 typy1 data1 typy2 data2 vytvoření systémů

Více

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal Databázové systémy - SQL * definice dat * aktualizace * pohledy Tomáš Skopal Osnova přednášky definice dat definice (schémat) tabulek a integritních omezení CREATE TABLE změna definice schématu ALTER TABLE

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

Více

Tvorba webu. Úvod a základní principy. Martin Urza

Tvorba webu. Úvod a základní principy. Martin Urza Tvorba webu Úvod a základní principy Martin Urza World Wide Web (WWW) World Wide Web (doslova celosvětová pavučina ) je označení pro mnoho dokumentů rozmístěných na různých serverech po celém světě. Tyto

Více

Úvod do databázových systémů B

Úvod do databázových systémů B Úvod do databázových systémů B RNDr. Jan Lánský, Ph.D. 5. přednáška XML Slajdy 2-45 převzaty z Mlýnková, Nečaský: Technologie XML (DBI026, MFF UK) 1 Motivace Místo A Chceme přenést informaci Místo B 2

Více

POKROČILÉ POUŽITÍ DATABÁZÍ

POKROČILÉ POUŽITÍ DATABÁZÍ POKROČILÉ POUŽITÍ DATABÁZÍ Barbora Tesařová Cíle kurzu Po ukončení tohoto kurzu budete schopni pochopit podstatu koncepce databází, navrhnout relační databázi s využitím pokročilých metod, navrhovat a

Více

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant Základy informatiky 06 Databázové systémy Kačmařík/Szturcová/Děrgel/Rapant Problém zpracování dat důvodem je potřeba zpracovat velké množství dat, evidovat údaje o nějaké skutečnosti: o skupině lidí (zaměstnanců,

Více

RELAČNÍ DATABÁZOVÉ SYSTÉMY

RELAČNÍ DATABÁZOVÉ SYSTÉMY RELAČNÍ DATABÁZOVÉ SYSTÉMY VÝPIS KONTROLNÍCH OTÁZEK S ODPOVĚDMI: Základní pojmy databázové technologie: 1. Uveďte základní aspekty pro vymezení jednotlivých přístupů ke zpracování hromadných dat: Pro vymezení

Více

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. PHP - úvod Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. Klíčové pojmy: PHP, webový prohlížeč, HTTP, FTP Základní pojmy služba WWW = 1990 první prototyp serveru, od roku 1994

Více

Vzdělávací obsah vyučovacího předmětu

Vzdělávací obsah vyučovacího předmětu V.9.3. Vzdělávací obsah vyučovacího předmětu Vzdělávací oblast: Inormatika a informační a komunikační technologie Vyučovací předmět: Informatika Ročník: 1. ročník + kvinta chápe a používá základní termíny

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Web Jaroslav Nečas Obsah přednášky Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Co to je web HTTP protokol bezstavový GET POST HEAD Cookies Session HTTPS

Více

C# - Databáze úvod, ADO.NET. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

C# - Databáze úvod, ADO.NET. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí C# - Databáze úvod, ADO.NET Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Co je to databáze? Databáze je určitá uspořádaná množina informací

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 8 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování Entita Entitní typ

Více

Databázové a informační systémy Jana Šarmanová

Databázové a informační systémy Jana Šarmanová Databázové a informační systémy Jana Šarmanová Obsah Úloha evidence údajů, způsoby evidování Databázové technologie datové modely, dotazovací jazyky. Informační systémy Datové sklady Metody analýzy dat

Více

NSWI096 - INTERNET JavaScript

NSWI096 - INTERNET JavaScript NSWI096 - INTERNET JavaScript Mgr. Petr Lasák JAVASCRIPT JAK SE DNES POUŽÍVÁ Skriptovací (interpretovaný) jazyk Umožňuje interaktivitu Použití: Dialogy Kontrola dat ve formulářích Změny v (X)HTML dokumentu

Více

Uspořádání klient-server. Standardy pro Web

Uspořádání klient-server. Standardy pro Web Návrh a tvorba WWW stránek 1/11 Uspořádání klient-server klient na straně uživatele (browser, prohlížeč) server program obsluhující požadavky uživatele Standardy pro Web HTTP Hypertext Transfer Protocol

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází 1 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Požadavky kreditového systému. Relační datový model, relace, atributy,

Více

XML a DTD. <!DOCTYPE kořenový_element [deklarace definující vlastnosti jednotlivých elementů a atributů]> externí deklarace:

XML a DTD. <!DOCTYPE kořenový_element [deklarace definující vlastnosti jednotlivých elementů a atributů]> externí deklarace: XML a DTD Kapitola seznamuje se specifikací souboru XML pomocí souboru DTD Klíčové pojmy: Definice typu dokumentu. DTD DEFINICE TYPU DOKUMENTU slouží k bližší definici XML dokumentu textový soubor s uvedenými

Více