====== Esystem XML Interface version 0.3 ======
===== XML szerkezete =====
==== Kliens üzenete a szerver felé ====
mezőnévértékmezőnévértékmezőnévértéknumfield0
==== Szerver üzenete a kliens felé ====
mainformmezőnévértékmezőnévértékmezőnévértéknumfield0text^\d+$Érvénytelen numerikus adatNumerikus 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 ====
Infotest 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]]