<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kraspel</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kraspel"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Kraspel"/>
	<updated>2026-05-08T11:27:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=47340</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=47340"/>
		<updated>2012-04-12T06:47:57Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;30. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;13. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;20. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;27. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.08%5d%20Praktikum%206/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Veebiteenuse loomine Windows Communication Foundation abil, VR2.7]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.15%5d%20Praktikum%208/ Praktikumi näide]&lt;br /&gt;
* Praktikum: Object Orientated crash, VR2.8&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.22%5d%20Praktikum%209/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.04.05%5d%20Praktikum%2010/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Windows Communication Foundation teenuse turvamine jätk, VR2.10]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.04.13%5d%20Praktikum%2011/ Praktikumi näide]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
* &#039;&#039;&#039; Kuues loeng. &amp;lt;i&amp;gt;Windows Communication Foundation&amp;lt;/i&amp;gt;: http://echo360.e-uni.ee/ess/echo/presentation/78ee4f6d-e7d5-47e0-92b9-824331027bbd&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=47339</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=47339"/>
		<updated>2012-04-12T06:47:27Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;30. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;13. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;20. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;27. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.08%5d%20Praktikum%206/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Veebiteenuse loomine Windows Communication Foundation abil, VR2.7]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.15%5d%20Praktikum%208/ Praktikumi näide]&lt;br /&gt;
* Praktikum: Object Orientated crash, VR2.8&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.22%5d%20Praktikum%209/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.04.05%5d%20Praktikum%2010/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Windows Communication Foundation teenuse turvamine jätk, VR2.10]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.04.13%5d%20Praktikum%2010/ Praktikumi näide]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
* &#039;&#039;&#039; Kuues loeng. &amp;lt;i&amp;gt;Windows Communication Foundation&amp;lt;/i&amp;gt;: http://echo360.e-uni.ee/ess/echo/presentation/78ee4f6d-e7d5-47e0-92b9-824331027bbd&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=47289</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=47289"/>
		<updated>2012-04-05T07:07:21Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;14. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;28. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;5. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;19. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.08%5d%20Praktikum%206/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Veebiteenuse loomine Windows Communication Foundation abil, VR2.7]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.15%5d%20Praktikum%208/ Praktikumi näide]&lt;br /&gt;
* Praktikum: Object Orientated crash, VR2.8&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.22%5d%20Praktikum%209/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.04.05%5d%20Praktikum%2010/ Praktikumi näide]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
* &#039;&#039;&#039; Kuues loeng. &amp;lt;i&amp;gt;Windows Communication Foundation&amp;lt;/i&amp;gt;: http://echo360.e-uni.ee/ess/echo/presentation/78ee4f6d-e7d5-47e0-92b9-824331027bbd&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47288</id>
		<title>Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47288"/>
		<updated>2012-04-05T05:50:58Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* app.config */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==ASP.NET Membership database loomine ja WCF&#039;ile selle kasutamiseks õiguste andmine==&lt;br /&gt;
&lt;br /&gt;
ASP.NET Membership funktsionaalsuse kasutamiseks peab olema teenuse masinasse olema installitud SQL Server (2005/2008/2010 Express versioon).&lt;br /&gt;
&lt;br /&gt;
Selleks et SQL Serverisse Membership andmebaas teha, tuleb käivitada aspnet_regsql.exe. See asub &amp;quot;X:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe&amp;quot;.&lt;br /&gt;
* Järgnevalt käivitada see, ning valida &amp;quot;Configure SQL Server for application services&amp;quot;.&lt;br /&gt;
* Järgnevalt valida &amp;quot;Windows Authentication&amp;quot; ja määrata serveri aadressiks &amp;quot;.\SQLEXPRESS&amp;quot;. Vajutada next.&lt;br /&gt;
Sellega loodi SQL Serverisse andmebaas &amp;quot;aspnetdb&amp;quot;, ning vajalikud tabelid ASP.NET Membership funktsionaalsuse kasutamiseks.&lt;br /&gt;
&lt;br /&gt;
Järgenvalt tuleb anda õigused WCF Service Process Identity&#039;le, et sellel oleks õigus kasutada loodud baasi.&lt;br /&gt;
* Avame Microsoft SQL Server Management Studio ja autendime end administraatori õigustes kasutajaga.&lt;br /&gt;
* Käivitame järgneva QUERY:&lt;br /&gt;
    -- Create a SQL Server login for the Network Service account&lt;br /&gt;
    sp_grantlogin &#039;NT AUTHORITY\NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Grant the login access to the roles database&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_grantdbaccess &#039;NT AUTHORITY\NETWORK SERVICE&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Add user to database role&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_addrolemember &#039;aspnet_Roles_FullAccess&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
&lt;br /&gt;
Eelnevaga on loodud kasutajate baas, ning antud WCF&#039;ile õigus seda kasutada.&lt;br /&gt;
&lt;br /&gt;
==Sertifikaatide loomine==&lt;br /&gt;
Selleks, et ei tekiks Certificate Chaining erindit, tuleb luua nii &amp;quot;Certificate Authority&amp;quot;, kui ka CA poolt allkirjastatud Sertifikaat, mida kasutatakse turvalise ühenduse jaoks.&lt;br /&gt;
&lt;br /&gt;
Esimesena loome &#039;&#039;makecert&#039;&#039; vahendiga Certificate Authority. &#039;&#039;makecert.exe&#039;&#039; asub &amp;quot;X:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin&amp;quot; kaustas. Avame &#039;&#039;command line&#039;&#039;-i ja muudame oma hetkeasukoha kataloogiks, kuhu me soovime luua CA privaatvõtme ja Self Signed sertifikaadi.&lt;br /&gt;
* Loome Self Signed sertifikaadi&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -n &amp;quot;CN=WcfCA&amp;quot; -r -sv WcfCa.pvk WcfCa.cer&lt;br /&gt;
* Loome Ühenduse sertifikaadi ja paneme selle kohe windowsi hoidlasse Currentuser My.&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -sk SignedByWcfCA -iv WcfCa.pvk -n &amp;quot;CN=localhost&amp;quot; -ic WcfCa.cer -sr CurrentUser -ss My -sky exchange -pe&lt;br /&gt;
-n &amp;quot;CN=&amp;lt;&amp;lt;serveriaadress&amp;gt;&amp;gt;&amp;quot;, mis meie puhul on hetkel localhost, kuna loome teenuse oma masinas ja samuti kasutame oma masinast. Muul juhul peaks seal olema domeeninimi või IP aadress.&lt;br /&gt;
&lt;br /&gt;
Eelnevaga loodi meie soovitud kausta CA ehk Self Signed sertifikaat, ning sertifikaadihoidlasse CA-ga signeeritud ühendusesertifikaat.&lt;br /&gt;
&lt;br /&gt;
==app.config==&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;configuration&amp;gt;&lt;br /&gt;
      &amp;lt;connectionStrings&amp;gt;&lt;br /&gt;
        &amp;lt;add name=&amp;quot;AspNetDb&amp;quot; connectionString=&amp;quot;Data Source=.\SQLEXPRESS;&lt;br /&gt;
             Initial Catalog=aspnetdb;&lt;br /&gt;
             Integrated Security=true&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;
      &amp;lt;system.web&amp;gt;&lt;br /&gt;
        &amp;lt;membership defaultProvider=&amp;quot;MySqlMembershipProvider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;providers&amp;gt;&lt;br /&gt;
            &amp;lt;add name=&amp;quot;MySqlMembershipProvider&amp;quot;&lt;br /&gt;
                 type=&amp;quot;System.Web.Security.SqlMembershipProvider&amp;quot;&lt;br /&gt;
                 connectionStringName=&amp;quot;AspNetDb&amp;quot;&lt;br /&gt;
                 requiresQuestionAndAnswer=&amp;quot;false&amp;quot;&lt;br /&gt;
                 requiresUniqueEmail=&amp;quot;false&amp;quot;&lt;br /&gt;
                 applicationName=&amp;quot;WcfSecureService&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/providers&amp;gt;&lt;br /&gt;
        &amp;lt;/membership&amp;gt;&lt;br /&gt;
        &amp;lt;roleManager enabled=&amp;quot;true&amp;quot; defaultProvider=&amp;quot;MySqlRoleProvider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;providers&amp;gt;&lt;br /&gt;
            &amp;lt;add name=&amp;quot;MySqlRoleProvider&amp;quot;&lt;br /&gt;
                 type=&amp;quot;System.Web.Security.SqlRoleProvider&amp;quot;&lt;br /&gt;
                 connectionStringName=&amp;quot;AspNetDb&amp;quot;&lt;br /&gt;
                 applicationName=&amp;quot;WcfSecureService&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/providers&amp;gt;&lt;br /&gt;
        &amp;lt;/roleManager&amp;gt;&lt;br /&gt;
      &amp;lt;/system.web&amp;gt;&lt;br /&gt;
      &amp;lt;startup&amp;gt;&amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.0&amp;quot;/&amp;gt;&amp;lt;/startup&amp;gt;&lt;br /&gt;
    &amp;lt;/configuration&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47287</id>
		<title>Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47287"/>
		<updated>2012-04-05T05:46:07Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* app.config */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==ASP.NET Membership database loomine ja WCF&#039;ile selle kasutamiseks õiguste andmine==&lt;br /&gt;
&lt;br /&gt;
ASP.NET Membership funktsionaalsuse kasutamiseks peab olema teenuse masinasse olema installitud SQL Server (2005/2008/2010 Express versioon).&lt;br /&gt;
&lt;br /&gt;
Selleks et SQL Serverisse Membership andmebaas teha, tuleb käivitada aspnet_regsql.exe. See asub &amp;quot;X:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe&amp;quot;.&lt;br /&gt;
* Järgnevalt käivitada see, ning valida &amp;quot;Configure SQL Server for application services&amp;quot;.&lt;br /&gt;
* Järgnevalt valida &amp;quot;Windows Authentication&amp;quot; ja määrata serveri aadressiks &amp;quot;.\SQLEXPRESS&amp;quot;. Vajutada next.&lt;br /&gt;
Sellega loodi SQL Serverisse andmebaas &amp;quot;aspnetdb&amp;quot;, ning vajalikud tabelid ASP.NET Membership funktsionaalsuse kasutamiseks.&lt;br /&gt;
&lt;br /&gt;
Järgenvalt tuleb anda õigused WCF Service Process Identity&#039;le, et sellel oleks õigus kasutada loodud baasi.&lt;br /&gt;
* Avame Microsoft SQL Server Management Studio ja autendime end administraatori õigustes kasutajaga.&lt;br /&gt;
* Käivitame järgneva QUERY:&lt;br /&gt;
    -- Create a SQL Server login for the Network Service account&lt;br /&gt;
    sp_grantlogin &#039;NT AUTHORITY\NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Grant the login access to the roles database&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_grantdbaccess &#039;NT AUTHORITY\NETWORK SERVICE&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Add user to database role&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_addrolemember &#039;aspnet_Roles_FullAccess&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
