}w!"#$%&'()+,-./012345<ya

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

Download "}w!"#$%&'()+,-./012345<ya"

Transkript

1 MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY }w!"#$%&'()+,-./012345<ya Aplikační rozhraní pro práci s XML v jazyce Java BAKALÁŘSKÁ PRÁCE Zdeněk Zikán Brno, jaro 2006

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

3 Poděkování Rád bych poděkoval svému vedoucímu za dobré vedení této práce a užitečné rady, své rodině a přátelům za podporu a své přítelkyni za dostatek trpělivosti se mnou. iii

4 Klíčová slova XML, indexování XML dokumentů, Java, API, aplikační rozhraní, XIQE, XML databáze, JAXP, XML:DB iv

5 Úvod XML je jazyk, který je v současnosti velice populární pro svou flexibilitu a používaný v nejrůznějších oblastech. Jedná se o jazyk pro sloužící pro značkování dat a je vhodný hlavně tehdy, když mají data hierarchickou strukturu. Pro potřeby ověření různých metod indexování XML dat a zjištění jejich efektivity vznikl projekt XIQE (XML Indexing and Querying Engine). Více informací o XIQE je možné nalézt v diplomové práci jeho autorky [1]. Účelem této práce je umožnit použití XIQE nejen jako experimentálního systému, ale také jako XML databáze a navrhnout tedy rozhraní pro použití systému z vnějšku, tak, aby uživatel mohl systém využívat bez znalosti jeho fungování a architektury. v

6 Obsah 1 Existující aplikační rozhraní pro práci s XML v jazyce Java Java API for XML Processing (JAXP) javax.xml* javax.xml javax.xml.datatypes javax.xml.namespaces javax.xml.parsers javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stream javax.xml.validation javax.xml.xpath W3C DOM (org.w3c.dom*) org.w3c.dom org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls SAX (org.xml.sax*) org.xml.sax org.xml.sax.helpers org.xml.sax.ext XML:DB API org.xmldb.api org.xmldb.api.base org.xmldb.api.modules Dom4j JDOM Xerces Native Interface StAX XMLPULL JAXB (Java Architecture for XML Binding) Castor XML Požadavky uživatele Současný stav XIQE a návrh změn XML:DB API JAXP Rozhraní org.xiqe Závěr A Obsah přiloženého CD vi

7 Literatura Rejstřík vii

8 Kapitola 1 Existující aplikační rozhraní pro práci s XML v jazyce Java 1.1 Java API for XML Processing (JAXP) Java API for XML Processing je sada několika API vybraných jako základní a nejdůležitějších API pro zpracování XML v Javě. Od verze Javy 1.5 je JAXP 1.3 součástí Java Core API. Z tohoto důvodu zde uvádím přehled a stručný popis tříd, které jsou součástí JAXP javax.xml* javax.xml Balík javax.xml obsahuje jedinou třídu a to XMLConstants, která definuje pouze konstanty (statické finální atributy typu String), často používané v XML dokumentech, například URI různých často používaných jmenných prostorů (XMLSchema, RelaxNG, XMLNS) či prefixy definované specifikací XML javax.xml.datatypes Poskytuje mapování typů vyjadřujících datum v Javě a XML. Obsahuje třídy: DatatypeConstants obsahuje konstanty používané v operacích s datem. DatatypeConstants.Field typově bezpečná výčtová třída reprezentující šest polí třídy Duration (viz dále). DatatypeFactory tovární třída umožnující vytvářet instance tříd Duration a XMLGregorianCalendar (viz dále). Duration třída reprezentující časové intervaly podle W3C XML Schema 1.0 a implementující různé operace nad nimi (např. porovnávání, sčítání). XMLGregorianCalendar třída reprezentující kalendář; umožňuje nastavit datum a čas a z nich získat bud XML reprezentaci, nebo instanci třídy java.util. GregorianCalendar, umožňující pokročilejší práci s datem a časem. Výjimku DatatypeConfigurationException. 1

9 1.1. JAVA API FOR XML PROCESSING (JAXP) javax.xml.namespaces Umožňuje práci s jmennými prostory XML. Obsahuje rozhraní NamespaceContext sloužící k získání prefixu (resp. prefixů) daného URI nebo URI daného prefixu a třídu QName reprezentující tzv. kvalifikované jméno elementu, tj. identifikátor, skládající se ze jména, prefixu a URI javax.xml.parsers Poskytuje třídy umožňující analýzu (parsing) XML dokumentů. DocumentBuilder slouží k převedení řetězcové reprezentace XML dokumentu na DOM reprezentaci (instanci třídy org.w3c.dom.document). DocumentBuilderFactory tovární třída pro vytváření parserů (instancí třídy DocumentBuilder) s různým nastavením lze určit, jestli má být parser validující, má brát v potaz komentáře, jmenné prostory, má ignorovat ignorovatelná bílá místa apod. SAXParser abstraktní třída definující API, které obaluje třídy implementující org.xml.sax.xmlreader. SAXParserFactory abstraktní třída definující API pro získání pro konfiguraci a vytvoření objektu typu SAXParser. Třídu výjimky ParserConfigurationException a chybovou třídu Factory- ConfigurationError javax.xml.transform Definuje obecná API pro zpracování transformačních instrukcí a transformaci. Obsahuje rozhraní: ErrorListener umožňuje vytvořit vlastní ošetření chyb při transformaci. Instanci třídy implementující toto rozhraní je možné zaregistrovat pomocí metody seterrorlistener třídy Transformer. Result objekt implementující toto rozhraní obsahuje informace potřebné pro vytvoření stromu výsledku transformace. Toto rozhraní je implementováno (v Java Core API) třídami DOMResult, SAXResult a StreamResult. Source objekt implementující toto rozhraní obsahuje informace potřebné pro jeho použití pro vstup (XML soubor nebo transformační instrukce). Toto rozhraní je implementováno (v Java Core API) třídami DOMSource, SAXSource a Stream- Source. 2

10 1.1. JAVA API FOR XML PROCESSING (JAXP) SourceLocator slouží především pro účely označení místa (v XML souboru nebo transformačních instrukcích), kde došlo k chybě. Toto rozhraní je implementováno (v Java Core API) třídou DOMLocator. Templates objekt implementující toto rozhraní je běhovou (runtime) reprezentací zpracovaných transformačních instrukcí. Pomocí metody newtransformer se pak vytvoří objekt Transformer (viz dále). URIResolver objekt implementující toto rozhraní může být zavolán transformačním procesorem k získání objektu Source odpovídající danému URI (použitém v document(), xsl:import nebo xsl:include). Třídy: OutputKeys poskytuje řetězcové konstanty pro nastavení výstupních vlastností objektu Transformer, nebo získání výstupních vlastností objektu Transformer nebo Template. Transformer abstraktní třída. Instance její podtřídy provádí transformaci zdrojového stromu na cílový. Transformer může být použit opakovaně a jeho nastavení se mezi jednotlivými transformacemi zachovává (pokud ho nepřenastavíme). Objekt typu Transformer by se neměl používat ve více souběžně spuštěných vláknech najednou. Různé instance typu Transformer však ve více souběžných vláknech použity být mohou. TransformerFactory tovární třída pro vytváření objektů typu Transformer a Templates. Výjimky TransformerConfigurationException a TransformerException a chybovou třídu TransformerFactoryConfigurationError javax.xml.transform.dom Implementuje API specifické pro DOM. Obsahuje rozhraní DOMLocator, třídy DOMResult a DOMSource, jejichž funkce je zřejmá (viz jim příslušná rozhraní SourceLocator, Result a Source v balíku javax.xml.transform) javax.xml.transform.sax Implementuje API specifické pro SAX2. Obsahuje rozhraní: TemplatesHandler umožňuje vytvoření objektů typu Templates z událostí SAX2. Je potomkem org.xml.sax.contenthandler a může být tedy použit na jeho místě. Poté, co přijdou všechny SAX události, objekt Templates může být vytvořen pomocí metody gettemplates(). 3

