Mis on XML?
XML (Extensible Markup Language) on platvormist sõltumatu märgistuskeel, mida kasutatakse andmete salvestamiseks, struktureerimiseks ja transportimiseks.
🔹 XML-i omadused:
- Inimloetav ja masinloetav formaat.
- Paindlik: saab defineerida oma struktuuri ja elemente.
- Ei kirjelda esitust, vaid andmete sisu ja struktuuri.
- Hierarhiline ülesehitus (juurelement, alam-elemendid).
🔹 Näide:
<?xml version="1.0" encoding="utf-8" ?>
<inimene>
<nimi>Anna</nimi>
<vanus>25</vanus>
</inimene>
🔹 Kus kasutatakse?
- Veebiteenused (SOAP)
- Konfiguratsioonifailid (nt
.xmlkonfiguratsioonid Java rakendustes) - Andmevahetus erinevate süsteemide vahel
- Dokumentide struktuur (nt DOCX, ODT põhinevad XML-il)
Mis on XSLT?
XSLT (Extensible Stylesheet Language Transformations) on spetsiaalne keel XML-andmete teisendamiseks.
🔹 Milleks kasutatakse?
- XML andmete muutmine HTML-iks, PDF-iks, teise XML struktuuri, tekstifailiks jne.
- Tulemuste vormindamine veebis (nt kuvada XML tabelina).
🔹 XSLT tööpõhimõte:
- Sul on algne XML.
- Loed selle sisse koos XSLT-failiga (stylesheet).
- Tulemus on uus dokument (nt HTML).
🔹 XSLT näide – XML → HTML tabel:
XML:
<?xml version="1.0" encoding="utf-8" ?>
<inimesed>
<inimene>
<nimi>Anna</nimi>
<vanus>25</vanus>
</inimene>
<inimene>
<nimi>Marko</nimi>
<vanus>30</vanus>
</inimene>
</inimesed>
XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Inimesed</h2>
<table border="1">
<tr><th>Nimi</th><th>Vanus</th></tr>
<xsl:for-each select="inimesed/inimene">
<tr>
<td><xsl:value-of select="nimi"/></td>
<td><xsl:value-of select="vanus"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Mis on XML-skeem (XSD)?
XSD (XML Schema Definition) on reeglistik, mis määrab ära, milline XML on korrektne.
🔹 Miks kasutada skeemi?
- Tagab andmete õigsuse ja järjepidevuse.
- Lihtsustab andmete valideerimist automaatselt (nt XML-editorites).
- Võimaldab tüübikontrolli (nt kas vanus on arv, kas kuupäev on formaadis YYYY-MM-DD jne).
🔹 Mida saab XSD abil määrata?
- Elemendid ja nende järjestus.
- Andmetüübid:
xs:string,xs:integer,xs:date,xs:boolean, jpm. - Kohustuslikud ja valikulised elemendid.
- Elemendi korduvus (minOccurs, maxOccurs).
- Atribuudid.
- Keerukad tüübid (
xs:complexType) ja lihtsad tüübid (xs:simpleType).
🔹 XSD näide:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="inimene">
<xs:complexType>
<xs:sequence>
<xs:element name="nimi" type="xs:string"/>
<xs:element name="vanus" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Kuidas luua XML skeemi (XSD)?
- Mõtle läbi XML-i struktuur: Millised andmed, millised väljad?
- Kirjuta XSD-fail:
- Juurelement
<xs:schema>. - Elemendid
<xs:element>, vajadusel<xs:complexType>ja<xs:sequence>.
- Juurelement
- Seo XML skeemiga XML-failis:
<inimene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="inimene.xsd">
<nimi>Anna</nimi>
<vanus>25</vanus>
</inimene>
4.Valideeri XML XSD vastu.
- Seda saab teha paljudes IDE-des (nt Visual Studio Code, IntelliJ, XMLSpy).
- Või online tööriistades.
Täiendavad teemad
🔹 DTD vs XSD
- DTD (Document Type Definition) oli varasem viis XML-i valideerimiseks.
- XSD on võimsam ja paindlikum: toetab tüüpe, namespaces, keerukaid struktuure.
🔹 Namespaces XML-is
Namespaces (nt xmlns:xsi) aitavad vältida nimede konflikte XML-is.
Nt kui sul on 2 erinevat XML skeemi, kus mõlemas on nimi, saab namespace-idega neid eristada.
Minu Github töö: https://github.com/VsevolodTsarev2001/xmlRakendus
