XML REIS

Avame SQL Server Management Studio 20

Meie peame vaatama meie server name ja authentication:Windows

Server name: (localdb)\MSSQLLocalDB

Tegime new query ja loome uus database

CREATE DATABASE "Teie database name";
USE "Teie database name";

Loome uus tabel nimega “Reis”

CREATE TABLE reisid (
    id INT PRIMARY KEY IDENTITY(1,1),
	full_name VARCHAR(50),				
    sihtkoht VARCHAR(100) NOT NULL,     
    lennujaam VARCHAR(100),             
    hind VARCHAR(100),                
    kestus INT,                        
    keel VARCHAR(50),                  
	kontakt_email VARCHAR(100),
	transport VARCHAR(50)
);

Kõik andmeid me oleme genererimee mockaroo.com

Pärast me pututame nuppu “preview” ja pärast kopeerime kõik andmeid mis on genereritud:

insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Hagan Swaden', 'Colombia', 'Al Ahsa Airport', 'Zloty', 13, 'Latin', 'hswaden0@xing.com', 'takso');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Silvana Allsopp', 'France', 'Kiwai Airport', 'Franc', 3, 'Tamil', 'sallsopp1@ihg.com', 'laev');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Anabelle Braemer', 'France', 'Tsewi Airport', 'Rupiah', 3, 'Japanese', 'abraemer2@cbslocal.com', 'jalgratas');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Ricard Addionisio', 'USA', 'San Juan Aposento Airport', 'Pound', 1.5, 'Latin', 'raddionisio3@php.net', 'buss');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Pearce Glanders', 'Germany', 'Telida Airport', 'Zloty', 3, 'Maltese', 'pglanders4@usgs.gov', 'auto');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Corette Hayzer', 'France', 'Harrison County Airport', 'Zloty', 3, 'Welsh', 'chayzer5@cargocollective.com', 'takso');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Karel Downham', 'Australia', 'Aasiaat Airport', 'Peso', 1.5, 'Cree', 'kdownham6@cbsnews.com', 'mootorratas');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Bordy Walisiak', 'Germany', 'La Aurora Airport', 'Quetzal', 3, 'Tajik', 'bwalisiak7@stumbleupon.com', 'buss');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Keefe Addicott', 'China', 'Victoria Harbour Seaplane Base', 'Rupiah', 4, 'Tsonga', 'kaddicott8@booking.com', 'jalgratas');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Arly Fielding', 'Austria', 'Yari Airport', 'Yuan Renminbi', 3, 'Inupiaq', 'afielding9@npr.org', 'buss');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Cosmo Shipston', 'China', 'Myitkyina Airport', 'Franc', 5, 'Bokmål, Norwegian', 'cshipstona@barnesandnoble.com', 'jalgratas');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Ermin Lendrem', 'USA', 'Aviano Air Base', 'Peso', 1.5, 'Abkhazian', 'elendremb@so-net.ne.jp', 'rong');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Suzy O''Deoran', 'Ethiopia', 'Ouvéa Airport', 'Real', 3, 'Sardinian', 'sodeoranc@ucsd.edu', 'takso');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Wilden Eslie', 'USA', 'Weerawila Airport', 'Euro', 3, 'Tsonga', 'weslied@fda.gov', 'rong');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Dacia Ponten', 'Japan', 'Arturo Michelena International Airport', 'Peso', 3, 'Sinhala', 'dpontene@princeton.edu', 'jalgratas');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Adelind Ianne', 'USA', 'Kryvyi Rih International Airport', 'Krona', 3, 'Dzongkha', 'aiannef@zdnet.com', 'takso');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Weider Tallow', 'Chile', 'Omsk Central Airport', 'Shekel', 12, 'German', 'wtallowg@sun.com', 'lennuk');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Roby Thunnercliffe', 'Switzerland', 'Erigavo Airport', 'Yuan Renminbi', 4, 'Zhuang', 'rthunnercliffeh@github.com', 'rong');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Sibella Caldwell', 'France', 'Fort Dodge Regional Airport', 'Ruble', 3, 'Kashmiri', 'scaldwelli@toplist.cz', 'tramm');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Lavena Soares', 'USA', 'Natadola Airport', 'Zloty', 1.5, 'Thai', 'lsoaresj@tinypic.com', 'metroo');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Keenan Hanaby', 'USA', 'Glacier Park International Airport', 'Baht', 3, 'Tatar', 'khanabyk@cam.ac.uk', 'tramm');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Bekki Gosland', 'France', 'Basankusu Airport', 'Sol', 3, 'Tatar', 'bgoslandl@livejournal.com', 'laev');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Hussein Geipel', 'Japan', 'Talagi Airport', 'Ringgit', 3, 'Guarani', 'hgeipelm@theglobeandmail.com', 'auto');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Helaine Tutchell', 'Kenya', 'Jerusalem Airport', 'Franc', 15, 'Uighur', 'htutchelln@cargocollective.com', 'metroo');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Willem Horder', 'South Africa', 'Whitsunday Island Airport', 'Euro', 3, 'Igbo', 'whordero@tuttocitta.it', 'buss');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Oby Roser', 'USA', 'Liège Airport', 'Rupiah', 3, 'Arabic', 'oroserp@sun.com', 'tramm');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Alex Ovell', 'Singapore', 'Ambunti Airport', 'Krone', 3, 'Nepali', 'aovellq@redcross.org', 'mootorratas');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Truman Quinnelly', 'Germany', 'Andøya Airport', 'Dinar', 4, 'Bashkir', 'tquinnellyr@weibo.com', 'mootorratas');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Judah Carsberg', 'France', 'Earlton (Timiskaming Regional) Airport', 'Krona', 3, 'Kanuri', 'jcarsbergs@wired.com', 'lennuk');
insert into reisid (full_name, sihtkoht, lennujaam, hind, kestus, keel, kontakt_email, transport) values ('Cullan Braunthal', 'South Africa', 'Flughafen München-Riem', 'Euro', 3, 'Uighur', 'cbraunthalt@themeforest.net', 'auto');