&lt;br /&gt;
Eelnevaga on loodud kasutajate baas, ning antud WCF&#039;ile õigus seda kasutada.&lt;br /&gt;
&lt;br /&gt;
==Sertifikaatide loomine==&lt;br /&gt;
Selleks, et ei tekiks Certificate Chaining erindit, tuleb luua nii &amp;quot;Certificate Authority&amp;quot;, kui ka CA poolt allkirjastatud Sertifikaat, mida kasutatakse turvalise ühenduse jaoks.&lt;br /&gt;
&lt;br /&gt;
Esimesena loome &#039;&#039;makecert&#039;&#039; vahendiga Certificate Authority. &#039;&#039;makecert.exe&#039;&#039; asub &amp;quot;X:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin&amp;quot; kaustas. Avame &#039;&#039;command line&#039;&#039;-i ja muudame oma hetkeasukoha kataloogiks, kuhu me soovime luua CA privaatvõtme ja Self Signed sertifikaadi.&lt;br /&gt;
* Loome Self Signed sertifikaadi&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -n &amp;quot;CN=WcfCA&amp;quot; -r -sv WcfCa.pvk WcfCa.cer&lt;br /&gt;
* Loome Ühenduse sertifikaadi ja paneme selle kohe windowsi hoidlasse Currentuser My.&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -sk SignedByWcfCA -iv WcfCa.pvk -n &amp;quot;CN=localhost&amp;quot; -ic WcfCa.cer -sr CurrentUser -ss My -sky exchange -pe&lt;br /&gt;
-n &amp;quot;CN=&amp;lt;&amp;lt;serveriaadress&amp;gt;&amp;gt;&amp;quot;, mis meie puhul on hetkel localhost, kuna loome teenuse oma masinas ja samuti kasutame oma masinast. Muul juhul peaks seal olema domeeninimi või IP aadress.&lt;br /&gt;
&lt;br /&gt;
Eelnevaga loodi meie soovitud kausta CA ehk Self Signed sertifikaat, ning sertifikaadihoidlasse CA-ga signeeritud ühendusesertifikaat.&lt;br /&gt;
&lt;br /&gt;
==app.config==&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;configuration&amp;gt;&lt;br /&gt;
      &amp;lt;connectionStrings&amp;gt;&lt;br /&gt;
        &amp;lt;add name=&amp;quot;AspNetDb&amp;quot; connectionString=&amp;quot;Data Source=.\SQLEXPRESS;&lt;br /&gt;
             Initial Catalog=aspnetdb;&lt;br /&gt;
             Integrated Security=true&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;
      &amp;lt;system.web&amp;gt;&lt;br /&gt;
        &amp;lt;membership defaultProvider=&amp;quot;MySqlMembershipProvider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;providers&amp;gt;&lt;br /&gt;
            &amp;lt;add name=&amp;quot;MySqlMembershipProvider&amp;quot;&lt;br /&gt;
                 type=&amp;quot;System.Web.Security.SqlMembershipProvider&amp;quot;&lt;br /&gt;
                 connectionStringName=&amp;quot;AspNetDb&amp;quot;&lt;br /&gt;
                 requiresQuestionAndAnswer=&amp;quot;false&amp;quot;&lt;br /&gt;
                 requiresUniqueEmail=&amp;quot;false&amp;quot;&lt;br /&gt;
                 applicationName=&amp;quot;WcfSecureService&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/providers&amp;gt;&lt;br /&gt;
        &amp;lt;/membership&amp;gt;&lt;br /&gt;
        &amp;lt;roleManager defaultProvider=&amp;quot;MySqlRoleProvider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;providers&amp;gt;&lt;br /&gt;
            &amp;lt;add name=&amp;quot;MySqlRoleProvider&amp;quot;&lt;br /&gt;
                 type=&amp;quot;System.Web.Security.SqlRoleProvider&amp;quot;&lt;br /&gt;
                 connectionStringName=&amp;quot;AspNetDb&amp;quot;&lt;br /&gt;
                 applicationName=&amp;quot;WcfSecureService&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/providers&amp;gt;&lt;br /&gt;
        &amp;lt;/roleManager&amp;gt;&lt;br /&gt;
      &amp;lt;/system.web&amp;gt;&lt;br /&gt;
      &amp;lt;startup&amp;gt;&amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.0&amp;quot;/&amp;gt;&amp;lt;/startup&amp;gt;&lt;br /&gt;
    &amp;lt;/configuration&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47286</id>
		<title>Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47286"/>
		<updated>2012-04-05T05:41:26Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Sertifikaatide loomine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==ASP.NET Membership database loomine ja WCF&#039;ile selle kasutamiseks õiguste andmine==&lt;br /&gt;
&lt;br /&gt;
ASP.NET Membership funktsionaalsuse kasutamiseks peab olema teenuse masinasse olema installitud SQL Server (2005/2008/2010 Express versioon).&lt;br /&gt;
&lt;br /&gt;
Selleks et SQL Serverisse Membership andmebaas teha, tuleb käivitada aspnet_regsql.exe. See asub &amp;quot;X:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe&amp;quot;.&lt;br /&gt;
* Järgnevalt käivitada see, ning valida &amp;quot;Configure SQL Server for application services&amp;quot;.&lt;br /&gt;
* Järgnevalt valida &amp;quot;Windows Authentication&amp;quot; ja määrata serveri aadressiks &amp;quot;.\SQLEXPRESS&amp;quot;. Vajutada next.&lt;br /&gt;
Sellega loodi SQL Serverisse andmebaas &amp;quot;aspnetdb&amp;quot;, ning vajalikud tabelid ASP.NET Membership funktsionaalsuse kasutamiseks.&lt;br /&gt;
&lt;br /&gt;
Järgenvalt tuleb anda õigused WCF Service Process Identity&#039;le, et sellel oleks õigus kasutada loodud baasi.&lt;br /&gt;
* Avame Microsoft SQL Server Management Studio ja autendime end administraatori õigustes kasutajaga.&lt;br /&gt;
* Käivitame järgneva QUERY:&lt;br /&gt;
    -- Create a SQL Server login for the Network Service account&lt;br /&gt;
    sp_grantlogin &#039;NT AUTHORITY\NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Grant the login access to the roles database&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_grantdbaccess &#039;NT AUTHORITY\NETWORK SERVICE&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Add user to database role&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_addrolemember &#039;aspnet_Roles_FullAccess&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
&lt;br /&gt;
Eelnevaga on loodud kasutajate baas, ning antud WCF&#039;ile õigus seda kasutada.&lt;br /&gt;
&lt;br /&gt;
==Sertifikaatide loomine==&lt;br /&gt;
Selleks, et ei tekiks Certificate Chaining erindit, tuleb luua nii &amp;quot;Certificate Authority&amp;quot;, kui ka CA poolt allkirjastatud Sertifikaat, mida kasutatakse turvalise ühenduse jaoks.&lt;br /&gt;
&lt;br /&gt;
Esimesena loome &#039;&#039;makecert&#039;&#039; vahendiga Certificate Authority. &#039;&#039;makecert.exe&#039;&#039; asub &amp;quot;X:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin&amp;quot; kaustas. Avame &#039;&#039;command line&#039;&#039;-i ja muudame oma hetkeasukoha kataloogiks, kuhu me soovime luua CA privaatvõtme ja Self Signed sertifikaadi.&lt;br /&gt;
* Loome Self Signed sertifikaadi&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -n &amp;quot;CN=WcfCA&amp;quot; -r -sv WcfCa.pvk WcfCa.cer&lt;br /&gt;
* Loome Ühenduse sertifikaadi ja paneme selle kohe windowsi hoidlasse Currentuser My.&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -sk SignedByWcfCA -iv WcfCa.pvk -n &amp;quot;CN=localhost&amp;quot; -ic WcfCa.cer -sr CurrentUser -ss My -sky exchange -pe&lt;br /&gt;
-n &amp;quot;CN=&amp;lt;&amp;lt;serveriaadress&amp;gt;&amp;gt;&amp;quot;, mis meie puhul on hetkel localhost, kuna loome teenuse oma masinas ja samuti kasutame oma masinast. Muul juhul peaks seal olema domeeninimi või IP aadress.&lt;br /&gt;
&lt;br /&gt;
Eelnevaga loodi meie soovitud kausta CA ehk Self Signed sertifikaat, ning sertifikaadihoidlasse CA-ga signeeritud ühendusesertifikaat.&lt;br /&gt;
&lt;br /&gt;
==app.config==&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;configuration&amp;gt;&lt;br /&gt;
      &amp;lt;connectionStrings&amp;gt;&lt;br /&gt;
        &amp;lt;add name=&amp;quot;AspNetDb&amp;quot; connectionString=&amp;quot;Data Source=.\SQLEXPRESS;&lt;br /&gt;
             Initial Catalog=aspnetdb;&lt;br /&gt;
             Integrated Security=true&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;
      &amp;lt;system.web&amp;gt;&lt;br /&gt;
        &amp;lt;membership defaultProvider=&amp;quot;MySqlMembershipProvider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;providers&amp;gt;&lt;br /&gt;
            &amp;lt;add name=&amp;quot;MySqlMembershipProvider&amp;quot;&lt;br /&gt;
                 type=&amp;quot;System.Web.Security.SqlMembershipProvider&amp;quot;&lt;br /&gt;
                 connectionStringName=&amp;quot;AspNetDb&amp;quot;&lt;br /&gt;
                 requireQuestionAndAnswer=&amp;quot;false&amp;quot;&lt;br /&gt;
                 requireUniqueEmail=&amp;quot;false&amp;quot;&lt;br /&gt;
                 applicationName=&amp;quot;WcfSecureService&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/providers&amp;gt;&lt;br /&gt;
        &amp;lt;/membership&amp;gt;&lt;br /&gt;
        &amp;lt;roleManager defaultProvider=&amp;quot;MySqlRoleProvider&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;providers&amp;gt;&lt;br /&gt;
            &amp;lt;add name=&amp;quot;MySqlRoleProvider&amp;quot;&lt;br /&gt;
                 type=&amp;quot;System.Web.Security.SqlRoleProvider&amp;quot;&lt;br /&gt;
                 connectionStringName=&amp;quot;AspNetDb&amp;quot;&lt;br /&gt;
                 applicationName=&amp;quot;WcfSecureService&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/providers&amp;gt;&lt;br /&gt;
        &amp;lt;/roleManager&amp;gt;&lt;br /&gt;
      &amp;lt;/system.web&amp;gt;&lt;br /&gt;
      &amp;lt;startup&amp;gt;&amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.0&amp;quot;/&amp;gt;&amp;lt;/startup&amp;gt;&lt;br /&gt;
    &amp;lt;/configuration&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47285</id>
		<title>Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47285"/>
		<updated>2012-04-05T04:26:00Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* ASP.NET Membership database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==ASP.NET Membership database loomine ja WCF&#039;ile selle kasutamiseks õiguste andmine==&lt;br /&gt;
&lt;br /&gt;
ASP.NET Membership funktsionaalsuse kasutamiseks peab olema teenuse masinasse olema installitud SQL Server (2005/2008/2010 Express versioon).&lt;br /&gt;
&lt;br /&gt;
Selleks et SQL Serverisse Membership andmebaas teha, tuleb käivitada aspnet_regsql.exe. See asub &amp;quot;X:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe&amp;quot;.&lt;br /&gt;
* Järgnevalt käivitada see, ning valida &amp;quot;Configure SQL Server for application services&amp;quot;.&lt;br /&gt;
* Järgnevalt valida &amp;quot;Windows Authentication&amp;quot; ja määrata serveri aadressiks &amp;quot;.\SQLEXPRESS&amp;quot;. Vajutada next.&lt;br /&gt;
Sellega loodi SQL Serverisse andmebaas &amp;quot;aspnetdb&amp;quot;, ning vajalikud tabelid ASP.NET Membership funktsionaalsuse kasutamiseks.&lt;br /&gt;
&lt;br /&gt;
Järgenvalt tuleb anda õigused WCF Service Process Identity&#039;le, et sellel oleks õigus kasutada loodud baasi.&lt;br /&gt;
* Avame Microsoft SQL Server Management Studio ja autendime end administraatori õigustes kasutajaga.&lt;br /&gt;
* Käivitame järgneva QUERY:&lt;br /&gt;
    -- Create a SQL Server login for the Network Service account&lt;br /&gt;
    sp_grantlogin &#039;NT AUTHORITY\NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Grant the login access to the roles database&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_grantdbaccess &#039;NT AUTHORITY\NETWORK SERVICE&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Add user to database role&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_addrolemember &#039;aspnet_Roles_FullAccess&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
&lt;br /&gt;
Eelnevaga on loodud kasutajate baas, ning antud WCF&#039;ile õigus seda kasutada.&lt;br /&gt;
&lt;br /&gt;
==Sertifikaatide loomine==&lt;br /&gt;
Selleks, et ei tekiks Certificate Chaining erindit, tuleb luua nii &amp;quot;Certificate Authority&amp;quot;, kui ka CA poolt allkirjastatud Sertifikaat, mida kasutatakse turvalise ühenduse jaoks.&lt;br /&gt;
&lt;br /&gt;
Esimesena loome &#039;&#039;makecert&#039;&#039; vahendiga Certificate Authority. &#039;&#039;makecert.exe&#039;&#039; asub &amp;quot;X:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin&amp;quot; kaustas. Avame &#039;&#039;command line&#039;&#039;-i ja muudame oma hetkeasukoha kataloogiks, kuhu me soovime luua CA privaatvõtme ja Self Signed sertifikaadi.&lt;br /&gt;
* Loome Self Signed sertifikaadi&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -n &amp;quot;CN=WcfCA&amp;quot; -r -sv WcfCa.pvk WcfCa.cer&lt;br /&gt;
* Loome Ühenduse sertifikaadi ja paneme selle kohe windowsi hoidlasse Currentuser My.&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -sk SignedByWcfCA -iv WcfCa.pvk -n &amp;quot;CN=localhost&amp;quot; -ic WcfCa.cer -sr CurrentUser -ss My -sky exchange -pe&lt;br /&gt;
-n &amp;quot;CN=&amp;lt;&amp;lt;serveriaadress&amp;gt;&amp;gt;&amp;quot;, mis meie puhul on hetkel localhost, kuna loome teenuse oma masinas ja samuti kasutame oma masinast. Muul juhul peaks seal olema domeeninimi või IP aadress.&lt;br /&gt;
&lt;br /&gt;
Eelnevaga loodi meie soovitud kausta CA ehk Self Signed sertifikaat, ning sertifikaadihoidlasse CA-ga signeeritud ühendusesertifikaat.&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47284</id>
		<title>Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47284"/>
		<updated>2012-04-05T04:25:17Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* ASP.NET Membership database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==ASP.NET Membership database==&lt;br /&gt;
