Pomocník systému OBERON
Transformačné šablóny XSLT

Základné informácie > Import a export údajov > XML komunikácia > Transformačné šablóny XSLT

Pri XML komunikácii sa často používajú XSLT transformačné šablóny na konverziu (transformáciu) údajov - buď na zmenu štruktúry XML dokumentu, alebo na transformáciu XML súboru do zrozumiteľného formátu pre používateľa (napr. HTML). Výhodou využitia XSLT šablón je ich relatívne jednoduchá úprava bez vyžadovania zložitejších nástrojov (stačí aj poznámkový blok, prípadne iný editor XSLT šablón). Táto téma obsahuje základné informácie o XSLT transformačných šablónach, ich využití v systéme OBERON a príklad transformačnej šablóny na prevod údajov v štruktúre OBERON XML do inej štruktúry XML.

Základné informácie

Príklad transformačnej šablóny na prevod údajov v štruktúre OBERON XML do inej štruktúry XML

Nasledujúci príklad vykoná konverziu XML štruktúry obchodného partnera používanej systémom OBERON v dokladoch ako sú napr. faktúra, objednávka, výdajka alebo príjemka do inej štruktúry XML. Obdobným spôsobom je možné vykonať aj spätnú konverziu údajov z inej štruktúry XML do štruktúry používanej systémom OBERON.

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>Partizánska 138/2</Street_Name_Full>
                <Postal_Code>058 01</Postal_Code>
                <City>Poprad</City>
            </Address_Residence>
        </BusinessPartner>
            .
            .
    </BusinessPartners>          

Transformačná štruktúra XSLT:

     <?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 -->
                    <identifikator><xsl:value-of select=" @IDNum"/></identifikator> <!-- znak '@' pred identifikátorom 'IDNum' znamená načítanie hodnoty z atribútu -->
                    <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>
                    <sidlo_ulica><xsl:value-of select="Address_Residence/Street_Name_Full"/></sidlo_ulica> <!-- vnorenie do hlbšej úrovne pomocou znaku '/' -->
                    <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>Partizánska 138/2</sidlo_ulica>
            <sidlo_psc>058 01</sidlo_psc>
            <sidlo_obec>Poprad</sidlo_obec>
        </partner>
            .
            .
    </partneri_zoznam>           
Príbuzné témy