DE Pszichológiai Intézet Az intézeti kérdıív kezelı rendszer dokumentációja v1.0.2 Készítette: Szász Béla Sándor 2009. január Tartalom MI AZ XML? 2 XML SZINTAXIS SZABÁLYAI 3 A KÉRDİÍVET LEÍRÓ XML ÁLLOMÁNY SZERKEZETE 4 A KÉRDİÍV ÁLLOMÁNY SZERKEZETI RÉSZEI 4 MINDIG KEZDJÜK ÍGY 5 EGY KONKRÉT PÉLDA 6 A KÉRDİÍV XML ÁLLOMÁNY TESZTELÉSE 7 ITEMEK 9 1. BEVITELI ITEM: 9 2. JELÖLİ ITEM: 9 3. VÁLASZTÓ ITEM: 10 4. JELÖLİ + EGYÉB ITEM: 10 5. VÁLASZTÓ + EGYÉB ITEM: 10 6. FOKOZATOS ITEM: 10 7. SZÖVEG ITEM: 11 ITEMEK KORLÁTAI 11 EGYÉB TUDNIVALÓK 11 1. SORTÖRÉS HASZNÁLATA 11 2. ZÁRSZÓ MEGADÁSA 12 3. MEGJEGYZÉS MEGADÁSA 12
Mi az XML? Az XML (extensible Meta Language) leírónyelvet adatok rendszerezésére, tárolására és közvetítésére tervezték (és nem arra, hogy ebben a formában jelenítsük meg az adatokat). Nincsenek elıre definiált XML elemek. Neked kell a saját elemeidet létrehoznod. Úgy tervezték a nyelvet, hogy önmagát magyarázza. A W3C (The Word Wide Web Consortium) ajánlása. Egy XML állomány elemekbıl áll. Az elemeknek lehet értékük, lehetnek tulajdonságaik, valamint további elemeket tartalmazhatnak (vagyis az elemek egymásba ágyazhatók). Egy elem egy nyitó és egy záró taggal adható meg. A nyitó és záró tagot angolul is tag -nak írják (bár teg -nek ejtik; a jelentése pedig: cédula, címke). Egy elem nyitó tagját úgy képezzük, hogy < és > jel közé írjuk az elem nevét. A lezáró tagját hasonlóan, de a név elé teszünk egy / (osztás) jelet. Az elem kezdı és lezáró tagja közötti szöveg az elem értéke. Pl.: ha egy üzenet nevő elemet szeretnénk létrehozni, akkor a nyitó tag <uzenet> míg a záró tag </uzenet> lenne. A következı példa egy Tomitól Julinak szóló üzenetet mutat be: <?xml version="1.0" encoding="utf-8"?> <uzenet> <kitol>tomi</kitol> <kinek>juli</kinek> <targy>emlékeztetı</targy> <tartalom>gondolj rám a hét végén!</tartalom> </uzenet> Az elsı sor az XML deklaráció, amely megadja, hogy az 1.0-ás XML változatot használjuk, és az állományban használatos karakterkódolás most UTF-8. A következı sor (<uzenet>) írja le a dokumentum gyökér elemét (mintha azt mondaná: ez a dokumentum egy üzenet ). A következı 4 sor a gyökér elem 4 gyermek elemét írja le. (kitıl, kinek, tárgy, tartalom) A legutolsó sor (</uzenet>) a gyökér elem végét jelenti. Az XML állományokban kötelezı gyökér elemnek lennie. Ez az elem minden más elem szülıje. Az elemek egy dokumentum fát alkotnak, amely a gyökérnél kezdıdik és a fa legmélyebb szintjéig ágazik. Minden elemnek lehetnek al-elemei (= gyermek elemei): <gyökér> <gyermek> <al-gyermek>... </al-gyermek> </gyermek> </gyökér> Szülı, gyermek, testvér így nevezzük az elemek közötti kapcsolatokat. 2 / 12
XML szintaxis szabályai Az XML szintaxis szabályai nagyon egyszerőek és logikusak, melyeket könnyő megtanulni, és használni. 1. Minden elemnek lennie kell lezáró tagjának. Megjegyzés: talán észrevetted, hogy a legelsı példában az XML deklarációnak nincs lezáró tagja. Ez nem hiba, mivel a deklaráció nem része magának az XML dokumentumnak. 2. Az XML tagok érzékenyek a kis és nagybetők közti különbségre. Pl.: <valami> és <Valami> különbözı tagok. Egy elem nyitó és záró tagjában a nevet ugyanúgy kell írni. 3. Az elemeket megfelelıen kell egymásba ágyazni. helytelen <felkover><dolt>e szöveg félkövér és dılt</felkover></dolt> helyes <felkover><dolt>e szöveg félkövér és dılt</dolt></felkover> 4. Az XML dokumentumokban kötelezı gyökér elemnek lennie. Ez az elem minden más elem szülıje. 5. Az XML attribútumok értékeit kötelezı idézıjelek közé tenni. Az XML elemeknek lehetnek attribútumai (jellemzıi) név/érték párokkal megadva. Az értékeket kötelezı idézıjelek közé tenni: helytelen <uzenet datum=2007-11-12> <kitol>tomi</kitol> <kinek>juli</kinek> </uzenet> helyes <uzenet datum= 2007-11-12 > <kitol>tomi</kitol> <kinek>juli</kinek> </uzenet> 6. Entitás hivatkozások Néhány karakter különleges jelentést hordoz az XML-ben. Ha például egy < jelet teszünk egy XML elem belsejébe, akkor az hibát fog okozni, mivel az értelmezı úgy fogja venni, mint új elem kezdetét. Pl. a következı sor hibát ad: <tartalom>ha a születési éved < 1980 akkor figyelj</tartalom> Ezt elkerülendı, cseréljük fel a < jelet egy entitás hivatkozással: <tartalom>ha a születési éved < 1980 akkor figyelj</tartalom> Az XML-ben 5 elıre definiált entitás hivatkozás van: szövegben megkívánt jel (entitás) ezt használjuk helyette (entitás hivatkozás) miért? mit jelent? < < less than > > greater than & & ampersand ' apostrophe " quotation mark 7. Megjegyzések az XML-ben Mint ahogy az alábbi példában: <!-- megjegyzés --> 3 / 12
A kérdıívet leíró XML állomány szerkezete Kérdıív leíráshoz létrehoztunk egy elemhalmazt és szabályrendszert, amelyet a következıkben bemutatunk. E leíró szerkezet célja, hogy általánosan elterjedt válaszformákat használva könnyen írhassunk webes kérdıíveket. A kérdıív állomány szerkezeti részei kérdıív cím leírás 1. itemcsokor cím leírás 1.1. item 1.2. item 1.n. item 2. itemcsokor cím leírás 2.1. item 2.2. item 2.n. item n. itemcsokor zárósor Amint látható, a kérdıíven szereplı itemekeket (kérdés-válasz elemeket) csoportokba, ún. itemcsokrokba kell rendezni. Csak 1 szintnyi mélységig csoportosíthatók az itemek. A csokrokat illetve a bennük lévı itemeket a rendszer sorszámmal látja el (az XML dokumentumban lévı helyük alapján)! 4 / 12
A kérdıívnek és az itemcsokroknak külön-külön egyedi cím és leírás adható. Az itemek a kérdés-válasz elemek. Hétféle item használható: item neve célja 1. beviteli szöveges válasz bekérése 2. jelölı több választási lehetıség megjelölése 3. választó több lehetıség közül 1 kiválasztása 4. jelölı + egyéb mint a jelölı, de az utolsó lehetıséget a kitöltı adja meg 5. választó + egyéb mint a választó, de az utolsó lehetıséget a kitöltı adja meg 6. fokozatos két szélsı érték közti állapot fokának megadása 7. szöveg terjedelmesebb szöveg megjelenítése tanulmányozásra Mindig kezdjük így Ahhoz, hogy a rendszer segíteni tudjon a kérdıív állományunk szintaktikai helyességének ellenırzésében, mindig az alábbi két sorral kezdjük a leíróállományt: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE kerdoiv SYSTEM "http://psycho.unideb.hu/res/kerdoiv.dtd"> Az elsı sor mint ahogy azt a Mi az XML? c. fejezetben láttuk a fıként az állományban használt karakterkódolás megadására szolgál. (Az UTF-8 kódolással például biztos, hogy úgy tudunk magyar ı és ő betőket megadni, hogy azok annak is jelenjenek meg, és ne a kalapos változataikként. Persze ehhez olyan szövegszerkesztıvel kell az XML állományunkat szerkeszteni, amely támogatja az UTF-8 kódolást, mint például a Notepad++. Lásd lentebb) A második sor a kérdıív leírónk szintaxisának érvényességének ellenırzéséhez kell. Ha ez a sor meg van adva, akkor a rendszer meg tudja mondani, hogy ha az állományunkban szintaktikai hiba van, akkor az mi és melyik sorban található. A kérdıív állományunk szerkesztését bármilyen szövegszerkesztıvel elvégezhetjük, amely képes egyszerő szövegként mentei a beleírt tartalmat. (Érdemes.xml kiterjesztést adni a mentett állománynak.) Tipp: a Notepad++ egy ingyenes forráskód-szerkesztı (és a hagyományos Jegyzettömb leváltására hivatott program) amely számos programozási nyelvet támogat a MS Windows környezetben. XML állományok szerkesztésére kiválóan alkalmas, már csak azért is, mert támogatja ezen állományok szintaxisának kiemelését és az UTF-8 karakterkódolást is. (Honlapja: http://notepad-plus.sourceforge.net ) 5 / 12
Egy konkrét példa Az alábbi példa a kialakított szabályrendszerrel leírt, egyszerő kérdıívet mutat. 6 / 12
A kérdıív XML állomány tesztelése Ahhoz, hogy teszteljük, van-e a kérdıívünkben szintaktikai hiba, vagy, hogy hogyan jelenik majd meg a kérdıívünk, másoljuk át az XML tartalmat a szövegszerkesztıbıl a http://psycho.unideb.hu/kellekek/kivteszt.php oldalon kialakított ellenırzı felület szövegdobozába: A Mutat gombra kattintva megkapjuk a kérdıívünk elınézeti képét: 7 / 12
8 / 12
Itemek Közös az itemek megadásában: <item> és </item> elemnév párral adjuk meg, melynek lennie kell egy típus attribútumának; a kérdést (vagy állítást) az item elembe ágyazott <kerdes> és </kerdes> elemnév pár közé írva kell megadnunk. (kötelezı), ha akarunk, az itemekhez 1-1 képet helyezhetünk el, amely a kérdés(/állítás) alatt fog megjelenni. A kép elhelyezéshez az item elembe tegyünk egy <kep> és </kep> elemnév párt, amely közé írva adjuk meg a képállomány nevét kiterjesztéssel. (útvonal nélkül). Csak a következı formátumok valamelyikét használhatjuk: JPEG, GIF, PNG. // A tesztfelületen a képek helyett tájékoztatási céllal csak egy helykitöltı kép jelenik meg ( Itt a kép helye! felirattal). A kívánt képek csak azután fognak megjelenni, ha a kérdıívet véglegesen szerverre feltöltötte a kérdıív rendszer üzemeltetıje. ha akarunk, az itemhez egy megjegyzést adhatunk, amely az item utolsó soraként jelenik meg megkülönböztetı színnel. Használhatjuk pl.: további instrukciók megjelenítésére. A megjegyzés a <megjegyzes> és </megjegyzes> elemnév pár közé írva adható meg. Amiben eltér a hétféle item megadása: 1. Beviteli item: Az item elem típus attribútumának az értéke beviteli kell, hogy legyen. Választható további attribútumok a hossz amellyel a megjelenı szövegdoboz szélességét adhatjuk meg karakterekben mérve, illetve a maxhossz amellyel a szövegdobozba írható karakterek számát korlátozhatjuk. Pl.: 2. Jelölı item: Az item elem típus attribútumának az értéke jelolo kell, hogy legyen. A jelölhetı válaszokat az item elembe ágyazott <valasz> és </valasz> elemnév pár közé írva kell megadnunk. Az item elemnek lehet (vagyis nem kötelezı) egy oszlop attribútuma is, amellyel beállíthatjuk, hogy a válaszok sorfolytonos megjelenítése hány oszlopba osztódjon. Ez attribútum elmaradása esetén egy sorba kerülnek a válaszok. A válasz elemeknek lehet egy helyes attribútuma, mellyel a gépi javításhoz adhatjuk meg az elfogadható válasz(oka)t. A helyes attribútum, ha megvan adva, akkor értéke csak 0 vagy 1 lehet, attól függıen, hogy helyes, vagy helytelen a válasz. Ha egy válasznál nincs megadva ez az attribútum, akkor a gépi javításnál azt a választ helytelennek tekinti majd a rendszer. <item tipus="jelolo" oszlop="2"> <kerdes>mi a kör kerületének és átmérıjének hányadosa 1 tizedes jegy pontossággal?</kerdes> <valasz helyes="1">4*(8/9)^2</valasz> <valasz>16/5</valasz> <valasz helyes="1">22/7</valasz> <valasz helyes="1">3,1415</valasz> <valasz helyes="0">10/3</valasz> </item> 9 / 12
3. Választó item: Az item elem típus attribútumának az értéke valaszto kell, hogy legyen. A választható válaszokat az item elembe ágyazott <valasz> és </valasz> elemnév pár közé írva kell megadnunk. Az item elemnek lehet egy oszlop attribútuma, melynek szerepét és megadási módját lásd a jelölı item leírásánál. A válasz elemeknek lehet egy helyes attribútuma, melynek szerepét és megadási módját lásd a jelölı item leírásánál. 4. Jelölı + egyéb item: Erre az itemtípusra igaz, amit a jelölı itemnél olvashattunk, 2 eltéréssel: 1) Az item elem típus attribútumának az értéke jeloloegyeb kell, hogy legyen. 2) A válaszok után meg kell adnunk az utolsó lehetıségnek biztosítandó beviteli mezı elıtti feliratot az <egyeb> és </egyeb> elemnév pár közé írva. 5. Választó + egyéb item: Erre az itemtípusra igaz, amit a választó itemnél olvashattunk, 2 eltéréssel: 1) Az item elem típus attribútumának az értéke valsztoegyeb kell, hogy legyen. 2) A válaszok után meg kell adnunk az utolsó lehetıségnek biztosítandó beviteli mezı elıtti feliratot az <egyeb> és </egyeb> elemnév pár közé írva. 6. Fokozatos item: Az item elem típus attribútumának az értéke fokozatos kell, hogy legyen. A fokozatok számát az item elembe ágyazott <fokok> és </fokok> elemnév pár közé írt pozitív egész számmal kell megadnunk. A fokozatsor bal oldalára írandó szöveget az item elembe ágyazott <alsohatar> és </alsohatar> elemnév pár közé írva kell megadnunk. A fokozatsor jobb oldalára írandó szöveget pedig az item elembe ágyazott <felsohatar> és </felsohatar> elemnév pár között. Megjelenítéskor a fokozatokat karikák jelzi. Ha azt szeretnék, hogy a karikák alatt számozás is megjelenjen (1-tıl a fokok számáig), akkor a fokok elem szamozas attribútumát 1-re kell állítanunk. Pl.: <fokok szamozas="1">5</fokok> A szamozas attribútum nem kötelezı (alapértéke 0), de ha megadtuk, akkor értéke csak 0 vagy 1 lehet. 10 / 12
7. Szöveg item: Az item elem típus attribútumának az értéke szoveg kell, hogy legyen. A terjedelmes szöveget az item elembe ágyazott <szoveg> és </szoveg> elemnév pár közé írt szöveggel kell megadnunk. Figyeljünk arra, hogy a >, <, &,, karakterek helyett a megfelelı XML entitásokat használjuk! Kizárólag ennél az item típusnál lehetıségünk van a sortörés jelölésére is a &br; helyi entitás segítségével. Itemek korlátai item neve korlátozás 1. beviteli a maxhossz értéke legfeljebb 255 lehet 2. jelölı legfeljebb 88 válasz adható meg 3. választó legfeljebb 88 válasz adható meg 4. jelölı + egyéb legfeljebb 88 válasz adható meg (az egyébbel együtt), a egyéb mezıbe írt szöveg legfeljebb 50 karakter hosszú lehet 5. választó + egyéb legfeljebb 88 válasz adható meg (az egyébbel együtt) a egyéb mezıbe írt szöveg legfeljebb 50 karakter hosszú lehet 6. fokozatos a fokok száma legalább 3, legfeljebb 21 lehet Egyéb tudnivalók 1. Sortörés használata A leiras, zarosor, szoveg elemekben, és csakis ezekben, lehetıségünk van sortörést jelölni a &br; helyi (azaz csak a kérdıív típusú XML állományokban értelmezett) entitás segítségével. Ha nem használjuk ezt az entitást, akkor a mondatok sortörés nélkül (az XML állományba írt esetleges enterek ellenére) sorfolytonosan jelennek meg. Például: <kerdoiv> <cim>attitődök</cim> <leiras>tisztelt Hallgató!&br;&br; Az egyetemi diákság életét részben szervezı hallgatói önkormányzatról, a képzés minıségérıl, a jövıvel kapcsolatos elképzelésekrıl kialakult hallgatói vélemények megismerése több szempontból is hasznos lehet. Ahhoz, hogy a véleményeket megismerjük, néhány kérdést fogalmaztunk meg. Nincsenek hibás vagy jó válaszok, kizárólag a saját véleményedet fejezd ki válaszaiddal.&br; Természetesen a válaszadás nem kötelezı és névtelen. A felmérésbıl származó adatokat a Pszichológiai Intézet hallgatói fogják szakmai munkájukhoz felhasználni.</leiras> <csokor> </csokor> <kerdoiv> Amely így jelenik majd meg: 11 / 12
2. Zárszó megadása A kérdıív végén lehetıségünk van egy záró mondatot elhelyezni a legutolsó csokor elem után egy <zarosor> és </zarosor> elemnév pár közé írt szöveggel. Példaként lásd fentebb az Egy konkrét példa c. fejezet pédáját. 3. Megjegyzés megadása Az Itemek c. fejezetben láttuk, hogy bármelyik típusú itmehez megadhatunk egy megjegyzést. A megjegyzéssel például az itemhez kapcsolódó részletesebb instrukciókat adhatunk. Például: <kerdoiv> <csokor> <item tipus="valaszto" oszlop="2"> <kerdes>ön sportol-e?</kerdes> <valasz>igen</valasz> <valasz>nem</valasz> <megjegyzes>amennyiben nem sportol, akkor 'sport' témakör további (alábbi) kérdéseire nem kell válaszolnia. (Folytathatja a kitöltést a 'kockázatvállalás' témakörnél.)</megjegyzes> </item> </csokor> <kerdoiv> Amely körülbelül* így jelenik majd meg: *: nyilván a item sorszáma attól függ, hol helyezkedik el a leíró állományban. 12 / 12