&lt;br /&gt;
ASP.NET Membership funktsionaalsuse kasutamiseks peab olema teenuse masinasse olema installitud SQL Server (2005/2008/2010 Express versioon).&lt;br /&gt;
&lt;br /&gt;
Selleks et SQL Serverisse Membership andmebaas teha, tuleb käivitada aspnet_regsql.exe. See asub &amp;quot;X:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe&amp;quot;.&lt;br /&gt;
* Järgnevalt käivitada see, ning valida &amp;quot;Configure SQL Server for application services&amp;quot;.&lt;br /&gt;
* Järgnevalt valida &amp;quot;Windows Authentication&amp;quot; ja määrata serveri aadressiks &amp;quot;.\SQLEXPRESS&amp;quot;. Vajutada next.&lt;br /&gt;
Sellega loodi SQL Serverisse andmebaas &amp;quot;aspnetdb&amp;quot;, ning vajalikud tabelid ASP.NET Membership funktsionaalsuse kasutamiseks.&lt;br /&gt;
&lt;br /&gt;
Järgenvalt tuleb anda õigused WCF Service Process Identity&#039;le, et sellel oleks õigus kasutada loodud baasi.&lt;br /&gt;
* Avame Microsoft SQL Server Management Studio ja autendime end administraatori õigustes kasutajaga.&lt;br /&gt;
* Käivitame järgneva QUERY:&lt;br /&gt;
    -- Create a SQL Server login for the Network Service account&lt;br /&gt;
    sp_grantlogin &#039;NT AUTHORITY\NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Grant the login access to the roles database&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_grantdbaccess &#039;NT AUTHORITY\NETWORK SERVICE&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Add user to database role&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_addrolemember &#039;aspnet_Roles_FullAccess&#039;, &#039;NETWORK SERVICE&#039;&lt;br /&gt;
&lt;br /&gt;
Eelnevaga on loodud kasutajate baas, ning antud WCF&#039;ile õigus seda kasutada.&lt;br /&gt;
&lt;br /&gt;
==Sertifikaatide loomine==&lt;br /&gt;
Selleks, et ei tekiks Certificate Chaining erindit, tuleb luua nii &amp;quot;Certificate Authority&amp;quot;, kui ka CA poolt allkirjastatud Sertifikaat, mida kasutatakse turvalise ühenduse jaoks.&lt;br /&gt;
&lt;br /&gt;
Esimesena loome &#039;&#039;makecert&#039;&#039; vahendiga Certificate Authority. &#039;&#039;makecert.exe&#039;&#039; asub &amp;quot;X:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin&amp;quot; kaustas. Avame &#039;&#039;command line&#039;&#039;-i ja muudame oma hetkeasukoha kataloogiks, kuhu me soovime luua CA privaatvõtme ja Self Signed sertifikaadi.&lt;br /&gt;
* Loome Self Signed sertifikaadi&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -n &amp;quot;CN=WcfCA&amp;quot; -r -sv WcfCa.pvk WcfCa.cer&lt;br /&gt;
* Loome Ühenduse sertifikaadi ja paneme selle kohe windowsi hoidlasse Currentuser My.&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -sk SignedByWcfCA -iv WcfCa.pvk -n &amp;quot;CN=localhost&amp;quot; -ic WcfCa.cer -sr CurrentUser -ss My -sky exchange -pe&lt;br /&gt;
-n &amp;quot;CN=&amp;lt;&amp;lt;serveriaadress&amp;gt;&amp;gt;&amp;quot;, mis meie puhul on hetkel localhost, kuna loome teenuse oma masinas ja samuti kasutame oma masinast. Muul juhul peaks seal olema domeeninimi või IP aadress.&lt;br /&gt;
&lt;br /&gt;
Eelnevaga loodi meie soovitud kausta CA ehk Self Signed sertifikaat, ning sertifikaadihoidlasse CA-ga signeeritud ühendusesertifikaat.&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47283</id>
		<title>Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_Windows_Communication_Foundation_teenuse_turvamine,_VR2.9&amp;diff=47283"/>
		<updated>2012-04-05T04:24:31Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: Created page with &amp;#039;==ASP.NET Membership database==  ASP.NET Membership funktsionaalsuse kasutamiseks peab olema teenuse masinasse olema installitud SQL Server (2005/2008/2010 Express versioon).  Se…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==ASP.NET Membership database==&lt;br /&gt;
&lt;br /&gt;
ASP.NET Membership funktsionaalsuse kasutamiseks peab olema teenuse masinasse olema installitud SQL Server (2005/2008/2010 Express versioon).&lt;br /&gt;
&lt;br /&gt;
Selleks et SQL Serverisse Membership andmebaas teha, tuleb käivitada aspnet_regsql.exe. See asub &amp;quot;X:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe&amp;quot;.&lt;br /&gt;
* Järgnevalt käivitada see, ning valida &amp;quot;Configure SQL Server for application services&amp;quot;.&lt;br /&gt;
* Järgnevalt valida &amp;quot;Windows Authentication&amp;quot; ja määrata serveri aadressiks &amp;quot;.\SQLEXPRESS&amp;quot;. Vajutada next.&lt;br /&gt;
Sellega loodi SQL Serverisse andmebaas &amp;quot;aspnetdb&amp;quot;, ning vajalikud tabelid ASP.NET Membership funktsionaalsuse kasutamiseks.&lt;br /&gt;
&lt;br /&gt;
Järgenvalt tuleb anda õigused WCF Service Process Identity&#039;le, et sellel oleks õigus kasutada loodud baasi.&lt;br /&gt;
* Avame Microsoft SQL Server Management Studio ja autendime end administraatori õigustes kasutajaga.&lt;br /&gt;
* Käivitame järgneva QUERY:&lt;br /&gt;
    -- Create a SQL Server login for the Network Service account&lt;br /&gt;
    sp_grantlogin &#039;NT AUTHORITY\Network Service&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Grant the login access to the roles database&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_grantdbaccess &#039;NT AUTHORITY\Network Service&#039;, &#039;Network Service&#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Add user to database role&lt;br /&gt;
    USE aspnetdb&lt;br /&gt;
    GO&lt;br /&gt;
    sp_addrolemember &#039;aspnet_Roles_FullAccess&#039;, &#039;Network Service&#039;&lt;br /&gt;
&lt;br /&gt;
Eelnevaga on loodud kasutajate baas, ning antud WCF&#039;ile õigus seda kasutada.&lt;br /&gt;
==Sertifikaatide loomine==&lt;br /&gt;
Selleks, et ei tekiks Certificate Chaining erindit, tuleb luua nii &amp;quot;Certificate Authority&amp;quot;, kui ka CA poolt allkirjastatud Sertifikaat, mida kasutatakse turvalise ühenduse jaoks.&lt;br /&gt;
&lt;br /&gt;
Esimesena loome &#039;&#039;makecert&#039;&#039; vahendiga Certificate Authority. &#039;&#039;makecert.exe&#039;&#039; asub &amp;quot;X:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin&amp;quot; kaustas. Avame &#039;&#039;command line&#039;&#039;-i ja muudame oma hetkeasukoha kataloogiks, kuhu me soovime luua CA privaatvõtme ja Self Signed sertifikaadi.&lt;br /&gt;
* Loome Self Signed sertifikaadi&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -n &amp;quot;CN=WcfCA&amp;quot; -r -sv WcfCa.pvk WcfCa.cer&lt;br /&gt;
* Loome Ühenduse sertifikaadi ja paneme selle kohe windowsi hoidlasse Currentuser My.&lt;br /&gt;
    &amp;lt;&amp;lt;absolute path to makecert&amp;gt;&amp;gt; -sk SignedByWcfCA -iv WcfCa.pvk -n &amp;quot;CN=localhost&amp;quot; -ic WcfCa.cer -sr CurrentUser -ss My -sky exchange -pe&lt;br /&gt;
-n &amp;quot;CN=&amp;lt;&amp;lt;serveriaadress&amp;gt;&amp;gt;&amp;quot;, mis meie puhul on hetkel localhost, kuna loome teenuse oma masinas ja samuti kasutame oma masinast. Muul juhul peaks seal olema domeeninimi või IP aadress.&lt;br /&gt;
&lt;br /&gt;
Eelnevaga loodi meie soovitud kausta CA ehk Self Signed sertifikaat, ning sertifikaadihoidlasse CA-ga signeeritud ühendusesertifikaat.&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=47282</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=47282"/>
		<updated>2012-04-05T03:50:25Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;14. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;28. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;5. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;19. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.08%5d%20Praktikum%206/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Veebiteenuse loomine Windows Communication Foundation abil, VR2.7]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.15%5d%20Praktikum%208/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Windows Communication Foundation teenuse turvamine, VR2.9]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
* &#039;&#039;&#039; Kuues loeng. &amp;lt;i&amp;gt;Windows Communication Foundation&amp;lt;/i&amp;gt;: http://echo360.e-uni.ee/ess/echo/presentation/78ee4f6d-e7d5-47e0-92b9-824331027bbd&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46553</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46553"/>
		<updated>2012-03-15T07:50:06Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;14. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;28. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;5. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;19. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.08%5d%20Praktikum%206/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Veebiteenuse loomine Windows Communication Foundation abil, VR2.7]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.15%5d%20Praktikum%208/ Praktikumi näide]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
* &#039;&#039;&#039; Kuues loeng. &amp;lt;i&amp;gt;Windows Communication Foundation&amp;lt;/i&amp;gt;: http://echo360.e-uni.ee/ess/echo/presentation/78ee4f6d-e7d5-47e0-92b9-824331027bbd&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_Veebiteenuse_loomine_Windows_Communication_Foundation_abil,_VR2.7&amp;diff=46540</id>
		<title>Praktikum: Veebiteenuse loomine Windows Communication Foundation abil, VR2.7</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_Veebiteenuse_loomine_Windows_Communication_Foundation_abil,_VR2.7&amp;diff=46540"/>
		<updated>2012-03-15T00:17:10Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: Created page with &amp;#039;== Praktikumi ülesanded== === Ülesanne 1 === * Luua WCF krüpto teenus * Lisada teenusele 2 operatsiooni: ** Caesar&amp;#039;i siffri funktsioon. ** Vigenere siffri funktsioon.  === Ül…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Praktikumi ülesanded==&lt;br /&gt;
=== Ülesanne 1 ===&lt;br /&gt;
* Luua WCF krüpto teenus&lt;br /&gt;
* Lisada teenusele 2 operatsiooni:&lt;br /&gt;
** Caesar&#039;i siffri funktsioon.&lt;br /&gt;
** Vigenere siffri funktsioon.&lt;br /&gt;
&lt;br /&gt;
=== Ülesanne 2 ===&lt;br /&gt;
* Luua WCF teenus&lt;br /&gt;
* Luua teenusele 3 operatsiooni:&lt;br /&gt;
** Operatsioon, kus teenusepoolse objekti ja kliendipoolse objekti nähtavad parameetrite nimed on erinevad.&lt;br /&gt;
** Operatsioon, kus kasutatakse DataContract andmeobjekti.&lt;br /&gt;
** Operatsioon, kus vea puhul visatakse FaultException, nii et klient saab seda kinni püüda.&lt;br /&gt;
&lt;br /&gt;
=== Ülesanne 3 ===&lt;br /&gt;
* Luua WCF andmekihi teenus, kus andmekandjaks on instantsi muutuja või andmebaas.&lt;br /&gt;
* Teenuse operatsioonideks on:&lt;br /&gt;
** Sellele andmekandjale kirjutamine...&lt;br /&gt;
** ...sellelt pärimine...&lt;br /&gt;
** ...ning kustutamine.&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46527</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46527"/>
		<updated>2012-03-14T19:11:08Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;14. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;28. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;5. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;19. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.08%5d%20Praktikum%206/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Veebiteenuse loomine Windows Communication Foundation abil, VR2.7]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46525</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46525"/>
		<updated>2012-03-14T10:35:23Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;14. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;28. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;5. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;19. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.03.08%5d%20Praktikum%206/ Praktikumi näide]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012&amp;diff=46497</id>
		<title>Kodutöö aines &quot;Võrgurakendused II: hajussüsteemide ehitamine&quot; 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012&amp;diff=46497"/>
		<updated>2012-03-09T17:42:03Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Tähtajad */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
