XML-XSLT-ASP.NET

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 .xml konfiguratsioonid 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:

  1. Sul on algne XML.
  2. Loed selle sisse koos XSLT-failiga (stylesheet).
  3. 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)?

  1. Mõtle läbi XML-i struktuur: Millised andmed, millised väljad?
  2. Kirjuta XSD-fail:
    • Juurelement <xs:schema>.
    • Elemendid <xs:element>, vajadusel <xs:complexType> ja <xs:sequence>.
  3. Seo XML skeemiga XML-failis:
&lt;inimene xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="inimene.xsd">
  &lt;nimi>Anna&lt;/nimi>
  &lt;vanus>25&lt;/vanus>
&lt;/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