Univerzita Karlova v Praze Matematicko-fyzik´aln´ı fakulta
´ RSK ˇ ´ PRACE ´ BAKALA A
Tatsiana Maksimenka N´ astroj pro vizualizaci XQuery dotaz˚ u
Katedra softwarov´eho inˇzen´ yrstv´ı Vedouc´ı bakal´aˇrsk´e pr´ace: RNDr. Irena Ml´ ynkov´a, Ph.D. Studijn´ı program: Informatika Obor: Obecn´a informatika
Praha 2012
Podˇ ekov´ an´ı R´ada bych podˇekovala RNDr. Irenˇe Ml´ ynkov´e, Ph.D. za veden´ı m´e pr´ace, vˇenovan´ y ˇcas a za podmˇetn´e pˇripom´ınky. A tak´e r´ada bych podˇekovala m´e matce za podporu bˇehem m´eho studia.
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracovala samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u, literatury a dalˇs´ıch odborn´ ych zdroj˚ u. Beru na vˇedom´ı, ˇze se na moji pr´aci vztahuj´ı pr´ava a povinnosti vypl´ yvaj´ıc´ı ze z´akona ˇc. 121/2000 Sb., autorsk´eho z´akona v platn´em znˇen´ı, zejm´ena skuteˇcnost, ˇze Univerzita Karlova v Praze m´a pr´avo na uzavˇren´ı licenˇcn´ı smlouvy o uˇzit´ı t´eto pr´ace jako ˇskoln´ıho d´ıla podle § 60 odst. 1 autorsk´eho z´akona. V Praze dne 3. srpna 2012.
....................................................
N´azev pr´ace: N´astroj pro vizualizaci XQuery dotaz˚ u Autor: Tatsiana Maksimenka Katedra: Katedra softwarov´eho inˇzen´ yrstv´ı Vedouc´ı bakal´aˇrsk´e pr´ace: RNDr. Irena Ml´ ynkov´a, Ph.D., Katedra softwarov´eho inˇzen´ yrstv´ı Abstrakt: Implementace n´astroje pro podporu v´ yuky jazyka XQuery s moˇznostmi vizualizace jak vstupn´ıch dat, tak i samotn´eho dotazu a jeho v´ ysledku. Kl´ıˇcov´a slova: XQuery, XML, vizualizace, graf
Title: An XQuery Visualization Tool Author: Tatsiana Maksimenka Department: Department of Software Engineering Supervisor: RNDr. Irena Ml´ ynkov´a, Ph.D., Department of Software Engineering Abstract: Implementation of a tool to support teaching of XQuery language. Tool supports visualisation of input data, query itself and its results. Keywords: XQuery, XML, visualisation, graph
Obsah ´ 1 Uvod 1.1 C´ıl pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Pouˇzit´e technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Struktura textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Existuj´ıc´ı n´ astroje 2.1 Altova XML Spy 2012 . 2.2
XML Editor 2.3 Stylus Studio . . . . . . 2.4 XQueryViz . . . . . . .
. . . 14.0 . . . . . .
. . . .
. . . .
. . . .
3 Implementace XQuery v .NET 3.1 Rozd´ıl mezi XPath 1.0 a XPath 2.0 3.2 Dokumenty XML v .NET . . . . . 3.2.1 XmlDocument . . . . . . . . 3.2.2 XPathDocument . . . . . . 3.3 Saxon . . . . . . . . . . . . . . . . 3.4 QueryMachine . . . . . . . . . . . . 3.4.1 QueryMachine.XQuery . . 3.5 Srovn´an´ı knihoven pro .NET . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
4 XQueryTool 4.1 Z pohledu uˇzivatele . . . . . . . . . . . . 4.1.1 Uˇzivatelsk´e rozhran´ı . . . . . . . 4.1.2 Vizualizace XML dokumentu . . 4.1.3 Vizualizace XQuery dokumentu . 4.1.4 Jak zaˇc´ıt pracovat s XQueryTool 4.2 Architektura aplikace . . . . . . . . . . . 4.3 XQuery v XmlGraphView . . . . . . . . 4.4 Dalˇs´ı v´ yvoj aplikace . . . . . . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . . . . . .
7 7 8 8
. . . .
9 9 9 11 12
. . . . . . . .
15 15 15 16 16 16 16 16 17
. . . . . . . .
19 19 19 20 25 25 27 27 28
5 Z´ avˇ er
29
A Obsah pˇ riloˇ zen´ eho CD
30
Literatura
31 5
Seznam obr´ azk˚ u 2.1.1 2.2.1 2.3.1 2.4.1
Hlavn´ı okno Hlavn´ı okno Hlavn´ı okno Hlavn´ı okno
Altova XML Spy 2012 .
XML Editor Stylus Studia . . . . . . XQueryViz . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
10 11 13 14
4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.2.1
XQueryTool: Hlavn´ı okno . . . . . . . . . . . . . . Zpracov´av´any XML dokument . . . . . . . . . . . XML graf . . . . . . . . . . . . . . . . . . . . . . . Vygenerovan´ y DOT soubor . . . . . . . . . . . . . Textov´a reprezentace XQuery dokumentu . . . . . S´emanticky XQuery graf . . . . . . . . . . . . . . Class diagram kl´ıˇcov´ ych ˇca´sti aplikace XQueryTool
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
21 22 23 23 24 25 27
6
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Kapitola 1 ´ Uvod XQuery1 je v´ ykonn´ y a vhodn´ y jazyk, urˇcen´ y pro zpracov´an´ı XML2 [16] [13] dokument˚ u. Pod pojmem XML dokumentu se rozum´ı nejenom soubory form´atu XML, ale tak´e datab´az´ı, jejich strukturu tvoˇr´ı vnoˇren´e pojmenovan´e stromy s atributy. Jazyk XQuery (verze 1.0)[18] je standard definovan´ y konsorciem W3C [10], urˇcen´ y pro dotazov´an´ı nad XML daty, je zaloˇzen´ y na XPath 1.0 [11] a XPath 2.0 [17]. XQuery je funkcion´aln´ı jazyk, skl´adaj´ıc´ı se z nˇekolika druh˚ u v´ yraz˚ u, kter´e lze pouˇz´ıt v r˚ uzn´ ych kombinac´ıch. Podporuje sch´emata, coˇz je v´ yznamn´ ym pˇr´ınosem oproti ostatn´ım dotazovac´ım jazyk˚ um, typov´ y syst´em je zaloˇzen na XML Schema [12]. XQuery je kompatibiln´ı s ostatn´ımi dotazovac´ımi jazyky nad XML daty. V souˇcasn´e dobˇe existuj´ı softwarov´e produkty, podporuj´ıc´ı jazyk XQuery, vˇetˇsina z nich jsou komerˇcn´ı a jsou editory, kter´e poskytuj´ı moˇznosti editovan´ı textov´e reprezentace XQuery dokument˚ u, spouˇstˇen´ı dotazu, vizualizaci v´ ysledku. Nˇekter´e n´astroje poskytuj´ı moˇznosti ladˇen´ı dotazu, krokov´an´ı a profilov´an´ı3 . Z pohledu grafick´eho rozhran´ı, je situace horˇs´ı, skoro neexistuj´ı n´astroje s podporou grafick´e vizualizace XQuery dotazu. Anal´ yza vybran´ ych softwaru je v kapitole 2.
1.1
C´ıl pr´ ace
C´ılem t´eto pr´ace je vyˇreˇsit dvˇe d˚ uleˇzit´e u ´lohy: vizualizace textov´e a grafick´e reprezentace XQuery dokument˚ u a v´ ysledku dotazu. V´ ysledkem XQuery dotazu je XML dokument. Na rozd´ıl od vˇetˇsiny grafick´ ych rozhran´ı, kter´e vizualizuj´ı XML dokumenty a sch´emata ve tvaru adres´aˇrov´eho stromu, vizualizace XML dokument˚ u v aplikace XQueryTool je v pˇrirozenˇejˇs´ım tvaru, a to shora dol˚ u. Uˇzivatel m˚ uˇze vytv´aˇret nov´e dotazy, editovat otevˇren´e dokumenty, spouˇstˇet a dost´avat v´ ysledek v r˚ uzn´ ych reprezentac´ıch. Uˇzivatel m˚ uˇze ukl´adat na disk v´ ysledek v textov´e podobˇe 1
XQuery - An XML Query Language http://www.w3.org/TR/xquery/ XML - Extensible Markup Language (XML) 1.0 3 (Profilov´ an´ı - je n´ astroj pro vyhled´av´an´ı m´ıst v programu, kter´e jsou vhodn´e pro optimalizaci http://www.fit.vutbr.cz/˜martinek/clang/profiling.html 2
7
´ 1 Uvod nebo jej tak´e m˚ uˇze exportovat do r˚ uzn´ ych form´at˚ u jako PDF4 , SVG5 , PNG6 a dalˇs´ı. Pro lepˇs´ı orientaci v dokumentech aplikace podporuje zv´ yraznˇen´ı syntaxe.
1.2
Pouˇ zit´ e technologie
Aplikace XQueryTool je naprogramov´ana v prostˇred´ı Microsoft Visual Studio 2010 Professional a .NET Framework 47 v programovac´ım jazyku Visual C# 2010 8 . Pˇri v´ yvoji byly pouˇzity n´asleduj´ıc´ı volnˇe dostupn´e technologie: QueryMachine[20], viz3.4 QueryMachine.XQuery [22] [20] Graph# [4] QuickGraph [7] Graphviz [5] AvalonEdit [2] WPF
Pro spr´avu zdrojov´ ych k´od˚ u byl pouˇzit decentralizovan´ y verzovac´ı syst´em Git, pˇres9 nˇeji jeho grafick´a nadstavba Git Extensions , kter´a se dobˇre integruje do MS Visual Studia.
1.3
Struktura textu
Druh´a kapitola se zab´ yv´a anal´ yzou existuj´ıc´ıch n´astroj˚ u, podporuj´ıc´ı jazyk XQuery, z pohledu editace a vizualizace. Ve tˇret´ı kapitole budou pˇredstaveny implementace XQuery v .NET a jej´ıch srovn´an´ı. Dalˇs´ı, ˇctvrt´a, kapitola o aplikaci XQueryTool zahrnuje popis uˇzivatelsk´eho rozhran´ı, architektury aplikace, popis nejzaj´ımavˇejˇs´ıch ˇc´ast´ı, nalezen´ı a ˇreˇsen´ı probl´em˚ u pˇri v´ yvoji aplikace a tak´e moˇzn´e budouc´ı rozˇs´ıˇren´ı XQueryTool.
4
PDF - Portable Document Format SVG - Scalable Vector Graphics 6 PNG - Portable Network Graphics 7 http://msdn.microsoft.com/en-US/vstudio/default.aspx 8 http://msdn.microsoft.com/en-us/vstudio/hh388566.aspx 9 Git Extentions lze st´ ahnout na http://code.google.com/p/gitextensions/ 5
8
Kapitola 2 Existuj´ıc´ı n´ astroje 2.1
Altova XML Spy 2012
Altova XML Spy 2012 [1] je komerˇcn´ı produkt, kter´ y zahrnuje n´astroj pro editaci XML dokument˚ u a podporu pro v´ yvoj XQuery dotaz˚ u v souladu se souborem specifikac´ı a vestavˇen´eho XQuery engine. XML Spy podporuje pouze textovou reprezentaci XQuery dokumentu (obr. 2.1.1), ˇz´adn´e jin´e pohledy nejsou k dispozici. Editor je vybaven vestavˇenou znalost´ı syntaxe XQuery. Pro editace dotazu poskytuje kontextovˇe citliv´e vstupn´ı pomocn´ıky [Enter Helpers], vˇcetnˇe seznamu promˇenn´ ych, kter´e jsou aktualizov´any dynamicky bˇehem u ´prav dotazu. Pro pˇrehlednost editor obsahuje inteligentn´ı funkce, jako je obarven´ı syntaxe, automatick´e doplˇ nov´an´ı k´odu a mnoho dalˇs´ıch utilit, kter´e umoˇzn ˇuji vytv´aˇret a upravovat XQuery dokumenty rychle a snadno, napˇr´ıklad n´astroje pro izolace chyb, ladˇen´ı a optimalizaci XQuery dotaz˚ u, ˇc´ımˇz usnadˇ nuje pr´aci program´ator˚ u. XQuery dotaz lze prov´adˇet nad aktivn´ım XML dokumentem. V´ ysledkem dotazu je XML dokument, kter´ y je reprezentov´an standardn´ımi pohledy: text (Text View), mˇr´ıˇzka (Grid View) a prohl´ıˇzeˇc (Browser View). Textovou a mˇr´ıˇzkovou reprezentaci lze upravovat, zmˇeny se objev´ı automatick´ y ve vˇsech reprezentac´ıch.
2.2
XML Editor 14.0
XQuery je urˇcen pro znaˇcen´ı informac´ı extrahovan´ ych z r˚ uzn´ ych zdroj˚ u, jako strukturovan´ ych XML dokument˚ u, objekt˚ u u ´loˇziˇst’ a relaˇcn´ı datab´aze, vˇcetnˇe nativn´ı XML datab´aze. nab´ız´ı pomoc s u ´pravou, prov´adˇen´ım a ladˇen´ım XQuery dokument˚ u. [6] poskytuje pouze textovou reprezentaci XQuery dokument˚ u, kterou lze upravovat. XML dokumenty lze editovat v XML editoru, kter´ y poskytuje n´asleduj´ıc´ı reprezentaci XML dokument˚ u: text (Text View) mˇr´ıˇzka (Grid View)
9
´ stroje 2 Existuj´ıc´ı na
Obr´azek 2.1.1: Hlavn´ı okno Altova XML Spy 2012
10
´ stroje 2 Existuj´ıc´ı na autor (Author)
V´ ysledkem dotazu je XML dokument, kter´ y na rozd´ıl od moˇznosti reprezentace XML dokumentu v XML editoru, lze zobrazit pouze v textov´e podobˇe obr. 2.2.1.
Obr´azek 2.2.1: Hlavn´ı okno XML Editor
2.3
Stylus Studio
Stylus Studio [9] poskytuje mnoho funkc´ı pro pr´aci s XQuery (XML Query Language), vˇcetnˇe grafick´eho mapovaˇce, kter´ y umoˇzn ˇuje sestavit dotaz bez psan´ı jak´ehokoli k´odu a n´astroje pro spouˇstˇen´ı a ladˇen´ı XQuery. Takˇze Stylus obsahuje n´astroj profilov´an´ı (XQuery Profiler), pro anal´ yzu a optimalizaci XQuery dotaz˚ u, t´ım zvyˇsuje efektivitu zpracov´av´an´ı dotaz˚ u. V Stylus Studio pro pr´aci s XQuery se pouˇz´ıv´a textov´ y editor a grafick´e rozhran´ı. Editor XQuery se skl´ad´a ze tˇr´ı z´aloˇzek: textov´a reprezentace XQuery dokument˚ u (XQuery Source), mapovaˇc (Mapper) a plan (Plan). Z´aloˇzka zobrazuj´ıc´ı XQuery zdroj m˚ uˇze b´ yt pouˇzita pro zobrazen´ı, komponov´an´ı, n´ahled a ladˇen´ı XQuery. Mapovaˇc poskytuje rozhran´ı, kter´e umoˇzn ˇuje vytv´aˇret a graficky zobrazit XQuery dokument (obr. 2.3.1). A skl´ad´a se z: 11
´ stroje 2 Existuj´ıc´ı na Panel zdrojov´ ych dokument˚ u, kde jeden nebo v´ıce zdrojov´ ych dokument˚ u m˚ uˇze b´ yt pˇrid´ano. Panel c´ılov´e struktury, ve kter´em m˚ uˇzeme urˇcit strukturu poˇzadovan´eho v´ ysledku XQuery. Pl´ atno mapovaˇce, na kter´em m˚ uˇzeme definovat podm´ınky, funkce a ˇcinnosti, pro uzly zdrojov´ ych dokument˚ u pro filtrov´an´ı n´avratov´ ych hodnot, kter´e jsou pak mapov´any do c´ılov´eho uzlu. Textov´ y panel – umoˇzn ˇuje zobrazit k´od XQuery pˇri pouˇz´ıv´an´ı mapovaˇce. Toto umoˇzn ˇuje sledovat jak zmˇeny v mapovaˇci ovlivˇ nuj´ı k´od XQuery, aniˇz by bylo nutn´e pˇrej´ıt na z´aloˇzku zdroje XQuery. Vˇsechny zobrazen´ı – Mapovaˇce, Z´aloˇzka zdroje XQuery a Textov´ y panel – jsou synchronizov´any.
Z´aloˇzka Plan zobrazuje jak DataDirect XQuery procesor bude vykon´avat XQuery k´od a obsahuje informace o typech SQL kter´e jsou pouˇz´ıv´any pro pˇr´ıstup k relaˇcn´ım dat˚ um pˇri XML streamingu, kter´e doˇcasn´e tabulky vznikaj´ı kdyˇz jsou vol´any promˇenn´e, a tak d´ale. V´ ysledek dotazu m˚ uˇze b´ yt zobrazen kliknut´ım na tlaˇc´ıtko n´ahled v´ ysledku (Preview Result). K dispozici jsou n´asleduj´ıc´ı n´ahledy v´ ysledku: stromov´a reprezentace (TreeView), n´ahled v prohl´ıˇzeˇci, textov´a reprezentace. Tak´e lze zobrazit profilov´an´ı dat a uloˇzit v´ ysledek do souboru. Stylus pouˇz´ıv´a standardn´ı prostˇredky pro vizualizace XML dokument˚ u, jsou to TextVIew, GridView, TreeView a SchemaView.
2.4
XQueryViz
XQueryViz [21] pˇredstavuje grafick´ y n´astroj pro vizualizaci a konstrukci XQuery dotaz˚ u. Grafick´ y n´astroj m˚ uˇze analyzovat jeden nebo v´ıce XML dokument˚ u/sch´emat, vizualizovat ve tvaru stromu, s moˇznost´ı pˇribliˇzovat a oddalovat, expandovat nebo kontrahovat vˇetve stromu. XQueryViz m˚ uˇze tak´e analyzovat textov´ y XQuery dotaz a pˇredstavit jej jako orientovan´ y acyklick´ y graf. N´astroj se skl´ad´a z n´asleduj´ıc´ıch ˇca´sti (obr. 2.4.1): 1. Grafick´a vizualizace XML dokument˚ u /sch´ematu, vizualizace XPath dotaz˚ u– svisl´a pod-okna na lev´e str´anˇe. 2. Vizualizace klauzule FOR-LET-WHERE“ (FLW) – svisl´a pod-okna uprostˇred ” n´astroje. 3. Vizualizace klauzule RETURN“ (pod)dotazu XQuery – svisl´a pod-okna na ” prav´e stranˇe. 4. Textov´a reprezentace XQuery dotazu - vodorovn´e pod-okno.
12
´ stroje 2 Existuj´ıc´ı na
Obr´azek 2.3.1: Hlavn´ı okno Stylus Studia
13
´ stroje 2 Existuj´ıc´ı na Vizualizace je pˇrirozen´a, uˇzivatel si m˚ uˇze pˇredstavit tok XML dat jako strom od koˇrene k list˚ um, a t´ım usnadˇ nuje pochopen´ı a konstrukci sloˇzitˇejˇs´ıch XQuery dotaz˚ u. Na rozd´ıl od XQBE, kde d˚ uraz je kladen na jednoduchost a c´ılov´ı uˇzivatel´e nejsou odbornici, XQueryViz je sloˇzitˇejˇs´ı a je urˇcen pro pokroˇcilejˇs´ı uˇzivatel´e. Uˇzivatel m˚ uˇze naveden´ım a kliknut´ım vyrobit XPath dotaz, kter´ y se automaticky zobraz´ı v textovˇe podobˇe pod stromem. Tento dotaz lze uloˇzit a pouˇzit pˇri konstrukce XQuery dotazu. XQueryViz generuje z grafick´e reprezentaci dotazu textovou reprezentaci. XQuery dotaz lze naˇc´ıst ze souboru, vizu´alnˇe mˇenit, ukl´adat textov´ y form´at nebo zcela vybudovat nov´ y dotaz s nebo bez pouˇzit´ı n´astroje konstrukce XPath. Konstruovat XQuery dotazy lze pomoc´ı d´ılˇc´ıch dotaz˚ u, kter´e jsou konstruov´any rekurzivnˇe. Nevyˇreˇsen´e probl´emy: Jak vizu´alnˇe propojit okna vizualizuj´ıc´ı d´ılˇc´ı konstrukci klauzuli WHERE“ a RETURN“, aby uˇzivateli bylo jasno, kter´ y d´ılˇc´ı dotaz je sou” ” ˇc´ast´ı klauzule WHERE“ nebo RETURN“. ” ” Tento grafick´ y n´astroj nen´ı k nalezen´ı na internetu, existuje jenom ˇcl´anek o nˇem [21], takˇze program nebylo moˇzn´e prozkoumat.
Obr´azek 2.4.1: Hlavn´ı okno XQueryViz
14
Kapitola 3 Implementace XQuery v .NET Bohuˇzel, v souˇcastn´e dobˇe, platforma .NET nem´a nativn´ı podporu XQuery. Architekti .NET jsou pˇresvˇedˇcen´ı, ˇze XQuery lze nahradit technologi´ı LINQ-to-XML1 . V´ıce o tom lze nal´ezt v blogu Microsoft XML Team´s WebLog2 . XML tˇr´ıdy .NET vˇsak nepodporuj´ı XPath 2.03.1, kter´ y je podmnoˇzinou XQuery, takˇze LINQ-to-XML nem˚ uˇze nahradit XQuery, alespoˇ n protoˇze funkce rozˇs´ıˇren´ı XPathSelectElement a XPathSelectElements jako parametry dost´avaj´ı v´ yrazy XPath 1.0.
3.1
Rozd´ıl mezi XPath 1.0 a XPath 2.0
XPath 1.0 pracuje s abstraktn´ım datov´ ym modelem XML dokumentu, kter´ y je ch´ap´an jako strom s uzly typ˚ u: dokument, element, atribut a dalˇs´ımi. Na rozd´ıl od XPath 1.0 v XPath 2.0 datov´ y model podporuje XML sch´ema. Navigace v dokumentu je pomoc´ı cest. V´ ysledkem vyhodnocen´ı v´ yrazu nad stromem XML dokumentu je: V XPath 1.0 mnoˇzina uzl˚ u nebo hodnota typu ˇretˇezec, ˇc´ıslo nebo logick´a hodnota. V XPath 2.0 kolekce nebo hodnota typu XML sch´ema.
Nav´ıc v XPath 2.0 se zav´ad´ı koncepce uspoˇra´d´an´ı uzl˚ u v dokumentu, proto jsou definovan´ y oper´atory <<“ , >>“ a is“, kter´e umoˇzn ˇuj´ı porovn´avat um´ıstˇen´ı v ” ” ” poˇrad´ı p˚ uvodn´ıho dokumentu. Pˇrid´any jsou oper´atory intersect a except, relaˇcn´ı oper´atory (eq, ne, gt, lt, atd.) a aritmetick´ y oper´ator idiv. Rozˇs´ıˇren je i seznam vestavˇen´ ych funkc´ı [19]. Dalˇs´ı rozd´ıly lze naj´ıt v [17].
3.2
Dokumenty XML v .NET
Microsoft .NET Framework [je citace z XML efektivn´ı programov´an´ı pro .NET Dino Esposito [23]], kromˇe reader˚ u a writer˚ u XML, obsahuje tak´e tˇr´ıdy, kter´e analyzuji 1
http://msdn.microsoft.com/en-us/library/bb387098.aspx Blog Microsoft XML Team´s WebLog http://blogs.msdn.com/b/xmlteam/archive/2007/02/08/standalonexquery-implementation-in-net.aspx 2
15
3 Implementace XQuery v .NET XML dokumenty podle objektov´eho modelu W3C Document Object Model (DOM) [3]. Tyto tˇr´ıdy jsou dostupn´e ve jmenn´em prostoru System.XML.
3.2.1
XmlDocument
XmlDocument je nejˇcastˇeji pouˇz´ıvan´a implementace objektov´eho modelu, kter´a vytvoˇr´ı v pamˇeti poˇc´ıtaˇce stromovou reprezentaci dokumentu. Obsahuje metody pro naˇc´ıt´an´ı, ukl´ad´an´ı XML dokumentu, validaci, manipulaci s uzly stromu a spustit XPath v´ yrazy na obsah dokumentu. V´ yhoda pouˇzit´ı t´eto tˇr´ıdy spoˇc´ıv´a v jednoduch´e manipulaci s uzly ve stromu. Hlavn´ı nev´ yhodou je, ˇze je to pamˇet’ovˇe n´aroˇcn´e.
3.2.2
XPathDocument
Tˇr´ıda XPathDocument zajiˇst’uje vyˇsˇs´ı v´ ykon na rozd´ıl od XmlDocumentu, protoˇze poskytuje optimalizovanou mezipamˇet’ pro XML dokumenty a pracuje v reˇzimu read-only.
3.3
Saxon
Saxon-HE (home edition) [8] je open source, kter´ y vyvinul Michael Kay pro Saxonica Limited. Poskytuje implementace XSLT 2.0 [15], XQuery 1.0 a XPath 2.0 pouze na z´akladn´ı u ´rovn´ı definovan´e W3C. Saxon-HE nenab´ız´ı funkce, kter´e zahrnuj´ı sch´emaaware. Saxon je naps´any v Javˇe a pro pr´aci v .NET vyˇzaduje IKVM.NET3 . V souvislosti s t´ım celkov´a velikost assemblies potˇrebn´ ych ke spuˇstˇen´ı Saxonu pˇresahuje 30 MB. Kromˇe reˇzie souvisej´ıc´ı s potˇrebou vyuˇzit´ı dalˇs´ıch komponent, dˇel´a tento pˇr´ıstup problematick´ ym pˇri pouˇzit´ı standardizovan´eho XML dokumentu, coˇz vede ke sn´ıˇzen´ı v´ ykonnosti a spotˇrebˇe pamˇeti.
3.4
QueryMachine
QueryMachine4 je knihovna, kter´a je univerz´aln´ım“ ovladaˇcem ADO .NET a ur” ˇcena pro prov´adˇen´ı SQL dotaz˚ u v´ ybˇeru z jak´ehokoli zdroje strukturovan´ ych dat. Projekt je naps´an v jazyku C# a pouˇz´ıv´a spoleˇcn´e platformy vypracovan´e autorem XQuery procesoru [22], kter´a je open source. Tyto n´astroje jsou um´ıstˇeny na serveru CodePlex5 .
3.4.1
QueryMachine.XQuery
QueryMachine.XQuery [20] je open source, poskytuje implementaci XQuery 1.0 zaloˇzen´e na tˇr´ıdˇe XPathNavigator API. 3
IKVM.NET http://www.ikvm.net/ QueryMachine documentation http://qm.codeplex.com/documentation 5 CodePlex http://qm.codeplex.com/ 4
16
3 Implementace XQuery v .NET Hlavn´ı rysy implementace XQuery (citov´ano z [20]): zaloˇzena na standardn´ı tˇr´ıdˇe XPathNavigator API sch´ema-aware XQuery anal´ yza dokumentu na poˇza´d´an´ı obrovsk´e vstupn´ı soubory nejsou zcela naˇcteny do pamˇeti XQuery v´ yrazy jsou kompilovan´e pˇr´ımo do MSIL nativn´ı podpora pro soubory MS Office OpenXML hash spojen´ı FLWOR optimalizace a implicitn´ı paralelizace XQuery poˇzadavk˚ u podpora XML mapov´an´ı (pouze experiment´ aln´ı) plnˇe implementuje minim´ aln´ı plnˇen´ı funkc´ı d´ıky standardu W3C XML Query Language XQuery Test Suite v´ ysledky na W3C6 .
3.5
Srovn´ an´ı knihoven pro .NET
Bˇehem v´ yvoje XQueryTool bylo vyzkouˇseno nˇekolik knihoven pro pr´aci s XML a XQuery. Pro XQuery byly vyzkouˇseny dvˇe knihovny Saxon a QueryMachine.XQuery, pro XML pak tˇr´ıdy XmlDocument (DOM), XPathDocument a XQueryDocument, o kter´ ych bylo zm´ınˇeno v pˇredchoz´ıch ˇca´stech. Efektivita prov´adˇen´ı dotazu nad XML daty, z´aleˇz´ı na efektivitˇe zpracov´av´an´ı XML dat, proto je zaj´ımav´e jejich srovnan´ı, viz tabulka 3.2, vstupn´ı XML dokumenty jsou pops´any v tabulce 3.1. N´azev souboru Velikost souboru Poˇcet element˚ u count(doc( N´azev ” souboru“)//*) Poˇcet uzl˚ u XdmNode v tabulce dokumentu
input.xml 220 MB
input2.xml 11 MB
auctions.xml 1 MB
book.xml 1,4KB
12 055 489
152 128
17 132
37
33 559 875
306 091
46 269
98
Tabulka 3.1: Popis XML soubor˚ u Z tabulky3.2 je vidˇet, ˇze soubor XQueryDocument na velk´em souboru spotˇrebuje osmkr´at m´enˇe pamˇeti neˇz XmlDocument a tak´e naˇc´ıt´a XML rychleji. Ve srovn´an´ı s XPathDocument nahr´av´an´ı je o 25 % pomalejˇs´ı a vyˇzaduje ˇctyˇrikr´at m´enˇe pamˇeti. Ale pro mal´e soubory jsou lepˇs´ı standardn´ı reprezentace XML dokumentu. XQueryDocument se vyd´av´a, protoˇze pˇri naˇc´ıtan´ı prov´ad´ı v´ıce dalˇs´ıch akci. Ale tento faktor vˇsak nen´ı kritick´ y, protoˇze doba nahr´av´an´ı, ve vˇetˇsinˇe pˇr´ıpad˚ u je zanedbateln´a na rozd´ıl od celkov´e doby prov´adˇen´ı dotazu. 6
http://dev.w3.org/2006/xquery-test-suite/PublicPagesStagingArea/XQTSReportSimple.html
17
3 Implementace XQuery v .NET
Tˇr´ıda(x64,Intel Q9550,8GB RAM) XmlDocument XPathDocument XQueryDocument
doba input.xml nahr´av´an´ı (n=1) 1.3 GB 12430 ms 700 MB 8781 ms 150 MB 11739 ms doba auctions.xml nahr´av´an´ı (n=10) XmlDocument 20 MB 24,09 ms XPathDocument 20 MB 23,12 ms XQueryDocument 23 MB 59 ms
input2.xml 91 MB 61 MB 35 MB book.xml -
doba nahr´av´an´ı (n=5) 587 ms 383 ms 592 ms doba nahr´av´an´ı (n=1000) 0,35 ms 0,34 ms 0,81 ms
Tabulka 3.2: Srovnan´ı tˇr´ıd pro pr´aci s XML dokumenty
18
Kapitola 4 XQueryTool XQueryTool je aplikace, kter´a poskytuje moˇznosti pr´ace s XQuery a XML dokumenty. XQuery dokumenty lze editovat a vizualizovat. XML dokumenty lze pouze vizualizovat.
4.1
Z pohledu uˇ zivatele
Po spouˇstˇen´ı aplikace se uˇzivateli otevˇre hlavn´ı okno XQueryTool, viz obr.4.1.1.
4.1.1
Uˇ zivatelsk´ e rozhran´ı
V horn´ı ˇc´asti hlavn´ıho okna je Menu (fialovˇe zv´ yraznˇeno v obr. 4.1.1), obsahuj´ıc´ı n´asleduj´ıc´ı funkce aplikace. Nab´ıdka menu File obsahuje poloˇzky: New XQuery (Ctrl+N) – vytvoˇr´ı nov´ y pr´azdn´ y XQuery dokument v lev´e ˇca´sti okna. Open (Ctrl+O) – otevˇre dialogov´e okno pro otevˇren´ı souboru, lze otevˇr´ıt XML nebo XQuery soubor. Save (Ctrl+S) – uloˇz´ı zmˇeny v souboru, ale v pˇr´ıpadˇe zmˇen novˇe vyroben´eho souboru XQuery zobraz´ı dialogov´e okno pro v´ ybˇer nebo vytvoˇren´ı nov´eho n´azvu souboru. Save As – zobraz´ı dialogov´e okno pro v´ ybˇer typu a n´azvu souboru. Preferences – zobraz´ı okno pro nastaven´ı um´ıstˇen´ı XQuery soubor˚ u, a nastaven´ı cest XML soubor˚ u, pouˇzit´ ych v dotazu XQuery. Exit – ukonˇc´ı program a zavˇre vˇsechna okna.
Nab´ıdka menu Edit obsahuje poloˇzky: Undo – zruˇs´ı naposledy vykonanou akci.
19
4 XQueryTool Redo – prov´ad´ı n´avrat do p˚ uvodn´ıho stavu, po nˇejak´em kroku pomoc´ı Undo. Cut, Copy, Paste – operace se tykaj´ı textu v aktivn´ım editoru: vyjmi, zkop´ıruj, vloˇz. Select All – oznaˇc´ı cel´ y text v aktivn´ım editoru.
Nab´ıdka menu XQuery obsahuje poloˇzky: Execute (F5) – spust´ı XQuery dotaz Cancel (Esc) – zruˇs´ı prov´ adˇen´ı XQuery dotazu.
Nab´ıdka menu Help obsahuje poloˇzky: XQuery on w3c.org – pˇr´ıruˇcka jazyka XQuery About – informace o programu
Po lev´e stranˇe si uˇzivatel m˚ uˇze nahr´at adres´aˇr soubor˚ u (modˇre zv´ yraznˇeno v obr.4.1.1), pro pr´aci s XQuery a XML soubory. XML soubory se zobraz´ı do vedlejˇs´ıho okna (ˇcervenˇe zv´ yraznˇeno v obr. 4.1.1), kde si uˇzivatel m˚ uˇze prohl´ednout vizualizace XML dokument˚ u. Po prav´e stranˇe je okno pro vizualizaci XQuery dokumentu (zelenˇe zv´ yraznˇeno v obr.4.1.1) a hned pod n´ım je okno v´ ysledku dotazu (oranˇzovˇe zv´ yraznˇeno v obr. 4.1.1).
4.1.2
Vizualizace XML dokumentu
Pˇri otevˇren´ı XML dokumentu, program vizualizuje jej jako: Raw file - nezpracov´av´any XML soubor Parsed XML obr.4.1.2 – zpracov´ av´any XML soubor Graph obr.4.1.3 – grafick´e pˇredstaven´ı XML souboru
Jednotliv´e uzly XML dokumentu jsou v grafu zn´azornˇeny takto: Dot obr.4.1.4 – vygenerov´ any DOT soubor, pro exportov´an´ı XML dokumentu do form´at˚ u PDF, SVG, PNG, JPEG atd.
20
4 XQueryTool
Obr´azek 4.1.1: XQueryTool: Hlavn´ı okno
21
4 XQueryTool
Obr´azek 4.1.2: Zpracov´av´any XML dokument Typ uzlu
Vizualizace uzlu
Popis Uzel typu Element s n´azvem pu” blisher“.
Element
Uzel typu Attribute s n´azvem ISBN“ a hodnotou 6132-1“. ” ” Uzel typu Text s hodnotou Microsoft Press“. ” Uzel typu Comment s hodnotou comment“. ” Uzel typu Processing Instruction obsahuj´ıc´ı pˇr´ıkaz echo Date( d.m.Y“)“. ” ” Uzel typu Namespace s prefixem xmlns“, n´azvem xsi“ a hodnotou ” ” http://www.w3.org/. . .“. ”
Attribute Text Comment Processing Instruction
Namespace
Tabulka 4.1: Grafick´a reprezentace uzl˚ u XML dokumentu 22
4 XQueryTool
Obr´azek 4.1.3: XML graf
Obr´azek 4.1.4: Vygenerovan´ y DOT soubor
23
4 XQueryTool
Obr´azek 4.1.5: Textov´a reprezentace XQuery dokumentu
24
4 XQueryTool
4.1.3
Vizualizace XQuery dokumentu
XQuery obr.4.1.5 – textov´a reprezentace XQuery dokumentu nebo textov´ y editor XQuery dokumentu.
XQuery editor obsahuje pomocn´e funkce, pro editaci textu: Save, Undo, Redo, Cut, Copy, Paste, Execute – maj´ı stejn´ y v´ yznam jako funkce v Menu Edit a Menu XQuery, nav´ıc je definov´ana funkce na uloˇzen´ı v´ ysledku XQuery dotazu. Graph obr.4.1.6 – grafick´a reprezentace XQuery dokumentu.
Grafick´a reprezentace XQuery dokumentu je pˇredstaven´a pomoc´ı konstrukc´ı XQuery jazyka a tak´e uzly, reprezentuj´ıc´ı XML dokumentu4.1. Jednotliv´e uzly XQuery dokumentu jsou v grafu zn´azornˇeny takto:
Obr´azek 4.1.6: S´emanticky XQuery graf
4.1.4
Jak zaˇ c´ıt pracovat s XQueryTool
Pˇri prvn´ım spuˇstˇen´ı programu by mˇel uˇzivatel nastavit pracovn´ı adres´aˇr a um´ıstˇen´ı XML soubor˚ u. Existuj´ı dvˇe moˇznosti jak nastavit pracovn´ı adres´aˇr: 1. Pouˇz´ıt cestu Menu File ⇒ Preferences ⇒ XQuery Location. 2. Na lev´e str´anˇe, kde je rozm´ıstˇen adres´aˇr souboru zm´aˇcknout odkaz Set folders a vybrat pˇr´ısluˇsnou sloˇzku. Um´ıstˇen´ı XML dokument˚ u lze nastavit pouˇzit´ım cesty jako v bodˇe 1. Pokud uˇzivatel neprovede nastavˇen´ı hned, m˚ uˇze se vr´atit k tomuto bodu pozdˇeji. Veˇsker´a nastaven´ı program zapamatuje a pˇri dalˇs´ım spuˇstˇen´ı programu je zobraz´ı. Pro pr´ace s XQuery dokumenty uˇzivatel m´a dvˇe moˇznosti: 25
4 XQueryTool
Vizualizace uzlu
Popis Uzel reprezentuje obecn´ y svazek klauzul´ı for, let, where, order by, return. Uzel reprezentuje klauzule FOR“. ” Uzel reprezentuje klauzule LET“. ” Uzel reprezentuje klauzule WHERE“. ” Uzel reprezentuje klauzule ORDER BY“. ” Uzel reprezentuje klauzule RETURN“. ” Uzel reprezentuje konstrukci {}, coˇz znamen´a, ˇze potomci jsou XQuery v´ yrazem. Uzel reprezentuje declarace funkce. Uzel reprezentuje vnitˇr´ı ˇc´ast v´ yrazu XQuery v {} z´avork´ach. Samostatn´ y uzel reprezentuje import schema.
Tabulka 4.2: Vizu´aln´ı uzly XQuery grafu
26
4 XQueryTool 1. Otevˇr´ıt existuj´ıc´ı XQuery dokument bud´ pˇres Menu File ⇒ Open (Ctrl + O) nebo vybrat soubor z adres´aˇre, 2. Vyrobit nov´ y XQuery dokument pˇres Menu File ⇒ New XQuery (Ctrl + N) XQuery dokument lze editovat pomoc´ı vestavˇen´ ych funkci v Menu Edit nebo pouˇzit funkce rovnou v editoru. Spouˇstˇet dotaz lze bud´ v Menu XQuery ⇒ Execute nebo zm´aˇcknout tlaˇc´ıtko Execute v editoru nebo zm´aˇcknout F5. Vyhodnocen´ı dotazu m˚ uˇze chvilku trvat a v´ ysledek je zobrazen v doln´ı ˇca´sti panelu. Tento v´ ysledek pak lze uloˇzit nebo exportovat do r˚ uzn´ ych form´at˚ u. Uˇzivatel tak´e m˚ uˇze pro kontrolu otevˇr´ıt XML dokumenty, nad kter´ ymi dotaz prob´ıh´a.
4.2
Architektura aplikace
Kl´ıˇcov´a ˇca´st aplikace, kter´a je zobrazen´a na obr.4.2.1, je kompozic´ı nˇekolika pohled˚ u. Z´akladn´ımi pohledy jsou XmlView a XQueryView. XmlView se star´a o vizualizaci XML dokument˚ u a zapouzdˇruje nˇekolik pohled˚ u: XmlAvalonView, XmlTextView, XmlGraphDotView, XmlGraphView. XQueryView se star´a o vizualizaci XQuery dokument˚ u a v´ ysledku dotazu. Pro editaci pouˇz´ıv´a Avalon editor (obdobnˇe jako XmlAvalonView), pro vizualizaci XQuery dokumentu pouˇz´ıv´a XmlGraphView z XmlView a pro zobrazen´ı v´ ysledku pouˇz´ıv´a dalˇs´ı XmlView. IXmlView +updateView()
XmlAvalonView
XmlTextView
XmlGraphvizDotView
XmlGraphView
+updateView()
+updateView()
+updateView()
+updateView()
XmlView +updateView()
XQueryView +execute() +updateView()
Obr´azek 4.2.1: Class diagram kl´ıˇcov´ ych ˇc´asti aplikace XQueryTool
4.3
XQuery v XmlGraphView
Nejzaj´ımavˇejˇs´ı ze vˇsech pohled˚ u je XmlGraphView, kter´ y se star´a o vizualizaci XML dokumentu ve tvaru stromu a o vizualizaci XQuery dokumentu ve tvaru s´emantick´eho grafu. 27
4 XQueryTool Ve jmenn´em prostoru QueryMachine.XQuery [22] jsou definov´any tˇr´ıdy, kter´e se zab´ yvaj´ı anal´ yzou a vnitˇrn´ı reprezentac´ı s´emantiky XQuery dotazu. Gramatika XQuery je popsan´a Backus-Naurovou norm´aln´ı formou (BNF), ze kter´e je pomoc´ı n´astroje Jay generov´an parser YYParser. Tento parser je pouˇz´ıv´an k pˇrevodu textov´e reprezentace na instanci tˇr´ıdy Notation z jmenn´eho prostoru QueryMachine.XQuery. Opaˇcn´ y pˇrevod umoˇzn ˇuje tˇr´ıda XQueryWriter, ˇcehoˇz vyuˇz´ıv´a XmlGraphView. Tˇr´ıda XQueryWriter bylo doplnˇena o volan´ı deleg´at˚ u, kter´ ych XmlGraphView vyuˇz´ıv´a k sestaven´ı grafu reprezentuj´ıc´ıho data uloˇzen´a v Notation. Deleg´aty jsou rozm´ıstˇeny na r˚ uzn´ ych zaj´ımav´ ych m´ıstech, jako je napˇr´ıklad zaˇc´atek a konec elementu, zaˇc´atek a konec atributu nebo i r˚ uzn´a m´ısta ve v´ yrazech, coˇz umoˇzn ˇuje zachytit elementy a atributy bˇehem ˇcinnosti XQueryWriteru.
4.4
Dalˇ s´ı v´ yvoj aplikace
Pˇr´ı v´ yvoji aplikace XQueryTool bylo nalezeno nˇekolik probl´em˚ u, navz´ajem se vyluˇcuj´ıc´ıch. Napˇr´ıklad, nen´ı vyˇreˇsen probl´em vyznaˇcen´ı ˇc´asti XML dokument˚ u, kter´e jsou v dotazu vybr´any a jejich transformace do v´ ystupu. D˚ uraz byl kladen na podporu vˇetˇs´ıch soubor˚ u, kv˚ uli ˇcemuˇz byla pouˇzita tˇr´ıda XQueryDocument pro reprezentaci XML dokumentu. Model XQueryDocumentu se skl´ad´a z objekt˚ u, kter´e vytv´aˇr´ı pˇri ˇcten´ı dokumentu. Kaˇzd´ y uzel v modelu dokumentu m´a unik´atn´ı n´azev a typ XSD uvnitˇr rodiˇcovsk´eho uzlu. Pokus rozˇs´ıˇrit XQueryNavigator a model o pˇr´ıznak zv´ yraznˇen´ı se nezdaˇril, protoˇze nˇekolik uzl˚ u je reprezentov´ano jedn´ım objektem a proto nen´ı moˇzn´e jednoduˇse jim nastavovat pˇr´ıznak pro zv´ yraznˇen´ı, zv´ yrazn´ı to vˇsechny uzly se stejn´ ym n´azvem ve stejn´e u ´rovni. Takˇze optimalizace pouˇzit´e pro minimalizaci spotˇreby pamˇeti znaˇcnˇe komplikuji rozˇsiˇrov´an´ı funkˇcnosti. Moˇzn´e ˇreˇsen´ı spoˇc´ıv´a v nab´ıdnut´ı uˇzivateli dvou moˇznost´ı: prvn´ı bude pro vˇetˇs´ı soubory, ale bez vyznaˇcen´ı ˇca´sti XML dokumentu, a druh´a bude omezena na velikost souboru, ale s vyznaˇcen´ım ˇc´ast´ı XML dokumentu s pouˇzit´ım objektov´eho modelu, kter´ y naˇcte do pamˇet´ı soubor a bude s nim manipulovat. Aplikace vizualizuje XQuery dokument jako s´emanticky graf, a to smˇerem z textu ⇒ graf, moˇzn´e rozˇs´ıˇren´ı by mohlo prov´azat vizualizace XQuery dotazu obˇema smˇery, aby byla moˇznost vygenerovat z grafick´e podoby zdrojov´ y text XQuery dokumentu. Tak´e by bylo moˇzn´e pˇridat uˇzivatelsk´a nastaven´ı parametr˚ u vizualizace jednotliv´ ych prvk˚ u.
28
Kapitola 5 Z´ avˇ er C´ılem pr´ace byla implementace softwaru pro podporu v´ yuky jazyka XQuery. Aplikace XQueryTool umoˇzn ˇuje editovat XQuery dokumenty v textov´e podobˇe, a vizualizovat je graficky. XQuery dotazy lze vyhodnocovat, a v´ ysledek je vizualizov´an textovˇe i graficky. V´ ysledek lze uloˇzit jako norm´aln´ı XML dokument, ale tak´e ho lze exportovat do r˚ uzn´ ych form´at˚ u, jako napˇr´ıklad PDF, SVG a dalˇs´ı. Pro vˇetˇs´ı pˇrehlednost textov´e reprezentace XQueryTool pouˇz´ıv´a obarven´ı syntaxe, stejn´e jako v grafick´e reprezentaci pouˇz´ıv´a obarven´ı uzl˚ u. Aplikace XQueryTool byla otestovan´a na pˇr´ıkladech k n´ı pˇriloˇzen´ ych [14]. Tyto pˇr´ıklady jsou pouˇz´ıv´any jako z´aklad, uˇzivatel m˚ uˇze je spouˇstˇet, pˇr´ıpadnˇe m˚ uˇze je kombinovat a vytv´aˇret sloˇzitˇejˇs´ı dotazy nad XML daty.
29
Pˇ r´ıloha A Obsah pˇ riloˇ zen´ eho CD XQueryTool.pdf – Tento text ve form´atu PDF. Thesis/ – Zdrojov´e soubory pro tento text ve form´atu pro editor LYX. BpVisualXQuery/ – Zdrojov´e k´ody (´ upln´e reposit´aˇre Gitu). BpVisualXQuery/BpVisualXQuery/bin/Debug/BpVisualXQuery.exe – Spustiteln´ y soubor aplikace XQueryTool. BpVisualXQuery/setup.exe – Instalace XQueryTool. BpVisualXQuery/BpVisualXQuery/tools/graphviz-2.28.0.msi – Instalaˇcn´ı bal´ık knihovny Graphviz pro kreslen´ı graf˚ u. BpVisualXQuery/BpVisualXQuery/Samples – Pˇr´ıklady pouˇzit´ı XQuery dotaz˚ u.
30
Literatura [1] Altova XMLSpy. http://www.altova.com/xmlspy.html. 2.1 [2] AvalonEdit. http://wiki.sharpdevelop.net/AvalonEdit.ashx. 1.2 [3] Document Object Model (DOM) W3C. http://www.w3.org/DOM/. 3.2 [4] GraphSharp. http://graphsharp.codeplex.com/. 1.2 [5] Graphviz - Graph Visualization Software. http://www.graphviz.org/. 1.2 [6] XML Editor version 14.0. http://www.oxygenxml.com/. 2.2 [7] QuickGraph, Graph Data Structures And Algorithms for .NET. http://quickgraph.codeplex.com/. 1.2 [8] SAXON The XSLT and XQuery Processor. http://saxon.sourceforge.net/. 3.3 [9] Stylus Studio. http://www.stylusstudio.com/. 2.3 [10] The World Wide Web Consortium. http://www.w3.org/. 1 [11] XML Path Language (XPath) Version 1.0 W3C , November 1999. http://www.w3.org/TR/xpath/. 1 [12] XML Schema Part 0: Primer Second Edition W3C, October 2004. http://www.w3.org/TR/xmlschema-0/. 1 [13] Extensible Markup Language (XML) 1.1 (Second Edition) W3C, August 2006. http://www.w3.org/TR/xml11/. 1 [14] XML Query Use Cases W3C, March 2007. http://www.w3.org/TR/xquery-use-cases/. 5 [15] XSL Transformations (XSLT) Version 2.0 W3C, January 2007. http://www.w3.org/TR/xslt20/. 3.3 [16] Extensible Markup Language (XML) 1.0 (Fifth Edition) W3C, November 2008. http://www.w3.org/TR/2008/REC-xml-20081126/. 1
31
LITERATURA [17] XML Path Language (XPath) 2.0 (Second Edition) W3C, December 2010. http://www.w3.org/TR/xpath20/. 1, 3.1 [18] XQuery 1.0: An XML Query Language (Second Edition) W3C, December 2010. http://www.w3.org/TR/xquery/. 1 [19] XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition) W3C, December 2010. http://www.w3.org/TR/xpath-functions/. 3.1 [20] Standalone XQuery and SQL Implementation in .NET, November 2011. http://qm.codeplex.com/. 1.2, 3.4.1 [21] Jihad Boulos, Marcel Karam, Zeina Koteiche, and Hala Ollaic. XQueryViz: An XQuery Visualization Tool. 2006. http://www.springerlink.com/content/0770186179123693/. 2.4, 2.4 [22] Chertkov S. A. QueryMachine.XQuery: Implementace XQuery 1.0 pro platformu .NET. June 2010. http://www.rsdn.ru/article/xml/QueryMachineXQuery.xml. 1.2, 3.4, 4.3 [23] Esposito D. : XML - efectivn´ı programov´an´ı pro .NET. Grada, 2004. 3.2
32