&lt;br /&gt;
=Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Saada praktiline kogemus hajussüsteemide ehitamisest XML veebiteenus ja vastava kliendi loomise abil ning süvendada meeskonnatööoskust. Kaugem eesmärk on loomulikult hinne :).&lt;br /&gt;
&lt;br /&gt;
==Reeglid==&lt;br /&gt;
&#039;&#039;&#039; Kodutöö koosneb kolmest eraldiseisvast ülesandest:&#039;&#039;&#039;&lt;br /&gt;
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)&lt;br /&gt;
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes&lt;br /&gt;
* Luua klientrakendused (soovitavalt vähemalt kaks)endaloodud veebiteenusele&lt;br /&gt;
&lt;br /&gt;
Ühte projektimeeskonda kuulub 3..4 tudengit ning ühel teemal teostab projekti üks või mitu meeskonda.&lt;br /&gt;
&lt;br /&gt;
Töö käiku kajastatakse  http://wiki.itcollege.ee keskkonnas. Wikilehe täitmise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest.&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039;&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt 3. märts 2011.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema 17. märts 2012&lt;br /&gt;
** &#039;&#039;&#039;Meeskonnad on loonud omale enda wiki lehe, kuhu kirjeldavad meeskonna ja panevad nad üles oma tööd. Lisaks hakkavad kogunema ka sinna teiste gruppide poolt kirjutatavad retsensioonid. &amp;lt;ins&amp;gt;Meeskonnalehed lingitakse selle lehe lõppu Meeskonna pealkirja alla.&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039;&lt;br /&gt;
** Veebiteenus peab olema valmis&amp;lt;!--, esitatud--&amp;gt; ja ja wikilehel kirjeldatud hiljemalt 14. aprill 2012.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema 28. aprill 2012&lt;br /&gt;
** &amp;lt;ins&amp;gt;&#039;&#039;&#039;Iga tähtajast üleläinud päev kaotab esitamata tööde hindest 10%&#039;&#039;&#039;&amp;lt;/ins&amp;gt;&lt;br /&gt;
&amp;lt;!--** Veebiteenus tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039;&lt;br /&gt;
** Klientrakendused peavad olema valmis&amp;lt;!--, esitatud--&amp;gt; ja ja wikilehel kirjeldatud hiljemalt 5. mai 2012.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema 19. mai 2012&lt;br /&gt;
** &amp;lt;ins&amp;gt;&#039;&#039;&#039;Iga tähtajast üleläinud päev kaotab esitamata tööde hindest 10%&#039;&#039;&#039;&amp;lt;/ins&amp;gt;&lt;br /&gt;
&amp;lt;!--** Klientrakendused tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2011&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hindamine==&lt;br /&gt;
===Üldised kriteeriumid===&lt;br /&gt;
&lt;br /&gt;
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.&lt;br /&gt;
&lt;br /&gt;
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub  arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Maksimumtulemuse annab (vähemalr 4/7):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Majanduslik mõtlemine (kas loodav teenus ja rakendused oleks kasutatav ka ärilistel eesmärkidel)&lt;br /&gt;
* Mobiilrakendused &lt;br /&gt;
* Kogukondade kaasamine&lt;br /&gt;
* AJAX / Silverlight&lt;br /&gt;
* Kasutajamugavus&lt;br /&gt;
* Läbimõeldud töökorraldus&lt;br /&gt;
* Lisavõimaluste realiseerimine (vt näidisteemad)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===XML andmefail===&lt;br /&gt;
Ülesande täitmiseks tuleb luua XML fail andmete edastamiseks, selle XML faili skeemifail ning paar kolm sobivat XSL faili loodud XML failis olevate andmete  transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks.&lt;br /&gt;
&lt;br /&gt;
XML-il peab olema vähemalt 4 loogilist dimensiooni.&lt;br /&gt;
 &amp;lt;dim1&amp;gt;&lt;br /&gt;
   &amp;lt;dim2&amp;gt;&lt;br /&gt;
     &amp;lt;dim3&amp;gt;&lt;br /&gt;
       &amp;lt;dim4&amp;gt;&lt;br /&gt;
       &amp;lt;/dim4&amp;gt;&lt;br /&gt;
     &amp;lt;/dim3&amp;gt;&lt;br /&gt;
   &amp;lt;/dim2&amp;gt;&lt;br /&gt;
 &amp;lt;/dim1&amp;gt;&lt;br /&gt;
Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis one enamat, kui lihtsalt ID.&lt;br /&gt;
&lt;br /&gt;
===Veebiteenus===&lt;br /&gt;
Loodav veebiteenus peab võimaldama:&lt;br /&gt;
* Teenuse pakkumist&lt;br /&gt;
* &#039;&#039;&#039;Teenuse kasutajate tuvastamist ning haldamist&#039;&#039;&#039;&lt;br /&gt;
* Teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes&lt;br /&gt;
&lt;br /&gt;
Soovitav on luua teenus (FE) ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus (BE).&lt;br /&gt;
&lt;br /&gt;
===Klientrakendus===&lt;br /&gt;
Klientrakendus mõnele olemasolevale veebiteenusele, võib olla teostatud veebirakendusena, Silverlight, WPF või vormirakendusena.&lt;br /&gt;
&lt;br /&gt;
Variant1: teha klientrakendus enda loodud veebiteenusele &lt;br /&gt;
&lt;br /&gt;
Variant2: teha klientrakendus mõnele levinud veebiteenusele.&lt;br /&gt;
Näiteks: &lt;br /&gt;
* http://www.bing.com/developer&lt;br /&gt;
* http://www.flickr.com/services/api/response.soap.html&lt;br /&gt;
* http://developer.ebay.com/developercenter/windows/&lt;br /&gt;
* http://apiwiki.twitter.com/Getting-Started&lt;br /&gt;
&lt;br /&gt;
===Retsensioonid===&lt;br /&gt;
Retsensioon on üliõpilase iseseisva teadustöö kriitilise analüüsi põhjal koostatud argumenteeritud hinnang. Retsensioonis tuleb hinnata töö vastavust esitatud tingimustele, programmikoodi loetavust ning kommenteeritust, dokumentatsiooni ja kirjeldada puudusi. Retsensioonide põhjal on meeskondadel õigus oma projekte parandada enne määratud esitamistähtaja kättejõudmist.&lt;br /&gt;
&lt;br /&gt;
Retsensioon peab sisaldama minimaalselt...&lt;br /&gt;
* XML - ...200 sõna.&lt;br /&gt;
* Veebiteenus - ...600 sõna.&lt;br /&gt;
* Klientrakendus - ...600 sõna.&lt;br /&gt;
&lt;br /&gt;
Mõnelauselisest arvamusest ei piisa, kuna tegemist on grupi loodavate arvustustega, mitte individuaalsete arvustustega.&lt;br /&gt;
&lt;br /&gt;
==Konsultatsioonid==&lt;br /&gt;
 Igal projektimeeskonnal on piiramatu õigus saada õppejõu käest konsultatsiooni ja juhendamist oma&lt;br /&gt;
 töö tegemiseks, kas harjutuste ajal või pärast harjutusi ja loenguid. Eriaegade suhtes saab sõlmida&lt;br /&gt;
 õppejõuga kokkuleppeid kontaktidel&lt;br /&gt;
 mait.poska [ät] itcollege.ee (+372 53 469 734) või&lt;br /&gt;
 kaarel.raspel [ät] gmail.com (+372 522 2468)&lt;br /&gt;
 (teksti originaalautor Priit Raspel)&lt;br /&gt;
&lt;br /&gt;
=Teemad 2012 kevad=&lt;br /&gt;
&#039;&#039;&#039; Kodutöö koosneb kolmest eraldiseisvast ülesandest:&#039;&#039;&#039;&lt;br /&gt;
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)&lt;br /&gt;
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes&lt;br /&gt;
* Luua klientrakendus mõnele olemasolevale või endaloodud veebiteenusele&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Näidisteemad==&lt;br /&gt;
&lt;br /&gt;
===Nimede pakkumise teenus===&lt;br /&gt;
Mõte selles, et luua nimede baas, mille abil pakkuda rakenduse loojale sobiva algusega nimesid. Reaalne rakendus: &#039;&#039;autocompleter&#039;&#039; tarvis teenuse pakkumine&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua sobiva alguse järgi nimede pakkumise teenus:&lt;br /&gt;
* alates kahetähelisetest algustest pakkuda sobivad nimesid&lt;br /&gt;
* luua võimalus kasutajatel nimesid lisada&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua kontroll, et nimi lisatakse baasi alles siis, kui seda nime on pakkunud vähemalt kaks erinevat kasutajat&lt;br /&gt;
* luua roll-back&#039;i võimalus juhuks, kui mõni kasutaja on tegelenud spämmimisega&lt;br /&gt;
&lt;br /&gt;
===Külastusstatistika teenus===&lt;br /&gt;
Mõte selles, et pakkuda teenust, kus kasutajal on võimalik registreerida külastused ning küsida oma külastusstatistikat.&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua külastusstatistika teenus:&lt;br /&gt;
* kasutaja saab teenuses registreerida külastusi&lt;br /&gt;
* kasutaja saab küsida külastusstatistikat päevade/kuude/kogu perioodi lõikes&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus registreerida alamlehtede külastusstatistikat&lt;br /&gt;
* luua võimalus külastusstatistikale lisaparameetrite lisamiseks (ip aadress, sirviku versioon jne)&lt;br /&gt;
&lt;br /&gt;
===Telefoniraamatu teenus===&lt;br /&gt;
Mõte selles, et kasutaja saab teenuse abil salvestada kontakte ja nende seast otsida&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua telefoniraamatu teenus:&lt;br /&gt;
* kasutaja saab teenuses kontakte lisada ja kustutada&lt;br /&gt;
* kasutaja saab kontaktide nime/telefoninumbri jne abil otsida&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus kasutajatel oma kontaktibaase omavahel jagada&lt;br /&gt;
* luua võimalus pakkuda kontaktibaasis leiduvate nimede järgi sobivaid nimesid&lt;br /&gt;
&lt;br /&gt;
===RSS voogude kogumise ja uudiste kuvamise teenus===&lt;br /&gt;
Mõte selles, et kasutaja saab teenuse abil salvestada talle huvipakkuvaid RSS vooge ja nendelt voogudelt uudiseid lugeda&lt;br /&gt;
&lt;br /&gt;
====Ülesanne====&lt;br /&gt;
Luua RSS voogude haldusteenus:&lt;br /&gt;
* kasutaja saab teenuses RSS vooge lisada ja kustudada&lt;br /&gt;
* kasutaja saab pärida talle huvipakkuvate voogude viimaseid uudiseid&lt;br /&gt;
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks&lt;br /&gt;
&lt;br /&gt;
Lisavõimalused:&lt;br /&gt;
* luua võimalus kasutajatel erinevaid vooge grupeerida&lt;br /&gt;
* luua võimalus voogudes leiduvate uudiste puhverdamiseks (voogude lugemine võtab enamasti üsna palju aega)&lt;br /&gt;
&lt;br /&gt;
= Meeskonnad 2012=&lt;br /&gt;
&lt;br /&gt;
* [[Meeskond &amp;quot;Harold&amp;quot;]]&lt;br /&gt;
* [[Meeskond &amp;quot;PhoneBook&amp;quot;]]&lt;br /&gt;
* [[LLL | Meeskond &amp;quot;LLL&amp;quot;]]&lt;br /&gt;
* [[Meeskond &amp;quot;.NOT&amp;quot;]]&lt;br /&gt;
* [[Peeter VR2 | Meeskond &amp;quot;Peeter VR2&amp;quot;]]&lt;br /&gt;
* [[Meeskond &amp;quot;HM&amp;quot;]]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46467</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46467"/>
		<updated>2012-03-08T06:21:11Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;14. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;28. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;5. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;19. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46466</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46466"/>
		<updated>2012-03-08T06:20:51Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;14. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;28. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;5. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;19. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=== [[Hello Kitty]] ===&lt;br /&gt;
