====== Esystem XML Interface version 0.3 ====== ===== XML szerkezete ===== ==== Kliens üzenete a szerver felé ==== mezőnév érték mezőnév érték mezőnév érték numfield 0 ==== Szerver üzenete a kliens felé ==== main form mezőnév érték mezőnév érték mezőnév érték numfield 0 text ^\d+$ Érvénytelen numerikus adat Numerikus mennyiség, kötelező informacios uzenetek list result specific content/elements... ===== Leírás ===== ==== esystem_element ==== Ez a gyökér element. * Választhatóan * Vagy tartalmaz 1 **click** elementet (kliens -> szerver) * _Későbbi fejlesztés lehetőségét fenntartva a click element helyett más is előfordulhat * vagy egy **frame** elementet (szerver->kliens) | esystem | | [[#click_element|click]] | | esystem | | [[#frame_element|frame]] | ==== click_element ==== Ebben egy virtuális kattintás szerepel. * opcionálisan tartalmaz 1 **session** elementet * opcionálisan tartalmaz 1 **data** elementet * opcionálisan tartalmaz 1 **header** elementet * opcionálisan tartalmaz 1 vagy több **line** elementet | click | | [[#session_element|session]] | | click || | [[#session_element|session]] | [[#data_element|data]] | ==== frame_element ==== Egy virtuális kattintás eredményeképpen (vissza)kapott adatok * Tartalmaz egy **framename** elementet * Opcionálisan tartalmaz egy vagy több **choice** elementet * Opcionálisan tartalmaz egy **result** elementet * Opcionálisan tartalmaz egy **info_message** elemenetet | frame || | [[#framename_element|framename]] | [[#result_element|result]] | | frame ||||| | [[#framename_element|framename]] | [[#info_message_element|info_message]] | [[#result_element|result]] | [[#choice_element|choice]] | choice... | ==== framename_element ==== A frame neve. Egyúttal jelzi a korábban, ilyen nevű; frame-ben érkező válaszok esetleges lejártságát. main ==== info_message_element ==== Info test xml ==== result_element ==== * Kötelezően tartalmaz egy **resultname** elementet * Opcionálisan tartalmazhat egyéb elementeket, melyek szerkezete függhet a resultname értékétől ==== resultname_element ==== Az eredményoldal neve. ==== choice_element ==== Ez egy lehetséges választás frame-ben. * Kötelezően tartalmaz egy **choicename** elementet * Ez a név adott XML oldalaknál előre definiálva, dokumentálva van. * Kötelezően tartalmaz egy **click** elementet. ***Ez esetleg változhat/bővülhet** | choice || | [[#choicename_element|choicename]] | [[#click_element|click]] | ==== session_element ==== Ebben az elementben vannak azok a paraméterek amik a kommunikációs session-re vonatkoznak (CGI session) Ezeket az adatokat változtatás nélkül kell visszaküldeni az esystemnek, amennyiben az őt tartalmazó choice választása mellett dönt a kliens. * Kötelezően tartalmaz 1 **record** elementet | session | | [[#record_element|record]] | ==== data_element ==== Ebben az elementben vannak azok a paraméterek, amik a konkrét sessionhöz tartozó adatokat írják le. Ezeket az adatokat a metadata szerinti szabályok szerint módosítva lehet visszaküldeni az esystemnek * Kötelezően tartalmaz 1 **record** elementet * _Esetleges további record elementek használata későbbi fejlesztés céljából elképzelhető, de jelenleg nem támogatott | data | | [[#record_element|record]] | ==== record_element ==== Ilyen elementben vannak az adatok összegyüjtve mezőnként * Kötelezően tartalmaz 1 vagy több **field** elementet | record | | [[#field_element|field]] | | record || | [[#field_element|field]] | field... | ==== field_element ==== Ilyen elementben vannak a mezők leírva. * Kötelezően tartalmaz 1 **name** elementet * Kötelezően tartalmaz 1 vagy több **value** elementet * Opcionálisan tartalmazhat 0 vagy 1 **metadata** elementet * szerver->kliens irányú kommunikációnál várható, hogy létezik a**metadata** element * kliens->szerver irányú kommunikációnál a kliensnek nem kell ezt az elementet létrehoznia/visszaküldenie. Ha mégis megteszi, akkor a szerver azt figyelmen kívül fogja hagyni. | field || | [[#name_element|name]] | [[#value_element|value]] | | field |||| | [[#name_element|name]] | [[#value_element|value]] | value... | [[#metadata_element|metadata]] | ==== name_element ==== A mező neve. /^[a-zA-Z0-9_]+$/ regexpre kell illeszkednie Az**session** elementben szereplő mezőnevek nem egyezhetnek meg sem másik**session** elemenetbeli sem bármely **data** elementbeli mezőnévvel A**data** elementben szereplő mezőnevek nem egyezhetnek meg ugyanabban a**data** elemenetben levő másik mezőnévvel és semmilyen mezőnévvel a **session** elementen belül beosztas ==== value_element ==== A mező értéke. Általánosan itt bármilyen string szerepelhet, további megkötésekkel kapcsolatban a**metadata** element ad információt titkárnő segédje ==== metadata_element ==== A metadata tartalmazza az API-t felhasználó program (illetve programot kezelő ember) felé azokat az információkat, ami segíthetik a mezők értékének kitöltését. * Tartalmaz egy **type** elementet * Tartalmazhat egy **check** elementet * Tartalmaz egy **human** elementet * Tartalmazhat továbbá bármilyen más valid XML struktúrát. | metadata ||| | [[#type_element|type]] | [[#check_element|check]] | [[#human_element|human]] | ==== type_element ==== Ez adja meg a mező tipusát. Néhány tipus a teljesség igénye nélkül ***text** szöveges mező (egy sor) ***textarea** szöveges mező tetszőleges számú sortöréssel ***hidden** rejtett adat, úgy kell tekinteni mint a**session** element mezőit, módosítás nélkül vissza kell küldeni * További elementek lehetnek, melyek esetén a dokumentáció hiányosságát kell feltételezni. text ==== check_element ==== A metadata ezen részében gépileg is feldolgozható adatok vannak, amik segítik a gépi interface-t abban, hogy szintaktikusan helyes adatokat rakjanak a mezők értékébe. * Tartalmazhat egy **regexp** elementet * Tartalmazhat egy **regexpmsg** elementet * Tartalmazhat egy **req** elementet * Tartalmazhat egy **readonly** elementet | check |||| | [[#regexp_element|regexp]] | [[#regexpmsg_element|regexpmsg]] | [[req_element|req]] | [[#readonly_element|readonly]] | ==== regexp_element ==== Reguláris kifejezéssel történő adat megszorítás. A regexpet a perl regexpjének kell tekinteni. ==== req_element ==== Ha ez az element létezik, akkor a mező kitöltése kötelező, nem lehet üres ==== readonly_element ==== Ha ez az element létezik, akkor a mező értéke nem változtatható, azt módosítás nélkül kell visszaküldeni ==== regexpmsg_element ==== Ha a regexp nem illeszkedik, akkor ez az üzenet a mérvadó ==== human_element ==== Emberi olvasatra szánt segédinformációk * Tartalmazhat egy **label** elementet * Tartalmazhat egy **help** elementet ==== label_element ==== Ebben a mező neve olvasható. ==== help_element ==== Ebben a mezőről egy rövid segítség olvasható ===== Megjegyzés: ===== Kliens alkalmazások a szerver felé a az első ''Kliens üzenete a szerver felé'' üzenetet küldenek Válaszul a második féle ''Szerver üzenete a kliens felé'' üzenetet kapnak. szerver-szerver kommunikáció esetén előfordulhat hogy a két szerver egymás között az első ''Kliens üzenete a szerver felé'' módon küld egymásnak adatot, és a választ is ugyanebben a formában várják. De a rendszer ekkor is felkészült a hibakezelésre. Hibás esetben a rendszer automatikusan a második fajta ''Szerver üzenete a kliens felé'' üzenetet küld. ===== Validálás ===== Az evir_test.xsd segítségével lehetett validálni az eVIR-nek küldendő csomagot. This is the root element of the communications between Esystem, and external programs. ===== Példák ===== * [[spec:xml_pelda_egyszerusitett_lekerdezesek|XML Egyszerűsített lekérdezések]] * [[spec:xml_pelda_jelszavas_bejelentkezes|XML Jelszó alapú bejelentkezés]] * [[spec:xml_pelda_raktarlekerdezes|XML Raktárlekérdezés]] * [[spec:xml_pelda_rendeles_cikktorzsbol|XML alapú rendelés cikktörzsből]] * [[spec:xml_pelda_ujpartner|XML partner kezeles]]