- Prístupnosť - Accessibility
- WAI-ARIA basics
- NVDA Screen Reader - windows, Voiceover pre Mac
- NVDA Keyboard shortcuts
- ARIA Landmarks / HTML5 Sectioning Elements
- NVDA caste skratky:
- CTRL + ALT + N spustenie
- D prechod na další landmark
- SHIFT + D návrat na predošlý landmark
- H prechod na další nadpis
- SHIFT + H návrat na predošlý nadpis
- ŠIPKA DOLE/HORE krokové čítanie obsahu v danej sekcii/landmarku
- CTRL zastavenia rozprávania
- TAB prechod na ďalšiu "focusable" položku
- NVDA caste skratky:
- WAI-ARIA Practices, design patterns and widgets
- Porovnajte WEB1 vs WEB2 vs slovensko.sk alebo epobocka, ..., sme.sk
- Porovnajte Date picker ARIA Dialog design pattern + grid pattern vs Quasar date picker
- 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:
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:
Rozšírte XSLT skript z predošlého cvičenia:
- Vytvorte usporiadaný zoznam miestností. Nahraďte
ID
aNAME
zodpovedajúcimi hodnotami. Vytvorte nepomenovanú šablónu preroom
elementy (nevytvárajte žiadnu inú šablónu). Použite inštrukciexsl:element
,xsl:attribute
axsl:text
.
<h2>List of Rooms</h2>
<ol>
<li id="room-ID">Room ID: NAME</li>
...
</ol>
- Pridajte nový stĺpec do tabuľky "Table of Departments". Pre každé oddelenie
Department
vytvorte neusporiadaný zoznam referencií na izbyRooms
. Použite nepomenovanú šabĺonu spolu s atribútommode
.
...
<td>
<ul>
<li><a href="#room-ID">NAME</a></li>
...
</ul>
</td>
...
- 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>
- Upravte "Table of Departments". Nahraďte stĺpec
Head ID
stĺpcomHead 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.
- Pri volaní použite parameter
- 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štrukciuxsl:for-each
.
- Pridajte v XML súbore k elementom
feature
v oddeleniach atribúttype
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 funkciacontains()
.
- všetky vybavenia, ktoré majú priradený
- 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
Úlohy:
-
Vyberte miestnosti (rooms) s podpriemerným hodnotením (
rate
< ako priemer). -
Vyberte mená vedúcich oddelení (head), ktorí majú na oddelení (department) izbu (room) s vybavením (feature) "televízor".
-
Vyberte sumu z hodnotení (rate) miestností (rooms) s komfortom (atribút
comfort
) C alebo D z oddelení, ktorých vedúcim je "h1". -
Vyberte názvy (name) prvej a poslednej miestnosti v dokumente vrátane rekurzívne vnorených miestností.
-
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". -
Vyberte zoznam hodnôt
comfort
z miestností (rooms), ktoré neobsahujú iné miestnosti.
Pokračovanie XML + DTD úlohy:
-
Upravte a rozšírte DTD aj XML. Pridajte unikátne identifikátory k
heads
,departments
arooms
, napr. elementhead
bude mať identifikátor idHead="h1". Transformujte všetky existujúce referencie z mien (names) na tieto nové identifikátory, použite údajové typyID
aIDREF
. Vyskúšajte narušiť referenčnú integritu. -
Upravte a rozšírte DTD aj XML. Vložte nasledujúci fragment do opisu (element
description
) niektorej z miestnosti (elementroom
) 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 -
Upravte a rozšírte DTD aj XML. Vložte nasledujúci fragment do opisu (element
description
) niektorej z miestností (elementroom
) pomocou sekcieCDATA
:<button class="q-btn">Click</button>
Ďalej, pridajte komentáre na "vizuálne" oddelenie jednotlivých častí XML dokumentu, napr.<!-- Zoznam miestností -->
-
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 elementdescription
súčasťou miestnosti (elementroom
), 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:
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
- napr.:
- Vyberte názvy (names) všetkých nemocníc, iba obsah.
- napr.:
/world-of-health/hospitals/hospital/name/text()
- napr.:
//hospital/name/text()
- napr.:
- 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)
- napr.:
- 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()
- napr.:
- Vyberte všetkých vedúcich oddelení (
-
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
- Vyberte
rate
hodnoty všetkých miestností (rooms) s urovňou komfortu C (atribútcomfort
) zo všetkých oddelení (departments) okremd2
.
- napr.:
//room[@comfort = "C" and @department != "d2"]/rate/text()
- napr.:
//rate[parent::room[@comfort = "C"] and parent::room[@department != "d2"]]/text()
- Vyberte 3. vybavenie (
feature
) na 1. oddelení (department
).
- napr.:
//department[1]/features/feature[3]
- napr.:
//department[position() = 1]//feature[position() = 3]
- 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
- Vyberte vedúcich oddelení, ktorí nie sú priradení k žiadnemu oddeleniu.
- napr.:
//head[not(@idHead = //department/@head)]
Úlohy:
-
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. -
Vytvorte interné DTD (alebo XSD) pre predmetný dokument. Zaistite jeho platnosť (validity), vyskúšajte platnosť narušiť.
-
Rozšírte predošlé DTD tak, aby elementy
hospitals
,heads
,departments
arooms
obsahovali konkrétne elementyhospital
,head
,department
aroom
:
hospital
:name
,e-mail
,phone
head
:name
department
:name
,description
,numberOfRooms
,features
,head
referenceroom
:name
,description
,features
,department
reference
Atribúty použite iba na referencie. Inak použite elementy. Použite ibaCDATA
a#PCDATA
pre hodnoty a obsah. Rozšírte zodpovedajúci XML dokument tak, aby obsahoval: 1x hospital, 1x head, 1x department a 2x room.
-
Upravte oboje, DTD aj XML tak, aby opis (
description
) oddelenia (department
) obsahoval referenciu naroom
, napr.: ...<roomReference roomName="C5">…</roomReference>
... Ďalej, premenujte elementdescription
v elementochroom
nadata
. Elementdata
bude obsahovať štruktúrovaný opis (description) - ľubovoľné XML fragmenty. -
Rozšírte DTD aj XML:
hospitals
,heads
(bydlisko lekára) adepartments
musia mať práve jednu adresu: (priamo poname
). Každá adresa pozostáva zo:
street
anumber
postalCode
state
country
Rešpektujte poradie,country
je nepovinné. Ak nie jecountry
uvedené, potompostalCode
musí byť ako posledné (postate
, nie pred).
-
Upravte DTD aj XML:
address
,email
aphone
vhospitals
smú byť v ľubovoľnom poradí. Akfeatures
(vdepartments
arooms
) sú špecifikované, potom musia byť aspoň 2, najviac však 5. -
Rozšírte DTD aj XML tak, aby element
room
mohol obsahovať elementyrecord
. Každýrecord
obsahujedate
atext
(ďalšiu textovú informáciu, napr.<date>2021-02-28</date><text>Dezinfekcia vykonaná</text>
), alebo sekvenciu ďalších vnorených (nested) elementovrecord
(aspoň jedného). -
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). Miestnostiamroom
pridajte atribútcomfort
, pričom povolené hodnoty súA
,B
,C
,D
,E
, aleboF
. Predvolená hodnota jeF
. Ďalej, referenciahead
vdepartment
bude odteraz nepovinná.
Nástroje:
- VS Code rozšírenie: https://marketplace.visualstudio.com/items?itemName=DotJoshJohnson.xml
- Online nástroj pre (DTD): https://www.xmlvalidation.com/