[ jeremycod @ 01.01.2004. 19:50 ] @
Radi se o Inteligentnom tutorskom sistemu.
Deo koji trenutno radim je model studenta koji treba da radi sledece:
-SessionManager kreira instancu klase Student kada se student uloguje i uzima podatke iz xml fajla u instancu klase Student. Ukoliko je rec o novom korisniku onda treba kreirati novi xml fajl (pomocu nekog xml-templejta ili xml scheme).Na kraju sesije treba sve podatke iz klase student sacuvati u isti xml fajl.

Moj problem je :
1)Kako realizovati kreiranje tog novog xml fajla. Da li je to moguce ovako kao sto sam zamislio pomocu nekog xml templejta ili pomocu xml scheme.
2)koji parser je bolje koristiti u ovom slucaju (SAX ili DOM)

Interesuje me misljenje nekog ko ima vise iskustva u radu sa ovakvim aplikacijama (ja inace prvi put radim ovakvo nesto)

Hvala na pomoci.
Pozdrav
[ System.exit(0); @ 02.01.2004. 11:59 ] @
Ono sto ne razumijem iz tvog pitanja je da li zelis praviti XML file za svakog studenta pojedinacno, ili imati XML file za sve studente; ovo drugo mi se cini logicnije i profesionalnije. Znaci mogao bi imati nesto kao

<studentdir>
<student id="...">
<name>...</name>
<surname>...</surname>
</student>
<student id="...">
<name>...</name>
<surname>...</surname>
</student>
...
...
...
</studentdir>

To bi bilo bolje no imati XML za svakog studenta.

Sto se tice pitanja da li koristiti SAX ili DOM, generalno se mozes voditi idejom, ako zelis samo da prodjes kroz XML file trazeci neke vrijednosti, il ida koristis XML kao input, vjerovatno ces koristiti SAX. U slucaju da zelis da manipuliras dati XML file(delete, insert, update) DOM je ono sto ti treba. Naravno trebas voditi racuna da je DOM zahtjevan u pogledu memorije u zavisnosti od velicine XML fiile-a. (alternativa su ti JDOM ili dom4j)

Na ovom linku

http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

idi na poglavlje

Generating XML from an Arbitrary Data Structure

i dobices uvid kako mozes generisati XML file za tvoj primjer. Mozes cak koristiti date primjere sa malim prepravkama.

AKo zelis imati XML file za svakog studenta onda mozes koristiti SAX transformaciju. Ako ce pak XML file biti direktorij svih studenata, onda koristis DOM za update tvog document objecta i onda uradis DOM transformaciju. Nadam se da ti ovo daje neku ideju.

[ jeremycod @ 02.01.2004. 13:08 ] @
Mislio sam da bi bolje bilo uraditi za svakog studenta poseban xml dokument jer
- u toku sesije se koriste podaci samo jednog studenta (onog koji se ulogovao)
- xml fajl koji se odnosi na jednog studenta je poprilicno veliki, on sadrzi podatke koji se odnose na istoriju ucenja, parametre prolaska kroz lekcije, ocene testova, odgovore studenta...
pa sam mislio da bi smestanje veceg broja studenata u jedan xml fajl bilo preveliko i nepotrebno opterecenje.
Nisam bas siguran da je ovo dovoljan razlog za to. Mozda si u pravu kada kazes da sve to moze u jedan xml fajl.

Sta mislis ti o tome?

xml fajl mi je potreban samo da bih uneo podatke u klasu student gde bi ih kasnije obradjivao, i na kraju sesije ponovo azurirao xml fajl tim podacima. Da li to moze da se realizuje pomocu SAX parsera.

Pozdrav i hvala na pomoci
[ sspasic @ 02.01.2004. 20:15 ] @
Pazi, SAX je samo parser. On ti neće pomoći kod kreiranja novog dokumenta. Ako koristiš SAX novi XML dokument moraš da kreiraš na neki drugi način, npr. kako bi kreirao i bilo kakav drugi tekstualni fajl.

DOM nije samo parser - to je memorijska struktura za čuvanje XML fajla. Naravno uključuje i parser i (obično) metod za snimanje DOM-a u XML fajl.

Ovo ne znači da je DOM bolji - nekad je SAX mnogo zgodniji.

