Skip to content

Latest commit

 

History

History
 
 

cvicenia

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Cvičenia

Cvičenie 8 (29.4.)

Cvičenie 7 (15.4.)

SVG Tutorial

Pr. 1

  1. Uvažujte model albumov a pesničiek, ktoré majú hodnotenia z intervalu <1,5>. Uvažujte dáta (dvojice), ktoré sú výstupom štatistickej agregácie nad daným modelom, a to R1:10 (hodnotenie/rating 1 má 10 pesničiek), R2:7, R3:5, R4:3, R5:2. Vytvorte pre tieto dáta stĺpcový graf vo formáte SVG:

RIEŠENIE

Ilustrácia stĺpcového grafu

Pr. 2

Uvažujte dáta o vývoji populácie v Rokforte od r. 1500 po r. 2021. Vytvorte čiarový graf vo formáte SVG ako ilustruje daný obrázok:

Ilustrácia čiarový graf

Cvičenie 6 (1.4.)

CSS

CSS pre tlač

Cvičenie 5 (25.3.)

XSLT pokračovanie prezentácia

Rozšírte XSLT skript z predošlého cvičenia:

Pr. 1

  1. Vytvorte usporiadaný zoznam miestností. Nahraďte ID a NAME zodpovedajúcimi hodnotami. Vytvorte nepomenovanú šablónu pre room elementy (nevytvárajte žiadnu inú šablónu). Použite inštrukcie xsl:element, xsl:attribute a xsl:text.
<h2>List of Rooms</h2>
<ol>
<li id="room-ID">Room ID: NAME</li>
...
</ol>

RIEŠENIE

Pr. 2

  1. Pridajte nový stĺpec do tabuľky "Table of Departments". Pre každé oddelenie Department vytvorte neusporiadaný zoznam referencií na izby Rooms. Použite nepomenovanú šabĺonu spolu s atribútom mode.
...
<td>
  <ul>
   <li><a href="#room-ID">NAME</a></li>
   ...
  </ul>
</td>
...

RIEŠENIE

Pr. 3

  1. Integrujte nasledujúci kaskádový štýl (CSS) do head elementu:
<style>
th { background-color: #AAAAAA; }
tr.even td { background-color: #DDDDDD; }
</style>

Upravte "Table of Departments". Pridajte stĺpec s poradovým číslom oddelenia. Použite inštrukcie podmienky xsl:if.

<tr><td>1</td>...</tr>
<tr><td>2</td>...</tr>
...

Nastavte farbu pozadania všetkým nepárnym riadkom.

<tr class="even">...</tr>

RIEŠENIE

Pr. 4

  1. Upravte "Table of Departments". Nahraďte stĺpec Head ID stĺpcom Head name, a teda ku každému oddeleniu uveďte meno vedúceho. Ak oddelenie nemá vedúceho, alebo meno vedúceho chýba, vypíšte <i>Neznámy</i>. Pre tento účel vytvorte pomenovanú šablónu.
    • Pri volaní použite parameter xsl:with-param na špecifikovanie vstupného identifikátora vedúceho oddelenia.
    • Ak je šablóna volaná bez parametra, vyberte identifikátor vedúceho z predmetných údajov oddelenia.

RIEŠENIE

Pr. 5

  1. Upravte "Table of Departments". Pridajte stĺpec, v ktorom bude zoznam vybavenia, a teda čiarkou oddelené features, napr.: "CO2 laser, Endoskop, Pulzomer". Usporiadajte položky zoznamu v abecednom poradí. Nevytvárajte nové šablóny, použite inštrukciu xsl:for-each.

RIEŠENIE

Pr. 6

  1. Pridajte v XML súbore k elementom feature v oddeleniach atribút type s náhodne priradenými hodnotami z množiny ["t1", "t2", "t3"], pričom niektoré vybavenia môžu mať viacero typov, napr.: <feature type="t1 t3">Endoskop</feature>. Upravte spôsob, akým sú vypísané vybavenia:
    • všetky vybavenia, ktoré majú priradený type="t1"a žiaden iný typ sú vypísané modrou farbou, a teda <span style="color: blue;">...</span> (príp. si definujte triedu),
    • všetky vybavenia, ktoré majú 1 a viac typov, pričom aspoň jeden z nich je type="t2"sú vypísané červenou farbou,
    • v ostatných prípadoch je pôvodná farba. Použite inštrukciu xsl:choose, napomocná bude funkcia contains().

RIEŠENIE

Cvičenie 4 (18.3.)

XSLT - úvod prezentácia

  • Vyberte si jazyk/framework a rozbehajte si runtime prostredie, v ktorom budete realizovať XSL transformácie (XSLT). Vyskúšajte si transformáciu XML dokumentu do HTML dokumentu: dáta, xslt

Cvičenie 3 (11.3.)

Úlohy:

  1. Vyberte miestnosti (rooms) s podpriemerným hodnotením (rate < ako priemer).

  2. Vyberte mená vedúcich oddelení (head), ktorí majú na oddelení (department) izbu (room) s vybavením (feature) "televízor".

  3. Vyberte sumu z hodnotení (rate) miestností (rooms) s komfortom (atribút comfort) C alebo D z oddelení, ktorých vedúcim je "h1".

  4. Vyberte názvy (name) prvej a poslednej miestnosti v dokumente vrátane rekurzívne vnorených miestností.

  5. K danému identifikátoru (ako vstup) konkrétnej miestnosti, vyberte miestnosť, ktorá je v zmysle hierarchie na najvyššej úrovni od danej miestnosti. Napr.: vyberiete element room s názvom "A4" k identifikátoru "r4a1".

  6. Vyberte zoznam hodnôt comfort z miestností (rooms), ktoré neobsahujú iné miestnosti.

Cvičenie 2 (4.3.)

Pokračovanie XML + DTD úlohy:

  1. Upravte a rozšírte DTD aj XML. Pridajte unikátne identifikátory k heads, departments a rooms, napr. element head bude mať identifikátor idHead="h1". Transformujte všetky existujúce referencie z mien (names) na tieto nové identifikátory, použite údajové typy ID a IDREF. Vyskúšajte narušiť referenčnú integritu.

  2. Upravte a rozšírte DTD aj XML. Vložte nasledujúci fragment do opisu (element description) niektorej z miestnosti (element room) tak, aby nebol interpretovaný ako XML. Použite pre to existujúce znakové entity (napr. pre znak '<' entitu <). <button class="q-btn">Click</button> Ďalej, deklarujte novú znakovú entitu pre horný index (superscript) dvojky (Unicode U+00B2 (178)). Použite túto entitu v opise (description) predmetnej miestnosti (room). XML entities

  3. Upravte a rozšírte DTD aj XML. Vložte nasledujúci fragment do opisu (element description) niektorej z miestností (element room) pomocou sekcie CDATA: <button class="q-btn">Click</button> Ďalej, pridajte komentáre na "vizuálne" oddelenie jednotlivých častí XML dokumentu, napr. <!-- Zoznam miestností -->

  4. Upravte a rozšírte DTD aj XML. Použitím parametrických entít (parameter entities) a podmienených sekcií (conditional sections) deklarujte dva režimy tak, aby v štandardnom režime (standardMode) nebol element description súčasťou miestnosti (element room), a v podrobnom režime (verboseMode) bol súčasťou miestnosti. Aktivujte štandardný režim a upravte primerane XML dokument. XML parameter entities, conditional sections

XPATH úlohy:

[Prezentácia]

Dáta: world-of-health-v1.xml, DTD: world-of-health-v1.dtd

Nástroj: XML Quire
Online nástroj: XPather

    • Vyberte všetkých vedúcich oddelení (heads).
      • napr.: //head
      • napr.: //child::head
    • Vyberte názvy (names) všetkých nemocníc, iba obsah.
      • napr.: /world-of-health/hospitals/hospital/name/text()
      • napr.: //hospital/name/text()
    • Vyberte všetky krajiny (countries), z ktorých sú vedúci oddelení (heads), bez duplicít.
      • napr.: distinct-values(/world-of-health/heads/head/address/country)
      • napr.: distinct-values(//head//country)
      • napr.: distinct-values(//head/address/country)
    • Vyberte meno vedúceho oddelenia s id "h1".
      • napr.: //head[@idHead = "h1"]/name/text()
      • napr.: //head[./@idHead = "h1"]/name/text()
      • napr.: //head[self::node()/@idHead = "h1"]/name/text()
      • napr.: //head[attribute::idHead = "h1"]/name/text()
  1. Vyberte poštové smerovacie čísla (postal codes) všetkých vedúcich oddelení zo Slovenskej republiky.

  • napr.: //head/address[country/text() = 'Slovenská republika']/postalCode
  • napr.: //head/address[.//country = 'Slovenská republika']/postalCode
  1. Vyberte rate hodnoty všetkých miestností (rooms) s urovňou komfortu C (atribút comfort) zo všetkých oddelení (departments) okrem d2.
  • napr.: //room[@comfort = "C" and @department != "d2"]/rate/text()
  • napr.: //rate[parent::room[@comfort = "C"] and parent::room[@department != "d2"]]/text()
  1. Vyberte 3. vybavenie (feature) na 1. oddelení (department).
  • napr.: //department[1]/features/feature[3]
  • napr.: //department[position() = 1]//feature[position() = 3]
  1. Vyberte názvy oddelení (names), ktoré majú aspoň dve vybavenia (feature) a súčasne nemajú vedúceho (atribút head).
  • napr.: //department[not(@head) and count(features/feature) >= 2]/name
  • napr.: //department[count(@head) = 0 and count(.//feature) >= 2]/name
  1. Vyberte vedúcich oddelení, ktorí nie sú priradení k žiadnemu oddeleniu.
  • napr.: //head[not(@idHead = //department/@head)]

Cvičenie 1 (25.2.)

[Prezentácia]

Úlohy:

  1. Vytvorte (well-formed) XML dokument s nasledujúcou štruktúrou. Koreňový element world-of-heatlh bude obsahovať sekvenciu elementov: hospitals, heads (head of deparment), departments, rooms, všetky s prázdnym obsahom.

  2. Vytvorte interné DTD (alebo XSD) pre predmetný dokument. Zaistite jeho platnosť (validity), vyskúšajte platnosť narušiť.

  3. Rozšírte predošlé DTD tak, aby elementy hospitals, heads, departments a rooms obsahovali konkrétne elementy hospital, head, department a room:

  • hospital: name, e-mail, phone
  • head: name
  • department: name, description, numberOfRooms, features, head reference
  • room: name, description, features, department reference
    Atribúty použite iba na referencie. Inak použite elementy. Použite iba CDATA a #PCDATA pre hodnoty a obsah. Rozšírte zodpovedajúci XML dokument tak, aby obsahoval: 1x hospital, 1x head, 1x department a 2x room.
  1. Upravte oboje, DTD aj XML tak, aby opis (description) oddelenia (department) obsahoval referenciu na room, napr.: ... <roomReference roomName="C5">…</roomReference> ... Ďalej, premenujte element description v elementoch room na data. Element data bude obsahovať štruktúrovaný opis (description) - ľubovoľné XML fragmenty.

  2. Rozšírte DTD aj XML: hospitals, heads (bydlisko lekára) a departments musia mať práve jednu adresu: (priamo po name). Každá adresa pozostáva zo:

  • street a number
  • postalCode
  • state
  • country
    Rešpektujte poradie, country je nepovinné. Ak nie je country uvedené, potom postalCode musí byť ako posledné (po state, nie pred).
  1. Upravte DTD aj XML: address, email a phone v hospitals smú byť v ľubovoľnom poradí. Ak features (v departments a rooms) sú špecifikované, potom musia byť aspoň 2, najviac však 5.

  2. Rozšírte DTD aj XML tak, aby element room mohol obsahovať elementy record. Každý record obsahuje date a text (ďalšiu textovú informáciu, napr. <date>2021-02-28</date><text>Dezinfekcia vykonaná</text>), alebo sekvenciu ďalších vnorených (nested) elementov record (aspoň jedného).

  3. Upravte a rozšírte DTD aj XML. Pridajte atribút language koreňovému elementu. Hodnota musí byť fixná, a to 'EN' alebo 'SK' (podľa toho, aký jazyk ste zvolili pre obsah vášho XML dokumentu). Miestnostiam room pridajte atribút comfort, pričom povolené hodnoty sú A, B, C, D, E, alebo F. Predvolená hodnota je F. Ďalej, referencia head v department bude odteraz nepovinná.

Nástroje: