Přeskočit na hlavní obsah

XSLT transformace

XSLT transformace pro převod XML formátů

Autor: Petr Pech

Aby ABRA Flexi dokázala načítat a exportovat i jiné XML formáty než ten nativní, lze použít XSLT transformace. Typicky se tím řeší převod dat z jiného ekonomického systému nebo výstup ve formátu, který očekává navazující aplikace.


Jak to funguje

Směr

Kdy se transformace použije

Import

Na XML z těla požadavku se nejdřív aplikuje XSLT transformace a výsledné XML se teprve importuje do ABRA Flexi.

Export

Nejdřív se uplatní filtr, stránkování a úroveň detailu; na výsledné XML se pak aplikuje XSLT transformace.

🚨 XSLT lze použít pouze v kombinaci s XML. S příponou .json volání skončí chybou 400 a hlášením Content is not allowed in prolog.


Použití v REST API

Transformace se vybírá parametrem format, ve kterém se transformace označí identifikátorem — buď zkratkou s prefixem code:, nebo číselným ID:

GET https://demo.flexibee.eu/c/demo/faktura-vydana.xml?format=code:FAKTURY
GET https://demo.flexibee.eu/c/demo/faktura-vydana.xml?format=3

⚠️ Prefix code: je povinný — samotná zkratka bez něj skončí chybou 400 a hlášením Neznámý formát '…' pro XSL transformaci. Stejnou chybu dostanete i u transformace, která ve firmě neexistuje.


Kde transformace žijí

Uživatelské transformace jsou uložené v evidenci xslt, takže se s nimi dá pracovat i přes API. Přehled dostupných transformací vypíšete takto:

GET https://demo.flexibee.eu/c/demo/xslt.json?detail=custom:id,kod,nazev

Vlastnost

Povinná

Význam

kod

ano

Zkratka, kterou pak uvádíte v parametru format.

nazev

ano

Název transformace.

transformace

ano

Samotný XSLT předpis.

popis, poznam

ne

Popis a poznámka.

nazevA, nazevB, nazevC

ne

Název v dalších jazycích (SK, EN, RO).

Jak transformace zakládat a spravovat v aplikaci, popisuje článek Uživatelské transformace.

💡 Než transformaci nasadíte do integrace, ověřte si ji na jediném záznamu — ?limit=1 spolu s format= vrátí malý výstup, na kterém se chyby v předpisu hledají mnohem snáz.


Související

Dostali jste odpověď na svou otázku?