AD7B36XML: Technologie XML
Základní informace
Termíny zkoušek
- Čtvrtek 26. 5. 2016: 12:45 - 16:45 (KN:E-107)
- Pondělí 6. 6. 2016: 9:00 - 13:00 (MFF UK, Malostranské náměstí 25, místnost S5, 2. patro)
- Středa 15. 6. 2016: 14:00 - 18:00 (MFF UK, Malostranské náměstí 25, místnost S5, 2. patro)
- Pátek 24. 6. 2016: 9:00 - 13:00 (MFF UK, Malostranské náměstí 25, místnost S1, 4. patro)
- Pondělí 5. 9. 2016: 9:30 - 13:30 (MFF UK, Malostranské náměstí 25, místnost S9, 1. patro)
Harmonogram a materiály
- 4. 3. 2016: Úvod, XML dokumenty, DTD schémata
- 18. 3. 2016: Jmenné prostory, datový model XML, rozhraní SAX, DOM, StAX
- Přednáška 2: Jmenné prostory, datový model XML, rozhraní SAX, DOM, StAX
- Cvičení 2: DOM, SAX:
opakování,
zadání příkladů,
řešení příkladů
- Pracovní soubory:
data.xml,
data.dtd,
SAXSupport.java,
DOMSupport.java
- 1. 4. 2016: XPath
- 15. 4. 2016: XML Schema, Schematron, RELAX NG
- 29. 4. 2016: XSLT
- 13. 5. 2016: XQuery
- 27. 5. 2016: XML databáze, SQL/XML, XML formáty
Požadavky na zápočet
- Během semestru bude postupně zadáno 6 domácích úkolů. Za každý z nich je možné získat až 20 bodů.
- Na některých cvičeních bude možné získat další bonusové body za projevenou aktivitu.
- Pro zápočet je nutné získat alespoň 100 bodů celkem.
Požadavky ke zkoušce
- Z písemného zkouškového testu bude možné získat až 100 bodů. Pro získání známky je účast na zkoušce povinná.
- Body ze semestru nad hranicí 100 bodů budou připočteny k výsledku zkoušky. Pokud však bude byť jen z jednoho zkouškového testu jako takového získáno méně než 30 bodů, body se nepřevádějí, a to ani do dalších termínů.
- Bodové hranice jednotlivých známek:
- >= 90 bodů ... A
- >= 80 bodů ... B
- >= 70 bodů ... C
- >= 60 bodů ... D
- >= 50 bodů ... E
Domácí úkoly
- Na prvním cvičení si každý vymyslí (a nechá od cvičícího schválit) originální téma domácích úkolů popisující nějaký reálný systém (např. sportovní utkání, knihovna, databáze filmů, kuchařka apod.). Všechny domácí úkoly se pak budou věnovat právě této problematice a budou se ji snažit co nejrealističtěji popsat.
- Vypracované úkoly se odevzdávají prostřednictvím systému XML Check.
Téma 1: XML, DTD
- Zadání úkolu:
- Odevzdaná úloha smysluplně modeluje zvolenou realitu.
- XML dokument musí být validní vůči DTD.
- DTD musí obsahovat všechny konstrukty probírané na přednášce, tj.
- elementy (prázdné, textové, s modelem obsahu),
- atributy,
- datové typy (textové, výčtové),
- klíče a reference na ně,
- operátory,
- omezení výskytu pro elementy i atributy.
- XML dokument musí být dostatečně složitý, tj. splňovat následující požadavky:
- Využití elementů, atributů, klíčů a referencí na ně, textového i smíšeného obsahu.
- Hloubka dokumentu bude minimálně 5.
- Fan-out (počet podelementů) alespoň jednoho z elementů bude minimálně 10.
- DTD nebo XML dokument musí obsahovat:
- entity,
- instrukce pro zpracování,
- sekce CDATA,
- komentáře.
- Technické požadavky:
- XML dokument pojmenujte jako data.xml a schéma data.dtd.
- Oba soubory umístěte přímo do kořenového adresáře Vašeho projektu.
Téma 2: DOM, SAX
- Zadání úkolu:
- Prostřednictvím rozhraní SAX spočítejte alespoň 3 zvolené charakteristiky XML dokumentu z prvního úkolu:
- první se bude vztahovat k hodnotám atributů (např. průměrná váha výrobku),
- druhá k obsahu elementů (např. tři nejčastější příjmení zaměstnanců) a
- třetí ke kontextu (např. počet zaměstnanců, kteří jsou starší 60ti let, ale nemají dovolenou).
- Prostřednictvím rozhraní DOM proveďte alespoň 2 úpravy původního XML dokumentu - např. přidání nového zaměstnance se všemi parametry, smazání všech zaměstnanců s platem menším než X, seřazení zaměstnanců podle abecedy apod.
- Význam zvolených charakteristik / provedených úprav vysvětlete slovně. Zdrojový kód komentujte.
- Technické požadavky:
- Zdrojový kód pro SAX je potřeba pojmenovat a umístit do /sax/user/MySaxHandler.java.
- Třída MySaxHandler musí dědit od org.xml.sax.helpers.DefaultHandler a musí mít výchozí bezparametrický konstruktor. Její instance bude automaticky vytvořena a předána SAX parseru.
- Zdrojový kód pro DOM je potřeba pojmenovat a umístit do /dom/user/MyDomTransformer.java.
- Třída MyDomTransformer musí mít metodu public void transform(org.w3c.dom.Document), která pozmění XML dokument v parametru.
- Obě třídy vložte do package user.
Téma 3: XPath
- Zadání úkolu:
- Nad XML dokumentem z prvního domácího úkolu formulujte alespoň 5 výrazů různých netriviálních dotazů v jazyce XPath.
- Alespoň jednou vhodně využijte každou z následujících konstrukcí:
- predikát testující hodnoty atributů,
- predikát testující existenci podřazeného elementu,
- predikát testující neexistenci podřazeného elementu,
- predikát testující pozici,
- predikát testující počet,
- některou z následujících os: ancestor(-or-self) / preceding(-sibling) / following(-sibling).
- Technické požadavky:
- Každý XPath výraz bude v samostatném souboru pojmenovaném xpathN.xp, kde N je pořadové číslo.
- Všechny tyto soubory umístěte do samostatného adresáře xpath Vašeho projektu.
- Každý soubor bude obsahovat textové vysvětlení příslušného dotazu v komentáři (tj. popis, co dotaz dělá, co je jeho výsledkem apod.). Komentáře zapisujte ve tvaru (: ... :).
Téma 4: XML Schema
- Zadání úkolu:
- Pro XML dokument z prvního domácího úkolu vytvořte schéma v jazyce XML Schema.
- Toto schéma bude obsahovat:
- elementy s jednoduchým i složeným datovým typem,
- podelementy s omezením počtu výskytů,
- povinné i nepovinné atributy,
- alespoň jeden odvozený jednoduchý datový typ,
- definici elementu s textovým obsahem a atributy,
- použití globálně i lokálně definovaných prvků + reference,
- dědičnost,
- omezení identity.
- XML dokument musí být validní vůči XSD a využívat výše uvedené prvky schématu.
- V případě potřeby můžete původní XML dokument upravit.
- Technické požadavky:
- Schéma pojmenujte jako data.xsd a umístěte jej přímo do kořenového adresáře Vašeho projektu.
Téma 5: XSLT
- Zadání úkolu:
- Pro XML dokument z prvního domácího úkolu vytvořte XSLT program (stylesheet), který bude obsahovat:
- alespoň 5 smysluplných šablon, které se navzájem volají pomocí xsl:apply-templates nebo xsl:call-template,
- nepojmenované i pojmenované šablony: xsl:template match="..", xsl:template name="..",
- použití módů při volání šablon,
- podmíněné příkazy: xsl:if nebo xsl:choose + xsl:when,
- cykly: xsl:for-each,
- proměnné: xsl:variable,
- parametry: xsl:param, xsl:with-param,
- příkazy pro generování výstupu: xsl:element, xsl:attribute, xsl:value-of, xsl:text,
- příkazy pro kopírovaní: xsl:copy, xsl:copy-of.
- Alespoň dva XPath výrazy použité při volání základních šablon pomocí xsl:apply-templates select="" splňují podmínky pro XPath výrazy ze třetího úkolu, tj. půjde o netriviální XPath výrazy.
- Výstupním formátem transformace je HTML nebo XML.
- Všechny transformace budou podrobně okomentovány, tj. komentáře budou vysvětlovat, co která operace znamená a co je jejím výsledkem.
- Technické požadavky:
- Program bude uložen pod jménem data2html.xsl nebo data2xml.xsl podle výstupního formátu a bude umístěn v hlavním adresáři Vašeho projektu.
Téma 6: XQuery
- Zadání úkolu:
- Nad XML dokumentem z prvního domácího úkolu formulujte alespoň 5 výrazů dotazů v jazyce XQuery, z toho:
- 1 dotaz provádějící spojení dat ze 2 různých XML dokumentů nebo ze dvou logicky oddělených částí XML dokumentu (např. pro knihy ze seznamu knih hledáme autory ze seznamu autorů apod.), můžete využít např. vztah klíč - reference, popř. si původní data upravte,
- 1 dotaz provádějící integraci heterogenních dat ze 2 různých XML dokumentů (podobně jako příklad probíraný na cvičeních) - vytvořte si vlastní modifikovaný dokument,
- 1 dotaz musí využít deklaraci uživatelské funkce pro rekurzivní průchod XML dokumentem, resp. jinak netriviální (!) funkce,
- 1 dotaz musí mít výstup do formátu XHTML.
- Alespoň jednou vhodně využijte každou z následujících konstrukcí / funkcí / operátorů:
- počítané konstruktory
- order by,
- jedno z min, max, avg nebo sum v podmínce za where,
- jedno z every ... satisfies nebo some ... satisfies (tj. kvantifikátory),
- distinct-values,
- podmíněné výrazy if then else.
- Technické požadavky:
- Každý XQuery výraz bude v samostatném souboru pojmenovaném queryN.xq, kde N je pořadové číslo.
- Všechny tyto soubory umístěte do samostatného adresáře xquery Vašeho projektu.
- Každý soubor bude obsahovat textové vysvětlení příslušného dotazu v komentáři (tj. popis, co dotaz dělá, co je jeho výsledkem apod.). Komentáře zapisujte ve tvaru (: ... :).
Používaný software
-
Altova XMLSpy - komerční nástroj instalovaný v počítačové laboratoři
-
Exchanger XML Lite - volně dostupný Javovský XML editor, který umožňuje: editaci XML, DTD, XSD, XSLT, zpracování XPath, XQuery dotazů a XSLT transformací, ladění XSLT (původně používaný na cvičeních, vhodný pro domácí úkoly)
-
Saxon - volně dostupný XSLT 2.0, XPath 2.0 a XQuery 1.0 procesor
-
Xalan - volně dostupný XSLT 1.0 a XPath 1.0 procesor
-
XQDT - plugin do Eclipse s podporou XQuery
-
jEdit + XQuery plugin
-
Oracle DB
-
Oracle SQL Developer
Doporučená literatura
Informační zdroje
XML
- J. Kosek: XML pro každého, podrobný průvodce. ISBN 80-7169-860-1, Grada 2000.
- W3C: Extensible Markup Language (XML) 1.0 (Third Edition). W3C Recommendation
04 February 2004. [www]
- W3C: Extensible Markup Language (XML) 1.1. W3C Recommendation 04 February 2004,
edited in place 15 April 2004. [www]
- W3C: XML Information Set (Second Edition). W3C Recommendation 4 February 2004.
[www]
XML Schema
- W3Schools, XML Schema Tutorial. [www]
- Kosek, J.: XML schémata. [www]
- Binstock, C. Peterson, D. Smith, M. Wooding, M. Dix, C. Galtenberg, C.: The XML
Schema Complete Reference, Addison-Wesley, 2002.
- Fallside, D. C. Walmsley, P.: XML Schema Part 0: Primer Second Edition, W3C
Recommendation, 28 October 2004. [www]
- Thompson, H. S. Beech, D. Maloney, M. Mendelsohn, N.: XML Schema Part 1:
Structures Second Edition, W3C Recommendation, 28 October 2004. [www]
- Biron, P. V. Malhotra, A.: XML Schema Part 2: Datatypes Second Edition, W3C
Recommendation, 28 October 2004. [www]
XPath
- W3C: XML Path Language (XPath). Version 1.0, W3C Recommendation 16 November
1999. [www]
- NeoCore: An XPath Primer. [www]
- Chapter 11 (XML Path Language), XML How to Program. [www]
XPointer
- W3C: XML Pointer Language (XPointer). W3C Working Draft 16 August 2002.
[www]
- E. Wilde, D. Lowe: XPath, XLink, XPointer, and XML: A Practical Guide to Web
Hyperlinking and Transclusion, Chap. 6 XML Pointer Language, Addison-Wesley, 2003.
[www]
XLink
- W3C: XML Linking Language (XLink) Version 1.0, W3C Recommendation 27 June 2001.
[www]
- E. Wilde, D. Lowe: XPath, XLink, XPointer, and XML: A Practical Guide to Web
Hyperlinking and Transclusion, Chapter 7. [www]
DOM
- W3C: Document Object Model (DOM). [www]
- The Document Object Model in XML. [www]
SAX
- SAX. [www]
- Elliotte Rusty Harold: Processing XML with Java, Chapter 6. SAX [www]
XSLT
- S. Holzner: XSLT Příručka internetového vývojáře. ISBN 80-7226-600-4, Computer
Press 2002.
- W3C: Extensible Stylesheet Language (XSL) Version 1.0. W3C Recommendation 15
October 2001. [www]
- W3C: XSL Transformations (XSLT) Version 1.0. W3C Recommendation 16 November
1999. [www]
Úvod do XML databází
- J. Shanmugasundaram, K. Tufte, G. He, Ch. Zhang, D. DeWitt, J. Naughton:
Relational Databases for Querying XML Documents: Limitations and Opportunities, In
proc. of VLBD 1999: 302-214, 1999. [www]
- R. Goldman, J. Widom. DataGuides: Enabling Query Formulation and Optimization
in Semistructured Databases, VLDB 1997. [www]
- Cohen E., Kaplan H., Milo T.: Labeling Dynamic XML Trees, Symposium on
Principles of Database System (PODS), p. 271- 281, 2002. [www]
- Chien S.-Y., Vagena Z., Zhang D., Tsotras V. K., Zaniolo C.: Efficient
Structural Joins on Indexed XML Documents: In proc. of VLDB 2002. [www]
- T.Grust. Accelerating XPath location steps, VLDB 2002. [www]
- D.Florescu, C.Hillery, D.Kossmann, P.Lucas, F.Riccardi, T.Westmann, M.Carey,
A.Sundararajan and G.Agrawal.: The BEA/XQRL Streaming XQuery Processor, VLDB 2003.
[www]
- M.Fernandez and J.Simeon and B.Choi and A.Marian and G.Sur. Implementing XQuery
1.0: The Galax Experience, VLDB 2003. [www]
- Cooper B. F., Sample N., Franklin M. J., Hjalason G. R., Shadmon M.: A Fast
Index for Semistructured Data, In proc. of VLDB 2001. [www]
- Jagadish H. V., Al-Khalifa S., Chapman A., LakshmananL. V. S., Nierman A.,
Paparizos S., Patel J. M., Srivastava D., Wiwatwattana N., Wu Y., Yu C.: TIMBER: A
Native XML Database, Technical report, University of Michigan, April 2002.
[www]
- G.Gottlob, C.Koch and R.Pichler.: Efficient Algorithms for Processing XPath
Queries, VLDB 2002 [www]
Vztah XML databází k jiným databázovým systémům
- R. Bourret: XML and Databases. [www]
- S. Amer-Yahia, M. Fernandez: Overview of Existing XML Storage Techniques.
[www]
- D. Florescu, D. Kossmann: A Performance Evaluation of Alternative Mapping
Schemes for Storing XML Data in a Relational Database. [www]
- A. Kuckelberg, R. Krieger: Efficient Structure Oriented Storage of XML
Documents Using ORDBMS. [www]
- T. Shimura, M. Yoshikawa, S. Uemura: Storage and Retrieval of XML Documents
using Object-Relational Databases. [www]
- J. Shanmugasundaram, K. Tufte, G. He, Ch. Zhang, D. DeWitt, J. Naughton:
Relational Databases for Querying XML Documents: Limitations and Opportunities
[www]
- H. Sun, S. Zhang, J. Zhou, J. Wang: Constraints-Preserving Mapping Algorithm
from XML-Schema to Relational Schema. [www]
- P. Bohannon, J. Freire, P. Roy, J. Siméon: From XML Schema to Relations: A
Cost-Based Approach to XML Storage. [www]
- M. Klettke, H. Meyer: XML and Object-Relational Database Systems Enhancing
Structural Mappings Based On Statistics. [www]
Dotazovací jazyky nad XML
- XML Query Requirements. [www]
- QL'98 - Query Languages 1998. [www]
- Database Desiderata for an XML Query Language. [www]
- XML-QL: A Query Language for XML. [www]
- J. Robbie, XQL'99 Proposal, 1999. [www]
- The Lorel Query Language for Semistructured Data. [www]
- From Semistructured Data to XML: Migrating the Lore Data Model and Query
Language. [www]
XQuery
- H. Katz et al., XQuery from the Experts: A Guide to the W3C XML Query Language,
Addison-Wesley, 2003.
- M. Brundage, XQuery: The XML Query Language, Addison-Wesley, 2004.
- XQuery 1.0: An XML Query Language. [www]
- XQuery 1.0 and XPath 2.0 Formal Semantics. [www]
- XQuery 1.0 and XPath 2.0 Data Model. [www]
- XML Query Use Cases. [www]
- XQuery 1.0 and XPath 2.0 Functions and Operators. [www]