=== [[TTiim]] ===&lt;br /&gt;
=== [[Meeskond &amp;quot;Harold&amp;quot;|Harold]] ===&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[-.-]]&amp;quot;===&lt;br /&gt;
* Erki Miilberg (projektijuht)&lt;br /&gt;
* Kalev Vallsalu &lt;br /&gt;
* Oliver Naaris&lt;br /&gt;
* Margo Kuustik&lt;br /&gt;
&lt;br /&gt;
=== Meeskond &amp;quot;[[PhoneBook]]&amp;quot; ===&lt;br /&gt;
*Lauri Jansen&lt;br /&gt;
*Tanel Jüris&lt;br /&gt;
*Madis Rääk&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[LLL]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Joonas Püüa&lt;br /&gt;
* Janno Toomingas&lt;br /&gt;
* Janek Kople&lt;br /&gt;
* Roland Krindal&lt;br /&gt;
&lt;br /&gt;
===Meeskond &amp;quot;[[Peeter VR2]]&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
* Lennart Lüsi&lt;br /&gt;
* Kairo Koik&lt;br /&gt;
* Marek Kikas&lt;br /&gt;
* Kaivar Kull&lt;br /&gt;
&lt;br /&gt;
===[[Meeskond &amp;quot;.NOT&amp;quot;]]===&lt;br /&gt;
* Martin Kosk&lt;br /&gt;
* Kalmer Tart&lt;br /&gt;
* Martin Aarne&lt;br /&gt;
* Gert Glükmann&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.5]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Loengud==&lt;br /&gt;
* &#039;&#039;&#039; Neljas loeng: http://echo360.e-uni.ee/ess/echo/presentation/7b97f540-e6e1-4bbb-99c3-04e9833b690b &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; Viies loeng. Lihtsa veebiteenuse loomise algus: http://echo360.e-uni.ee/ess/echo/presentation/7babae6b-fd76-4564-b60b-d30f82d3d2cf&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failidega_t%C3%B6%C3%B6tamine_(kokkuv%C3%B5ttev_praktikum),_VR2.4&amp;diff=46107</id>
		<title>Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failidega_t%C3%B6%C3%B6tamine_(kokkuv%C3%B5ttev_praktikum),_VR2.4&amp;diff=46107"/>
		<updated>2012-02-22T23:35:27Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktikumi ülesanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Praktikumi kirjeldus=&lt;br /&gt;
Enne praktikumi antakse erinevaid ülesandeid. Tudengitel on võimalik teenida boonuspunkte eksamiks, neid lahendades. Ülesanded peavad olema lahendatud tehniliselt teostatud veatult. Iga tudeng tutvustab ülesannet, mida lahendas. Maksimaalselt on võimalik teenida 10% boonust ja tudeng saab ise valida, kas kasutab seda eksami teooria osa jaoks või praktilise.&lt;br /&gt;
&lt;br /&gt;
=Ülesanded=&lt;br /&gt;
Järgnevalt on toodud ülesanded. Neid lisandub juurde kuni neljapäeva hommikuni.&lt;br /&gt;
==RSS voo lugemiseks mõeldud rakendus==&lt;br /&gt;
*Voos olevaid uudised peab olema võimalik filterdada aja ja sõnade järgi.&lt;br /&gt;
*Voos olevaid uudiseid peab olema võimalik sorteerida(ajaliselt ja pealkirja järgi)&lt;br /&gt;
*RSS vooge peab olema võimalik ühendada, kasutades selleks graafilist liidest. Vood peavad säilima ja olema ühendatud ka peale programmi sulgemist Vooge võib olla 1-... Alati tuleb arvestada võimalusega, et me ei soovi enam mõnda voogu näha ning tahame seda eemaldada ;). Kasutada lehti, mis väljastavad RSS vooge, kuna nende ülesehitus on sarnane. &lt;br /&gt;
**Selle jaoks, et vood säiliks, tuleb salvestada need XML&#039;i. XMLi ülesehitus peab olema järgnev: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;vood&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;voog&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;kirjeldus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;url&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;active&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Inimesed, kes tegelevad ülesande lahendamisega===&lt;br /&gt;
Kui hakkate ülesannet lahendama, võite siia alla panna oma nime.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne Inimene==&lt;br /&gt;
XMLi ülesehitus on vabalt valitud, kuid peab olema loogiliselt põhjendatav.&lt;br /&gt;
XML failis hoitakse järgnevaid andmeid inimese kohta:&lt;br /&gt;
nimi, eesnimi, telefon, skype, kool (Kool, kus inimene õpib), vanus. Soovi korral võib ülesande keerukamaks muutmise jaoks lisada ise veel välju ja koostada veel lisa XML transformatsioone, kui ülesandes nõutud. &lt;br /&gt;
Tuleb realiseerida järgnevad osad:&lt;br /&gt;
*luua XML-fail, kus hoitakse inimese kohta käivat infot&lt;br /&gt;
*luua skeemifail, mis kirjeldab XML andmefaili ülesehituse&lt;br /&gt;
*luua XML transformatsioon, mis väljastab andmed HTML kujul&lt;br /&gt;
**kõik inimesed&lt;br /&gt;
**inimesed, kelle eesnimi on Agu&lt;br /&gt;
**inimesed, kes õpivad samas koolis&lt;br /&gt;
**inimesed, kes on samavanad&lt;br /&gt;
&lt;br /&gt;
Esitluse ajal paluvad õppejõud tingimusi jooksvalt muuta. Näiteks valida inimesed, kes on vanemad kui 20.&lt;br /&gt;
===Inimesed, kes tegelevad ülesande lahendamisega===&lt;br /&gt;
Martin Kosk&lt;br /&gt;
==Ülesanne praktikumis lahendamiseks==&lt;br /&gt;
Praktikumi ülesande aluseks on [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/movies.xml filmide andmebaasi XML]. Antud XMLis on kirjeldatud IMDB TOP 250 filmid seisuga 23.02.2012 1:24. &lt;br /&gt;
&lt;br /&gt;
Filmide kohta on piisavalt andmeid, et teha kaks ülesannet:&lt;br /&gt;
* Luua filmide andmebaasi XMLi jaoks XSLT, kus kuvatakse kõik žanrid. Ning iga žanri alla pannakse filmid. Sama filmi võib esineda ühe žanr&#039;i all mitu korda.&lt;br /&gt;
* Luua filmide andmebaasi XMLi jaoks XSLT, kus kuvatakse kõik žanrid. Ning iga žanri alla pannakse filmid. Sama filmi võib esineda ühe žanr&#039;i all ainult üks kord. Tingimus, mille järgi filmid žanride alla määratakse on filmi kõige esimene žanri element. Ehk siis...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Genres&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;Crime&amp;lt;/Genre&amp;gt; &amp;lt;!-- Kõige esimese Genre elemendi järgi määratakse filmi Žanri alla --&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;Drama&amp;lt;/Genre&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;History&amp;lt;/Genre&amp;gt;&lt;br /&gt;
&amp;lt;/Genres&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46106</id>
		<title>Category:Võrgurakendused II: hajussüsteemide ehitamine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine&amp;diff=46106"/>
		<updated>2012-02-22T23:34:46Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktika */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Võrgurakendused II: hajussüsteemide ehitamine=&lt;br /&gt;
