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