11 1.1. JAVA API FOR XML PROCESSING (JAXP) TransformerHandler rozšiřuje rozhraní org.xml.sax.contenthandler, org.xml.sax.dtdhandler a org.xml.sax.ext.lexicalhandler. Třídy: SAXTransformerFactory abstraktní třída rozšiřující TransformerFactory a poskytující tovární metody specifické pro SAX. Umí vytvářet objekty TransformerHandler a TemplatesHandler (obojí potomky ContentHandler) a XMLFilter. SAXResult verze Result specifická pro SAX. Pokud je mu předán Content- Handler, je nastaven pro příjem SAX2 událostí z transformace. SAXSource verze Source specifická pro SAX. Umožňuje nastavit vstupní zdroj InputSource a XMLReader, který jej bude číst. (Obojí viz org.xml.sax.) javax.xml.transform.stream Implementuje API specifické pro streamy a URI. Jedná se o třídy: StreamResult reprezentuje výsledek transformace (XML, čistý text, HTML, nebo jiný značkovaný text). StreamSource reprezentuje zdroj transformace javax.xml.validation Poskytuje API pro validaci XML dokumentů, tedy ověření toho, že daný XML dokument je instancí daného XML schématu. Toto API umožňuje odděluje validaci XML dokumentu od jeho parsování, díky čemuž je možné použít různá schémata pro validaci (DTD, W3C XML Schema, RelaxNG) a jednoduše spolu za běhu párovat XML dokumenty a schémata. Třídy: Schema reprezentuje schéma, tedy gramatiku, sadu omezení, na která je XML dokument testován. Třída je neměnitelná a vláknově bezpečná. Instance se vytváří obvykle pomocí SchemaFactory, odvozené podtřídy však mohou používat i konstruktor (protected). SchemaFactory tovární třída pro vytváření Schema objektů. Jedná se o kompilátor schémat, který přečte externí reprezentaci schématu a převede ji do podoby použitelné pro validaci. Po načtení schématu je pomocí URI jeho jmenného prostoru určeno, o jaký se jedná jazyk. SchemaFactory není vláknově bezpečná a reentrantní, tzn. nesmí být použita z více než jednoho vlákna najednou a pokud běží metoda newschema, nesmí být znovu rekurzivně volána. 4

12 1.1. JAVA API FOR XML PROCESSING (JAXP) SchemaFactoryLoader tovární třída pro vytváření objektů SchemaFactory. Tato třída je určená pro použití validačními API. TypeInfoProvider poskytuje přístup k informacím o typech elementů a atributů tak, jak je zjišt uje ValidatorHandler. Implementaci získáme pomocí ValidatorHandler.getTypeInfoProvider(). Metody getelementtype- Info a getattributetypeinfo pak vrací objekt implementující org.w3c. dom.typeinfo, který nese informace o typu. Validator procesor pro porovnání XML dokumentu s daným XML schématem. Třída není vláknově bezpečná a reentrantní, tzn. nesmí být použita z více než jednoho vlákna najednou a pokud běží metoda validate, nesmí být znovu rekurzivně volána. Metoda validate sice má parametry typu Source a Result, ale přijímá pouze SAXSource a DOMSource resp. SAXResult a DOMResult. ValidatorHandler validátor pro SAX proudy. Třída implementuje rozhraní org.xml.sax.contenthandler, není vláknově bezpečná ani reentrantní. ValidatorHandler kontroluje, jestli SAX události odpovídají omezením popsaným v Schema a případně modifikuje SAX události (např. přidává implicitní hodnoty, pokud nejsou uvedeny) javax.xml.xpath Poskytuje API pro vyhodnocování XPath dotazů, které je nezávislé na objektovém modelu dokumentu. Rozhraní: XPath poskytuje přístup k prostředí vyhodnocování XPath dotazů umožňuje zjišt ovat a nastavovat třídu pro zpracování proměnných a funkcí (XPathVariableResolver, XPathFunctionResolver), kompilovat a provádět XPath dotazy. XPathExpression reprezentuje zkompilovaný XPath dotaz, který tak lze vícekrát provádět na různých vstupních datech. XPathFunction reprezentuje XPath funkci. Obsahuje jedinou metodu Object evaluate(list args). XPathFunctionResolver poskytuje přístup k množině uživatelem definovaných proměnných metoda resolvefunction je volána kvalifikovaným jménem funkce a její aritou a vrací XPathFunction. XPathFunctionResolver není třeba pro vestavěné funkce XPath a nelze jej použít na jejich přepsání. Lze jej použít pouze na funkce v jiném jmenném prostoru. 5

13 1.1. JAVA API FOR XML PROCESSING (JAXP) XPathVariableResolver poskytuje přístup k množině uživatelem definovaných proměnných metoda resolvevariable převede kvalifikované jméno proměnné na její hodnotu (tedy Object jí odpovídající). Třídy: XPathConstants nabízí konstanty reprezentující datové typy XPath 1.0 a URI pro objektový model DOM. XPathFactory tovární třída pro objekty XPath. Výjimky XPathException, XPathExpressionException, XPathFactoryConfigurationException, XPathFunctionException W3C DOM (org.w3c.dom*) W3C DOM je objektový model dokumentu budovaný jako strom. Stromové modely dokumentu jsou vhodné pro reprezentaci XML dokumentu v paměti a snadnou práci s ním. Jejich nevýhoda je právě nutnost reprezentovat dokument (resp. uzel) celý v paměti a tedy vyšší pamět ová režie, což je činí nevhodnými pro zpracování velkých XML dokumentů. Obrázek 1.1: Schéma použití DOM v JAXP org.w3c.dom Poskytuje rozhraní na práci s DOM (Document Object Model). Toto API umožňuje číst a upravovat obsah a strukturu dokumentu. Obsahuje rozhraní: 6

14 1.1. JAVA API FOR XML PROCESSING (JAXP) Node je hlavním rozhraním tohoto balíku a reprezentuje uzel ve stromu XML dokumentu. Je možné pracovat se strukturou podstromu (např. odebírat, přidávat a zjišt ovat informace o dceřinný a sourozeneckých uzlech, zjišt ovat informace o rodičích). Potomky tohoto rozhraní jsou Attr, CDATASection, CharacterData, Comment, Document, DocumentFragment, DocumentType, Element, Entity, EntityReference, Notation, ProcessingInstruction a Text. Některé z nich se liší svými možnostmi, např. Text neumožňuje mít dceřinné uzly (přestože rozhraní Node má metodu appendchild) a přidání takového uzlu vyvolá výjimku. Informace o uzlu je možné získat i bez jeho přetypování a to pomocí getnodetype, getnodename a getnodevalue. Attr reprezentuje atribut XML elementu. Přestože implementuje rozhraní Node, atributy nejsou potomkem žádného elementu a proto nejsou považovány za součást DOM stromu dokumentu. Pokud atribut není v dokumentu uveden, ale má schématem nastavenou implicitní hodnotu, bude vytvořen s příznakem specified nastaveným na false. CharacterData poskytuje metody pro přístup k řetězcovým datům v DOM. CDATASection je potomkem CharacterData a reprezentuje CDATA sekci, tj. sekci, která obsahuje znaky, které by jinak byly považovány za značkování (tj. např. znaky <, >, &). Comment je potomkem CharacterData a reprezentuje obsah komentáře bez jeho okrajů <!-- a -->. Text je potomkem CharacterData a reprezentuje textový obsah elementu nebo atributu. Po parsování by měl odpovídat jeden objekt Text jednomu textovému bloku bez značkování. Uživatel pak může vytvářet další, sousední Text uzly, aniž by ovlivnil značkování. Toto oddělení více částí textu ale nelze reprezentovat v XML, takže toto rozdělení nebude zachováno mezi jednotlivými instancemi DOM. Document reprezentuje celý XML dokument, tedy kořenový element. Jelikož elementy, textové uzly, komentáře atd. nemohou existovat vně dokumentu, rozhraní Document obsahuje tovární metody na jejich tvorbu. DocumentFragment slouží jako odlehčená verze Document pro případy, kdy by implementace Document byla příliš náročná a těžkopádná, např. pokud je třeba dokument rozdělit na více částí a ty pak opět spojit v jeden dokument. Pro to má navíc tu výhodu, že DocumentFragment nemusí splňovat všechny podmínky pro dobře utvořený XML dokument (např. může obsahovat pouze textový uzel a žádný kořenový element). DocumentType každý Document má atribut doctype typu DocumentType. Ten reprezentuje typ dokumentu, tzn. jméno DTD, jeho veřejný a systémový identifikátor a sadu entit, které DTD definuje. 7

