U prethodnom prilogu imali smo relaciju koja sadrลพi reference ka dvema razliฤitim tabelama i string (uloga), ลกto moลพemo koristiti neลกto kao sledeฤi XML fragment da bismo reprezentovali tabelu „Referenca“:
<?xml version="1.0" encoding="ISO-8859-1"?>
<tblReferenca>
<Referenca>
<Knjiga ref="knjiga301" />
<Karakter ref="karakter66" />
<Uloga>Savetnik</Uloga>
</Referenca>
<Referenca>
<Knjiga ref="knjiga302" />
<Karakter ref="karakter66" />
<Uloga>Protagonista</Uloga>
</Referenca>
</tblReferenca>
Uopลกteno, kada prvi put eksportujemo podatke iz relacionih tabela, moลพemo videti dosta toga: svaki slog iz tabele formira pojedinaฤni element u XML dokumentu. Ukoliko je vaลก primarni cilj samo reprezentovanje tabele ili tabela, ovo ฤe biti sasvim dovoljno i sve ลกto vam treba. Ovaj primer XML-a predstavlja podatke na vrlo jasan naฤin, i ne uvodi nikakave nove koncepte. Ako bismo ovako formiran dokument prikazali korisnicima preko web stranice, oni bi verovatno bili pomalo razoฤarani zbog ลกturosti informacije. Zato ฤe biti potrebno da napravite jedan JOIN upit ili neลกto kompleksniji SELECT upit, koji ฤe prikazati polja sa imenima iz tabela o knjigama, autorima i karakterima. Sledi primer:
<?xml version="1.0" encoding="ISO-8859-1"?>
<tblReferenca>
<Referenca>
<Knjiga ref="knjiga301">
<Naslov>The Lord of the Rings</Naslov>
<Autor>Tolkien, J. R. R</Autor>
</Knjiga>
<Karakter ref="karakter66">Bilbo</Karakter>
<Uloga>Savetnik</Uloga>
</Referenca>
<Referenca>
<Knjiga ref="knjiga302">
<Naslov>The Hobbit</Naslov>
<Autor>Tolkien, J. R. R</Autor>
</Knjiga>
<Karakter ref="karakter66">Gandalf</Karakter>
<Uloga>Protagonista</Uloga>
</Referenca>
</tblReferenca>
Ovaj XML segment je korisnicima mnogo ฤitljiviji u odnosu na prethodni XML kod, ali nije neลกto naroฤito pogodan za skladiลกtenje ili transfer podataka. Podaci nisu u normalnoj formi jer su duplirani. Pa evo i bolje formatiranog i pogodnijeg XML dokumenta:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Katalog>
<ListaAutora>
<Autor id="a001">
<Prezime>Benford</Prezime>
<Ime>Gregory</Ime>
</Author>
<Autor id="a002">
<Prezime>Coney</Prezime>
<Ime>Michael</Ime>
</Autor>
<Autor id="a003">
<Prezime>Brin</Prezime>
<Ime>David</Ime>
</Autor>
</ListaAutora>
<ListaIzdavaca>
<Izdavac id="i001">
<Naziv>Bantam</Naziv>
<Country>USA</Drzava>
</Izdavac>
<Izdavac id="i002">
<Naziv>Futura</Naziv>
<Drzava>UK</Drzava>
</Izdavac>
</ListaIzdavaca>
<ListaKnjiga>
<Knjiga Datum="1983" Izdavac="i002">
<Naslov>The Celestial Steam Locomotive</Naslov>
<AutorRef Uloga="napisao" Ko="a002" />
<KOpis>
. . .
</KOpis>
</Knjiga>
<Knjiga Datum="1986" Izdavac="i001">
<Naslov>Heart of the Comet</Naslov>
<AutorRef Uloga="Napisao" Ko="a001" />
<AutorRef Uloga="napisao" ko="a003" />
</Knjiga>
<Knjiga Datum="1998" Publisher="i001">
<Naslov>Heaven’s Reach</naslov>
<AutorRef uUloga="Napisao" Ko="i003" />
<Nota>Poslednja knjiga druge trilogije</Nota>
</Knjiga>
</ListaKnjiga>
</Katalog>
I u ovom primeru nije izvrลกena potpuna normalizacija, prvenstveno kod izdavaฤa, poลกto nisu ukljuฤeni njihovi nazivi, ali je primer dovoljno ilustrativan za uvid u transformaciju iz DB tabela u XML.
Pratite Krstaricu na www.krstarica.com