NPRG036: XML Technologies
Basic Information
- Annotation:
NPRG036
- Lecturer: Martin Svoboda
- Tutors: Tomáš Faltín, Martin Svoboda
- Lectures:
- Monday 10:40 - 12:10 (S3)
- Practical classes:
- Monday 14:00 - 15:30 (SW2): Martin Svoboda
- Monday 15:40 - 17:10 (SW2): Martin Svoboda
- Wednesday 15:40 - 17:10 (SW2): Tomáš Faltín
- Table with points from practical classes, homework assignments and exam tests
Exam Dates
- Tuesday 29. 5. 2018: 13:30 - 16:00 (S3)
- Tuesday 5. 6. 2018: 13:00 - 15:30 (S3)
- Tuesday 12. 6. 2018: 13:00 - 15:30 (
S3 S5)
- Monday 18. 6. 2018: 13:00 - 15:30 (S3)
- Tuesday 26. 6. 2018: 13:00 - 15:30 (S3)
- Thursday 6. 9. 2018: 9:30 - 12:00 (S4)
- There will be no additional exam dates
Lectures
Practical Classes
- 01 + 02: XML, DTD
- 03 + 04: XPath
- 05 + 06: XML Schema
- 07 + 08: XSLT
- 09 + 10: XQuery
- 11 + 12: SAX, DOM
Timetable
|
Monday Martin Svoboda |
Wednesday Tomáš Faltín |
01 + 02: XML, DTD |
19. 2. + 26. 2. | 21. 2. + 7. 3. |
03 + 04: XPath |
12. 3. + 19. 3. | 14. 3. + 21. 3. |
05 + 06: XML Schema |
26. 3. + 9. 4. | 28. 3. + 4. 4. |
07 + 08: XSLT |
16. 4. + 23. 4. | 11. 4. + 18. 4. |
09 + 10: XQuery |
30. 4. + 7. 5. | 25. 4. + 2. 5. |
11 + 12: DOM, SAX |
14. 5. + 21. 5. | 9. 5. + 23. 5. |
Formal Requirements
- Attendance during practical classes is not compulsory, yet warmly recommended
- Altogether 6 individual homework assignments will take place during the semester
- Everyone must choose their distinct topic, not later than at the second practical class
- This topic must be reported to and explicitly accepted by the tutor in advance
- Possible topics could be: library, cinema, cookbook, university, flights, etc.
- See the list below for additional suitable topics, feel free to choose your own topic
- Your homework solutions must be within the topic, original, realistic, and non-trivial
Solutions can only be submitted via XML Check system at http://xmlcheck.projekty.ms.mff.cuni.cz/
- Solutions can now only be submitted via e-mail to your tutor
- At most 120 points in total can be gained for all the homework assignments
- Solutions are awarded by up to 20 points each
- In case of any shortcomings, fewer points will be awarded appropriately
- Solutions can be submitted even repeatedly, only the latest version is assessed
- Once a given assignment is assessed by the tutor, it cannot be resubmitted once again
- Delay of one whole day is penalized by 5 points, shorter delays are penalized proportionally
- Should the delay be even longer, the penalty stays the same and does not further increase
- All the homework assignments must be submitted before the first enrolled exam date
- None of the homework assignments is compulsory, yet all of them are recommended
- During some of the practical classes, extra activity points can be acquired, too
- At least 100 points is required for the course credit to be granted
One fourth Half of all the points above this boundary is transferred as bonus points to the exam
- Only students with a course credit already acquired can sign up for the final exam
- The final exam consists of a compulsory written test and an optional oral examination
- At most 100 points can be acquired from the actual final written test
- The final score corresponds to the sum of the written test and bonus points, if any
- Based on the result, everyone can voluntarily choose to undergo an oral examination
- In such a case, the final score is further adjusted by up to minus 15 to plus 5 points
- Final grade: 90 points and more for 1 (excellent), 75+ for 2 (very good), and 60+ for 3 (good)
Homework Assignments
- Preliminaries:
Solutions can only be submitted via XML Check system at http://xmlcheck.projekty.ms.mff.cuni.cz/
- Solutions can now only be submitted via e-mail to your tutor
- Respect the prescribed names of individual files to be submitted (case sensitive, including extensions)
- Place all the files in the root directory of your submission (unless instructed otherwise)
- Do not include shared libraries or any other files that are not explicitely requested
1: XML, DTD
- Points: 20
- Assignment:
- Create a DTD schema modeling your individual topic
- Your DTD must contain all the following constructs:
- Elements (empty, text, with subelements)
- Attributes
- Data types (text, enumeration, ...)
- Keys and references
- Operators
- Occurrence limitations for both elements and attributes
- Create an XML document with sample data
- Your XML document must contain all the following constructs:
- Elements, attributes, keys and references, text and mixed content
- It must also satisfy both the following requirements:
- Document depth equals to at least 5
- Fan-out (number of subelements) of at least one element is at least 10
- Finally, your DTD or XML must contain all the following constructs as well:
- Entity
- Processing instruction
- CDATA section
- Comment
- Requirements:
- Both your XML and DTD must be realistic and within your individual topic
- XML document must be well-formed (i.e. syntactically correct)
- XML document must also be valid with respect to your DTD schema
- Submission:
- /data.xml: XML document with sample data
- /data.dtd: DTD schema for your XML document
- Deadlines:
- Martin Svoboda: Sunday 4. 3. 2018 until 23:59
- Tomáš Faltín: Tuesday 13. 3. 2018 until 23:59
2: XPath
- Points: 20
- Assignment:
- Create at least 5 expressions of different XPath queries over your XML document
- Use at least once each of the following constructs:
- Predicate testing the value of an attribute
- Predicate testing the existence of a subelement
- Predicate testing the nonexistence of a subelement
- Predicate testing the position of something (node)
- Predicate testing the number of something (nodes)
- Use at least once one of the following axes:
- ancestor(-or-self), preceding(-sibling), following(-sibling)
- Requirements:
- Put each XPath expression into a standalone and sequentially numbered file (e.g. xpath1.xp)
- Always add a comment describing the intended query meaning in a natural language via (: comment :)
- Each query expression must be evaluated to a non-empty result
- Put all your XPath files into an xpath subdirectory of your submission
- You may modify both structure and contents of your original XML document if necessary
- Submission:
- /data.xml: XML document with your data to be queried
- /xpath/xpath1.xp, ..., /xpath/xpath5.xp: files with XPath expressions
- Deadlines:
- Martin Svoboda: Sunday 25. 3. 2018 until 23:59
- Tomáš Faltín: Tuesday 27. 3. 2018 until 23:59
3: XML Schema
- Points: 20
- Assignment:
- Create an XML Schema schema for your XML document
- Your XSD schema must contain all the following constructs:
- Elements with both simple and complex types
- Subelements with limited number of occurrences
- Compulsory and optional attributes
- At least one derived simple data type
- Definition of an element with text content and attributes
- Usage of globally and locally defined items and respective references
- Inheritance of data types
- Restrictions on identity
- Make sure your XML document uses all the previously enumerated schema constructs
- Requirements:
- XML document must be well-formed and valid with respect to your XSD
- You may modify both structure and contents of your original XML document if necessary
- Submission:
- /data.xml: XML document with sample data
- /data.xsd: XML Schema schema for your XML document
- Deadlines:
- Martin Svoboda: Sunday 15. 4. 2018 until 23:59
- Tomáš Faltín: Tuesday 10. 4. 2018 until 23:59
4: XSLT
- Points: 20
- Assignment:
- Create an XSLT stylesheet that transforms your XML document
- Your XSLT script must contain all the following constructs:
- At least 5 mutually called templates: xsl:apply-templates, xsl:call-template
- Both named and unnamed templates: xsl:template match="..", xsl:template name=".."
- Usage of modes
- Conditions: xsl:if or xsl:choose with xsl:when
- Cycles: xsl:for-each
- Variables: xsl:variable
- Parameters: xsl:param, xsl:with-param,
- Output generation: xsl:element, xsl:attribute, xsl:value-of, xsl:text
- Copying: xsl:copy, xsl:copy-of
- The output format is either XML or HTML
- Requirements:
- Add comments describing the intended meaning of your templates in a natural language
- You may modify both structure and contents of your original XML document if necessary
- Submission:
- /data.xml: XML document with your data to be transformed
- /data2html.xsl or /data2xml.xsl: XSLT script with your transformation, choose the file name depending on the intended output format
- Deadlines:
- Martin Svoboda: Sunday 29. 4. 2018 until 23:59
- Tomáš Faltín: Tuesday 24. 4. 2018 until 23:59
5: XQuery
- Points: 20
- Assignment:
- Create at least 5 expressions of different XQuery queries over your XML document:
- 1 query joining data from 2 distinct standalone documents (or at least 2 logically different parts of one document)
- 1 query integrating heterogeneous data from 2 distinct standalone documents (or at least 2 logically different parts of one document)
- 1 query which uses a non-trivial user-defined function
- 1 query generating XHTML output
- Use at least once each of the following constructs, functions and operators:
- Counted constructors
- order by clause
- One aggregate function in where condition: min, max, avg or sum
- One quantifier: every ... satisfies ... or some ... satisfies ...
- distinct-values function
- Conditional expression: if ... then ... else ...
- Requirements:
- Put each XQuery expression into a standalone and sequentially numbered file (e.g. xquery1.xq)
- Always add a comment describing the intended query meaning in a natural language via (: comment :)
- Describe the type of your expression explicitly using JOIN, INTEGRATION, FUNCTION or XHTML keywords in the comment
- Each query expression must be evaluated to a non-empty result
- Put all your XQuery files into an xquery subdirectory of your submission
- You may modify both structure and contents of your original XML document if necessary
- Submission:
- /data.xml: XML document with your data to be queried
- /xquery/xquery1.xq, ..., /xquery/xquery5.xq: files with XQuery expressions
- Deadlines:
- Martin Svoboda: Sunday 13. 5. 2018 until 23:59
- Tomáš Faltín: Tuesday 8. 5. 2018 until 23:59
6: SAX, DOM
- Points: 20
- Assignment:
- Implement a SAX handler processing your XML document
- Calculate at least 3 different characteristics of your data:
- One of them will be related to elements
- One of them will be related to attributes
- One of them will be related to context of elements or attributes
- E.g. average weight of products, number of employees with salary higher than 20000, ...
- Implement a DOM transformer modifying your XML document
- Introduce at least 2 modifications of your data:
- E.g. add a new employee, increase the price of all fruits by 20%, ...
- Requirements:
- Source file for your SAX handler must have a name MySaxHandler.java and must be placed in /sax/user subdirectory
- Class MySaxHandler must inherit from org.xml.sax.helpers.DefaultHandler and must have a default non-parametric constructor
- Instance of your MySaxHandler class will be created and forwarded to the SAX parser automatically
- Print the calculated SAX characteristics to the standard output
- Source file for your DOM transformer must have a name MyDomTransformer.java and must be placed in /dom/user subdirectory
- Class MyDomTransformer must implement a method public void transform(org.w3c.dom.Document) modifying the document passed as the only argument
- Both the SAX handler and DOM transformer classes must declare package user;
- Comment your source files and explain the intended meaning of your SAX characteristics / DOM modifications
- You may modify both structure and contents of your original XML document if necessary
- Submission:
- /data.xml: XML document to be processed
- /sax/user/MySaxHandler.java: Java source file for your SAX handler
- /dom/user/MyDomTransformer.java: Java source file for your DOM transformer
- Deadlines:
- Martin Svoboda: Sunday 27. 5. 2018 until 23:59
- Tomáš Faltín: Tuesday 29. 5. 2018 until 23:59
Individual Topics
- Try to propose your own original topic in the first place
- You can also get inspired by the following topics (in alphabetical order)
-
Adresní místa,
Armáda,
Autobusové nádraží,
Autosalon,
Autoškola,
Banka,
Bankovní účet,
Bazar,
Bezpečnostní agentura,
Blog,
Botanická zahrada,
Burza,
Catering,
Cestovní agentura,
Cestovní kancelář,
Cukrárna,
Cvičiště pro psy,
Čajovna,
Čerpací stanice,
Dálniční poplatky,
Darování zážitků,
Deskové hry,
Diskuzní fórum,
Divadelní hry,
Divadlo,
Dodávka vody,
Docházkový systém,
Dopravní dispečink,
Dopravní nehody,
Dopravní podnik,
Dopravní uzavírky,
Doručování zásilek,
Dotační programy,
Elektronická evidence tržeb,
Elektronické recepty,
Evidence smluv,
Evidence součástek,
Evidence zaměstnanců,
Exekuce,
Farmářské trhy,
Filmy,
Finanční poradenství,
Finanční trhy,
Finanční úřad,
Fitness centrum,
Fotbalová liga,
Fotbalový tým,
Fotoalbum,
Galerie,
Golfové kluby,
Grantová agentura,
Hobby market,
Hodinový manžel,
Hokejová liga,
Horská služba,
Hotel,
Hrady a zámky,
Hudební festival,
Hudební nástroje,
Hudební produkce,
Jaderná elektrárna,
Jazyková škola,
Jazykové pobyty,
Jednání zastupitelstva,
Jeskyně,
Jídelníček,
Jízdenky na autobus,
Jízdní řády,
Kadeřnický salon,
Kamionová doprava,
Kasino,
Katastr nemovitostí,
Kavárna,
Kino,
Kniha jízd,
Knihkupectví,
Knihovna,
Konference,
Kravín,
Kuchařka,
Kurýrní služba,
Kurzy vaření,
Lékárna,
Léky,
Lesní školka,
Letecká společnost,
Letecká záchranná služba,
Letiště,
Letní tábor,
Logistická firma,
Logistické centrum,
Logistický sklad,
Lyžařská škola,
Lyžařský areál,
Mateřská škola,
Menzy,
Městská hromadná doprava,
Mobilní operátor,
Mobilní telefony,
Modely vláčků,
Multifunkční aréna,
Muniční sklad,
Muzeum,
Mýtné brány,
Nabídky dovolené,
Nabídky práce,
Nadnárodní společnost,
Národní park,
Nebankovní půjčky,
Nemocnice,
Nutriční hodnoty,
Obchodní centrum,
Obchodní rejstřík,
Očkování do ciziny,
Odevzdávání úkolů,
Online cvičení,
Online půjčovna seriálů,
Ordinace lékaře,
Orientační běh,
Osobní doklady,
Osobní trenér,
Parkoviště,
Pekařství,
Personální agentura,
Pěstounská péče,
Pizzerie,
Plánovací kalendář,
Plánování termínů schůzek,
Platební karty,
Plavecký bazén,
Počítačové hry,
Pohádky,
Pojišťovna,
Policejní databáze,
Politické strany,
Populární hudba,
Porodnice,
Poslanecká sněmovna,
Pošta,
Požární ochrana,
Pracovní úřad,
Prodej výtvarných děl,
Provoz metra,
Průmyslová zóna,
Předpověď počasí,
Přepravní kontrola,
Přírodní rezervace,
Přístupový systém,
Psychiatrická léčebna,
Půjčování kol po městě,
Půjčovna auta,
Půjčovna lodí,
Půjčovna svatebních šatů,
Realitní agentura,
Redakční systém,
Registr obyvatel,
Regulační poplatky,
Restaurace,
Rezervace letenek,
Rezervace místností,
Rezervace ubytování,
Rezervace v restauraci,
Rozvodná síť,
Rozvoz jídla,
Řízení letecké dopravy,
Řízení projektů,
Sázková kancelář,
Sbírka zákonů,
Sdílené cestování,
Síť bankomatů,
Síť multikin,
Skautské středisko,
Sklad nápojů,
Sklárna,
Sociální dávky,
Sociální síť,
Soudní řízení,
Spediční firma,
Společenství vlastníků jednotek,
Sportovní klub,
Sportovní turnaj,
Správa hřbitova,
Správa objektů,
Správce financí,
Srovnání elektrospotřebičů,
Srovnávač ubytování,
Státy světa,
Stavebnice lego,
Střední škola,
Studijní materiály,
Studijní systém,
Supermarket,
Světové dědictví,
Svoz a likvidace odpadů,
Symfonický orchestr,
Taneční škola,
Taxi služba,
Televizní program,
Televizní seriály,
Turistické cesty,
Turistický oddíl,
Turistický ruch,
Ubytování v soukromí,
Uprchlický tábor,
Válečné konflikty,
Včelař,
Vědecké projekty,
Vědecké publikace,
Velkochov drůbeže,
Velkoobchod,
Veřejná zeleň,
Veřejné zakázky,
Vesmír,
Vězení,
Videopůjčovna,
Virtuální prohlídky,
Víza,
Vlakové nádraží,
Vojenský prostor,
Volby,
Volnočasové kurzy,
Vozový park,
Vydavatelství novin,
Výkaz práce,
Výrobní procesy,
Vysokoškolská kolej,
Výstaviště,
Vývoj softwaru,
Vzdělávací instituce,
Webhosting,
Webový obchod,
Zábavní centrum,
Zahrádkářská kolonie,
Zahradnictví,
Zastavárna,
Zbraně,
Zdravotní pojišťovna,
Zdravotní úhrady,
Zemědělská výroba,
Zimní úklid komunikací,
Zoologická zahrada,
Zpravodajská služba,
Žákovská knížka,
Železniční síť
- Nevertheless, the following topics are not allowed this semester
Recommended Software
Recommended Literature