XML – Predstavljanje podataka iz tabela (II deo)

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