15 Element reprezentuje XML element JAVA API FOR XML PROCESSING (JAXP) Entity reprezentuje XML entitu (at už parsovanou nebo neparsovanou). Nemá žádného rodiče a její potomek (pokud nějakého má) je obsah, kterým se má nahradit EntityReference ve stromu dokumentu. EntityReference reprezentuje odkaz na XML entitu ve stromu dokumentu. Notation reprezentuje notaci použitou v DTD (poskytuje přístup pouze pro čtení, neumožňuje notaci měnit). ProcessingInstruction reprezentuje procesní instrukci. DOMConfiguration reprezentuje konfiguraci dokumentu a tabulku rozpoznaných parametrů. Konfigurovat lze např. to, zda se dokument bude validovat oproti schématu, jaké schéma bude použito, jestli mají být ve stromu dokumentu i komentáře, jak se má zacházet s bílým místem, odkazy na entity apod. DOMError popisuje vzniklé chyby (řetězec, popisující chybu, typ chyby, závažnost, umístění a data, kterých se chyba týká). DOMErrorHandler slouží pro ošetření vzniklých chyb obsahuje jedinou metodu boolean handleerror(domerror). DOMImplementation poskytuje metody pro provádění operací nezávislých na konkrétní instanci DOM stromu. Umožňuje vytvořit dokument požadovaného typu a zjišt ovat a využívat vlastnosti konkrétní implementace DOM. DOMImplementationList reprezentuje uspořádanou kolekci implementací DOM (DOMImplementation). DOMImplementationSource umožňuje poskytovat jednu nebo více implementací DOM na základě vlastností a verzí, které uživatel od implementace požaduje. DOMLocator popisuje umístění v dokumentu (použitelné např. pro identifikaci místa, kde vznikla chyba). DOMStringList reprezentuje uspořádanou kolekci hodnot DOMString (reprezentovaných jako String). NamedNodeMap reprezentuje kolekci uzlů, ke kterým je možné přistupovat podle jména. (Uzly jsou uspořádány a může k nim tak být přistupováno i podle indexu, ale toto uspořádání není definováno, slouží pouze k umožnění přístupu ke kolekci i jako k výčtu.) NameList reprezentuje uspořádanou kolekci dvojic jméno a jmenný prostor (jmenný prostor může být i null). 8

16 1.1. JAVA API FOR XML PROCESSING (JAXP) NodeList reprezentuje uspořádanou kolekci uzlů (Node). TypeInfo reprezentuje typ (tj. dvojici jméno typu a URI jmenného prostoru) odkazovaný uzlem typu Element nebo Attr specifikovaný ve schématu přiřazeném k dokumentu. UserDataHandler s každým uzlem (Node) je možné asociovat dvojice klíč a libovolný objekt uživatelská data (pomocí metody setuserdata). Ke každé dvojici je možné přiřadit UserDataHandler, který je zavolán, když je uzel (ke kterému jsou data přiřazena) klonován, importován, adoptován (tj. přesouván z jednoho dokumentu do druhého), přejmenováván nebo mazán. Dále obsahuje výjimku DOMException vyhazovanou v případě, že nějakou operaci nelze provést org.w3c.dom.bootstrap Obsahuje třídu DOMImplementationRegistry tovární třídu pro získávání implementací DOMImplementation. Implementace DOM můžou tuto třídu upravit, aby dodržely nové bezpečnostní standardy nebo k dodatečnému upravení chování některých tříd DOM- ImplementationSource org.w3c.dom.events Balík definuje způsob zpracování událostí podle DOM2 Events Specification. Obsahuje výjimku EventException a rozhraní: Event reprezentuje událost a poskytuje informace o kontextu události objektu, který události ošetřuje. Potomky tohoto rozhraní jsou: LSLoadEvent a LSProgressEvent z balíku org.w3c.dom.ls a dále: UIEvent poskytuje navíc kontextové informace specifické pro události vyvolané uživatelským rozhraním. MouseEvent je potomkem UIEvent a poskytuje navíc kontextové informace specifické pro události vyvolané myší. MutationEvent poskytuje navíc kontextové informace specifické pro události vyvolané přidáním, změnou nebo odebráním atributu. EventTarget toto rozhraní by měly implementovat všechny uzly (Node) v DOM implementaci, která podporuje DOM Event Model. (A tedy je možné získat objekt tohoto typu přetypováním jakéhokoliv objektu Node.) Toto rozhraní umožňuje zaregistrovat EventListener a pomocí něj vyřizovat události zasílané objektu typu EventTarget. 9

17 1.1. JAVA API FOR XML PROCESSING (JAXP) EventListener hlavní způsob zpracování událostí. Uživatel implementuje EventListener a zaregistruje ho na uzlu (který implementuje EventTarget). DocumentEvent slouží k vytváření událostí typů podporovaných implementací DOM. Používá se tehdy, když je nevhodné nebo zbytečné, aby uživatel vytvářel událost sám. Pokud nedostačují události z implementace DOM, uživatel může vytvořit vlastní org.w3c.dom.ls Balík obsahuje rozhraní umožňující načtení dat ze vstupního proudu a vytvoření DOM stromu, resp. uložení DOM stromu do výstupního proudu. DOMImplementationLS obsahuje tovární metody pro vytváření objektů LSInput, LSOutput, LSParser. LSInput reprezentuje vstupní zdroj dat. Umožňuje aplikaci zapouzdřit informace o vstupních datech (veřejný a systémový identifikátor, URI, znakový a/nebo bytový proud) do jediného objektu. LSOutput reprezentuje informace o výstupu. Umožňuje aplikaci zapouzdřit informace o výstupních datech (systémový identifikátor, URI, znakový a/nebo bytový proud) do jediného objektu. LSParser implementující objekt je schopen vytvořit nebo rozšířit existující DOM strom ze zdroje LSInput. LSSerializer poskytuje API pro serializaci, tedy převod DOM stromu do XML dat (LSOutput). Serializace nijak neovlivňuje původní DOM strom. LSParserFilter pokud je objekt tohoto typu zaregistrován u parseru (LSParser), jsou jeho metody volány během tvorby stromu a je možné tak upravovat nebo odebírat uzly, případně i předčasně ukončit tvorbu stromu. LSSerializerFilter pokud je objekt tohoto typu zaregistrován u objektu LSSerializer, jsou jeho metody volány během serializace určit, které uzly budou serializovány. LSLoadEvent reprezentuje událost značící dokončení načítání dokumentu. Je potomkem výše zmiňované org.w3c.dom.events.event. LSProgressEvent reprezentuje událost značící průběh načítání dokumentu, která upozorňuje aplikaci na pokrok v průběhu načítání dokumentu. LSResourceResolver slouží pro přesměrování odkazů na externí zdroje, např. při tvorbě XML dokumentu z databáze. 10

18 1.1. JAVA API FOR XML PROCESSING (JAXP) SAX (org.xml.sax*) SAX [10] (Simple API for XML) je API sloužící k vytváření reprezentace XML dokumentu na základě událostí zasílaných XML parserem. Výhodou SAXu (a obecně API založených na událostech) oproti DOMu je hlavně to, že není nutné uchovávat celý dokument v paměti, což je činí vhodnými pro zpracování i velkých XML dokumentů. Pro představu uvádím příklad zpracování XML dokumentu SAX parserem. Následující dokument: <?xml version="1.0"?> <korenovy_element> <jiny_element>nějaký text</jiny_element> </korenovy_element> by měl vygenerovat následující posloupnost událostí: start document start element: korenovy_element start element: jiny_element characters: nějaký text end element: jiny_element end element: korenovy_element end document Obrázek 1.2: Schéma použití SAX v JAXP org.xml.sax Poskytuje základní SAX API. Obsahuje rozhraní: Attributes reprezentuje seznam XML atributů, ke kterým je možno přistupovat pomocí indexu, jména kvalifikovaného jmenným prostorem nebo jména kvalifikovaného prefixem. 11

