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;

syntax
<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

syntax
<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

syntax
<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í.

syntax
<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:

syntax
<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.


Požadavek get-userPožadavek change-passwordPožadavek actionPožadavek send-requestPožadavek send-messagePožadavek confirm-messagePožadavek get-messagesPožadavek tranformPožadavek set-tempPožadavek get-tempPožadavek general-lockPožadavek encryptPožadavek decryptPožadavek max-keyPožadavek reload-sslPožadavek get-versionsPožadavek uuidPožadavek cnthashPožadavek rand