==Eesmärk==&lt;br /&gt;
Õppeaine eesmärgiks on tutvustada õppijale XML märgendikeelel baseeruvaid hajuslahendusi ja nende loomise võimalusi ning arendada õppijates .Net raamistiku vahenditega tarkvara arendamisoskuseid&lt;br /&gt;
&lt;br /&gt;
==Lühitutvustus==&lt;br /&gt;
Õppeaines käsitletakse XML märgendikeelt ning veebiteenuseid.  Kursuse käigus disainitakse, koostatakse ja testitakse veebiteenustel ning XML märgendikeelel põhinevaid lahendusi.&lt;br /&gt;
&lt;br /&gt;
==Õpiväljundid==&lt;br /&gt;
* Õppija oskab kasutada XML märgendikeelt keerulisema strukuuriga andmete hoidmiseks ja esitamiseks struktureeritud kujul.&lt;br /&gt;
* Õppija oskab avalikult kättesaadavate juhendite abil koostada lihtsamaid klientrakendusi levinud veebiteenustele.&lt;br /&gt;
* Õppija oskab luua lihtsamaid veebiteenuseid kasutades selleks .Net raamistiku tehnoloogiaid ning vahendeid.&lt;br /&gt;
* Õppija teab veebiteenuste turvamiseks kasutatavaid tehnoloogiaid ja vahendeid ning oskab leid tavaolukorras rakendada.&lt;br /&gt;
* Õppija teab ning oskab kirjeldada hajusrakenduste kasutusvaldkondi ning nende arhitektuure.&lt;br /&gt;
* Õppija oskab töötada 3-5 liikmelises meeskonnas.&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Aine läbiviijateks on õppejõud Mait Poska ja Kaarel Raspel.&lt;br /&gt;
&lt;br /&gt;
Mait Poska kanda on enamasti loengud ja Kaarel Raspeli kanda praktikumid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;ins&amp;gt;Kontaktid:&amp;lt;/ins&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaarel Raspel&lt;br /&gt;
* kaarel.raspel&amp;lt;ät&amp;gt; gmail.com&lt;br /&gt;
* Skype: vellotis&lt;br /&gt;
* +372 522 2468&lt;br /&gt;
&lt;br /&gt;
Mait Poska&lt;br /&gt;
* mait.poska&amp;lt;ät&amp;gt; itcollege.ee&lt;br /&gt;
* Skype: minamait&lt;br /&gt;
* +372 53 469 734&lt;br /&gt;
&lt;br /&gt;
==Hinne==&lt;br /&gt;
Aine hinde kujunemine:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Eeldused&amp;lt;/span&amp;gt; (mille eest ei saa punkte)&lt;br /&gt;
** Kohal tuleb käia vähemalt &#039;&#039;&#039;50% praktikumidest&#039;&#039;&#039;&lt;br /&gt;
*** Kes seda nõuet ei täida peavad viimases praktikumis sooritama komplekstesti, mis sisaldab endas praktilisi ülesandeid.&lt;br /&gt;
**&amp;lt;ins&amp;gt;Grupitöö kõik osad on realiseeritud minimaalse tulemusega 51%&amp;lt;/ins&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
alamosast:&lt;br /&gt;
**XML andmefail&lt;br /&gt;
**Veebirakendus&lt;br /&gt;
**Veebiteenus&lt;br /&gt;
*Eksam(45%), mis koosneb kahest osast:&lt;br /&gt;
**Teooria, mis annab sellest 20%&lt;br /&gt;
**Praktiline osa, mis annab sellest 25%&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;ins&amp;gt;Hinne&amp;lt;/ins&amp;gt; (&#039;&#039;&#039;100p / 100%&#039;&#039;&#039;) - Hinde kujunemisel arvestatakse kahte tööd:&lt;br /&gt;
** [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]], mis moodustab hindest 55%. &#039;&#039;&#039;55p&#039;&#039;&#039; (koosneb kolmest osast)&lt;br /&gt;
*** XML (xsd, xslt) &#039;&#039;&#039;10p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi XLM-i kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Veebiteenus &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Veebiteenuse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
*** Klientrakendused veebiteenusele &#039;&#039;&#039;15p&#039;&#039;&#039;&lt;br /&gt;
**** Retsensioonid kahe grupi Klientrakenduse kohta &#039;&#039;&#039;2p+3p&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;ins&amp;gt;Individuaalne teadmiste kontroll&amp;lt;/ins&amp;gt; &#039;&#039;&#039;45p&#039;&#039;&#039;&lt;br /&gt;
*** Teooria (Test) &#039;&#039;&#039;20p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
*** Praktiline (Programmeerimine) &#039;&#039;&#039;25p&#039;&#039;&#039; (tulemus vähemalt 51%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Hinne kujuneb järgmiselt:&lt;br /&gt;
* Iga grupitöö vahekaitsmine annab kuni 10 punkti (kokku siis 30 punkti)&lt;br /&gt;
* Lõppkaitsmine annab 30 punkti (kõik kolm tööd koos, koos paranduste ja täiendustega)&lt;br /&gt;
* Iga grupp saab lisaks iga liikme kohta 20 punkti, mis tuleb grupi sees vastavalt panusele jagada (näiteks kolmeliikmeline grupp saab 60 punkti, neljaliikmeline 80 punkti jne).&lt;br /&gt;
* Valikvastustega test (kuni 20 punkti)&lt;br /&gt;
* Eksamieeldus on see, et tuleb anda tähtajaks neli hinnangut (üks hinnang XML failile, üks veebiteenusele, üks veebiteenustele tehtud rakendustele ning üks projektile kokkuvõtvalt).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--Aasta 2012(praegu) [[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2012]]&lt;br /&gt;
&lt;br /&gt;
Aastal 2011 olnud teemad[[Kodutöö aines &amp;quot;Võrgurakendused II: hajussüsteemide ehitamine&amp;quot; 2011]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Võrgurakendused II: 2011 kevadel valminud kodutööd]]&lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&amp;lt;!--* Teema ning meeskonna koosseis peab olema õppejõuga kooskõlastatud hiljemalt 21. veebruar 2011.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;XML fail&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#XML_andmefail NB! Täpsem info]&lt;br /&gt;
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;3. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid XML-failide kohta peavad tehtud olema &#039;&#039;&#039;17. märts 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Veebiteenus&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Veebiteenus NB! Täpsem info]&lt;br /&gt;
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;14. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid veebiteenuste kohta peavad tehtud olema &#039;&#039;&#039;28. aprill 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Klientrakendused&#039;&#039;&#039; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Klientrakendus NB! Täpsem info]&lt;br /&gt;
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt &#039;&#039;&#039;5. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
** Retsensioonid klientrakenduste kohta peavad tehtud olema &#039;&#039;&#039;19. mai 2012&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--* &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne&#039;&#039;&#039;&lt;br /&gt;
** Meeskonnatöö kokkuvõttev aruanne peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt 8.mai 2012&lt;br /&gt;
** Arvamused Meeskonnatöö kokkuvõtva aruande ja esitluse kohta tuleb esitada hiljemalt päev enne eksamit&lt;br /&gt;
** &#039;&#039;&#039;Meeskonna kokkuvõttev aruanne ja töö lõplik tulemus&#039;&#039;&#039; tuleb esitleda!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Retsensioonid==&lt;br /&gt;
&lt;br /&gt;
Iga grupp peab tegema lisaks igale grupitööle vastavalt ka 2 retsensiooni. Retsensioonid võib teha vabalt valitud gruppide tööde kohta. Tingimuseks on see, et ühe töö kohta saab teha maksimaalselt kolm retsensiooni.&lt;br /&gt;
&lt;br /&gt;
Seega kokku tuleb esitada 6 retsensiooni ühel grupil.&lt;br /&gt;
&lt;br /&gt;
Kui grupp on teinud vaid ühe retsensiooni, siis selle eest saab 2 punkti. Kui sellele lisandub ka teine retsensioon, siis teise retsensiooni eest saab 3 punkti. Kokku 5 punkti.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Lisaks iga grupp, kelle töö kohta retsensioon tehakse saab iga töö kohta boonuseks ühe punkti. Seega võib koguneda igale grupile kokku 6 boonuspunkti kolme töö eest.--&amp;gt;&lt;br /&gt;
&amp;lt;ins&amp;gt;Lisaks tuleb silmas pidada retsensioonide minimaalseid pikkusi projektide kohta.&amp;lt;/ins&amp;gt; [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2012#Retsensioonid Retsensioonide minimaalsed pikkused]&lt;br /&gt;
&lt;br /&gt;
==Meeskonnad==&lt;br /&gt;
Ühte meeskonda võib kuuluda 3 kuni 4 tudengit. Gruppi kuuluvate tudengite nimekiri kinnitatakse esimese projekti esitamisega.&lt;br /&gt;
&lt;br /&gt;
=Teemad=&lt;br /&gt;
=XML failivorming ja sellega seotud tehnoloogiad=&lt;br /&gt;
&lt;br /&gt;
==XML failivorming==&lt;br /&gt;
===Loengusalvestused===&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus http://enos.itcollege.ee/~htahis/VRII/WR2%20-%20Loeng%201/WR2%20-%20Loeng%201.html&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus http://echo360.e-uni.ee/ess/echo/presentation/9264dd7c-990a-4e3f-9045-1a7a5e04039b&#039;&#039;&#039;&lt;br /&gt;
** Teise loengu näited: http://enos.itcollege.ee/~htahis/VRII/Praktikum2%20(loeng2)/&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Esimese loengu salvestus, kus räägiti XML andmefailist asub siin:  http://echo360.e-uni.ee/ess/echo/presentation/d590aaa6-2d08-4852-9db6-42041cc7e438 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Teise loengu salvestus, kus räägiti XML skeemidest ja transformatsioonidest asub siin: http://echo360.e-uni.ee/ess/echo/presentation/fa1431fb-3b80-42a3-a7de-f18fe6a1d3ae &#039;&#039;&#039;&lt;br /&gt;
**Teises loengus tehtud näited, asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng2/&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Kolmas loeng, kus räägiti LINQ&#039;st: http://echo360.e-uni.ee/ess/echo/presentation/bbb940ea-fb20-49b4-9d5b-7b2e41f1ac39 &#039;&#039;&#039;&lt;br /&gt;
**Kolmandas loengus tehtud näited asuvad siin: http://enos.itcollege.ee/~mposka/Vorgurakendused_II_2012/Paevaope/Loengud/Loeng3/&lt;br /&gt;
&lt;br /&gt;
===Teooria=== &lt;br /&gt;
* XML failid&lt;br /&gt;
**  Kippar, J. &amp;quot;XML rakendused&amp;quot;, TLU:2009 http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf&lt;br /&gt;
** XMLi rakendused ainekursuse leht by Jaagup Kippar http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/juht.html&lt;br /&gt;
** Introduction to XML by w3schools.com http://www.w3schools.com/xml/xml_whatis.asp&lt;br /&gt;
* XSLT - XML failide transformeerimine ehk stiilifailid&lt;br /&gt;
** XSLT Tutorial by w3schools.com http://www.w3schools.com/xsl/default.asp&lt;br /&gt;
&lt;br /&gt;
===Praktika===&lt;br /&gt;
* [[Praktikum: XML failide loomine, VR2.1]]&lt;br /&gt;
* [[Linq_päringukeel|Praktikum: LINQ päringute tegemine XML-i peal, VR2.2]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.09%5d%20Praktikum%202%20/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.16%5d%20Praktikum%203/ Praktikumi näide]&lt;br /&gt;
* [[Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4]]&lt;br /&gt;
** [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/ Praktikumi näide]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: XML failide loomine vol 2, VR2.2]]&lt;br /&gt;
* [[Praktikum: XML failide lugemine ja muutmine .Net vahenditega, VR2.3]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenused=&lt;br /&gt;
==Veebiteenuste loomine==&lt;br /&gt;
* ASP.NET Web Services http://msdn.microsoft.com/en-us/library/t745kdsh.aspx&lt;br /&gt;
* Creating and Consuming .NET Web Services in 5 Easy Steps http://articles.sitepoint.com/article/net-web-services-5-steps&lt;br /&gt;
&lt;br /&gt;
==Andmebaasiga ühendumine==&lt;br /&gt;
* Database Connectivity using WebService http://www.c-sharpcorner.com/UploadFile/raj1979/DatabaseWebService01142008011107AM/DatabaseWebService.aspx&lt;br /&gt;
&lt;br /&gt;
==Veebiteenuste turvamine==&lt;br /&gt;
* Securing ASP.Net Web Services with Forms Authentication http://dotnetslackers.com/articles/aspnet/Securing-ASP-Net-Web-Services-with-Forms-Authentication.aspx&lt;br /&gt;
&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus, VR2.6]]&lt;br /&gt;
* [[Praktikum: Lihtne andmebaasil veebiteenus 2 (mitme tabeliga), VR2.7]]&lt;br /&gt;
* [[Praktikum: Rollipõhine kasutajahaldus veebiteenuses, VR2.8]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Veebiteenuste kasutamine=&lt;br /&gt;
==Praktika==&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Praktikum: Flickr&#039;i veebiteenuse rakendus, VR2.10]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failidega_t%C3%B6%C3%B6tamine_(kokkuv%C3%B5ttev_praktikum),_VR2.4&amp;diff=46105</id>
		<title>Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failidega_t%C3%B6%C3%B6tamine_(kokkuv%C3%B5ttev_praktikum),_VR2.4&amp;diff=46105"/>
		<updated>2012-02-22T23:33:11Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Praktikumi ülesanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Praktikumi kirjeldus=&lt;br /&gt;
Enne praktikumi antakse erinevaid ülesandeid. Tudengitel on võimalik teenida boonuspunkte eksamiks, neid lahendades. Ülesanded peavad olema lahendatud tehniliselt teostatud veatult. Iga tudeng tutvustab ülesannet, mida lahendas. Maksimaalselt on võimalik teenida 10% boonust ja tudeng saab ise valida, kas kasutab seda eksami teooria osa jaoks või praktilise.&lt;br /&gt;
&lt;br /&gt;
=Ülesanded=&lt;br /&gt;
Järgnevalt on toodud ülesanded. Neid lisandub juurde kuni neljapäeva hommikuni.&lt;br /&gt;
==RSS voo lugemiseks mõeldud rakendus==&lt;br /&gt;
*Voos olevaid uudised peab olema võimalik filterdada aja ja sõnade järgi.&lt;br /&gt;
*Voos olevaid uudiseid peab olema võimalik sorteerida(ajaliselt ja pealkirja järgi)&lt;br /&gt;
*RSS vooge peab olema võimalik ühendada, kasutades selleks graafilist liidest. Vood peavad säilima ja olema ühendatud ka peale programmi sulgemist Vooge võib olla 1-... Alati tuleb arvestada võimalusega, et me ei soovi enam mõnda voogu näha ning tahame seda eemaldada ;). Kasutada lehti, mis väljastavad RSS vooge, kuna nende ülesehitus on sarnane. &lt;br /&gt;
**Selle jaoks, et vood säiliks, tuleb salvestada need XML&#039;i. XMLi ülesehitus peab olema järgnev: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;vood&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;voog&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;kirjeldus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;url&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;active&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Inimesed, kes tegelevad ülesande lahendamisega===&lt;br /&gt;
Kui hakkate ülesannet lahendama, võite siia alla panna oma nime.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne Inimene==&lt;br /&gt;
XMLi ülesehitus on vabalt valitud, kuid peab olema loogiliselt põhjendatav.&lt;br /&gt;
XML failis hoitakse järgnevaid andmeid inimese kohta:&lt;br /&gt;
nimi, eesnimi, telefon, skype, kool (Kool, kus inimene õpib), vanus. Soovi korral võib ülesande keerukamaks muutmise jaoks lisada ise veel välju ja koostada veel lisa XML transformatsioone, kui ülesandes nõutud. &lt;br /&gt;
Tuleb realiseerida järgnevad osad:&lt;br /&gt;
*luua XML-fail, kus hoitakse inimese kohta käivat infot&lt;br /&gt;
*luua skeemifail, mis kirjeldab XML andmefaili ülesehituse&lt;br /&gt;
*luua XML transformatsioon, mis väljastab andmed HTML kujul&lt;br /&gt;
**kõik inimesed&lt;br /&gt;
**inimesed, kelle eesnimi on Agu&lt;br /&gt;
**inimesed, kes õpivad samas koolis&lt;br /&gt;
**inimesed, kes on samavanad&lt;br /&gt;
&lt;br /&gt;
Esitluse ajal paluvad õppejõud tingimusi jooksvalt muuta. Näiteks valida inimesed, kes on vanemad kui 20.&lt;br /&gt;
===Inimesed, kes tegelevad ülesande lahendamisega===&lt;br /&gt;
Martin Kosk&lt;br /&gt;
==Praktikumi ülesanne==&lt;br /&gt;
Praktikumi ülesande aluseks on [http://enos.itcollege.ee/~kraspel/VRII/%5b2012.02.23%5d%20Praktikum%204/movies.xml filmide andmebaasi XML]. Antud XMLis on kirjeldatud IMDB TOP 250 filmid seisuga 23.02.2012 1:24. &lt;br /&gt;
&lt;br /&gt;
Filmide kohta on piisavalt andmeid, et teha kaks ülesannet:&lt;br /&gt;
* Luua filmide andmebaasi XMLi jaoks XSLT, kus kuvatakse kõik žanrid. Ning iga žanri alla pannakse filmid. Sama filmi võib esineda ühe žanr&#039;i all mitu korda.&lt;br /&gt;
* Luua filmide andmebaasi XMLi jaoks XSLT, kus kuvatakse kõik žanrid. Ning iga žanri alla pannakse filmid. Sama filmi võib esineda ühe žanr&#039;i all ainult üks kord. Tingimus, mille järgi filmid žanride alla määratakse on filmi kõige esimene žanri element. Ehk siis...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Genres&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;Crime&amp;lt;/Genre&amp;gt; &amp;lt;!-- Kõige esimese Genre elemendi järgi määratakse filmi Žanri alla --&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;Drama&amp;lt;/Genre&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;History&amp;lt;/Genre&amp;gt;&lt;br /&gt;
&amp;lt;/Genres&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failidega_t%C3%B6%C3%B6tamine_(kokkuv%C3%B5ttev_praktikum),_VR2.4&amp;diff=46104</id>
		<title>Praktikum: XML failidega töötamine (kokkuvõttev praktikum), VR2.4</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failidega_t%C3%B6%C3%B6tamine_(kokkuv%C3%B5ttev_praktikum),_VR2.4&amp;diff=46104"/>
		<updated>2012-02-22T23:31:17Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Inimesed, kes tegelevad ülesande lahendamisega */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Praktikumi kirjeldus=&lt;br /&gt;
Enne praktikumi antakse erinevaid ülesandeid. Tudengitel on võimalik teenida boonuspunkte eksamiks, neid lahendades. Ülesanded peavad olema lahendatud tehniliselt teostatud veatult. Iga tudeng tutvustab ülesannet, mida lahendas. Maksimaalselt on võimalik teenida 10% boonust ja tudeng saab ise valida, kas kasutab seda eksami teooria osa jaoks või praktilise.&lt;br /&gt;
&lt;br /&gt;
=Ülesanded=&lt;br /&gt;
Järgnevalt on toodud ülesanded. Neid lisandub juurde kuni neljapäeva hommikuni.&lt;br /&gt;
==RSS voo lugemiseks mõeldud rakendus==&lt;br /&gt;
*Voos olevaid uudised peab olema võimalik filterdada aja ja sõnade järgi.&lt;br /&gt;
*Voos olevaid uudiseid peab olema võimalik sorteerida(ajaliselt ja pealkirja järgi)&lt;br /&gt;
*RSS vooge peab olema võimalik ühendada, kasutades selleks graafilist liidest. Vood peavad säilima ja olema ühendatud ka peale programmi sulgemist Vooge võib olla 1-... Alati tuleb arvestada võimalusega, et me ei soovi enam mõnda voogu näha ning tahame seda eemaldada ;). Kasutada lehti, mis väljastavad RSS vooge, kuna nende ülesehitus on sarnane. &lt;br /&gt;
**Selle jaoks, et vood säiliks, tuleb salvestada need XML&#039;i. XMLi ülesehitus peab olema järgnev: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;vood&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;voog&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;kirjeldus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;url&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;id&amp;quot; type=&amp;quot;xs:int&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xs:attribute name=&amp;quot;active&amp;quot; type=&amp;quot;xs:boolean&amp;quot; use=&amp;quot;required&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Inimesed, kes tegelevad ülesande lahendamisega===&lt;br /&gt;
Kui hakkate ülesannet lahendama, võite siia alla panna oma nime.&lt;br /&gt;
&lt;br /&gt;
==Ülesanne Inimene==&lt;br /&gt;
XMLi ülesehitus on vabalt valitud, kuid peab olema loogiliselt põhjendatav.&lt;br /&gt;
XML failis hoitakse järgnevaid andmeid inimese kohta:&lt;br /&gt;
nimi, eesnimi, telefon, skype, kool (Kool, kus inimene õpib), vanus. Soovi korral võib ülesande keerukamaks muutmise jaoks lisada ise veel välju ja koostada veel lisa XML transformatsioone, kui ülesandes nõutud. &lt;br /&gt;
Tuleb realiseerida järgnevad osad:&lt;br /&gt;
*luua XML-fail, kus hoitakse inimese kohta käivat infot&lt;br /&gt;
*luua skeemifail, mis kirjeldab XML andmefaili ülesehituse&lt;br /&gt;
*luua XML transformatsioon, mis väljastab andmed HTML kujul&lt;br /&gt;
**kõik inimesed&lt;br /&gt;
**inimesed, kelle eesnimi on Agu&lt;br /&gt;
**inimesed, kes õpivad samas koolis&lt;br /&gt;
**inimesed, kes on samavanad&lt;br /&gt;
&lt;br /&gt;
Esitluse ajal paluvad õppejõud tingimusi jooksvalt muuta. Näiteks valida inimesed, kes on vanemad kui 20.&lt;br /&gt;
===Inimesed, kes tegelevad ülesande lahendamisega===&lt;br /&gt;
Martin Kosk&lt;br /&gt;
==Praktikumi ülesanne==&lt;br /&gt;
Praktikumi ülesande aluseks on [ filmide andmebaasi XML]. Antud XMLis on kirjeldatud IMDB TOP 250 filmid seisuga 23.02.2012 1:24. &lt;br /&gt;
&lt;br /&gt;
Filmide kohta on piisavalt andmeid, et teha kaks ülesannet:&lt;br /&gt;
* Luua filmide andmebaasi XMLi jaoks XSLT, kus kuvatakse kõik žanrid. Ning iga žanri alla pannakse filmid. Sama filmi võib esineda ühe žanr&#039;i all mitu korda.&lt;br /&gt;
* Luua filmide andmebaasi XMLi jaoks XSLT, kus kuvatakse kõik žanrid. Ning iga žanri alla pannakse filmid. Sama filmi võib esineda ühe žanr&#039;i all ainult üks kord. Tingimus, mille järgi filmid žanride alla määratakse on filmi kõige esimene žanri element. Ehk siis...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Genres&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;Crime&amp;lt;/Genre&amp;gt; &amp;lt;!-- Kõige esimese Genre elemendi järgi määratakse filmi Žanri alla --&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;Drama&amp;lt;/Genre&amp;gt;&lt;br /&gt;
    &amp;lt;Genre&amp;gt;History&amp;lt;/Genre&amp;gt;&lt;br /&gt;