19 1.1. JAVA API FOR XML PROCESSING (JAXP) ContentHandler hlavní rozhraní, které většina SAX aplikací implementuje. Dostává informace o logickém obsahu dokumentu. Aplikace, která potřebuje být informována o SAX událostech implementuje ContentHandler a zaregistruje ho u SAX parseru (metoda setcontenthandler). DTDHandler dostává informace o základních událostech souvisejících s DTD notacích a neparsovaných entitách. ErrorHandler pokud aplikace potřebuje sama ošetřovat chyby, implementuje ErrorHandler a zaregistruje ho u XMLReader (seterrorhandler). Hlášení chyb tímto způsobem má mít přednost před vyhazováním výjimek. EntityResolver pokud chce aplikace implementovat vlastní zacházení se vstupními zdroji, implementuje EntityResolver a zaregistruje ho u XMLReader (setentityresolver). EntityResolver pak umožňuje převádět veřejné a systémové identifikátory na zdroje InputSource. Toho lze využít např. pokud XML dokument generujeme z databáze nebo jiných specializovaných vstupních zdrojů nebo naše aplikace používá URI místo URL. XMLReader základní rozhraní pro implementaci SAX2. Umožňuje nastavovat vlastnosti, registrovat objekty na zpracování obsahu, DTD, chyb a spustit analýzu (parsing) dokumentu. XMLFilter potomek XMLReader, který se chová stejně jako XMLReader, ale umožňuje zpracovávat události z jiných XMLReaderů a řetězit tak zpracování. Locator slouží k zjištění místa dokumentu, kde došlo k události. Objekt implementující toto rozhraní se předá pomocí metody setdocumentlocator objektu ContentHandler. Třída: InputSource zapouzdřuje informace o vstupním zdroji. Dále balík obsahuje výjimku SAXException a její potomky SAXNotRecognizedException (nerozeznaný identifikátor), SAXNotSupportedException (nepodporovaná operace), SAXParseException (chyba během parsování nebo varování) org.xml.sax.helpers Obsahuje pomocné třídy jako např. základní implementace některých rozhraní. AttributesImpl základní implementace rozhraní Attributes, která obsahuje navíc metody pro úpravu, aby list mohl být upravován a znovu používán. 12

20 1.1. JAVA API FOR XML PROCESSING (JAXP) DefaultHandler základní třída pro SAX2 aplikace, která poskytuje implementaci rozhraní EntityResolver, DTDHandler, ContentHandler, ErrorHandler. LocatorImpl poskytuje běžnou implementaci rozhraní Locator. XMLFilterImpl základní třída pro odvozování XML filtrů. Nedělá nic, pouze předává požadavky XMLReaderu a události jejím příslušným zpracovatelům a podtřídy můžou podle potřeby jednotlivé metody překrývat. Adaptéry ParserAdapter (obaluje starší rozhraní Parser ze SAX1 a reprezentuje ho jako XMLReader) a XMLReaderAdapter (dělá opak). XMLReaderFactory tovární třída na vytváření objektů XMLReader. NamespaceSupport zapouzdřuje logiku pro práci s jmennými prostory XML org.xml.sax.ext Obsahuje rozšíření rozhraní SAX2, které SAX2 ovladače nemusí nutně podporovat. Jsou nezávislá na jádru SAX2. Obsahuje rozhraní: Attributes2 potomek rozhraní Attributes. Poskytuje dodatečné informace o atributech (jestli je atribut deklarovaný v DTD a jestli byla dosazena jeho implicitní hodnota podle DTD). DeclHandler zpracovává události týkající se DTD deklarací (deklarace atributu, elementu, interní a externí entity). EntityResolver2 potomek rozhraní EntityResolver. Rozšiřuje toto rozhraní o nové mapování odkazů na externí entity na vstupní zdroje (InputSource). LexicalHandler slouží ke zpracování lexikálních informací (komentáře, hranice CDATA sekcí, entit a DTD deklarací). Locator2 potomek rozhraní Locator. Rozšiřuje informace poskytované tímto rozhraním o kódování a verzi XML dané entity. Třídy: Attributes2Impl rozšíření rodičovského AttributesImpl o funkce, které jsou navíc v rozhraní Attributes2. DefaultHandler2 rozšíření rodičovského DefaultHandler implementující navíc rozhraní LexicalHandler, DeclHandler, EntityResolver2. Locator2Impl rozšíření rodičovského LocatorImpl o dodatečné informace o entitách (kódování a verze XML). 13

21 1.2. XML:DB API 1.2 XML:DB API XML:DB API je projekt XML:DB Initiative na vytvoření aplikačního rozhraní sloužícího pro sjednocení přístupu k různým nativním XML databázím. Jedná se o jakousi obdobu ODBC nebo JDBC u relačních databází. XML:DB API v současnosti implementují například databáze exist nebo Apache Xindice (dříve dbxml). Za základ XML:DB API by se daly označit: Ovladače každá databáze implementující XML:DB API poskytuje ovladač, který zapouzdřuje přístup k databázi. Jedná se o implementaci rozhraní Database a jsou spravovány třídou DatabaseManager. Kolekce kontejnery pro uchovávání XML dokumentů (obvykle stejného nebo podobného typu). Jedná se o jakousi obdobu tabulek v relačních databázích. Služby implementují různou funkčnost. Každá databáze může nabízet různé služby. Některé z nich jsou jsou definovány v XML:DB API (implementace XPath dotazů, XUpdate, správu kolekcí, transakce, apod.), další může definovat konkrétní databáze. Zdroje reprezentuje různé typy dat (XML, binární data). Jedná se o rozhraní Resource. Úrovně API (API Core Levels) jelikož XML:DB API má být modulární, je nutné pro zjednodušení práce vývojářů s různými databázemi vlastnosti shlukovat (např. podle důležitosti). XML:DB API definuje dvě úrovně 0, kterou musí implementovat každá databáze implementující XML:DB API a 1, která tuto rozšiřuje o rozhraní XPathQueryService. Základní jednoduché případy použití XML:DB ukazuje např. [13] org.xmldb.api Obsahuje pouze třídu DatabaseManager, která je vstupním bodem celého API. Umožňuje pracovat s implementacemi databází, zjišt ovat API Core Levels a získávat kolekce org.xmldb.api.base Poskytuje základní rozhraní: Database zapouzdřuje funkcionalitu ovladače databáze (rozhodnutí, zda umí zpracovat dané URI, jaké API Core Level databáze implementuje a získání kolekce). Každá XML databáze toto rozhraní musí implementovat. Instance je pak zaregistrována u DatabaseManager a uživatel by měl dále přistupovat pouze k němu (s výjimkou inicializace třídy Database). 14

22 1.2. XML:DB API Collection reprezentuje kolekci zdrojů dat (Resource) uloženou v XML databázi. Mezi kolekcemi může (ale nemusí) být stromová hierarchie. Kolekce poskytuje přístup ke zdrojům (Resource) a službám (Service), které nad kolekcemi a zdroji v nich mohou operovat. Resource kontejner pro data uložená v databázi. Jelikož tato data mohou být různých typů, je nutné zjistit před jejich použitím typ (getresourcetype()) a podle toho data (Object getcontent()) přetypovat. XML:DB API definuje dvě odvozená rozhraní BinaryResource a XMLResource. Service poskytují různá rozšíření ke kolekcím a práci s nimi. Některé služby jsou definovány už v XML:DB API CollectionManagementService, TransactionService, XPathQueryService, XUpdateQueryService. Samotné rozhraní Service neobsahuje žádné speciální metody, je na uživateli, aby si obdrženou Service přetypoval na příslušný podtyp. ResourceIterator iterátor přes zdroje (Resources). I přes název se nejedná o potomka java.util.iterator. ResourceSet množina zdrojů Resource, obvykle získaná jako výsledek dotazu. Configurable poskytuje metody pro nastavení a zjištění vlastností objektu. Potomky tohoto rozhraní jsou Collection, Database, Service a dále z balíku org.xmldb.api.modules rozhraní CollectionManagementService, TransactionService, XPathQueryService a XUpdateQueryService. Dále třídu ErrorCodes obsahující konstanty s chybovými kódy a výjimku XMLDBException vyhazovanou všemi chybami v XML:DB API (typ chyby je rozlišován právě přes konstanty v ErrorCodes) org.xmldb.api.modules Obsahuje některé specializace rozhraní Resource a Service: BinaryResource reprezentuje binární data uložená v databázi. XMLResource reprezentuje XML data uložená v databázi. Umožňuje je získat prostřednictvím uzlu DOM stromu nebo pomocí SAX (přes org.xml.sax.contenthandler). CollectionManagementService umožňuje základní manipulacemi s kolekcemi uvnitř databáze (přidání a odstranění). Pokročilejší správa se u různých databází liší, proto ji toto rozhraní neřeší. TransactionService umožňuje spojit operace nad kolekcemi do transakcí. 15