kontrolime mis me loodame:

Alustame SQL -> XML 3 tasemeline ja kasutakse vähemalt 1 atribuut:

SELECT
    id AS '@id',
    sihtkoht AS '@sihtkoht',
    transport AS '@transport',
    full_name,
    lennujaam,
    hind,
    kestus,
    keel,
    kontakt_email
FROM reisid
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:

Komponendid võivad sisaldada allkomponente

SELECT
    id AS '@id',
    sihtkoht AS '@sihtkoht',
    transport AS '@transport',
    (
        SELECT
            full_name AS 'Nimi',
			keel AS 'Keel',
            kontakt_email AS 'Email'
        FOR XML PATH('Kontakt'), TYPE
    ),
    (
        SELECT
            lennujaam AS 'Lennujaam',
            hind AS 'Hind',
            kestus AS 'Kestus'

        FOR XML PATH('Lennuinfo'), TYPE
    )
FROM reisid
FOR XML PATH('Reis'), ROOT('Reisid');

Tulemuseks saame:

Kuva andmed XSLT abil järgmisel kujul: “Selline ülisanne peab veel teha”

  1. Kuvada iga reisi sihtkoht pealkirjana, kasutades <h1>.
  2. Komponendid peavad olema kuvatud täpploeteluna (<ul>).
  3. Kolmanda taseme struktuuri andmed tuleb kuvada kollasel taustal.
  4. Lisa oma tingimus (nt reisi hind või eriline soovitus peab olema esile tõstetud teatud tingimustel).
  5. Kuva iga reisi kogumaksumuse, liites transport, majutuse, ekskursioonide ja muude kulude hinnad kokku.
  6. Filtreeri ja kuva ainult need reisid, mille transport sisaldab lennureisi.
  7. Sorteeri kõik reisid vastavalt hinnangule (nt kliendihinnang, kui selline väli on olemas XML-is, kui ei ole kasuta teine numbriline väli).
  8. Kuva kõik xml andmed tabelina, kus read on üle rea erineva värviga.

MinuReis.xml:

