A7B36XML, AD7B36XML: Technologie XML
Základní informace
- Anotace předmětu:
A7B36XML,
AD7B36XML
- Přednášející a cvičící: Martin Svoboda
- Rozvržení kurzu:
A7B36XML,
AD7B36XML
- Přednáška a konzultace: pátek 14:30 - 16:00 (KN:E-126)
- Cvičení: pátek 16:15 - 17:45 (KN:E-307)
- Evidence bodů ze cvičení a výsledků zkoušek
Přednášky
Cvičení
- 03. 03. a 10. 03. 2017: 01 a 02 - XML, DTD
- 17. 03. a 24. 03. 2017: 03 a 04 - XPath
- 31. 03. a 07. 04. 2017: 05 a 06 - XML Schema
- 28. 04. a 05. 05. 2017: 07 a 08 - XSLT
- 12. 05. a 19. 05. 2017: 09 a 10 - XQuery
- 26. 05. 2017: 11 - DOM, SAX
Konzultace
- 03. 03. 2017: XML, DTD
- 17. 03. 2017: XPath
- 31. 03. 2017: XML Schema
- 28. 04. 2017: XSLT
- 12. 05. 2017: XQuery
- 26. 05. 2017: DOM, SAX
Formální požadavky
- Účast na cvičeních a konzultacích není povinná, ale doporučovaná.
- Během semestru bude postupně zadáno 6 individuálních domácích úkolů.
- Každý student vypracuje všechny úkoly v rámci jednoho zvoleného tématu.
- Téma úkolů musí být nahlášeno a schváleno ještě před prvním úkolem.
- Možné příklady témat: knihovna, kino, kuchařka, škola, letenky atd.
- Řešení úkolů musí odpovídat tématu, být originální, realistická a netriviální.
- Vypracované úkoly se odevzdávají prostřednictvím systému XML Check.
- Za každý úkol je možné získat až 20 bodů, za semestr tedy 120 bodů celkem.
- Před uplynutím termínu na odevzdání mohou být úkoly odevzdávány i opakovaně.
- Každý úkol však bude hodnocen jen jednou, opravy po ohodnocení možné nejsou.
- Zpoždění v délce 1 dne je penalizováno ztrátou 5 bodů, proporčně podle počtu hodin.
- V případě zpoždění delšího než 1 den se penalizace už dále nezvyšuje.
- Během některých cvičení bude možné získat další body za aktivitu.
- Každý student však může z jednoho cvičení získat nejvýše 2 body.
- Pro udělení zápočtu je nutné získat alespoň 100 bodů celkem.
- Všechny body nad hranicí 120 bodů jsou převedeny ke zkoušce jako bonus.
- Pro přihlášení se na zkoušku je nejprve vyžadováno získání zápočtu.
- Z vlastního písemného zkouškového testu je možné získat až 100 bodů.
- Výsledná známka je určena součtem bodů z testu a případného bonusu.
- 90 bodů a více pro A, 80+ pro B, 70+ pro C, 60+ pro D a 50+ pro E.
- Pro získání známky je ale nutné z vlastního testu získat alespoň 30 bodů.
- V opačném případě se za každý neúspěšný termín odečte z případného bonusu 10 bodů.
Domácí úkoly
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.
- Termín odevzdání: čtvrtek 16. 3. 2017 do 23:59
Téma 2: 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 (: ... :).
- Termín odevzdání: čtvrtek 30. 3. 2017 do 23:59
Téma 3: 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.
- Termín odevzdání: čtvrtek 13. 4. 2017 do 23:59
Téma 4: 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.
- Termín odevzdání: čtvrtek 11. 5. 2017 do 23:59
Téma 5: 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 (: ... :).
- Termín odevzdání: čtvrtek 25. 5. 2017 do 23:59
Téma 6: 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.
- Termín odevzdání: čtvrtek 1. 6. 2017 do 23:59
Používaný software
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]