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
). - Vyberte názvy (names) všetkých nemocníc, iba obsah.
- Vyberte všetky krajiny (countries), z ktorých sú vedúci oddelení (heads), bez duplicít.
- Vyberte meno vedúceho oddelenia s id "h1".
- Vyberte všetkých vedúcich oddelení (
-
Vyberte poštové smerovacie čísla (postal codes) všetkých vedúcich oddelení zo Slovenskej republiky.
-
Vyberte
rate
hodnoty všetkých miestností (rooms) s urovňou komfortu C (atribútcomfort
) zo všetkých oddelení (departments) okremd2
. -
Vyberte 3. vybavenie (
feature
) na 1. oddelení (department
). -
Vyberte názvy oddelení (names), ktoré majú aspoň dve vybavenia (feature) a súčasne nemajú vedúceho (atribút
head
). -
Vyberte vedúcich oddelení, ktorí nie sú priradení k žiadnemu oddeleniu.
Ú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/