Popis šablon akcí v additional-functions.xsl
Přehled všech jmenných XSLT šablon v additional-functions.xsl s parametry a stručným popisem.
Soubor je umístěn v
/shared/actions/_transforms/additional-functions.xsl
a je možné jej do akcí připojit pomocí volby "Jiné soubory šablon" ve výběru šablony

Jednotlivé sekce popisují pojmenované šablony, tedy
<xsl:template name="..."
.
### removeNils
- **Parametry**
- value (string, default '')
- **Popis**
Rekurzivně odstraňuje úvodní znaky '0' z řetězce a vrátí zbytek. Pokud řetězec nezačíná nulou, vrátí jej beze změny.
### getLastPathStep
- **Parametry**
- path (string, default '')
- **Popis**
Z řetězce cesty ve tvaru aaa/bbb/ccc vrátí poslední segment za posledním lomítkem (zde ccc). Implementováno rekurzivním ořezáváním části před /.
### getPathWithoutLastStep
- **Parametry**
- path (string, default '')
- idx (interní index, default 0)
- **Popis**
Vrací vstupní cestu bez posledního segmentu (např. z aaa/bbb/ccc vrátí aaa/bbb). Parametr idx se používá interně při rekurzi a při volání zvenku se ponechává default.
### replace
- **Parametry**
- string (string, default '')
- find (string, default '')
- insert (string, default '')
- **Popis**
Rekurzivní „find/replace“ – v řetězci string nahradí **všechny** výskyty podřetězce find textem insert. Pokud je string nebo find prázdný, vrátí původní string.
### getIconFile
- **Parametry**
- fileRef (string, default '') – očekává se formát path:name:file.ext (flexideo reference)
- **Popis**
Z reference souboru získá název souboru a jeho příponu a vrátí název souboru ikony ve tvaru f-<přípona>.png (např. f-pdf.png). Využívá šablony getFileName a getIconFileType.
### getIconFileType
- **Parametry**
- fileName (string, default '')
- **Popis**
Z názvu souboru vrací „typ“ dle přípony – rekurzivně odřezává vše před tečkou, až zůstane poslední segment bez tečky (např. z report.final.pdf vrátí pdf).
### getFileName
- **Parametry**
- fileRef (string, default '')
- **Popis**
Z reference path:name:file.ext vrátí čistý název souboru (část za druhou dvojtečkou).
### getUnicateBrackets
- **Parametry**
- value (string, default '') – text s opakujícími se závorkami, např. (A)(B)(A)
- skipBracketsOutput (string, default 'no') – při 'no' včetně závorek, jinak jen hodnoty oddělené mezerou
- **Popis**
Z textu obsahujícího položky v závorkách vybere jednotlivé hodnoty **bez duplicit** a postupně je vypíše (např. z (A)(B)(A) vrátí (A)(B) nebo A B). Používá rekurzi a vnitřní kontrolu, zda už položka nebyla jednou zahrnuta.
### getPwdByBigInt
- **Parametry**
- bigInt (číslo / string, default 0) – dvojciferné kódy za sebou, např. 100523...
- **Popis**
Bere vstup jako řetězec dvouciferných kódů a pro každé dvě cifry zavolá getCharByNo, čímž vytvoří „heslový“ řetězec. Rekurzivně zpracovává vstup (první 2 číslice → znak, zbytek → další rekurze).
### getCharByNo
- **Parametry**
- no (číslo, default -1)
- **Popis**
Mapuje číselný kód (0–99) na jeden znak (0–9, a–z, A–Z, některé další znaky dle konkrétní mapy). Používá velkou sekvenci <xsl:when test="$no=...">znak</xsl:when>. Primárně interní služebná šablona pro getPwdByBigInt.
### addNills
- **Parametry**
- value (string, default '') – původní hodnota
- len (číslo, default 10) – cílová délka
- **Popis**
Odstraní mezery z value a:
- pokud je len < 1, vrátí ## (indikace chyby),
- pokud je value delší než len, vrátí řetězec # o délce len,
- jinak doplní zleva nuly tak, aby výsledná délka byla len.
Typicky se používá pro pevnou délku číselných řetězců.
### getMaxNumber
- **Parametry**
- csvNumbers (string, default 0) – seznam čísel oddělených čárkou, např. 10,5,7
- **Popis**
Vrací maximum z čísel uvedených v CSV řetězci. Je jen „wrapper“ nad interní šablonou getMinMaxNumber s nastavením na hledání maxima.
### getMinNumber
- **Parametry**
- csvNumbers (string, default 0)
- **Popis**
Vrací minimum z čísel uvedených v CSV řetězci. Používá getMinMaxNumber s parametrem minValue=true().
### getMinMaxNumber
- **Parametry**
- csvNumbers (string, default 0) – čárkami oddělený seznam čísel
- minValue (boolean, default false()) – true() → minimum, false() → maximum
- resNo (string/číslo, default '') – aktuální nejmenší/největší hodnota (interní)
- **Popis**
Rekurzivně prochází seznam čísel z csvNumbers, porovnává vždy dvě čísla a průběžný výsledek ukládá do resNo. Na konci vrací buď minimální, nebo maximální hodnotu podle minValue. Běžně se volá přes getMinNumber / getMaxNumber.
### MakeItemNodes
- **Parametry**
- count (číslo, default 0) – počet generovaných položek
- groupID (string, default '') – hodnota atributu group-id na kořeni
- recurs (číslo, default 0) – interní rekurzivní čítač
- **Popis**
Vytvoří strukturu:
<items group-id="{groupID}"> <item no="1"/> <item no="2"/> ... </items>
Počet <item> je dán parametrem count. Parametr recurs se používá pouze interně pro rekurzi.
### MakeMultiElementCopy
- **Parametry**
- skeys (node-set/atributy, default xxxx) – seznam klíčů (obvykle atributy @skey/ @psk...)
- from (node-set, default *[@skey]) – zdrojové elementy, z nichž se čerpají hodnoty
- name (string, default 'xxx') – název cílového elementu
- sref (string, default '') – volitelná „cesta“ k podsadě elementů, které se mají zpracovat
- **Popis**
Podle vstupního seznamu skeys sestaví seznam elementů <{name}>:
- při existenci sref se nejprve rekurzivně „dojde“ do zadané podsložky,
- pokud chybí skeys i from, vytvoří jeden prázdný element s skey="#1",
- pokud je from bez skeys, vytvoří dle from elementy s skey="#1",
- jinak pro každý skey vytvoří element s atributy skey, changed="true" a případně deleted="true" pokud pozice přesahuje počet zdrojových prvků.
Typicky se používá pro normalizaci vícenásobných hodnot (multi-value) v replikátoru.
### getNumStringList
- **Parametry**
- value (string, default '') – CSV řetězec, např. 123,4567,89
- minLen (číslo, default 7) – minimální délka hodnoty, která má být zahrnuta
- anyRes (boolean, default false()) – interní informace, zda už byla nějaká hodnota vypsána (kvůli vkládání čárek)
- **Popis**
Z CSV řetězce vybere jen hodnoty, jejichž délka je alespoň minLen, a vrátí je jako CSV řetězec, kde jsou jednotlivé hodnoty uzavřené v apostrofech – např. 1234567,12 → '1234567'. Používá rekurzi.
### extractIDs
- **Parametry**
- value (string, default '') – vstupní text, ve kterém se hledají čísla
- anyNo (boolean, default false()) – interně: zda už bylo nějaké číslo vypsáno
- inNo (boolean, default false()) – interně: zda aktuálně pokračuje čtení jednoho čísla
- **Popis**
Prochází text po znacích a skládá souvislé sekvence číslic do čísel; výsledkem je seznam čísel oddělených čárkami. Pomocné parametry slouží k řízení zápisu čárek a detekci začátku/konce čísla.
### removeDiacritic
- **Parametry**
- value (string, default . = aktuální uzel)
- pretr (string, default = translate(value, 'ěščř...', 'escrr...')) – předpřipravený řetězec po nahrazení diakritiky
- **Popis**
Rekurzivně projde znaky v pretr (tj. value bez diakritiky) a:
- povolené znaky [a-zA-Z0-9_.-] nechá beze změny,
- ostatní znaky nahradí _.
Typicky se používá pro generování „bezpečných“ identifikátorů z textových popisů (např. pro @name).
### translateAmpChars
- **Parametry**
- text (string, default '')
- **Popis**
Rekurzivně zpracuje entitové zápisy začínající & v textu a nahrazuje:
- → mezera,
- > → znak > (full-width),
- < → znak < (full-width),
- & → znak a (specifické chování dle potřeb aplikace).
Pokud žádná z těchto entit nenavazuje, vrátí text beze změn.
### getColorByPdk
- **Parametry**
- pdkNo (číslo, default 1)
- **Popis**
Vypočítá pseudo-náhodnou pastelovou barvu na základě pdkNo:
- spočítá biggerNo = 123 * pdkNo * 123,
- vezme poslední tři číslice, každou převede pomocí basicColors na dvoumístný hex kód,
- výsledkem je barevný kód ve formátu #RRGGBB.
Používá se např. pro konzistentní barevné odlišení položek dle PDK/ID.
### basicColors
- **Parametry**
- no (číslo, default 0)
- **Popis**
Převádí číslo 0–9 na jeden z předdefinovaných dvoumístných hex kódů ( b0, a8, c8, …). Pro jiné hodnoty vrací d4. Primárně interní šablona pro getColorByPdk.
### removeHtmlTags
- **Parametry**
- html (string, default '') – text s HTML značkami, obvykle escapovaný ( <, >)
- **Popis**
Rekurzivně „stripuje“ HTML značky ze vstupního textu:
- bloky <script> a <style> kompletně přeskočí,
- běžné značky nahradí podle typu: např. <div>, <li>, <br>, <tr>, <th>, <h*>, <p> mohou přidat odřádkování nebo tečku •,
- ponechává pouze textový obsah v rozumně čitelné podobě.
Výsledkem je text bez HTML tagů, vhodný pro uložení jako „čistý“ popis.
### dateDiffMonths
- **Parametry**
- dateA (string, default '') – datum ve formátu YYYY-MM-DD nebo YYYY-MM-DDThh:mm:ss
- dateB (string, default '') – totéž
- **Popis**
Vypočítá přibližný rozdíl mezi dateA a dateB v měsících. Nejprve oddělí datum od případného času, rozloží na rok/měsíc/den a spočítá:
(yearB - yearA) * 12 + (monthB - monthA) + (dayB - dayA) div 30
Pokud formát neodpovídá délce 10 znaků, vrátí 0.
### toLCase
- **Parametry**
- value (string, default '')
- **Popis**
Převádí text do malých písmen včetně české diakritiky (rozšířená sada znaků) pomocí funkce translate(). Čísla a některé další znaky ponechává beze změny.
### toUCase
- **Parametry**
- value (string, default '')
- **Popis**
Opačná funkce k toLCase – převádí text do velkých písmen včetně české diakritiky.
### textToRowNodes
- **Parametry**
- text (string, default . = aktuální uzel) – typicky víceradkový text
- crlf (string, default
) – odřádkovací znak (LF)
- **Popis**
Rozseká vstupní text po řádcích podle crlf (konce řádku) a pro každý řádek zavolá šablonu textToRowNode. Výsledkem je několik <row> uzlů, které reprezentují jednotlivé řádky textu (např. pro konverzi „zdivočelých“ e-mailových textů do strukturovaných dat). Zároveň vstupní řádky normalizuje, tedy u hodnot provede odebrání bílých znaků před a za obsahem, uvnitř redukuje případné multiplikované mezery na jednu atp. Zároveň z výsutpu vypustí prázdné řádky bez obsahu.
- **Výstupní atributy uzlu row**
AtributKdy se vytváříPopis
**@label**Pokud řádek obsahuje znak **":"** (dvojtečku)Normalizovaný text *před* dvojtečkou.
**@name**Pokud existuje @labelNormalizovaný „název pole“: malé znaky, ASCII, mezery → pomlčky. Bez diakritiky.
**@value**Pokud existuje @labelNormalizovaný obsah *za* dvojtečkou.
**@note**Pokud řádek NEobsahuje „:“Text řádku jako poznámka. Slouží i pro doplňující popisy k předchozím položkám.
**Příklad** zdrojového textu:
Jméno: Jan
Vytvoří:
<row label="Jméno" name="jmeno" value="Jan"/>
Šablona je využívána v procesu [extrakce leadů z emailu](/supp-fxd-intranet-cz/implementation/mail-to-lead-pg.html).
### textToRowNode
*Pomocná šablona pro **textToRowNodes**.*
- **Parametry**
- text (string, default '') – obsah jednoho řádku
- **Popis**
Z jednoho textového řádku vytvoří <row> uzel:
- předběžně odstraní „podivné“ znaky a normalizuje mezery,
- pokud řádek obsahuje ::
- část před : uloží do atributu @label,
- z ní vygeneruje @name (malá písmena, mezery → -, bez diakritiky, prohnáno removeDiacritic + toLCase),
- část za : uloží do @value,
- pokud : neobsahuje, uloží celý normalizovaný text do atributu @note.
Prázdné řádky se ignorují.