23 1.3. DOM4J XPathQueryService umožňuje provedení XPath dotazů nad kolekcí nebo zdrojem v kolekci. XUpdateQueryService umožňuje provedení XUpdate dotazů nad kolekcí nebo zdrojem v kolekci. 1.3 Dom4j Rozhraní a implementace pro práci s XML DOM. Je psáno a optimalizováno přímo pro použití v Javě. Ve srovnání s ním je W3C DOM navržený nezávisle na jazyce (i když jako referenční implementaci W3C uvádí právě implementaci v Javě a ECMA Scriptu). Navíc je toto rozhraní rychlé a pamět ově efektivní (ovšem stále zde je zachována nutnost držet si v paměti celý strom). 1.4 JDOM Nástroj pro práci s XML DOM (podobně jako dom4j). Slouží jako reprezentace XML dokumentu. K jeho vytvoření používá XML parser (který sám neimplementuje). JDOM je optimalizované pro Javu (podobně jako dom4j) a má za cíl být co nejsnadněji použitelné. Jelikož ale není stavěné na rozhraních, ale na třídách, je jeho použití v XIQE nevhodné a proto se jím dále nebudu zabývat. Zmiňuji jej především proto, že patří ke známým nástrojům pro práci s DOM. [5] 1.5 Xerces Native Interface Xerces Native Interface je rozhraní, které mohou implementovat XML parsery (implementuje jej např. Xerces2 parser). Je postaveno na stejných principech jako SAX (tj. zasílá informace o toku dokumentu), ale s několika rozdíly: XNI se snaží poskytovat všechny informace o dokumentu, beze ztráty. SAX například nepředává takové informace jako kódování externích entit. XNI umožňuje vytvořit řetěz komponent parseru, kde mohou být informace o dokumentu plně modifikovány. SAX umožňuje pouze malé možnosti takovéto modifikace při čtení XML dokumentu. Toho lze využít například pro vytvoření DOM nebo SAX parseru HTML dokumentu, vložení dokumentů odkazovaných přes XInclude tak, aby to bylo transparentní vůči validátoru apod. XNI obsahuje sadu rozhraní, pomocí kterých je možné definovat komponenty a konfiguraci parseru. 16

24 1.6. STAX 1.6 StAX StAX (Streaming API for XML) je API založené stejně jako SAX nebo XNI na proudovém zpracování XML dokumentu. Na rozdíl od SAX a XNI nepracuje jako push (tj. parser zasílá události klientovi v průběhu zpracování XML dokumentu), ale pull API (tj. klient ovládá chod parseru). Díky proudovému zpracování zachovává výhody SAX a XNI (malou pamět ovou režii oproti rozhraním založených na vytváření stromu v paměti, jako je DOM, schopnost zpracovávat rozsáhlé XML dokumenty). Důvod, proč vznikla pull API je ten, že tento přístup je většině programátorů bližší a vzniklé aplikace bývají jednodušší. StAX oproti SAX a XNI umožňuje snadněji vytvářet XML dokumenty. Další výhodou je to, že lze zpracovávat více XML dokumentů najednou v jednom vlákně. (To je způsobené tím, že zpracování řídí klient.) 1.7 XMLPULL Jedná se o starší pull rozhraní než StAX. Důvod, proč se mu nebudu podrobněji věnovat je ten, že v něm byly dělány kompromisy v návrhu určené k minimalizaci spotřeby paměti (především je upřednostňován procedurální přístup před objektovým), aby mohlo být používáno v zařízeních s malou pamětí v prostředí J2ME a nehodí se příliš pro použití v prostředí desktopových nebo serverových aplikací. 1.8 JAXB (Java Architecture for XML Binding) Framework JAXB umožňuje vázat XML schémata na Java objekty a jejich prostřednictvím pak zpracovávat XML dokumenty. Poskytuje rozhraní pro načtení XML dokumentu jako stromu Java objektů (unmarshalling) a jeho opětovné uložení do XML (marshalling). Umožňuje pracovat s XML dokumenty bez znalosti modelů pro zpracování XML jako DOM, SAX, apod. Třídy v Javě by pak měly reprezentovat pouze vztahy definované v XML schématu. Ke zpracování pomocí JAXB dochází takto: Pro XML data, která se budou zpracovávat je k dispozici nějaké schéma (např. XML Schema). Na základě schématu je kompilátorem vazeb vytvořena sada tříd jazyka Java založených na daném schématu. Vygenerované třídy jsou obvyklým způsobem zkompilovány do bytekódu. XML dokument (v podobě souboru na disku, DOM stromu, SAX zdroje, řetězce v paměti apod.) splňující dané schéma je načten a zpracován. Z dříve připravených tříd je vygenerován strom reprezentující strukturu a obsah XML dokumentu. Součástí tohoto kroku může být i validace. 17

25 1.9. CASTOR XML Prostřednictvím vytvořeného stromu a rozhraní vygenerovaných tříd je možné reprezentaci dokumentu upravovat. Během těchto úprav nemusí být validní vůči zadanému schématu (i když je možné validaci explicitně vyvolat). Výsledek se pak opět převede na jeden nebo více XML dokumentů. Součástí tohoto kroku může být i validace. Obrázek 1.3: Schéma fungování JAXB 1.9 Castor XML Castor XML je framework, který umožňuje definovat vztah mezi XML daty a objekty, které je reprezentují a tyto dvě reprezentace mezi sebou převádět. Castor využívá sadu popisovačů (ClassDescriptor a FieldDescriptor) k tomu, aby objekt v Javě převedl na jeho XML reprezentaci a naopak. 18

26 Kapitola 2 Požadavky uživatele Pro navržení vhodného rozhraní je potřeba stanovit požadavky uživatele na systém. Dokumenty jsou v systému XIQE, stejně jako v jiných XML databázích, tříděny do kolekcí. Některé XML databáze podporují hierarchickou strukturu kolekcí. Bez ohledu na současný stav projektu XIQE byl určen seznam důležitých operací, které by systém měl v budoucnu podporovat. Uživatel by tedy měl mít možnost: založit kolekci dokumentů vrátit kolekci dokumentů na základě názvu smazat kolekci dokumentů přejmenovat, resp. přesunout kolekci dokumentů vložit dokument (v podobě objektu File, String, DOM stromu, SAX nebo StAX zdroje) do kolekce s kolekcí dokumentů: vyhledat v ní dokument podle názvu provést nad ní XPath dotaz provést nad ní XQuery dotaz provést nad ní XUpdate s dokumentem: provést nad ním XPath dotaz převést jej na DOM (Document), SAX (SAXResult), StAX (XMLEventReader) s výsledkem XPath dotazu: převést jej na DOM (Document), SAX (SAXResult), StAX (XMLEventReader) 19

27 Kapitola 3 Současný stav XIQE a návrh změn Vzhledem ke svému zaměření systém XIQE má podporu pro různé způsoby ukládání XML dat umožňuje tak ověřit různé způsoby indexace a efektivního uchovávání a vyhledávání v datech. Uživatel by však měl dostat k dispozici pohodlný nástroj se sadou předpřipravených ukládacích struktur, mezi kterými si může snadno vybrat. Systém XIQE nemá žádnou podporu pro snadnou manipulaci s kolekcemi. Dále nepodporuje hierarchické struktury kolekcí o tomto však bylo rozhodnuto, že se nyní nebude implementovat, jelikož uživatel si může hierarchické kolekce simulovat pomocí prostředků souborového systému (pomocí struktury adresářů). Momentálně je k dispozici podpora pouze pro ukládání kolekcí na lokálním souborovém systému a v paměti. Zvažuje se možná budoucí podpora klient-server architektury a komunikace prostřednictvím počítačové sítě. Pozdější implementace už by hierarchické kolekce mohly podporovat, pravděpodobně prostřednictvím XML:DB API, kde již pro hierarchické kolekce podpora je. 3.1 XML:DB API Jako základní rozhraní, které bude systém XIQE podporovat bylo vybráno XML:DB API. Obsahuje podporu pro vše, co je potřeba, a uživateli může být známé je použito v několika různých XML databázových systémech. Jeho implementace byla započata, třídy jsou v balíku org.xiqe.xmldb. Tyto třídy budou používat org.xiqe, které již slouží jako nativní rozhraní XIQE. Některé třídy byly implementovány za použití tříd XML:DB API SDK tyto poskytují některé základní metody a naše třídy je pak rozšiřují. Pravděpodobně však bude od použití SDK upuštěno z důvodů jeho závislosti na nástroji Xerces [14] a z licenčních důvodů (pokud bychom chtěli SDK upravit, museli bychom zachovat jeho licenci, a některé části XIQE by pak museli používat XML:DB Initiative Software License). Jedná se o třídy: DatabaseImpl ovladač databáze. Tato třída je využívána database managerem z XML:DB API (org.xmldb.api.databasemanager) a jedná se tedy o vstupní bod tohoto API (z hlediska XML:DB; sám uživatel s těmito třídami do styku nepřijde vyjma služeb services). CollectionImpl kolekce dokumentů. 20