Ja bih ti preporučio da pogledaš primere za SAX i DOM iz Xerces-a i da odlučiš šta ti treba.
[ System.exit(0); @ 03.01.2004. 20:58 ] @
Za ovo sto ti zelis da uradis mislim da bi DOM bio najbolje rijesenje, narocito ako ce ti XML file imati izmjesan sadrzaj(tekst i elemente) kao sub-elemente drugih elemenata(mogao sam ovo i jos nerazgovjetnije izreci ???). Problem sa SAX-om je da je veoma lako koristiti ga da parsiras XML file i da sa trazenim vrijednostima iniciras odredjene objekte. Malo je nezgrapno medjutim vratiti vrijednosti objekata u XML file, cak nisam siguran da ih prije toga ne bi morao sacuvati kao .txt file naprimjer.

Sa druge strane, ako koristis DOM, ne trebaju ti uopste student objekti u tvojoj aplikaciji, dovoljno je da parsiras XML file sa DOM-om, dobices dokument formiran u obliku objekt-stabla, i mozes sasvim lijepo da radis sa vrijednostima sta zelis; i transformacija u XML file je potpuno trivijalna.

Jedino jos uvjek ne shvatam ideju da za svakog studenta pravis poseban XML file. To znaci da ako zelis da provjeris detalje nekolik ostotina studenata, moras da otvoris svaki file, da ga iscitas, pa da ga zatvoris, ......., i plus toga gubis mogucnost XSL transformacija (sta naprimjer ako zelis da stavis listu studenata kao web stranicu ?).
[ NikolaVeber @ 03.01.2004. 23:03 ] @
Mozes da probas sledece :
da imas jedan xml za studente, a po jedan za svaki vid akcije (objekta) povezane za studente (npr imas po jedan za vezbe, predavanja, ...).
[ jeremycod @ 04.01.2004. 20:24 ] @
Sto se tice ideje da za svakog studenta kreiram poseban xml dokumenat to je zbog toga sto se u toku sesije ucenja (radi se o desktop sistemu) samo jedan student uloguje i sistem manipulise podacima o samo tom studentu, te je onda nepotrebno ucitavanje podataka o svim ostalim studentima.

Sto se tice toga da li SAX ili DOM, DOM bi bilo mnogo jednostavnije resenje, narocito po pitanju vracanja podataka iz objekata u xml fajl, ali mi se ne svidja to jer bih ipak morao da kreiram neke dodatne objekte za manipulaciju nad tim objektima, pa se bojim da ne bude to preveliko opterecenje za sistem, jer xml dokumenat koji pravim ima poprilicno podataka.

Uspeo sam da pronadjem na internetu neki XMLWriter koji upisuje podatke u xml dokumenat, tj. kreira novi dokumenat, ali je dosta slozeniji za rad od DOM-a.

Posto nigde u literaturi nisam naisao na slican primer interesuje me da li SAX moze da razlikuje 2 sub-elementa sa istim imenom npr:
<student>
<name>aaa</name>
</student>
<course>
<unit>
<lesson>
<name>bbb</name>
...

Hvala vam na pomoci
Pozdrav svima
[ mish_mash @ 22.01.2004. 11:09 ] @
umesto SAX-a ili DOM-a (koji obicno namecu dosta hardcoding-a) pokusaj da koristis JDOM (skines drajver sa neta i posluzis se iscrpnim API-jem) koji je u duhu Jave, poseduje jako jednostavan i intuitivan API i cini kod kracim i jednostavnijim... plus objedinjuje dobre strane i SAX-a i DOM-a... u slucaju koriscenja JDOM-a dovoljno je sve staviti u jedan xml fajl...
[ mca @ 23.01.2004. 13:12 ] @
Samo jedno pitanje:
Zasto podatke ne cuvas u bazi nego u xmlu?
[ jeremycod @ 24.01.2004. 11:27 ] @
Rad sa XML je pogodniji iz vise razloga:

1) U svim drugim delovima rada mora se koristiti xml, npr u domenu znanja zbog razmene znanja sa drugim aplikacijama (postoji autorski alat koji kreira znanje u xml formatu), u pedagoskom modulu koristi se LOM(learning object metadata standard) koji se takodje zasniva na xml


2) Posto se radi o magistarskom radu uvodjenje baza podataka u sve to bi zahtevalo mnogo veci posao, jer bi bila potrebna dodatna objasnjenja, projektovanja itd. sto bi samo znatno otezalo posao.

3) XML tehnologija je trenutno trend u learning tehnologijama, tako da se uglavnom veci deo stvari radi koriscenjem xml-a dok se baze podataka sve manje koriste.