Požadavek tranform
Sekvenční transformace
Vedle možnosti plánovat požadavky jako úlohy nebo je registrovat pro GET použití, je možné také zadávat dynamicky tvořené sekvence požadavků pomocí transformačních kroků.
Sekvenční požadavky s využitím tranformačních šablon jsou zadávány pomocí požadavku transform, který obsahuje dva potomky - dvě části input a steps.
Základní typ(y) uzlu(ů): transform;
<request>
<tranform
stop-on-error="{boolean}"
stop-on-empty="{boolean}"
stop-on-param-error="{boolean}"
id="{string}"
encode="plain|xml|url|base64|hex|unicode"
>
<input ... /> ?
<steps ... /> ?
</tranform>
</request>
Atributy
stop-on-error - při výskytu chyby transformace v požadavku zastaví další postup;(typ: boolean) TYP HODNOTY: boolean;
stop-on-empty - zastaví provádění transformace pokud je výstup prázdný (u perform-request je prázdnost trochu zavádějící, protože třeba prazdný get-document není považován za prázdnou odpověd;(typ: boolean) TYP HODNOTY: boolean;
stop-on-param-error - zastaví provádění transformace pokud zadaný parametr není v šabloně obsazen nebo se jej nepodaří u šablony nastavit;(typ: boolean) TYP HODNOTY: boolean;
id - Typový název, identifikátor - Alfanumerický identifikátor transformace přenášený na výstup;(typ: string) TYP HODNOTY: string;
encode - Výstupní kódování - typ zacházení s obsahem s možnostmi [plain]|xml|url|base64|hex|unicode; encode v tagu transform obsahuje výstupní kodovaní;
Možnosti obsahu:
» plain ~ (výchozí) prostý text bez XML tagů;
» xml ~ Na výstupu je platný XML obsah;
» url ~ URL kódování výstupního obsahu;
» base64 ~ Výstup je zabalen do base64 kódování;
» hex ~ Výstup transformace je hexadecimálně zakódován;
» unicode ~ Výstupní text je kódován pomocí unicode;
Potomci
Uzel input
<input>
<{element} ... > ... </{element}>!
</input>
Atributy
Uzel input neobsahuje žádné atributy.
Potomci
Uzel input umožňuje uvést právě jeden povinný element: Vstupní XML - Uzel s platným XML vstupujícím do prvního kroku požadavku transform;
Uzel steps
<steps>
<perform-transform ... /> *
<perform-request ... /> *
</steps>
Atributy
Uzel steps neobsahuje žádné atributy.
Potomci
Popis uzlu perform-transform, který je potomkem uzlu steps je umístěn v popisu typových uzlů.
Bližší popis viz. perform-transform.
Vyvolá provedení požadavku na vstupu transform nebo použije výstup z transformace jako požadavek, pokud je uveden za transformací.
<perform-request/>
Atributy
Uzel perform-request neobsahuje žádné atributy.
Potomci
Uzel perform-request neobsahuje žádné další elementy, ani žádné jiné číselné či řetězcové hodnoty. Uzel nemá povolen prázdný obsah.
Poznámka k request
Jsou-li výše uvedené atributy nastaveny v tagu transform, pak se vztahují na všechny kroky. Je-li u nějakého kroku tento atribut uveden znovu s opačnou hodnotou, pak má přednost hodnota u kroku. Výchozí hodnota všech atributů je false.
Uzel input obsahuje vždy právě jeden XML element, jinak je celý požadavek neplatný. Tento xml uzel je buď uzel request reprezentující vnořený požadavek na server nebo obsahuje jakýkoli xml element, který je určen k transformaci na serveru do jiného xml nebo do textu. O tom zda jde o transfomraci xml-to-xml nebo o transformaci xml-to-text rozhoduje atribut encode s hodnotami právě buď xml nebo text. Atribut encode může být uveden na místo v kmenovém transform v jednotlivých potomcích. Je-li uveden v kmenu i v potomcích, pak má přednost hodnota bližší, tedy v potomcích.
Uzel steps pak obsahuje sestavu potomků kombinovaných z potomků perform-request a perform-transform. Kombinace potomků pak určuje sekvenci, kterou má server provést (více viz. dále).
Požadavek transform může být využit v základní či rozšířené variantě:
pouze transformace - nejjednodušší využití požadavku transform ve vstupu obsahuje uzel XML určený jako vstup transformace. V popisu kroků pak jediný krok s určením šablony, pomocí které má být transformace vstupního uzlu provedena;
transformace i požadavky - požadavek transform může kombinovat požadavky a jejich přípravu i zpracování výsledků šablonou ve více krocích.
Odpověď
Struktura odpovědi na požadavek tranform vrácená v obálce response:
<response>
<transform
type="ok|error"
id="{string}"
>
<{element} ... > ... </{element}>?
</transform>
</response>
Atributy
type - Obsahuje hodnoty ok nebo error (možnosti obsahu: ok | error)
id - Typový název ze vstupu - Identifikace odpovídajícího transform vstupu v odpovědi serveru, server jen přenáší vstupní id na výstup;(typ: string) TYP HODNOTY: string;
Potomci
Odpověď transform umožňuje uvést jeden volitelný element: Výstup z transform požadavku - Obsahuje buď xml nebo text v požadovaném kódování dle vstupního zadání;
Výraz pro identifikaci chyb v odpovědi serveru: transform[@type='error'] (odkaz na popis detailu: @detail).
Další info
Možnosti využití jsou lépe patrné na příkladu transform požadavku.