XML komunikácia

Jednou z možností ako exportovať údaje z OBERON-u alebo naopak importovať do OBERON-u je pomocou XML komunikácie. XML komunikáciu predstavuje výmenu súborov vo formáte XML, v ktorom sú uložené prenášané údaje. Najčastejšie sa exportujú/importujú údaje dokladov ako faktúra, objednávka, výdajka a podobne.

Výmena XML dokumentov môže prebiehať v rámci jednej firmy (napr. pri viacerých pobočkách), ďalej medzi rôznymi účtovnými jednotkami ktoré používajú OBERON (teda rovnaký softvér) a nakoniec aj medzi rôznymi účtovnými jednotkami ktoré používajú rozdielny účtovný (skladový) softvér.

XML komunikáciu predstavujú súbory vo formáte XML, ktoré sú pre OBERON presne špecifického a daného formátu (ide o tzv. natívny formát OBERON XML). Aby vedel OBERON importovať údaje z iného systému s rozdielnou štruktúrou XML súboru, existuje možnosť pred samotným importom automaticky vykonať konverziu (transformáciu) týchto údajov. Konverziu údajov je možné vykonať niekoľkými spôsobmi, pričom najčastejšie je to pomocou XSLT transformačných šablón. Obdobne je možné postupovať aj pri exporte údajov.

Schématický diagram exportu údajov

xml-komunikacia-export-model

Schématický diagram importu údajov

xml-komunikacia-import-model

Transformačné XSL šablóny (XSLT)

Transformačné šablóny sú súčasťou jazyka XSL (eXtensible Stylesheet Language) slúžiaceho pre tvorbu štýlov zobrazenia k súborom XML. XSL transformačné šablóny (XSLT) slúžia primárne pre prevod zo štruktúry XML dát do štruktúry HTML pre prehľadné zobrazenie dát užívateľovi. Využívajú sa však aj pre prevod medzi rôznymi štruktúrami XML prípadne aj inými textovými formátmi, medzi ktoré najčastejšie patria napríklad CSV súbory, prípadne súbory tabuľky XML pre Microsoft Excel a iné.

V systéme OBERON - Agenda firmy je možné využiť XSLT šablóny pre import alebo export údajov z iných systémov s rozdielnou štruktúrou komunikácie pomocou XML súborov. Pred importom alebo po exporte je možné vykonať konverziu XML dát pomocou transformačnej šablóny a zabezpečiť tak kompatibilitu dát pre jednotlivé systémy.

Príklad zdrojovej XML štruktúry:

<?xml version="1.0" encoding="UTF-8"?> 
</BusinessPartners>
    <BusinessPartner IDNum="1001">
    <Name>Test, s.r.o.</Name>
    <IdentificationNumber>31658768</IdentificationNumber>
    <IdentificationNumber_Tax>2225557779</IdentificationNumber_Tax>
    <IdentificationNumber_VAT>SK2225557779</IdentificationNumber_VAT>
    <Branch_Name>Pobočka</Branch_Name>
    <CustomsOffice_Number_SBL>12365478901</CustomsOffice_Number_SBL>
    <Address_Residence>
        <Street_Name_Full>Pod mostom 138/2</Street_Name_Full>
        <Postal_Code>058 01</Postal_Code>
        <City>Poprad</City>
    </Address_Residence>
    </BusinessPartner>
    .
    .
</BusinessPartners>

XSLT transformačná štruktúra:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<partneri_zoznam>
    <!-- XPath výraz pre výber požadovaných položiek zo štruktúry XML a prechádzanie 
    všetkými elementmi typu 'BusinessPartner' nachádzajúcimi sa v otcovskom elemente 
    'BusinessPartners' zdrojovej XML štruktúry -->
    <xsl:for-each select="BusinessPartners/BusinessPartner">
    <partner>
        <!-- mapovanie vlastností pôvodného xml do novej štruktúry -->
	
        <!-- znak '@' pred identifikátorom 'IDNum' znamená načítanie hodnoty atribútu -->
        <identifikator><xsl:value-of select="@IDNum"/></identifikator>
        <nazov><xsl:value-of select="Name"/></nazov>
        <ico><xsl:value-of select="IdentificationNumber"/></ico>
        <dic><xsl:value-of select="IdentificationNumber_Tax"/></dic>
        <ic_dph><xsl:value-of select="IdentificationNumber_VAT"/></ic_dph>
        <pobocka_nazov><xsl:value-of select="Branch_Name"/></pobocka_nazov>
        <cislo_sbl><xsl:value-of select="CustomsOffice_Number_SBL"/></cislo_sbl>
        <!-- vnorenie do hlbšej úrovne pomocou znaku '/' -->
        <sidlo_ulica>
            <xsl:value-of select="Address_Residence/Street_Name_Full"/>
        </sidlo_ulica>
        <sidlo_psc><xsl:value-of select="Address_Residence/Postal_Code"/></sidlo_psc>
        <sidlo_obec><xsl:value-of select="Address_Residence/City"/></sidlo_obec> 
    </partner>
    </xsl:for-each>
</partneri_zoznam>  
</xsl:template>

Výsledný XML súbor po vykonaní konverzie pomocou XSLT šablóny:

<?xml version="1.0" encoding="UTF-8"?>
<partneri_zoznam>
    <partner>
        <identifikator>1001</identifikator>
        <nazov>Test, s.r.o.</nazov>
        <ico>31658768</ico>
        <dic>2225557779</dic>
        <ic_dph>SK2225557779</ic_dph>
        <pobocka_nazov>Pobočka</pobocka_nazov>
        <cislo_sbl>12365478901</cislo_sbl>
        <sidlo_ulica>Pod mostom 138/2</sidlo_ulica>
        <sidlo_psc>058 01</sidlo_psc>
        <sidlo_obec>Poprad</sidlo_obec>
    </partner>
    .
    .
</partneri_zoznam>