<?xml version="1.0" encoding="utf-8" ?>
<Reisid>
	<Reis id="1" sihtkoht="Colombia" transport="takso">
		<Kontakt>
			<Nimi>Hagan Swaden</Nimi>
			<Keel>Latin</Keel>
			<Email>hswaden0@xing.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Al Ahsa Airport</Lennujaam>
			<Hind>Zloty</Hind>
			<Kestus>13</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="2" sihtkoht="France" transport="laev">
		<Kontakt>
			<Nimi>Silvana Allsopp</Nimi>
			<Keel>Tamil</Keel>
			<Email>sallsopp1@ihg.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Kiwai Airport</Lennujaam>
			<Hind>Franc</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="3" sihtkoht="France" transport="jalgratas">
		<Kontakt>
			<Nimi>Anabelle Braemer</Nimi>
			<Keel>Japanese</Keel>
			<Email>abraemer2@cbslocal.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Tsewi Airport</Lennujaam>
			<Hind>Rupiah</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="4" sihtkoht="USA" transport="buss">
		<Kontakt>
			<Nimi>Ricard Addionisio</Nimi>
			<Keel>Latin</Keel>
			<Email>raddionisio3@php.net</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>San Juan Aposento Airport</Lennujaam>
			<Hind>Pound</Hind>
			<Kestus>1</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="5" sihtkoht="Germany" transport="auto">
		<Kontakt>
			<Nimi>Pearce Glanders</Nimi>
			<Keel>Maltese</Keel>
			<Email>pglanders4@usgs.gov</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Telida Airport</Lennujaam>
			<Hind>Zloty</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="6" sihtkoht="France" transport="takso">
		<Kontakt>
			<Nimi>Corette Hayzer</Nimi>
			<Keel>Welsh</Keel>
			<Email>chayzer5@cargocollective.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Harrison County Airport</Lennujaam>
			<Hind>Zloty</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="7" sihtkoht="Australia" transport="mootorratas">
		<Kontakt>
			<Nimi>Karel Downham</Nimi>
			<Keel>Cree</Keel>
			<Email>kdownham6@cbsnews.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Aasiaat Airport</Lennujaam>
			<Hind>Peso</Hind>
			<Kestus>1</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="8" sihtkoht="Germany" transport="buss">
		<Kontakt>
			<Nimi>Bordy Walisiak</Nimi>
			<Keel>Tajik</Keel>
			<Email>bwalisiak7@stumbleupon.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>La Aurora Airport</Lennujaam>
			<Hind>Quetzal</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="9" sihtkoht="China" transport="jalgratas">
		<Kontakt>
			<Nimi>Keefe Addicott</Nimi>
			<Keel>Tsonga</Keel>
			<Email>kaddicott8@booking.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Victoria Harbour Seaplane Base</Lennujaam>
			<Hind>Rupiah</Hind>
			<Kestus>4</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="10" sihtkoht="Austria" transport="buss">
		<Kontakt>
			<Nimi>Arly Fielding</Nimi>
			<Keel>Inupiaq</Keel>
			<Email>afielding9@npr.org</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Yari Airport</Lennujaam>
			<Hind>Yuan Renminbi</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="11" sihtkoht="China" transport="jalgratas">
		<Kontakt>
			<Nimi>Cosmo Shipston</Nimi>
			<Keel>Bokmål, Norwegian</Keel>
			<Email>cshipstona@barnesandnoble.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Myitkyina Airport</Lennujaam>
			<Hind>Franc</Hind>
			<Kestus>5</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="12" sihtkoht="USA" transport="rong">
		<Kontakt>
			<Nimi>Ermin Lendrem</Nimi>
			<Keel>Abkhazian</Keel>
			<Email>elendremb@so-net.ne.jp</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Aviano Air Base</Lennujaam>
			<Hind>Peso</Hind>
			<Kestus>1</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="13" sihtkoht="Ethiopia" transport="takso">
		<Kontakt>
			<Nimi>Suzy O'Deoran</Nimi>
			<Keel>Sardinian</Keel>
			<Email>sodeoranc@ucsd.edu</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Ouvéa Airport</Lennujaam>
			<Hind>Real</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="14" sihtkoht="USA" transport="rong">
		<Kontakt>
			<Nimi>Wilden Eslie</Nimi>
			<Keel>Tsonga</Keel>
			<Email>weslied@fda.gov</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Weerawila Airport</Lennujaam>
			<Hind>Euro</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="15" sihtkoht="Japan" transport="jalgratas">
		<Kontakt>
			<Nimi>Dacia Ponten</Nimi>
			<Keel>Sinhala</Keel>
			<Email>dpontene@princeton.edu</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Arturo Michelena International Airport</Lennujaam>
			<Hind>Peso</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="16" sihtkoht="USA" transport="takso">
		<Kontakt>
			<Nimi>Adelind Ianne</Nimi>
			<Keel>Dzongkha</Keel>
			<Email>aiannef@zdnet.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Kryvyi Rih International Airport</Lennujaam>
			<Hind>Krona</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="17" sihtkoht="Chile" transport="lennuk">
		<Kontakt>
			<Nimi>Weider Tallow</Nimi>
			<Keel>German</Keel>
			<Email>wtallowg@sun.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Omsk Central Airport</Lennujaam>
			<Hind>Shekel</Hind>
			<Kestus>12</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="18" sihtkoht="Switzerland" transport="rong">
		<Kontakt>
			<Nimi>Roby Thunnercliffe</Nimi>
			<Keel>Zhuang</Keel>
			<Email>rthunnercliffeh@github.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Erigavo Airport</Lennujaam>
			<Hind>Yuan Renminbi</Hind>
			<Kestus>4</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="19" sihtkoht="France" transport="tramm">
		<Kontakt>
			<Nimi>Sibella Caldwell</Nimi>
			<Keel>Kashmiri</Keel>
			<Email>scaldwelli@toplist.cz</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Fort Dodge Regional Airport</Lennujaam>
			<Hind>Ruble</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="20" sihtkoht="USA" transport="metroo">
		<Kontakt>
			<Nimi>Lavena Soares</Nimi>
			<Keel>Thai</Keel>
			<Email>lsoaresj@tinypic.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Natadola Airport</Lennujaam>
			<Hind>Zloty</Hind>
			<Kestus>1</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="21" sihtkoht="USA" transport="tramm">
		<Kontakt>
			<Nimi>Keenan Hanaby</Nimi>
			<Keel>Tatar</Keel>
			<Email>khanabyk@cam.ac.uk</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Glacier Park International Airport</Lennujaam>
			<Hind>Baht</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="22" sihtkoht="France" transport="laev">
		<Kontakt>
			<Nimi>Bekki Gosland</Nimi>
			<Keel>Tatar</Keel>
			<Email>bgoslandl@livejournal.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Basankusu Airport</Lennujaam>
			<Hind>Sol</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="23" sihtkoht="Japan" transport="auto">
		<Kontakt>
			<Nimi>Hussein Geipel</Nimi>
			<Keel>Guarani</Keel>
			<Email>hgeipelm@theglobeandmail.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Talagi Airport</Lennujaam>
			<Hind>Ringgit</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="24" sihtkoht="Kenya" transport="metroo">
		<Kontakt>
			<Nimi>Helaine Tutchell</Nimi>
			<Keel>Uighur</Keel>
			<Email>htutchelln@cargocollective.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Jerusalem Airport</Lennujaam>
			<Hind>Franc</Hind>
			<Kestus>15</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="25" sihtkoht="South Africa" transport="buss">
		<Kontakt>
			<Nimi>Willem Horder</Nimi>
			<Keel>Igbo</Keel>
			<Email>whordero@tuttocitta.it</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Whitsunday Island Airport</Lennujaam>
			<Hind>Euro</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="26" sihtkoht="USA" transport="tramm">
		<Kontakt>
			<Nimi>Oby Roser</Nimi>
			<Keel>Arabic</Keel>
			<Email>oroserp@sun.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Liège Airport</Lennujaam>
			<Hind>Rupiah</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="27" sihtkoht="Singapore" transport="mootorratas">
		<Kontakt>
			<Nimi>Alex Ovell</Nimi>
			<Keel>Nepali</Keel>
			<Email>aovellq@redcross.org</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Ambunti Airport</Lennujaam>
			<Hind>Krone</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="28" sihtkoht="Germany" transport="mootorratas">
		<Kontakt>
			<Nimi>Truman Quinnelly</Nimi>
			<Keel>Bashkir</Keel>
			<Email>tquinnellyr@weibo.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Andøya Airport</Lennujaam>
			<Hind>Dinar</Hind>
			<Kestus>4</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="29" sihtkoht="France" transport="lennuk">
		<Kontakt>
			<Nimi>Judah Carsberg</Nimi>
			<Keel>Kanuri</Keel>
			<Email>jcarsbergs@wired.com</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Earlton (Timiskaming Regional) Airport</Lennujaam>
			<Hind>Krona</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
	<Reis id="30" sihtkoht="South Africa" transport="auto">
		<Kontakt>
			<Nimi>Cullan Braunthal</Nimi>
			<Keel>Uighur</Keel>
			<Email>cbraunthalt@themeforest.net</Email>
		</Kontakt>
		<Lennuinfo>
			<Lennujaam>Flughafen München-Riem</Lennujaam>
			<Hind>Euro</Hind>
			<Kestus>3</Kestus>
		</Lennuinfo>
	</Reis>
