XML & ASP.NET

Main XSLT

Tekstifail, mis sarnaneb .XSL dokument, mis sisaldab XML-stiilis teisendusteavet; kasutatakse XML-dokumentide teisendamiseks standardseks väljundvorminguks, näiteks tekstidokumendiks või .HTML Veebileht.

XSL – Määrab XML-dokumendis teksti, tabelite ja muude objektide stiili; sarnane a .CSS fail, mida kasutab .HTML dokumendid; saab avada FileMakeri või mõne muu programmiga, mis toetab XML-stiililehti.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
	<xsl:output method="xml" indent="yes"/>

	<xsl:template match="/">
		<table style="">
			<thead>
				<th>
					Nimi
				</th>
				<th>
					Aasta
				</th>
				<th>
					Laps
				</th>
				<th>
					Lapsevanema vanus
				</th>
				<th>
					Vanus
				</th>
				<th>
					Lapsed kogus
				</th>
				<th>
					Lapse elukoht
				</th>
				<th>
					Oli sündinud
				</th>
			</thead>
			<tbody>
				<xsl:for-each select="//inimene">
					<tr>
						<xsl:if test="starts-with(../../nimi, 'A')">
							<td style="background-color:purple; color:white">
								<xsl:value-of select="../../nimi"/>
							</td>
						</xsl:if>
						<xsl:if test="starts-with(../../nimi, 'A') = false">
							<td>
								<xsl:value-of select="../../nimi"/>
							</td>
						</xsl:if>
						<td>
							<xsl:value-of select="@saasta"/>
						</td>
						<xsl:if test="count(lapsed/inimene) > 1">
							<td style="background-color:yellow;">
								<xsl:value-of select="nimi"/>
							</td>
						</xsl:if>
						<xsl:if test="count(lapsed/inimene) <= 1">
							<td style="background-color:aqua;">
								<xsl:value-of select="nimi"/>
							</td>
						</xsl:if>
						<td>
							<xsl:if test="../..">
								<xsl:value-of select="@saasta - ../../@saasta"/>
							</xsl:if>
						</td>
						<td>
							<xsl:value-of select="2025-@saasta"/>
						</td>
						<td>
							<xsl:value-of select="count(lapsed/inimene)"/>
						</td>
						<td>
							<xsl:value-of select="elukoht"/>
						</td>
						<td>
							<xsl:value-of select="sundinud"/>
						</td>
					</tr>
				</xsl:for-each>
			</tbody>
		</table>
		<strong>Mitu inimest elavad igas elukohas</strong>
		<ol>
			<li>
				<strong>
					Thailand:
				</strong>
				
				<xsl:value-of select="count(//elukoht[text() = 'Thailand'])"/>
			</li>
			<li>
				<strong>
					Estonia:
				</strong> 
				<xsl:value-of select="count(//elukoht[text() = 'Estonia'])"/>
			</li>
		</ol>
		<strong>
			Kui inimesel on teises veerus rohkem kui kaks last, siis on ta kollaseks värvitud, muul juhul siniseks. Kui inimesel on esimeses veerus esimene nimetäht see A, siis on see värvitud lillaks, muul juhul ei värvita üldse.
		</strong>
		

	</xsl:template>
</xsl:stylesheet>

XML

XML (Extensible Markup Language – ‘laiendatav märgistuskeel’) on W3C välja töötatud ja soovitatud standardne üldotstarbeline märgistuskeel, mille eesmärk on struktureeritud info jagamine infosüsteemide vahel, eelkõige Interneti (intraneti) veebipõhistes rakendustes.

<?xml version="1.0" encoding="utf-8" ?>
<inimene saasta="1968">
	<nimi>Larissa</nimi>
	<elukoht>Estonia</elukoht>
	<sundinud>Russia</sundinud>
	<lapsed>
		<inimene saasta="1991">
		<nimi>Aleksei</nimi>
		<elukoht>Estonia</elukoht>
		<sundinud>Estonia</sundinud>
		<lapsed>
			<inimene saasta="2024">
				<nimi>Mathew</nimi>
				<elukoht>Thailand</elukoht>
				<sundinud>Estonia</sundinud>
			</inimene>
			<inimene saasta="2009">
				<nimi>Champoo</nimi>
				<elukoht>Thailand</elukoht>
				<sundinud>Thailand</sundinud>
			</inimene>
		</lapsed>
		</inimene>
		<inimene saasta="1993">
			<nimi>Anastassija</nimi>
			<elukoht>Estonia</elukoht>
			<sundinud>Estonia</sundinud>
			<lapsed>
				<inimene saasta="2007">
					<nimi>Aleksander</nimi>
					<elukoht>Estonia</elukoht>
					<sundinud>Estonia</sundinud>
				</inimene>
			</lapsed>
		</inimene>
	</lapsed>
</inimene>

XML Schema

  • XML-skeem (XSD – XML Schema Definition) kirjeldab reegleid, millele XML peab vastama.
  • Skeem määrab ära:
    • millised elemendid on lubatud;
    • millised andmetüübid (nt string, number, kuupäev);
    • milline struktuur peab olema.
  • Näide XSD failist:

Sellise skeemi loomiseks tuleb minna Visual Studio 2022, avada xml fail ja ülevalt vahekaardil on XML kategooria ja seal oleme Create Schema nupp

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 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="elukoht" type="xs:string" />
				<xs:element name="sundinud" type="xs:string" />
				<xs:element name="lapsed">
					<xs:complexType>
						<xs:sequence>
							<xs:element maxOccurs="unbounded" name="inimene">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="nimi" type="xs:string" />
										<xs:element name="elukoht" type="xs:string" />
										<xs:element name="sundinud" type="xs:string" />
										<xs:element name="lapsed">
											<xs:complexType>
												<xs:sequence>
													<xs:element maxOccurs="unbounded" name="inimene">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="nimi" type="xs:string" />
																<xs:element name="elukoht" type="xs:string" />
																<xs:element name="sundinud" type="xs:string" />
															</xs:sequence>
															<xs:attribute name="saasta" type="xs:unsignedShort" use="required" />
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="saasta" type="xs:unsignedShort" use="required" />
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="saasta" type="xs:unsignedShort" use="required" />
		</xs:complexType>
	</xs:element>
</xs:schema>

https://github.com/phenibut645/Sugupuu-XML-Rakendus