28 3.2. JAXP ResourceSetImpl množina zdrojů, získaná např. XPath dotazem. ResourceIteratorImpl iterátor přes zdroje v ResourceSet. XMLResourceImpl XML zdroj. Jiné zdroje (např. binární data) jsme se rozhodli v současnosti nepodporovat. CollectionManagementServiceImpl služba správy kolekcí. Momentálně podporuje pouze vytvoření a smazání kolekce. Do budoucna se uvažuje o podpoře hierarchických kolekcí. XPathQueryServiceImpl služba pro provádění XPath dotazů. Do budoucna se počítá s rozšířením o podporu XQuery, XUpdate a transakčního zpracování. V tom případě se budou tato rozšíření řešit prostřednictvím dalších služeb. Pro tyto tři služby již je v XML:DB API definováno rozhraní. Je ale možné prostřednictvím služeb implementovat i další funkčnost, se kterou XML:DB API nepočítá (ostatně to je cílem služeb). Další věc, kterou je třeba zmínit je podpora různých typů kolekcí (různých úložišt a indexačních metod). Typ úložiště např. lokální disk, pamět, sít ový server si uživatel zvolí prostřednictvím URI. URI kolekce je tvaru xmldb:xiqe:protokol:parametry_ protokolu, kde protokol je např. file, memory, http,... Parametry protokolu budou v případě dále strukturovaného URI začínat na //, tedy URI kolekce v paměti může být xmldb:xiqe:memory:moje_kolekce, zatímco URI kolekce na lokálním disku může být xmldb:xiqe:file:///home/xzikan/moje_kolekce v případě cesty podle UNIXové hierarchie souborového systému, v případě systému s MS Windows např. xmldb:xiqe: file://d:\muj_adresar\moje_kolekce. V případě připojení na vzdálený server se bude jednat o xmldb:xiqe:protokol://server:port/adresa/na/serveru. Pokud si bude chtít uživatel zvolit indexační metodu, před vytvářením nové kolekce pomocí CollectionManagementService nastaví službě vlastnost collection_storage_type. (Toto bude implementováno ve chvíli, kdy bude k dispozici podpora v balíku interních rozhraní org.xiqe.) 3.2 JAXP Jako další rozhraní, které bude podporováno bylo pro svou velkou rozšířenost vybráno JAXP. Podpora pro model dokumentu W3C DOM již v současnosti v XIQE je podporováno jako jeden z modelů dokumentu (druhý, který je momentálně podporován je Dom4j). Podpora pro SAX byla odložena jako úkol s nižší prioritou. Podpora pro transformační API z JAXP je záležitostí, která je na straně uživatele, proto ji XIQE podporovat nebude. Ve spolupráci s Bc. Petrem Vlčkem byla navržena podpora pro XPath pomocí JAXP a na její implementaci pracuje v rámci své diplomové práce. Jedná se o balík org.xiqe.xpath.jaxp, konkrétně třídy XPathFactoryImpl, XPathImpl a XPathExpressionImpl. Vstupní třída tohoto rozhraní je XPathFactoryImpl, kterou bude používat uživatel, ostatní třídy 21

29 3.3. ROZHRANÍ ORG.XIQE jsou touto vytvářené. Další rozhraní z javax.xml.xpath (XPathFunction, XPath- FunctionResolver, XPathVariableResolver) nejsou třeba implementovat, může si je implementovat a použít uživatel. Implementace vyhodnocování XPath dotazů pomocí JAXP bude pro jednoduchost svého API pravděpodobně použita jako backend pro vyhodnocování XPath dotazů přes XML:DB API (případně další API, pokud by o jejich implementaci bylo rozhodnuto). 3.3 Rozhraní org.xiqe Rozhraní a třídy v tomto balíku byly původně určeny jako vnější rozhraní, zatím je však nikdo neimplementoval. Jelikož XML:DB API nabízí vše, co je třeba, bude určeno jako primární rozhraní pro uživatele s tím, že, org.xiqe bude sloužit jako rozhraní, které bude využíváno rozhraním org.xiqe.xmldb, které k němu bude tvořit jakýsi wrapper a umožňovat co nejtransparentnější manipulaci s různými typy kolekcí tj. aby uživatel mohl pracovat úplně stejným způsobem s kolekcí v paměti, na lokálním disku i na vzdáleném serveru. Rozhraní org.xiqe by pak mohlo být využito v případě, že bychom v budoucnu narazili na něco, co by nebylo možné pomocí XML:DB API snadno vyřešit. Dále je uživatel bude moci využívat v případě, že mu nevadí nepřenositelnost jeho softwaru na jinou XML databázi. (V případě používání XML:DB API by uživateli při přechodu k jiné XML databázi, která nabízí nadmnožinu toho, co umí XIQE, mělo stačit změnit URI, pomocí kterých přistupuje ke kolekcím.) V současnosti se toto rozhraní může měnit a proto není jeho použití koncovým uživatelem vhodné. Rozhraní org.xiqe obsahuje třídy: DocumentCollectionFactory tovární třída (viz [9]) pro vytváření nových a otevírání existujících kolekcí XML dokumentů. Jedná se o vstupní bod tohoto balíku. Je implementována jako abstraktní třída s potomky MemoryDocument- CollectionFactory a FileDocumentCollectionFactory. V budoucnu je možné rozšířit tyto o další, jako například plánovanou NetworkDocumentCollectionFactory. DocumentCollection rozhraní reprezentující kolekci XML dokumentů. Umožňuje kolekci přejmenovat, smazat, přidat nebo odebrat z ní dokument a vrátit všechny dokumenty, případně konkrétní dokument na základě jeho názvu. DocumentCollectionImpl implementace rozhraní DocumentCollection. Document rozhraní reprezentující dokument. Umožňuje získat zpětně kolekci, ve které je dokument uložen, jméno a ID dokumentu a vrátit dokument reprezentovaný jako DOM (org.w3c.dom.document), SAX (ContentHandler) nebo InputSource. DocumentImpl implementace rozhraní Document. 22

30 3.3. ROZHRANÍ ORG.XIQE XiqeConstants obsahuje konstanty, použitelné na více místech XIQE nebo užitečné pro uživatele (např. URI). XiqeException výjimka. 23