</Reisid>

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.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:output method="html" indent="yes" encoding="UTF-8" />

	<xsl:template match="/Reisid">
		<html>
			<head>
				<title>Reisid</title>
				<style>
					table {
					border-collapse: collapse;
					width: 100%;
					font-family: Arial, sans-serif;
					}
					th, td {
					border: 1px solid #333;
					padding: 8px;
					text-align: left;
					}
					th {
					background-color: #666;
					color: white;
					}
					tr:nth-child(odd) {
					background-color: #f9f9f9;
					}
					tr:nth-child(even) {
					background-color: #e9e9e9;
					}
					.highlight {
					background-color: yellow;
					}
				</style>
			</head>
			<body>
				<h2>Reiside nimekiri</h2>
				<table>
					<thead>
						<tr>
							<th>Sihtkoht</th>
							<th>Transport</th>
							<th>Reisi info</th>
							<th>Kontakt</th>
							<th>Kogumaksumus</th>
						</tr>
					</thead>
					<tbody>
						<xsl:for-each select="Reis">
							<xsl:sort select="number(Lennuinfo/Kestus)" data-type="number" order="ascending" />
							<tr>
								<td>
									<xsl:value-of select="@sihtkoht" />
								</td>
								<td>
									<xsl:value-of select="@transport" />
								</td>
								<td>
									<ul style="margin:0; padding-left: 18px;">
										<li>
											Lennujaam: <xsl:value-of select="Lennuinfo/Lennujaam" />
										</li>
										<li>
											Hind:
											<xsl:choose>
												<xsl:when test="number(Lennuinfo/Kestus) &gt; 3">
													<span class="highlight">
														<xsl:value-of select="Lennuinfo/Hind" />
													</span>
												</xsl:when>
												<xsl:otherwise>
													<xsl:value-of select="Lennuinfo/Hind" />
												</xsl:otherwise>
											</xsl:choose>
										</li>
										<li>
											Kestus: <xsl:value-of select="Lennuinfo/Kestus" />
										</li>
									</ul>
								</td>
								<td>
									<ul style="margin:0; padding-left: 18px; background-color: yellow; padding: 5px;">
										<li>
											Nimi: <xsl:value-of select="Kontakt/Nimi" />
										</li>
										<li>
											Keel: <xsl:value-of select="Kontakt/Keel" />
										</li>
										<li>
											Email: <xsl:value-of select="Kontakt/Email" />
										</li>
									</ul>
								</td>
								<td>
									<xsl:variable name="hindVal" select="number(Lennuinfo/Kestus) * 10" />
									<xsl:variable name="transportVal" select="100" />
									<xsl:variable name="majutusVal" select="50" />
									<xsl:variable name="ekskursioonidVal" select="30" />
									<xsl:variable name="muudKuludVal" select="20" />
									<xsl:value-of select="$hindVal + $transportVal + $majutusVal + $ekskursioonidVal + $muudKuludVal" />
								</td>
							</tr>
						</xsl:for-each>
					</tbody>
				</table>
			</body>
		</html>
	</xsl:template>

</xsl:stylesheet>

Kuidas välja näeb:

XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.example.com/reisid"
           xmlns="http://www.example.com/reisid"
           elementFormDefault="qualified">

	<xs:element name="Reisid">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Reis" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Lennuinfo">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Lennujaam" type="xs:string"/>
										<xs:element name="Hind" type="xs:string"/>
										<xs:element name="Kestus" type="xs:decimal"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="Kontakt">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Nimi" type="xs:string"/>
										<xs:element name="Keel" type="xs:string"/>
										<xs:element name="Email" type="xs:string"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="id" type="xs:integer" use="required"/>
						<xs:attribute name="sihtkoht" type="xs:string" use="required"/>
						<xs:attribute name="transport" type="xs:string" use="required"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

</xs:schema>

XML Sisse lisame:

<Reisid xmlns="http://www.example.com/reisid"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="reisid.xsd">