Professional Documents
Culture Documents
3 - Kursuse Info
3 - Kursuse Info
com
VALIDEERIMINE XML
MARIO METSHEIN
30 MINUTES
XML atribuudid
Vaatame näitena ühte lihtsat sisestust, kus töötajal on kaks elemendi nimega <telefon> . Et neil vahet
teha, siis on võimalus need varustada siltidega tyyp="kodu" ja tyyp="too" .
Neid silte nimetatakse XML puhul atribuutideks, mille väärtus on alati jutumärkides. Jutumärgidena lähevad
arvesse nii kahekordsed (“) kui ka ühekordsed (‘) ning lisatakse alati alustava sildi sisse. Elementidel võib olla
vajadusel ka mitu atribuuti. Näiteks kui soovime lisada
Reeglina palju atribuute pole väga hea mõte – selle asemel tasuks võib-olla mõelda näiteks uute siltide
lisamisele.
Eelpool väljatoodud lingi aadressilt leiate kindlasti veel teisigi kasulikke tööriistu. Üks nende seast korrastab
näiteks XML koodi codebeautify.org/xml-formatter-beautifier. Sina sisesta oma kood ja kui klikid
“Beautify/Format” trepitakse su kood kenasti ära.
DTD on vanem meetod reeglite kirjutamiseks, mille abil saad määrata struktuurelemendid, attribuudid ning
nende väärtused. Seevastu XSD võimaldab juba palju rohkemat ja keerulisemaid valideerimise reegleid.
Kuna DTD on ikka veel kasutuses ja tegelikult algajale lihtsam mõista, siis teeme algust just sellega.
Ja uued failid loo File>New>Other ning avanenud aknast leia üles XML
i
https://www.metshein.com/kursus/#
i 3/8
13.7.2020 Kursuse info – metshein.com
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE töötajad[
<!--siia reeglid-->
]>
<töötajad>
<töötaja>
<enimi>Niina</enimi>
<pnimi>Sarvik</pnimi>
<email>niina.sarvik@zmail.com</email>
<telefon tyyp="kodu">+372 654 321</telefon>
<telefon tyyp="too">+372 456 123</telefon>
<pilt allikas="img/nsarvik.jpg" laius="250" korgus="350" />
</töötaja>
</töötajad>
<!DOCTYPE töötajad[
<!ELEMENT töötajad (töötaja) >
]>
Kontrollimiseks teeme Eclipse IDE programmis parema kliki aknas ja valime Validate.
https://www.metshein.com/kursus/# 4/8
13.7.2020 Kursuse info – metshein.com
Kui kõik on korras, tuleb teade, et ei leitud vigu (no errors and warnings). Aga lisame töötajaid rohkem.
Peaksid nägema kohe veateadet. Kui ei näe, siis vali jälle Validate.
Milles viga? Me seadsime reegli, et pärast juur-elementi tuleb üks element. Aga kui lisame rohkem, siis
oleme reeglit rikkunud. Ehk kui me soovime juur-elemendile üks ja rohkem lapsi, siis kasutame pluss (+)
märki.
<!DOCTYPE töötajad[
<!ELEMENT töötajad (töötaja+) >
]>
Valideeri ja vigu ei tohi enam olla. Kirjutame edasi reeglid <töötaja> elemendi laps-elementide jaoks. Pane
tähele, et ma lisasin lõppu kolmanda töötaja, kellel puudub pilt ja reeglis kasutasin küsimärki (?). See
tähendab, et pildi lisamine on valikuline. Ehk pilt ei pea polema. Valideeri!
<töötajad>
<töötaja>
<enimi>Niina</enimi>
<pnimi>Sarvik</pnimi>
<email>niina.sarvik@zmail.com</email>
<telefon tyyp="kodu">+372 654 321</telefon>
<telefon tyyp="too">+372 456 123</telefon>
https://www.metshein.com/kursus/# 5/8
13.7.2020 Kursuse info – metshein.com
yyp
<pilt allikas="img/nsarvik.jpg" laius="250" korgus="350" />
</töötaja>
<töötaja>
<enimi>Ülle</enimi>
<pnimi>Doos</pnimi>
<email>ylle.doos@zmail.com</email>
<telefon tyyp="kodu">+372 754 321</telefon>
<telefon tyyp="too">+372 996 123</telefon>
<pilt allikas="img/ydoos.jpg" laius="250" korgus="350" />
</töötaja>
<töötaja>
<enimi>Mari</enimi>
<pnimi>Maasikas</pnimi>
<email>mari.maasikas@zmail.com</email>
<telefon tyyp="kodu">+372 333 321</telefon>
<telefon tyyp="too">+372 896 123</telefon>
</töötaja>
</töötajad>
Et keelata elemendi sees järgmine element ning lubada ainult tekstilist sisu kasutame märksõna #PCDATA.
Kui elemendil andmeid pole, siis kasutad võtmesõna EMPTY
<!DOCTYPE töötajad[
<!ELEMENT töötajad (töötaja+) >
<!ELEMENT töötaja (enimi, pnimi, email, telefon+, pilt?) >
<!ELEMENT enimi (#PCDATA) >
<!ELEMENT pnimi (#PCDATA) >
<!ELEMENT email (#PCDATA) >
]>
<!DOCTYPE töötajad[
<!ELEMENT töötajad (töötaja+) >
<!ELEMENT töötaja (enimi, pnimi, email, telefon+, pilt?) >
<!ELEMENT enimi (#PCDATA) >
<!ELEMENT pnimi (#PCDATA) >
<!ELEMENT email (#PCDATA) >
]>
Antud atribuudi reegli koostamisel kasutasin püstmärgi ( | ) märki, mis tähendab VÕI. Ehk kui ma soovin
telefoni kirja panna, siis tüübina tuleb valida üks nendest. Lõpus on kasutatud võtmesõna #REQUIRED, mis
annab märku, et antud atribuudi kasutamine on kindlasti kohustuslik. Vastand sellele võtmesõnale oleks
#IMPLIED, mis seab atribuudid soovituslikuks.
Pildi atribuutide reeglite seadmiseks, kasutame märksõna CDATA, mis lubab tekstiväärtusi. Aadressi puhul
kasutasin võimalust määrata vaikimisi väärtus jutumärkide vahel.
https://www.metshein.com/kursus/# 6/8
13.7.2020 Kursuse info – metshein.com
<!DOCTYPE töötajad[
<!ELEMENT töötajad (töötaja+) >
<!ELEMENT töötaja (enimi, pnimi, email, telefon+, pilt?) >
<!ELEMENT enimi (#PCDATA) >
<!ELEMENT pnimi (#PCDATA) >
<!ELEMENT email (#PCDATA) >
]>
Viide algab kenasti DOCTYPE’iga, mis võib olla privaatne või avalik. Privaatne tähistatakse võtmesõnaga
SYSTEM ja avalik võtmesõnaga PUBLIC. Ja see koodiosa lisatakse pärast XML dokumendi süntaksit.
XML fail
DTD fail
Ülesanne 2
Loo esimesest ülesandest koopia ja salvesta uue nimega.
Täienda XML andmeid teise kontaktiga ning lisada atribuudid vastavalt töö ja kodu (ära kasuta
täpitähti).
Kasuta Eclipse IDE (või mõnda oma valitud programmi) programmi ning loo DTD dokument, mis ei luba
valesti andmeid lisada. Lisa kontroll:
et saaks lisada rohkem õpilasi
määra, et õpilastele saab lisada ainult viis sinu poolt määratud elementi ning kontakte rohkem kui üks
määra, et kõik väljad oleksid kohustuslikud
määra, et kontakti atribuudid oleksid kohustuslikud
Jälgi et mõlemas dokumendis on kommentaarid oma nime ja kuupäevaga
https://www.metshein.com/kursus/# 8/8