A UN/EDIFACT (United Nations/Electronic Data Interchange for Administration, Commerce and Transport, magyarul: ENSZ/Adminisztrációs, Kereskedelmi és Közlekedési Elektronikus Adatcsere) az elektronikus adatcsere (EDI) nemzetközi szabványa, amelyet az Egyesült Nemzetek Szervezete számára fejlesztettek ki, és az ENSZ Európai Gazdasági Bizottsága (UNECE) hagyott jóvá és tette közzé.
1987-ben – az ENSZ és az ANSI szintaktikai javaslatainak összefésülését követően – az UN/EDIFACT szintaktikai szabályait ISO 9735 ISO szabványként elfogadta a Nemzetközi Szabványügyi Szervezet.
Az EDIFACT szabvány a következőket tartalmazza:
A szabvány karbantartását és továbbfejlesztését az ENSZ kereskedelmet és elektronikus üzletvitelt elősegítő központja (UN/CEFACT) végzi.
Alább egy repülőjegy-kérelem (a példában a FRA-JFK-MIA viszonylatban) megválaszolásához használt EDIFACT üzenet példáját:
UNA:+.? '
UNB+IATB:1+6XPPC:ZZ+LHPPC:ZZ+940101:0950+1'
UNH+1+PAORES:93:1:IA'
MSG+1:45'
IFT+3+XYZCOMPANY AVAILABILITY'
ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'
ODI'
TVL+240493:1000::1220+FRA+JFK+DL+400+C'
PDI++C:3+Y::3+F::1'
APD+74C:0:::6++++++6X'
TVL+240493:1740::2030+JFK+MIA+DL+081+C'
PDI++C:4'
APD+EM2:0:1630::6+++++++DA'
UNT+13+1'
UNZ+1+1'
Megjegyzés: Ebben a példában az olvashatóság érdekében az egyes szegmensek után sortöréseket alkalmazunk. Az EDI adatokban jellemzően nincs sortörés.
Az UNA szegmens használata nem kötelező. Ha van, megadja a speciális karaktereket, amelyeket az üzenet többi részének értelmezéséhez használni kell. Az UNA után hat karakter található ebben a sorrendben:
A tizedesjel kivételével (lásd alább) a fenti minta UNA szegmens speciális karakterei is az alapértelmezett értékek.
A komponens adatelem-elválasztó és az adatelem-elválasztó az adatelemek „első szintű” és „második szintű” elválasztója egy üzenetszegmensen belül. A tömörség kedvéért a + és : jeleket használjuk ezekre: a + a legfelső szintű vagy összetett adatelemeket választja el, és a : választja el az összetett adatelemekbe ágyazott második szintű adatelemeket. Az üzenet méretének csökkentése érdekében a záró üres (vagy null) adatelemek és a hozzájuk tartozó elválasztók elmaradnak.
A tizedesjel a szám egész és törtrészének elválasztására szolgál. Gyakran származik zavar abból, hogy az UNA szegmens használata opcionális, és a tizedesjel alapértelmezetten a vessző (" , "). Az ISO 9735 szintaktikai szabályok 1–3. verziója a vesszőt adják meg alapértelmezettként; a 4. verzió viszont kimondja, hogy az UNA szegmensben a tizedesjel részt figyelmen kívül kell hagyni, és a vessző és a pont (" . ") egyformán használható a numerikus adatértékekben. Azt, hogy a szintaktikai szabályok mely verziója érvényes, az UNB szegmens jelzi.
A reguláris kifejezések \ -jéhez hasonlóan egy escape (release) karaktert használnak előtagként abban az esetben, ha az elválasztó karakter, a szegmens lezáró és a felszabadító karakterek speciális jelentését kikerülve, azokat egyszerű szövegelemként kell használni.
A szegmenslezáró egy üzenetszegmens végét jelzi.
UNH+1+PAORES:93:1:IA' - Ez az üzenetfejléc szegmens, amely minden üzenet elején kötelező. Ez a kód azt adja meg, hogy az üzenet neve és verziója PAORES 93 revision 1, és az IA (IATA) szervezet definiálta azt.
IFT+3+NO MORE FLIGHTS' – „Interaktív szabad szöveg” szegmens, amely a „NO MORE FLIGHTS” szöveget tartalmazza.
UNT+13+1' – Ez az üzenetzáró szegmens. Azt jelzi, hogy az elküldött üzenet 13 szegmenst tartalmaz.
Az EDIFACT hierarchikus felépítésű, ahol a legfelső szintet interchange-nek (adatcsere) nevezik, az alsó szintek pedig több üzenetet tartalmaznak, amelyek szegmensekből állnak, amelyek viszont összetett elemekből állnak. A legalsó iterációban az ENSZ Trade Data Elements Directory (kb: Kereskedelmi adatok elemjegyzéke, röviden: UNTDED) által definiált elem találhatók; ez az egész EDIFACT szabványban egységesen így van.
Egy csoport vagy szegmens lehet kötelező (M) vagy feltételes (C), és megadható, hogy ismétlődjön. Például:
- A C99 egy szegmens vagy csoport 0 és 99 közötti ismétlődését jelzi - Az M99 egy szegmens vagy csoport 1 és 99 közötti ismétlődését jelöli
A csoport, akárcsak az üzenet, szegmensek vagy csoportok sorozata. A csoport alatti első szegmensnek vagy csoportnak kötelezőnek kell lennie, és a csoportot feltételessé kell tenni, ha a helyzet logikája ezt megkívánja.
|_Service String Advice UNA Opcionális |____Interchange Header UNB kötelező : |___Funkcionális csoportfejléc UNG Feltételes : : |___Üzenetfejléc UNH Kötelező : : : |__ Felhasználói adatszegmensek Igény szerint : : |__ Üzenetelőzetes UNT Kötelező : |__ Funkcionális csoport zárás UNE feltételes |___ Adatcsere zárás UNZ Kötelező
Az XML/EDIFACT XML-alapú szabvány, mely lehetővé teszi az EDIFACT üzenettípusok XML rendszerek általi használatát. Az XML/EDIFACT szabályait a ISO TS 20625 adja meg.