&amp;lt;/Genres&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46097</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46097"/>
		<updated>2012-02-21T23:39:04Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* XSLT viitamine XMLis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
*[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
*[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
====XSLT viitamine XMLis====&lt;br /&gt;
Selleks, et XMLi jaoks XSLT template&#039;i kasutataks tuleb see määrata XML&#039;is peale &amp;lt;?xml ... ?&amp;gt; tagi&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;House.xsl&amp;quot;?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;0 = count(WINDOW)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li bgcolor=red&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva punaselt, kui pole aknaid --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva tavaliselt --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Materjali lugemiseks===&lt;br /&gt;
*[http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html]&lt;br /&gt;
*[http://cs.au.dk/~amoeller/XML/transformation/ http://cs.au.dk/~amoeller/XML/transformation/]&lt;br /&gt;
*[http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml]&lt;br /&gt;
*[http://www.dpawson.co.uk/xsl/sect2/bestpractice.html Best Practice]&lt;br /&gt;
*[http://www.xmlplease.com/xsltidentity http://www.xmlplease.com/xsltidentity]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46096</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46096"/>
		<updated>2012-02-21T23:38:45Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Extensible Stylesheet Language Transformations (XSLT) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
*[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
*[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
====XSLT viitamine XMLis====&lt;br /&gt;
Selleks, et XMLi jaoks XSLT template&#039;i kasutataks tuleb see määrata XML&#039;is peale &amp;lt;?xml ... ?&amp;gt; tagi&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;tutorials.xsl&amp;quot;?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;0 = count(WINDOW)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li bgcolor=red&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva punaselt, kui pole aknaid --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva tavaliselt --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Materjali lugemiseks===&lt;br /&gt;
*[http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html]&lt;br /&gt;
*[http://cs.au.dk/~amoeller/XML/transformation/ http://cs.au.dk/~amoeller/XML/transformation/]&lt;br /&gt;
*[http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml]&lt;br /&gt;
*[http://www.dpawson.co.uk/xsl/sect2/bestpractice.html Best Practice]&lt;br /&gt;
*[http://www.xmlplease.com/xsltidentity http://www.xmlplease.com/xsltidentity]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46095</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46095"/>
		<updated>2012-02-21T23:35:06Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Complex type */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
*[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
*[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;0 = count(WINDOW)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li bgcolor=red&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva punaselt, kui pole aknaid --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva tavaliselt --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Materjali lugemiseks===&lt;br /&gt;
*[http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html]&lt;br /&gt;
*[http://cs.au.dk/~amoeller/XML/transformation/ http://cs.au.dk/~amoeller/XML/transformation/]&lt;br /&gt;
*[http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml]&lt;br /&gt;
*[http://www.dpawson.co.uk/xsl/sect2/bestpractice.html Best Practice]&lt;br /&gt;
*[http://www.xmlplease.com/xsltidentity http://www.xmlplease.com/xsltidentity]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46094</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46094"/>
		<updated>2012-02-21T23:34:16Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Materjali lugemiseks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;0 = count(WINDOW)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li bgcolor=red&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva punaselt, kui pole aknaid --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva tavaliselt --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Materjali lugemiseks===&lt;br /&gt;
*[http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html]&lt;br /&gt;
*[http://cs.au.dk/~amoeller/XML/transformation/ http://cs.au.dk/~amoeller/XML/transformation/]&lt;br /&gt;
*[http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml]&lt;br /&gt;
*[http://www.dpawson.co.uk/xsl/sect2/bestpractice.html Best Practice]&lt;br /&gt;
*[http://www.xmlplease.com/xsltidentity http://www.xmlplease.com/xsltidentity]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46093</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46093"/>
		<updated>2012-02-21T23:34:00Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Materjali lugemiseks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;0 = count(WINDOW)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li bgcolor=red&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva punaselt, kui pole aknaid --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva tavaliselt --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Materjali lugemiseks===&lt;br /&gt;
[http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html]&lt;br /&gt;
[http://cs.au.dk/~amoeller/XML/transformation/ http://cs.au.dk/~amoeller/XML/transformation/]&lt;br /&gt;
[http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml]&lt;br /&gt;
[http://www.dpawson.co.uk/xsl/sect2/bestpractice.html Best Practice]&lt;br /&gt;
[http://www.xmlplease.com/xsltidentity http://www.xmlplease.com/xsltidentity]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46092</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46092"/>
		<updated>2012-02-21T23:30:36Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;0 = count(WINDOW)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li bgcolor=red&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva punaselt, kui pole aknaid --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva tavaliselt --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Materjali lugemiseks===&lt;br /&gt;
[http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46091</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46091"/>
		<updated>2012-02-21T23:17:02Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;0 = count(WINDOW)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li bgcolor=red&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva punaselt, kui pole aknaid --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva tavaliselt --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46090</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46090"/>
		<updated>2012-02-21T23:16:35Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;0 = count(WINDOW)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;li bgcolor=red&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva punaselt, kui pole aknaid --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- kuva tavaliselt --&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46089</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46089"/>
		<updated>2012-02-21T23:12:30Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;0 = count(WINDOW)&amp;quot;/&amp;gt; &amp;lt;!-- kuvame ainult ruumi omanikud, kelle ruumil pole aknaid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46088</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46088"/>
		<updated>2012-02-21T23:07:36Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi OWNER attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46087</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46087"/>
		<updated>2012-02-21T23:07:22Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@ADDRESS&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi ADDRESS attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:sort select=&amp;quot;@OWNER&amp;quot;/&amp;gt; &amp;lt;!-- sorteerime omaniku järgi --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@OWNER&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46086</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46086"/>
		<updated>2012-02-21T23:05:03Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;HOUSE/ROOM&amp;quot;&amp;gt; &amp;lt;!-- valime järjest tsüklis kõik ROOM elemendid --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@ADDRESS&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of tagastab ROOM elemendi ADDRESS attribuudei väärtuse --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46085</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46085"/>
		<updated>2012-02-21T23:02:52Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46084</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46084"/>
		<updated>2012-02-21T23:02:38Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;HOUSE/ROOM&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;!-- xsl:value-of element vastab XML&#039;i HOUSE juurelemendi esimesele ROOM elemendile --&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46083</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46083"/>
		<updated>2012-02-21T22:57:52Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46082</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46082"/>
		<updated>2012-02-21T22:57:38Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
Antud elemendiga määratakse ära stiili põhi. Näide:&lt;br /&gt;
&amp;lt;source lang=XML&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt; &amp;lt;!-- xsl:template element vastab XML&#039;i juurelemendile --&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    Mingi nimekiri.&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 1&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 2&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 3&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Element 4&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46081</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46081"/>
		<updated>2012-02-21T22:52:26Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Extensible Stylesheet Language Transformations (XSLT) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;xsl:template&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:value-of&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:for-each&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:sort&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:if&amp;gt;===&lt;br /&gt;
===&amp;lt;xsl:choose&amp;gt;===&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46080</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46080"/>
		<updated>2012-02-21T22:47:40Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* XSD loomine Visual Studio keskkonnas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD genereerimine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46079</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46079"/>
		<updated>2012-02-21T22:45:25Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Valideerimine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD loomine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;br /&gt;
==Extensible Stylesheet Language Transformations (XSLT)==&lt;br /&gt;
Jämedalt öeldes on XSLT teemakirjeldus nagu CSS on HTMLi jaoks. See on mõeldud XML andmete HTMLiks transformeerimiseks. Seda selleks, et neid andmeid oleks võimalik inimlikul kujul lugeda. &#039;&#039;&#039;Siiski ei ole see mõeldud kasutajaliideste loomiseks!&#039;&#039;&#039; Kuigi see on võimalik.&lt;br /&gt;
&lt;br /&gt;
XSLT puhul on väga tähtsal kohal XPath&#039;i kasutamise oskamine. Selle adresseimismeetodiga liigutakse transformeerimise andmete saamiseks XML-is ringi.&lt;br /&gt;
&lt;br /&gt;
[http://www.w3schools.com/xpath/xpath_syntax.asp XPath süntaksi tarbeks vaadake antud viidet.]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46078</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46078"/>
		<updated>2012-02-21T22:32:13Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Valideerimine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD loomine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
// Ja üritame valideerida&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // Iga vea kohta avatakse teade&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb387037.aspx MSDN Näide]&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46077</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46077"/>
		<updated>2012-02-21T22:30:51Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* XSD loomine Visual Studio keskkonnas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD loomine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
XML&#039;i valideerimiseks XSD-ga saab kasutada järgnevat meetodit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Oletame, et meil on House.xml jaoks ka fail House.xsd&lt;br /&gt;
XmlSchemaSet schemas = new XmlSchemaSet();&lt;br /&gt;
schemas.Add(&amp;quot;&amp;quot;, &amp;quot;House.xsd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Laeme sisse House.xml-i&lt;br /&gt;
XDocument doc = XDocument.Load(&amp;quot;House.xml&amp;quot;);&lt;br /&gt;
custOrdDoc.Validate(schemas, (o, e) =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46076</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46076"/>
		<updated>2012-02-21T22:26:18Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Valideerimine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx XDocument&#039;iga ei tööta]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD loomine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46075</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46075"/>
		<updated>2012-02-21T22:24:55Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* External DTD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
===Valideerimine===&lt;br /&gt;
Valideerimisel tuleb silmas pidada, et ei saa kasutada Linq to XML meetodit, kuna ee ei toeta DTD-d. XML&#039;i valideerimiseks DTD põhjal kasutame external DTD näidet:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;CSharp&amp;quot;&amp;gt;&lt;br /&gt;
// Set the validation settings.&lt;br /&gt;
XmlReaderSettings settings = new XmlReaderSettings();&lt;br /&gt;
settings.DtdProcessing = DtdProcessing.Parse;&lt;br /&gt;
settings.ValidationType = ValidationType.DTD;&lt;br /&gt;
settings.ValidationEventHandler += new ValidationEventHandler ((sender, e) =&amp;gt;{&lt;br /&gt;
        System.Windows.Forms.MessageBox.Show(&amp;quot;Validation Error: &amp;quot; + e.Message);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// Create the XmlReader object.&lt;br /&gt;
XmlReader reader = XmlReader.Create(&amp;quot;House.xml&amp;quot;, settings);&lt;br /&gt;
&lt;br /&gt;
// Parse the file. &lt;br /&gt;
while (reader.Read());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.documenttype.aspx]&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD loomine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46074</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46074"/>
		<updated>2012-02-21T22:16:03Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* XML Schema Definition (XSD) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
* Simple type&lt;br /&gt;
* Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD loomine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46073</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46073"/>
		<updated>2012-02-21T22:15:41Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* External DTD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DTD loomiseks ei ole Visual Studio keskkonnas olemasoleva XMLi peale genereerimiseks automaatseid vahendeid. DTD tuleb kirjutada käsitsi.&lt;br /&gt;
&lt;br /&gt;
==XML Schema Definition (XSD)==&lt;br /&gt;
XSD puhul on tegemist alternatiiviga DTDle. Kusjuures XMLi struktuur kirjeldatakse ära samuti XML märgendikeeles.&lt;br /&gt;
XSD struktuuris saab kirjeldada, mis tohib, mis ei tohi olla ja kuidas peavad olema need elemendid määratud. Selles märgendistandardis saab kirjeldada väga keerulisi struktuure.&lt;br /&gt;
&lt;br /&gt;
Selles saab kirjeldada:&lt;br /&gt;
* Elementide järjestikulist esinemist.&lt;br /&gt;
* Nende esinemiste arvu&lt;br /&gt;
* Attribuutide esinemisi elementides&lt;br /&gt;
* Attribuutide ja elementide väärtustüüpe.&lt;br /&gt;
* Lisaks on võimalik määrata andmetele tingimusi.&lt;br /&gt;
* Oluliseks saab teha nende esinemise järjekorra&lt;br /&gt;
&lt;br /&gt;
XSDs leiduvad elemendid saab jämedalt jagada kaheks:&lt;br /&gt;
 * Simple type&lt;br /&gt;
 * Complex type&lt;br /&gt;
&lt;br /&gt;
====Simple type====&lt;br /&gt;
Tegemist on elemendikirjeldusega, millel ei ole attribuute ega ka alamelemente vaid lihtsalt väärtus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;elementName&amp;gt;value&amp;lt;/elementName&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
====Complex type====&lt;br /&gt;
Sellisel andmetüübil ehk elemendil võib olla alamelemente ja attribuute.&lt;br /&gt;
&lt;br /&gt;
Complex type lähemaks uurimiseks palun kasutada järgnevaid viiteid:&lt;br /&gt;
[http://minitorn.tlu.ee/~jaagup/kool/java/kursused/09/xmlrak/skeemid/skeemid_lyhi.txt]&lt;br /&gt;
[http://www.w3.org/TR/xmlschema-0/ W3]&lt;br /&gt;
&lt;br /&gt;
===XSD loomine Visual Studio keskkonnas===&lt;br /&gt;
Võrreldes DTDga on XSD&#039;l hea eelis. Seda ei pea käsitsi kirjutama. Selleks saab kasutada Visual Studio arenduskeskkonna vahendeid. Selleks loote või avate VS keskkonnas XML&#039;i ja vajuta &amp;quot;Create Schema&amp;quot; nuppu tööriistaribal. Peale seda genereeritakse teile XSD fail, mida antud hetkel ei ole veel salvestatud kuskile. selle peate ise salvestama soovitud asukohta.&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46072</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46072"/>
		<updated>2012-02-21T21:57:23Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* External DTD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===External DTD===&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46071</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46071"/>
		<updated>2012-02-21T21:56:48Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Internal DTD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==External DTD==&lt;br /&gt;
Sellisel juhul asub struktuurikirjeldus eraldi failis. Oletame, et meil on selleks failiks House.dtd&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ja XMLiks House.xml&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE SYSTEM &amp;quot;House.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46070</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46070"/>
		<updated>2012-02-21T21:52:56Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Document Type Definition - DTD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;br /&gt;
&lt;br /&gt;
===Internal DTD===&lt;br /&gt;
Nagu mainitud, kirjeldatakse sellisel juhul ära struktuur XML&#039;i enda sees:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HOUSE [&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ELEMENT HOUSE (ROOM*)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT ROOM (DOOR+,WINDOW+)&amp;gt; &amp;lt;!-- + * ? tähistavad esinevust failis --&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DOOR (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT WINDOW (#PCDATA)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ATTLIST HOUSE ADDRESS CDATA #REQUIRED&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST ROOM OWNER CDATA #IMPLIED&amp;gt;&lt;br /&gt;
]&amp;gt;&lt;br /&gt;
&amp;lt;HOUSE ADDRESS=&amp;quot;Raja 3C&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
  &amp;lt;ROOM OWNER=&amp;quot;User1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;DOOR /&amp;gt;&lt;br /&gt;
    &amp;lt;WINDOW /&amp;gt;&lt;br /&gt;
  &amp;lt;/ROOM&amp;gt;&lt;br /&gt;
&amp;lt;/HOUSE&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46069</id>
		<title>Praktikum: XML failide valideerimine (XSD, DTD) ning XML stiilide (XSLT) loomine , VR2.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Praktikum:_XML_failide_valideerimine_(XSD,_DTD)_ning_XML_stiilide_(XSLT)_loomine_,_VR2.3&amp;diff=46069"/>
		<updated>2012-02-21T21:38:36Z</updated>

		<summary type="html">&lt;p&gt;Kraspel: /* Document Type Definition - DTD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XML on standardiseeritud märgendikeel. Selle eesmärgiks on struktureeritud info hoidmine enamasti transpordi eesmärgil. Kuna XML on laiendatav, siis baseeruvad sellel keelel väga paljud standardiseeritud struktuurid - XHTML, RSS, SOAP, SVG jne.&lt;br /&gt;
&lt;br /&gt;
Selleks, et XML-i edukalt tarnida ühest süsteemist teise on vaja kontrollida selle valiidsust. See on vajalik selleks, et ühest süsteemist teise viies ei esineks vigu. Mõlemad süsteemid kusjuures peavad kasutama sama valideerimismeetodit.&lt;br /&gt;
&lt;br /&gt;
XML-i puhul on valideerimisvõimalusteks Dokument Type Definition (DTD) ja XML Schema (XSD).&lt;br /&gt;
* DTD meetodiga määratakse ära lubatud struktuurelemendid, nende attribuudid ning nende väärtustüübid.&lt;br /&gt;
* XSD meetod on võimalusterohkem, kui DTD, ning sellega on võimalik kirjeldada palju keerulisemaid struktuure valideerimiseks.&lt;br /&gt;
&lt;br /&gt;
===Aga milleks me ikkagi valideerime XML-e?===&lt;br /&gt;
XML on enamikel juhtudel elulise tähtsusega rakenduse toimimisel. Kui me valideerime XML-i ja leiame enne selle kasutamist, et see ei ole soovitud formaati, siis sellega saame me hoida ära paljud ebameeldivad üllatused, mis võivad tekkida. Siiski see ei välista nende tekkimist.&lt;br /&gt;
&lt;br /&gt;
==Document Type Definition - DTD==&lt;br /&gt;
DTD puhul on tegemist XMList eraldi seisva keelega. Sellega on võimalik ära määrata elementide ja nende attribuutide esinemist. Elementide ja attribuutide väärtuste tüüpi on võimalik määrata väga kesiselt.&lt;br /&gt;
&lt;br /&gt;
DTD struktuurikirjeldust saab määrata XML-i jaoks kahte moodi:&lt;br /&gt;
* Inline - ehk siis sama XML&#039;i sees kirjeldatakse ära selle juurelemendi alamelementide ja -attribuutide puu.&lt;br /&gt;
* External - ehk XML-i struktuur kirjeldatakse ära XML-ist eraldi failina.&lt;br /&gt;
&lt;br /&gt;
Esimest varianti tasub kasutada vaid juhul, kui tegu on väga väikese struktuuiga XML-iga. Ehk siis enamasti õppimise ja testimise raames.&lt;br /&gt;
Teine variant on mõeldud kasutamiseks juba väheke keerukamate XML struktuuride kirjeldamise puhuks.&lt;br /&gt;
&lt;br /&gt;
Selle XML-i struktuuri kirjeldamise peamisteks märgenditeks on:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;!ELEMENT elemendi_nimi (alam_element1, alam_element2)&amp;gt; või &amp;lt;!ELEMENT elemendi_nimi (elemendi_andmetüüp)&amp;gt;&lt;br /&gt;
** Elemendi tüüpideks on: [http://www.w3schools.com/XML/xml_cdata.asp W3Schools]&lt;br /&gt;
*** #PCDATA - kontrollitakse väärtust, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** #CDATA - väärtust ei kontrolita, et temas ei oleks &amp;lt; ja &amp;amp; sümboleid.&lt;br /&gt;
*** EMPTY - elemendil ei ole väärtust&lt;br /&gt;
* &amp;lt;!ATTLIST elemendi_nimi attribuudi_nimi andmetüüp nõutavus&amp;gt;&lt;br /&gt;
** Andmetüübid: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** CDATA - Tekstväärtus&lt;br /&gt;
*** (en1|en2|..) - Üks võimalik väärtus enumereeritud loetelust&lt;br /&gt;
*** ID - Väärtus on unikaalne id&lt;br /&gt;
*** IDREF - Väärtus on mõne teise elemendi ID&lt;br /&gt;
*** IDREFS - Väärtus on loetelu teiste elemendide ID-dest&lt;br /&gt;
*** NMTOKEN - Väärtus on valiidne XML-i nimi&lt;br /&gt;
*** NMTOKENS - Väärtuseks on valiidsed XML-i nimed&lt;br /&gt;
*** ENTITY - Väärtus on üksuse nimi&lt;br /&gt;
*** ENTITIES - Väärtus on üksuste loetelu&lt;br /&gt;
*** NOTATION - Väärtus on märke nimi.&lt;br /&gt;
*** xml: - Väärtus on eelnevalt määratud XMLi väärtus&lt;br /&gt;
** Nõutavus: [http://www.w3schools.com/dtd/dtd_attributes.asp W3Schools]&lt;br /&gt;
*** väärtus - Vaikimisi attribuudi väärtus&lt;br /&gt;
*** #REQUIRED - Väärtus on vajalik.&lt;br /&gt;
*** #IMPLIED - Väärtus on valikuline&lt;br /&gt;
*** #FIXED väärtus - fikseeritud väärtus&lt;/div&gt;</summary>
		<author><name>Kraspel</name></author>
	</entry>
</feed>