EDIFACT i XML 1. dio: Arhitektura, sintaksa i kanonski XML podatkovni model
U prvom dijelu naše serije od četiri članka analiziramo strukturne razlike između EDIFACT toka segmenata i hijerarhijskih XML stabala, pravila kodiranja znakova te kanonske integracijske tokove.
Desetljećima je UN/EDIFACT (United Nations / Electronic Data Interchange for Administration, Commerce and Transport) činio temelj međunarodne trgovine i automatizacije opskrbnih lanaca. Međutim, u eri modernih ERP sustava u oblaku, REST API sučelja i platformi za e-nabavu (kao što su SAP Ariba, Coupa i Peppol), primarni interni format za obradu podataka postao je XML (Extensible Markup Language). U ovoj novoj četverodijelnoj seriji detaljno istražujemo inženjersku praksu konverzije EDIFACT → XML: od izgradnje temeljnih sintaktičkih stabala do preciznog mapiranja narudžbenica (ORDERS), otpremnica (DESADV) i komercijalnih računa (INVOIC).
Prvi dio postavlja arhitektonske temelje: kako pretvoriti plosnati EDIFACT niz znakova u hijerarhijsko XML DOM stablo, kako upravljati kontrolnim i escape znakovima iz UNA segmenta te kako osmisliti pouzdan kanonski XML model podataka.
Strukturne razlike: Plosnati segmenti naspram hijerarhijskih XML stabala
Filozofija standarda EDIFACT i XML bitno se razlikuje. Dok je EDIFACT razvijen 1980-ih za mrežne veze malih brzina (uz minimalnu veličinu bajtova i separatorsko sažimanje), XML je samoopisiv, objektni format organiziran u obliku stabla elemenata:
| Značajka | UN/EDIFACT (npr. D96A) | Kanonski XML (XML Schema) |
|---|---|---|
| Prikaz podataka | Plosnati tekstualni niz sa segmentima (BGM, DTM) i separatorima (+, :, '). | Ugniježđena struktura stabla s odnosima roditelj-dijete (Parent-Child). |
| Identifikacija polja | Redoslijedna pozicija i kvalifikator (npr. DTM+137:20261021:102'). | Samoopisne XML oznake (npr. <IssueDate format="102">2026-10-21</IssueDate>). |
| Izražavanje hijerarhije | Logičke grupe segmenata (petlje / Loops) koje otvaraju okidni (trigger) segmenti. | Prirodno ugniježđivanje XML elemenata (Nested elements). |
| Validacija sheme | Katalozi UNSM standarda i tablice definicije segmenata. | W3C XML Schema Definition (XSD) sa strogim tipovima podataka (datumi, decimalni brojevi). |
Proces parsiranja: Od niza UNA do sintaktičkog stabla (AST)
Konverteri formata EDIFACT → XML (bilo da je riječ o integracijskim alatima poput Altova MapForce, Apache Camel, Smooks ili prilagođenim rješenjima) provode parsiranje u tri faze:
- Čitanje separatora (Segment UNA): Ako poruka započinje opcionalnim nizom
UNA:+.? ', parser dinamički definira separatore:- Separator komponenti (zadano: dvotočka
:) - Separator elemenata podataka (zadano: plus
+) - Oznaka decimalnog mjesta (zadano: točka
.) - Znak za poništavanje / escape (zadano: upitnik
?) - Završni znak segmenta (zadano: apostrof
')
- Separator komponenti (zadano: dvotočka
- Obrada escape znakova: Kada poslovni podatak sadrži kontrolni znak (npr. naziv tvrtke: "Schmidt?+Co"), konverter mora prepoznati sekvencu
?+i pretvoriti je u čist znak u XML-u (ispravno entitetski kodiran kao&). - Prepoznavanje petlji (Segment Groups): EDIFACT nema oznake za zatvaranje grupa. Završetak grupe stavaka (npr.
LINpetlje) impliciran je pojavom sljedećegLINsegmenta ili sažetka (UNS+S'). Parser mora voditi stanje hijerarhije putem konačnog automata.
Modeli kanonskog XML-a: Generički naspram semantičkog XML-a
U praksi se primjenjuju dva modela strukturiranja XML-a:
1. Generički EDIFACT-XML (Nisko-razinsko AST stablo)
Ovaj pristup preslikava EDIFACT strukturu 1:1 u XML bez interpretacije poslovnog značenja, što je izvrsno za međukorak:
<?xml version="1.0" encoding="UTF-8"?>
<Interchange xmlns="http://edifact.hu/schema/canonical/d96a">
<UNB>
<S001><e0001>UNOC</e0001><e0002>3</e0002></S001>
<S002><e0004>5991234567890</e0004><e0007>14</e0007></S002>
<S003><e0010>5999876543210</e0010><e0007>14</e0007></S003>
<S004><e0017>261021</e0017><e0019>1030</e0019></S004>
<e0020>000842</e0020>
</UNB>
<Message>
<UNH>
<e0062>1</e0062>
<S009><e0065>ORDERS</e0065><e0052>D</e0052><e0054>96A</e0054><e0051>UN</e0051></S009>
</UNH>
<BGM>
<C002><e1001>220</e1001></C002>
<e1004>PO-2026-9912</e1004>
<e1225>9</e1225>
</BGM>
</Message>
</Interchange>
2. Semantički kanonski XML (Poslovni kanonski XML)
U stvarnim integracijama generičko se stablo prevodi u poslovni format gdje su kriptične šifre zamijenjene transparentnim poslovnim nazivima:
<?xml version="1.0" encoding="UTF-8"?>
<PurchaseOrder xmlns="http://edifact.hu/schema/b2b/order/v1">
<OrderHeader>
<OrderNumber>PO-2026-9912</OrderNumber>
<OrderDate>2026-10-21</OrderDate>
<MessageType>ORDERS_D96A</MessageType>
<Buyer>
<GLN>5991234567890</GLN>
<Name>Pannon Trgovina d.o.o.</Name>
</Buyer>
<Supplier>
<GLN>5999876543210</GLN>
<Name>Proizvodnja Preciznih Dijelova d.o.o.</Name>
</Supplier>
</OrderHeader>
</PurchaseOrder>
Česte sintaktičke zamke pri konverziji EDIFACT u XML
- Neobrađeni posebni znakovi: Ako naziv partnera sadrži
&ili<, a konverter ga ne zamijeni s&ili ne stavi u<![CDATA[ ... ]]>, nastali XML bit će neispravan (Well-formedness error). - Formati datuma (DTM kodovi): Oznaka
102u EDIFACT-u označava formatGGGGMMDD, dok203nosi točnost do minute (GGGGMMDDSŠMM). XML standard (ISO 8601) zahtijeva crtice (2026-10-21), što konverter mora normalizirati. - Nedostajući završni apostrof: Prilikom oštećenog mrežnog prijenosa nedostatak apostrofa (
') uzrokuje da parser sljedeći segment protumači kao sadržaj polja, rušeći strukturu dokumenta. - Strog redoslijed segmenata: EDIFACT nalaže točan slijed segmenata. Ako XSD shema koristi
<xs:sequence>, pogrešan redoslijed generiranih oznaka izazvat će grešku validacije.
Pregled serije
U nastavku ove serije istražit ćemo transformaciju ključnih poslovnih poruka:
- 2. dio: Narudžbe: prevođenje EDIFACT ORDERS poruke u SAP Ariba cXML i Peppol BIS Order 3.0 UBL.
- 3. dio: Logistika i otprema: mapiranje DESADV najave pošiljke (CPS stablo pakiranja, SSCC kodovi) na UBL Despatch Advice i WMS XML.
- 4. dio: Financije i računi: transformacija EDIFACT INVOIC poruke u Peppol Billing 3.0 i mađarski NAV Online Számla 3.0 XML.
Želite povezati svoje postojeće EDIFACT poruke s modernim XML ili API sustavima u oblaku? Testirajte svoje poruke u našem validatoru ili zatražite savjet našeg tima inženjera!