31 Kapitola 4 Závěr Cílem této práce bylo zmapovat důležitá existující rozhraní pro práci s XML v jazyce Java a na základě nich navrhnout funkcionalitu a vnější rozhraní, která by měl systém XIQE poskytovat. Dalším úkolem bylo tato rozhraní implementovat s využitím stávajících funkcí systému XIQE. Protože systém nepodporuje všechny operace nutné k úplné implementaci těchto rozhraní, bylo nutné také definovat množinu operací, které systém XIQE musí poskytnout aby mohla být implementace vnějších rozhraní kompletní. Na základě získaných informací se jeví jako vhodná podpora rozhraní XML:DB API jako primárního vnějšího rozhraní systému XIQE, které by mělo pohodlným způsobem poskytovat uživateli funkcionalitu systému a zároveň ho dostatečně odstínit od implementačních záležitostí. Dále bylo rozhodnuto o podpoře části rozhraní JAXP pro vyhodnocování XPath dotazů. Dále jsem upravil rozhraní org.xiqe, které by mělo sloužit především jako vnitřní rozhraní systému XIQE a poskytovat společně s JAXP funkcionalitu potřebnou pro rozhraní XML:DB API. Dále bylo shledáno vhodným podporovat přístup k datům prostřednictvím různých modelů dokumentu. Jako nejvhodnější se jeví W3C DOM a Dom4j. Na jejich implementaci v rámci svých bakalářských prací pracují Josef Šustáček a Michal Krčál. Na implementaci rozhraní org.xiqe.xpath.jaxp pracuje v rámci své diplomové práce Bc. Petr Vlček. Na balíku org.xiqe.xmldb implementujícím rozhraní XML:DB API a částech org.xiqe jsem pracoval já. Pro rozhraní XML:DB API (org.xiqe.xmldb) jsem vytvořil sadu testovacích tříd pomocí nástroje JUnit. Funkcionalita požadovaná rozhraním XML:DB API v balíku vnitřních rozhraní org.xiqe je dostatečně definovaná dokumentací balíku org.xiqe. Pro využití výsledků této práce bude tedy jako další krok třeba dokončit implementaci všech metod tohoto vnitřního rozhraní. Vytvořená implementace XML:DB API zatím podporuje služby pro správu kolekcí dokumentů a vyhodnocování XPath dotazů. Flexibilita XML:DB API však umožňuje snadno dodávat do systému další služby. Pro některé z nich jsou v XML:DB API již definována rozhraní služby pro XQuery, XUpdate a transakční zpracování. Nepovažujeme však za nutné začínat s implementací těchto rozhraní, když pro ně systém zatím nemá žádnou podporu. Jejich dodání do systému pak nepotřebuje žádnou úpravu rozhraní, stačí pouze přidat novou třídu se službou a případně upravit implementaci třídy Collection. 24

32 Příloha A Obsah přiloženého CD Součástí práce je i přiložené CD, kde jsou k dispozici: zdrojový kód této práce ve formátu XML (DocBook) tato práce ve formátech L A TEX, PDF a XHTML, vygenerovaná pomocí šablony fithesis a nástroje XSLT2 Mgr. Jana Pavloviče aktuální revize ze Subversion repository projektu XIQE JavaDoc dokumentace k popisovaným rozhraním 25

33 Literatura [1] Adámková, Š.: Systém pro indexování XML dokumentů, diplomová práce, Masarykova Univerzita, (document) [2] Enhydra Zeus project website < ObjectWeb Consortium. [3] Harold, E.: An Introduction to StAX < 17/stax.html>, [4] Harold, E.: The XMLPULL API < xmlpull.html>, [5] JDOM Project < 1.4 [6] The Java Web Services Tutorial < 6/tutorial/doc/index.html>, Sun Microsystems. [7] Kawaguchi, K.: The JAXB API < jaxb-api.html>, [8] Ogbuji, U.: Manage XML collections with XAPI < developerworks/library/x-xapi.html>, [9] Gamma, E. a Helm, R. a Johnson, R. a Vlissides, J.: Návrh programů pomocí vzorů, Grada Publishing, [10] SAX Project < [11] Staken, K.: Introduction to dbxml < dbxml.html>. [12] Staken, K.: An Introduction to the XML:DB API < 2002/01/09/xmldb_api.html>, [13] Staken, K.: API Use Cases < UseCases.html>, Members of the XML:DB API Mailing List, [14] Xerces project website < The Apache Software Foundation

