Kroky akce (stručně)

Načtení vstupu e-mailu

Získání HTML přílohy obsah.html, pokud existuje.

Získání plain-text odstavců z těla zprávy.

Sjednocení zdrojů do jednoho textového bloku

U HTML proběhne odstranění formátování („HTML omáčky“).
Použita šablona
removeHtmlTagsz additional-functions.xsl;

Vše se převede na čistý plain-text.

Normalizace textu

Odebrání okrajových mezer.

Redukce vícenásobných mezer na jednu.

Rozbití na jednotlivé logické řádky.

Transformace pomocí XSL šablony

Každý řádek se převede na element <row/>.

Rozlišení typů řádků:

label, name, value — pokud obsahují „:“.

note — pokud neobsahují „:“.
textToRowNodesz additional-functions.xsl;

Vytěžení obsahu leadu

Interpretace <row/> uzlů do datových polí leadu.

Zvládá i více poznámek či více řádků k jednomu labelu.
Popis transformace (HTML →) plain-text → normalizované XML
Tato sekce popisuje, jak se v rámci akce používá XSL šablona, která z HTML obsahu převedeného na text či přímo z textu (typicky těla e-mailu, notifikace, potvrzení formulářů apod.) generuje plně strukturované XML. Výsledkem transformace je jednotný formát vhodný pro další zpracování akcemi, procesy nebo COMEXem.Cíl transformace
<zprava pdk="...">
<obsah>
<row .../>
<row .../>
...
</obsah>
</zprava>
textToRowNodes.
Struktura výstupu <row /> a význam atributů
| Atribut | Kdy se vytváří | Popis |
|---|---|---|
| @label | Pokud řádek obsahuje znak ":" (dvojtečku) | Normalizovaný text před dvojtečkou. |
| @name | Pokud existuje @label | Normalizovaný „název pole“: malé znaky, ASCII, mezery → pomlčky. Bez diakritiky. |
| @value | Pokud existuje @label | Normalizovaný 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. |
Norma chování šablony
1. Každý neprázdný HTML řádek → plain-text
Šablona ignoruje čistě prázdné elementy po stripování HTML:
<div> </div>

prázdné <p>

nadbytečné separátory
2. Řádek obsahující „:“ → položka s label, name, value
Jméno: Jan
<row label="Jméno" name="jmeno" value="Jan"/>
3. Normalizace textu
Probíhá:
trimování mezer

odstranění duplicitních whitespace

odstranění HTML entit

odebrání stylů, tříd, nested struktur
4. Syntéza @name
@name je generován algoritmem:
Lowercase

Odstranění diakritiky

Mezery → -

Jen [a-z0-9-]
"Preferovaný termín návštěvy servisu" → preferovany-termin-navstevy-servisu
5. Řádky bez dvojtečky → @note
Tyto se chápou jako:
samostatné sdělení

doplňující text k předchozí položce (např. u „Poznámka:“)
Poznámka / doplnění: První servis – aktuálně cca 37.000 km.Transformace:
<row label="Poznámka / doplnění" name="poznamka-_-doplneni"/> <row note="První servis – aktuálně cca 37.000 km."/>
6. Více @note za sebou
Je zachováno pořadí, neprovádí se spojování.7. Bloky typu tabulka
Použití XSL šablony v akci
XSL šablona se typicky používá:
v akci typu TF_proc-run / transform

nebo v emailové akci (SMTP/IMAP) jako post-processing

nebo při generování strukturovaných dat z příloh
Struktura použití v akci ( transform):
<action name="parse-html">
<transform>
<input select="/input/html"/>
<stylesheet name="html-to-rows.xsl"/>
<output target="/output/zprava"/>
</transform>
</action>
Výstupem je již očekávaný XML strom <zprava/>.
Příklad: Výsledné XML
Tento výstup odpovídá transformaci obsahu obsaženého v souboru obsah.html (při standardní normalizaci) : <zprava pdk="454">
<obsah>
<row note="Potvrzení objednávky servisu."/>
<row note="Dobrý den,"/>
<row note="obdrželi jsme vaši objednávku servisu vozu ..."/>
<row label="Vaše kontaktní údaje" name="vase-kontaktni-udaje"/>
<row label="Jméno" name="jmeno" value="Josef"/>
<row label="Příjmení" name="prijmeni" value="Novak"/>
...
</obsah>
</zprava>
Implementační poznámky
Robustnost proti různému HTML
Šablona musí umět zpracovat:
<p>, <div>, <span>

seznamy <ul><li>

tabulky <table><tr><td>

inline HTML
Zajištění konzistentního výstupu
Tento formát je ideální pro:
validaci (pole + hodnoty)

vybudování COMEX komponent (přehled emailových polí)

generování dokumentů FDT

napojení na CRM/servisní workflow