- Loome tabeli
SQL
Create table Reis(
id int primary key identity (1,1),
v_lennujaam varchar(30),
s_lennujaam varchar(30),
lennuk varchar(6),
regiooni_kood varchar(10),
v_kuupaev datetime,
s_kuupaev datetime,
);2. Siis paneme siise andmeid näiteks neid
SQL
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Lufthansa', 'SAS Scandinavian', 'LH5483', 'BD-5', '06/27/2025', '05/12/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('SAS Scandinavian', 'Iberia', 'SK9204', 'CA-SK', '11/06/2024', '12/31/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Delta Air Lines', 'All Nippon Airways', 'DL1375', 'PG-NSB', '12/16/2024', '04/13/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Qatar Airways', 'Air New Zealand', 'QR6265', 'CU-10', '06/14/2025', '01/17/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Air Canada', 'Qatar Airways', 'AC9854', 'US-IN', '07/29/2025', '10/18/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Delta Air Lines', 'Qantas', 'DL2731', 'GB-SCT', '09/21/2024', '09/01/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Emirates', 'Lufthansa', 'EK6800', 'FJ-N', '11/27/2024', '07/21/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Air India', 'Korean Air', 'AI2223', 'VN-34', '05/23/2025', '02/09/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Air India', 'Lufthansa', 'AI6387', 'KE-900', '04/14/2025', '12/17/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('LATAM Airlines', 'Alitalia', 'LA7890', 'CF-HK', '01/14/2025', '11/03/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Southwest Airlines', 'All Nippon Airways', 'WN8983', 'US-AK', '11/03/2024', '04/15/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Aeroméxico', 'Korean Air', 'AM9145', 'RU-KYA', '06/28/2025', '04/04/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Southwest Airlines', 'Cathay Pacific', 'WN3613', 'US-NE', '03/26/2025', '04/01/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Qantas', 'Qantas', 'QF6795', 'CN-51', '01/28/2025', '02/16/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Air New Zealand', 'Avianca', 'NZ4755', 'CN-51', '05/24/2025', '10/09/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Aeroméxico', 'Air India', 'AM8271', 'JP-01', '03/18/2025', '11/14/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Alitalia', 'Air New Zealand', 'AZ2524', 'BS-MG', '11/25/2024', '09/14/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Korean Air', 'Lufthansa', 'KE7078', 'PG-WPD', '05/27/2025', '07/04/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Air Canada', 'Air India', 'AC4071', 'IT-78', '07/22/2025', '08/30/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('South African Airways', 'SAS Scandinavian', 'SA3265', 'CD-BN', '02/03/2025', '04/28/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Alitalia', 'Ethiopian Airlines', 'AZ1933', 'US-TX', '08/09/2025', '11/11/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Qatar Airways', 'Lufthansa', 'QR6450', 'CO-CAL', '10/21/2024', '02/12/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Aeroméxico', 'SAS Scandinavian', 'AM9071', 'PH-AGN', '03/29/2025', '10/09/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('South African Airways', 'United Airlines', 'SA7834', 'AO-HUI', '12/07/2024', '03/30/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Korean Air', 'Alitalia', 'KE6811', 'TR-72', '11/08/2024', '04/02/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Singapore Airlines', 'Avianca', 'SQ9539', 'YE-SD', '03/13/2025', '07/29/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Avianca', 'Lufthansa', 'AV9245', 'ZA-NP', '12/23/2024', '11/19/2024');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Qatar Airways', 'Avianca', 'QR2107', 'CD-KW', '09/29/2024', '09/09/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('Aeroméxico', 'SAS Scandinavian', 'AM7831', 'US-WI', '01/29/2025', '08/24/2025');
insert into Reis (v_lennujaam, s_lennujaam, lennuk, regiooni_kood, v_kuupaev, s_kuupaev) values ('American Airlines', 'Air New Zealand', 'AA8666', 'DE-BY', '01/23/2025', '08/13/2025');3. Vaatame mida me saime
SQL
select * from ReisTulemuseks saame:

4. Alustame SQL -> XML 3 tasemeline ja kasutakse vähemalt 1 atribuut:
SQL
select
lennuk as '@lennuk',
regiooni_kood as '@regiooni_kood',
v_lennujaam,
s_lennujaam,
v_kuupaev,
s_kuupaev
from Reis For XML path('Reis'), root('Reisid');- lennuk ja regiooni_kood on atribuutid
- 3 taset:
- Esimene tase Reisid
- Teine tase Reis
- Kolmas tase kõik järgmised
Tulemuseks saame:

Mille peale peame klikkime ja saame XML koodi:

5. Komponendid võivad sisaldada allkomponente
SQL
select
(
select
(
select
lennuk as '@lennuk',
regiooni_kood as '@regiooni_kood',
(
select
v_lennujaam as 'Väljumine',
s_lennujaam as 'Sõit'
for xml path('Lennuk'), type
),
(
select
convert(varchar(10),v_kuupaev, 120) as 'VäljumiseKuupaev',
convert(varchar(10),s_kuupaev, 120) as 'SõiduKuupaev'
for xml path('Kuupaevad'), type
)
for xml path('Lend'), type
)
for xml path('Reis'), type
)
from Reis
for xml path('Reisid'), root('XMLReis');Tulemuseks saame:

6. Kuva andmed XSLT abil järgmisel kujul:
- Kuvada iga reisi sihtkoht pealkirjana, kasutades
<h1>. - Komponendid peavad olema kuvatud täpploeteluna (
<ul>). - Kolmanda taseme struktuuri andmed tuleb kuvada kollasel taustal.
- Lisa oma tingimus (nt reisi hind või eriline soovitus peab olema esile tõstetud teatud tingimustel).
- Kuva iga reisi kogumaksumuse, liites transport, majutuse, ekskursioonide ja muude kulude hinnad kokku.
- Filtreeri ja kuva ainult need reisid, mille transport sisaldab lennureisi.
- Sorteeri kõik reisid vastavalt hinnangule (nt kliendihinnang, kui selline väli on olemas XML-is, kui ei ole kasuta teine numbriline väli).
- Kuva kõik xml andmed tabelina, kus read on üle rea erineva värviga.
XSL
<xsl:template match="/">
<html>
<head>
<style>
body {
font-family: Arial, sans-serif;
}
h1 {
color: #2e6da4;
}
ul {
list-style-type: none;
padding-left: 20px;
}
li {
margin-bottom: 8px;
}
.highlight {
background-color: yellow;
}
.table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.table th, .table td {
border: 1px solid #ddd;
padding: 8px;
text-align: center;
}
.table tr:nth-child(even) {
background-color: #f2f2f2;
}
.table tr:nth-child(odd) {
background-color: #ffffff;
}
</style>
</head>
<body>
<xsl:for-each select="XMLReis/Reisid/Reis">
<xsl:sort select="Lend/@regiooni_kood" data-type="text" order="ascending"/>
<xsl:variable name="reis" select="Lend"/>
<h1>
Sihtkoht: <xsl:value-of select="Lend/@regiooni_kood"/>
</h1>
<ul>
<li>
Lend: <xsl:value-of select="Lend/Lennuk/Väljumine"/> - <xsl:value-of select="Lend/Lennuk/Sõit"/>
</li>
<li>
Väljumise kuupäev: <xsl:value-of select="Lend/Kuupaevad/VäljumiseKuupaev"/>
</li>
<li>
Sõidu kuupäev: <xsl:value-of select="Lend/Kuupaevad/SõiduKuupaev"/>
</li>
</ul>
<div class="highlight">
<p>
Erilised tingimused: Sihtkoht - <xsl:value-of select="Lend/@regiooni_kood"/>
</p>
</div>
<table class="table">
<tr>
<th>Sihtkoht</th>
<th>Lend</th>
<th>Väljumise Kuupäev</th>
<th>Sõidu Kuupäev</th>
</tr>
<tr>
<td>
<xsl:value-of select="Lend/@regiooni_kood"/>
</td>
<td>
<xsl:value-of select="Lend/Lennuk/Väljumine"/> - <xsl:value-of select="Lend/Lennuk/Sõit"/>
</td>
<td>
<xsl:value-of select="Lend/Kuupaevad/VäljumiseKuupaev"/>
</td>
<td>
<xsl:value-of select="Lend/Kuupaevad/SõiduKuupaev"/>
</td>
</tr>
</table>
</xsl:for-each>
</body>
</html>
</xsl:template>Tulemus:

XSD:
XML
<xs:element name="XMLReis">
<xs:complexType>
<xs:sequence>
<xs:element name="Reisid" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Reis">
<xs:complexType>
<xs:sequence>
<xs:element name="Lend">
<xs:complexType>
<xs:sequence>
<xs:element name="Lennuk">
<xs:complexType>
<xs:sequence>
<xs:element name="Väljumine" type="xs:string"/>
<xs:element name="Sõit" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Kuupaevad">
<xs:complexType>
<xs:sequence>
<xs:element name="VäljumiseKuupaev" type="xs:date"/>
<xs:element name="SõiduKuupaev" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="lennuk" type="xs:string" use="required"/>
<xs:attribute name="regiooni_kood" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>XML Sisse lisame:
XML
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="reisid.xsd"