← Članci · EDIFACT i XML

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čajkaUN/EDIFACT (npr. D96A)Kanonski XML (XML Schema)
Prikaz podatakaPlosnati tekstualni niz sa segmentima (BGM, DTM) i separatorima (+, :, ').Ugniježđena struktura stabla s odnosima roditelj-dijete (Parent-Child).
Identifikacija poljaRedoslijedna pozicija i kvalifikator (npr. DTM+137:20261021:102').Samoopisne XML oznake (npr. <IssueDate format="102">2026-10-21</IssueDate>).
Izražavanje hijerarhijeLogičke grupe segmenata (petlje / Loops) koje otvaraju okidni (trigger) segmenti.Prirodno ugniježđivanje XML elemenata (Nested elements).
Validacija shemeKatalozi 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:

  1. Č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 ')
  2. 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 &amp;).
  3. Prepoznavanje petlji (Segment Groups): EDIFACT nema oznake za zatvaranje grupa. Završetak grupe stavaka (npr. LIN petlje) impliciran je pojavom sljedećeg LIN segmenta 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 &amp; ili ne stavi u <![CDATA[ ... ]]>, nastali XML bit će neispravan (Well-formedness error).
  • Formati datuma (DTM kodovi): Oznaka 102 u EDIFACT-u označava format GGGGMMDD, dok 203 nosi 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!