34 Rejstřík Apache Xindice, 14 dbxml, 14 DOM, 3 exist, 14 Java API for XML Processing, 1, 21 JAXP, 1, 21 JDBC, 14 ODBC, 14 SAX, 3, 11 Simple API for XML, 3, 11 transformace, 2 URI, 21 W3C DOM, 6, 21 Xindice, 14 XIQE, v XML:DB API, 14, 20 kolekce, 14 ovladač, 14 služba, 14, 20 zdroj, 14 XPath, 5 27

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml Rozhraní SAX, SAX vs. SAX2 Jaroslav Ciml Použití SAX - připomenutí Vytvoření instance parseru XMLReader xmlreader = XMLReaderFactory.createXMLReader(); Registrace handleru xmlreader.setcontenthandler(

Více

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

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

Více

API pro práci s XML. Jirka Kosek. Poslední modifikace: $Date: 2014/12/17 17:15:28 $ Copyright 2001-2014 Jiří Kosek

API pro práci s XML. Jirka Kosek. Poslední modifikace: $Date: 2014/12/17 17:15:28 $ Copyright 2001-2014 Jiří Kosek Jirka Kosek Poslední modifikace: $Date: 2014/12/17 17:15:28 $ Obsah Úvod... 3 Parsery XML... 4 Rozhraní pro přístup k dokumentu XML... 5 Další charakteristiky parseru... 6 Sekvenční čtení... 7 Push parsery...

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

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

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

Více

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

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

Více

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

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

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

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

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

Více

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

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

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta

Více

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

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

Více

Tvorba informačních systémů

Tvorba informačních systémů 9. Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006-2008 Michal Krátký, Miroslav Beneš Tvorba

Více

Semestrální práce 2 znakový strom

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

Více

Michal Krátký, Miroslav Beneš

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

Více

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme

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

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

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Semináˇr Java X J2EE Semináˇr Java X p.1/23 Seminář Java X J2EE Seminář Java X p.1/23 J2EE Složitost obchodních aplikací robusní, distribuované, spolehlivé aplikace s transakcemi na straně serveru, klientské aplikace co nejjednodušší Snaha : Návrh,

Více

Požadavky pro výběrová řízení TerraBus ESB/G2x

Požadavky pro výběrová řízení TerraBus ESB/G2x Dokument: Převod dat TerraBus ESB/G2x Požadavky pro výběrová řízení TerraBus ESB/G2x Obsah 1. Účel dokumentu... 2 2. Použité termíny a zkratky... 2 3. Požadavky... 3 Účel dokumentu Účelem tohoto dokumentu

Více

Jemný úvod do spracovania XML

Jemný úvod do spracovania XML Jemný úvod do spracovania XML XML štandardy - nevyhnutná súčasť moderného SW, - umožňujú lepšiu integráciu rôznych aplikácií, - štruktúrovanie údajov (typovanie, pomenovanie polí,...) - vysoká flexibilita

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

Sdílení dat mezi podprogramy

Sdílení dat mezi podprogramy Sdílení dat mezi podprogramy Datové objekty mohou být mezi podprogramy sdíleny pomocí ne-lokálních referenčních prostředí, která jsou vytvářena na základě æ explicitních modifikací (formální parametry

Více

RESTful API TAMZ 1. Cvičení 11

RESTful API TAMZ 1. Cvičení 11 RESTful API TAMZ 1 Cvičení 11 REST Architektura rozhraní navržená pro distribuované prostředí Pojem REST byl představen v roce 2000 v disertační práci Roye Fieldinga, zkratka z Representional State Transfer

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

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

Národní elektronický nástroj. Import profilu zadavatele do NEN

Národní elektronický nástroj. Import profilu zadavatele do NEN Národní elektronický nástroj Import profilu zadavatele do NEN V 1.2 2014 Obsah 1 Cíl...... 2 2 Nutné podmínky k umožnění importu profilu zadavatele...... 2 3 Povinnosti zadavatele dle metodiky k vyhlášce

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

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. 2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových

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

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

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

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13 Obsah Úvod 11 Platforma.NET 11.NET Framework 11 Visual Basic.NET 12 1 Základní principy a syntaxe 13 Typový systém 13 Hodnotové typy 13 Struktury 15 Výčtové typy 15 Referenční typy 15 Konstanty 16 Deklarace

Více

Zpráva o zhotoveném plnění

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

Více

Oracle XML DB. Tomáš Nykodým

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

Více

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

Více

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

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

Více

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

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

Komprese a dotazování nad XML dokumenty

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

Více

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services 13. Webové služby. K čemu slouží? Popis a vyhledávání služeb. Co je a k čemu slouží orchestrace a choreografie služeb. Technologie pro implementaci služeb 1. Webové služby. K čemu slouží? Definice WS -

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

Úvod do programovacích jazyků (Java)

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

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

Reranking založený na metadatech

Reranking založený na metadatech České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Reranking založený na metadatech MI-VMW Projekt IV - 1 Pavel Homolka Ladislav Kubeš 6. 12. 2011 1

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

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

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

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

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní 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

Programátorská příručka

Programátorská příručka KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

Komponentový návrh SW

Komponentový návrh SW Komponentový návrh SW Komponentový návrh SW Komponenty jsou kompletně specifikované pomocí interface Jejich funkčnost je nezávislá na programovacím jazyku a mohou být integrované do toho samého systému

Více

Systém souborů (file system, FS)

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

Více

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

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy Bc. Petr Pokorný Letní semestr 2009/2010 1 Obsah 1 Úvod... 3 2 Workflow... 3 3 Workflow

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

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií Softwarový nástroj pro tvorbu a správu genealogických dat Manuál pro programátory Bc. František Hlaváček Součást

Více

(Enterprise) JavaBeans. Lekce 7

(Enterprise) JavaBeans. Lekce 7 (Enterprise) JavaBeans Lekce 7 JavaBeans vs. Enterprise JavaBeans (EJB) JavaBeans technologie: jedná se o tzv. komponentní architekturu určenou pro JSE platformu určená pro tvorbu JSE GUI programů pomocí

Více

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework Funkce Silverlightu 2 Podpora jazyků a technologie.net Framework Model pro popis webových služeb a jejich operací Volná vázanost datových služeb Nový model ovládacích prvků LINQ to Objects a UNQ to XML

Více

TÉMATICKÝ OKRUH TZD, DIS a TIS

TÉMATICKÝ OKRUH TZD, DIS a TIS TÉMATICKÝ OKRUH TZD, DIS a TIS Číslo otázky : 20. Otázka : Datová vrstva informačního systému. Nezávislý přístup k datům - standardy ODBC/JDBC. Architektura a použití ADO.NET. Obsah : 1. ODBC 2. JDBC 2.1

Více

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

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

Více

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Student s Life Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Model Specification Page: 2 Obsah Model architektury... 3 Návrhový model... 3 Bussines

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

Implementace systémů HIPS: historie a současnost. Martin Dráb

Implementace systémů HIPS: historie a současnost. Martin Dráb Implementace systémů HIPS: historie a současnost Martin Dráb martin.drab@secit.sk HIPS: základní definice Majoritně používané operační systémy disponují bezpečnostními modely, které dovolují jednotlivým

Více

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Programový generátor trendů Václav Bárta

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Programový generátor trendů Václav Bárta UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Programový generátor trendů Václav Bárta Bakalářská práce 2011 Prohlášení autora Prohlašuji, že jsem tuto práci vypracoval samostatně. Veškeré

Více

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 Informační technologie 1 - Doporučená doba zpracování: 40 minut 1) Termín DCL v relačně databázové technologii

Více

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

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

Více

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

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

Více

Architektury informačních systémů

Architektury informačních systémů Architektury informačních systémů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes/vyuka/tis Miroslav.Benes@vsb.cz Obsah přednášky Co je to

Více

Úvod do Web Services

Úvod do Web Services Úvod do Web Services Základy webových služeb a jejich implementace na platformě OS/2 Jarda Kačer jarda@kacer.biz Český Warpstock 2008 Brno, 20.-21.9.2008 Co je to webová služba? Část business logiky přístupná

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

Více

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor Specifikace softwarového díla & Časový plán implementace pro MEF Editor Cílem projektu je vytvoření pluginu do vývojového prostředí Visual Studio 2010. Plugin bude umožňovat grafickou editaci objektů spojených

Více

Elektronická podpora výuky předmětu Komprese dat

Elektronická podpora výuky předmětu Komprese dat Elektronická podpora výuky předmětu Komprese dat Vojtěch Ouška ouskav1@fel.cvut.cz 19. června 2006 Vojtěch Ouška Elektronická podpora výuky předmětu Komprese dat - 1 /15 Co je to SyVyKod? SyVyKod = Systém

Více

POPIS TECHNICKÉHO ŘEŠENÍ INFORMAČNÍHO SYSTÉMU PRO SBĚR DAT V PROJEKTU SLEDOVÁNÍ DEKUBITŮ JAKO INDIKÁTORU KVALITY OŠETŘOVATELSKÉ PÉČE NA NÁRODNÍ ÚROVNI

POPIS TECHNICKÉHO ŘEŠENÍ INFORMAČNÍHO SYSTÉMU PRO SBĚR DAT V PROJEKTU SLEDOVÁNÍ DEKUBITŮ JAKO INDIKÁTORU KVALITY OŠETŘOVATELSKÉ PÉČE NA NÁRODNÍ ÚROVNI POPIS TECHNICKÉHO ŘEŠENÍ INFORMAČNÍHO SYSTÉMU PRO SBĚR DAT V PROJEKTU SLEDOVÁNÍ DEKUBITŮ JAKO INDIKÁTORU KVALITY OŠETŘOVATELSKÉ PÉČE NA NÁRODNÍ ÚROVNI Vypracoval Bc. Petr Suchý Dne: 20.1.2009 Obsah Úvod...

Více

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

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

Více

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky Google Web Toolkit Martin Šurkovský, SUR096 Vysoká škola Báňská - Technická univerzita Ostrava Katedra informatiky 29. března 2010 Martin Šurkovský, SUR096 (VŠB - TUO) Google Web Toolkit 29. března 2010

Více

Experimentální systém pro WEB IR

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

Více

Artlingua Translation API

Artlingua Translation API Artlingua Translation API Dokumentace Jan Šváb, Artlingua, a.s. 2015 Revize: 2015-09-22 - verze API : v1 Obsah Obsah... 2 Předávání dokumentů k překladu... 3 Implementace klientské aplikace pro Translation

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

Nastavení složek systému Atollon Server Platform

Nastavení složek systému Atollon Server Platform Nastavení složek systému Atollon Server Platform Průvodce nastavením organizace v atollon Directory Založení organizace v atollon CRM vychází z nastavení stromové struktury ISP Directory. Pro přehlednější

Více

Vyřešené teoretické otázky do OOP ( )

Vyřešené teoretické otázky do OOP ( ) Vyřešené teoretické otázky do OOP (16. 1. 2013) 1) Vyjmenujte v historickém pořadí hlavní programovací paradigmata a stručně charakterizujte každé paradigma. a) Naivní chaotičnost, špatná syntaxe a sémantika

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 : 29. Otázka : Zpracování událostí: mechanismus událostí a jejich zpracování (Event/Listener), nepřímá invokace (Observer/Observable). Obsah : 1. Mechanisums

Více

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

Popis B2B rozhraní pro elektronickou neschopenku

Popis B2B rozhraní pro elektronickou neschopenku Popis B2B rozhraní pro elektronickou neschopenku Historie dokumentu Verze Datum Změny 0.9 30. 4. 2019 Vytvoření dokumentu Obsah 1 Účel dokumentu... 3 2 Charakteristika rozhraní... 3 2.1 Způsob komunikace...

Více

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

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

Více

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

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

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

Více

Microsoft Office 2003 Souhrnný technický dokument white paper

Microsoft Office 2003 Souhrnný technický dokument white paper Microsoft Office 2003 Souhrnný technický dokument white paper Inteligentní dokumenty v sadě Microsoft Office 2003 Publikováno: květen 2003 Shrnutí: Inteligentní dokumenty jsou rozvinutá řešení, která spojují

Více

Synchronizace CRM ESO9 a MS Exchange

Synchronizace CRM ESO9 a MS Exchange Synchronizace CRM ESO9 a MS Exchange Zpracoval: U Mlýna 2305/22, 141 Praha 4 Záběhlice Dne: 1.4.2015 tel.: +420 585 203 370-2 e-mail: info@eso9.cz Revize: Urych Tomáš www.eso9.cz Dne: 23.2.2016 Obsah 1.

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

7.5 Diagram tříd pokročilé techniky

7.5 Diagram tříd pokročilé techniky 7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65 7 Stručný obsah Předmluva k druhému vydání 13 Úvod 17 ČÁST 1 Začínáme 27 Kapitola 1 Proč XML 29 Kapitola 2 Vytváření a zobrazení vašeho prvního dokumentu XML 45 ČÁST 2 Vytváření dokumentů XML 65 Kapitola

Více

1. Dědičnost a polymorfismus

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

Více

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