Táto téma Pomocníka obsahuje informácie o transformačných šablónach XSLT na import súborov CSV spolu s príslušnými nastaveniami a ostatnými relevantnými informáciami o danej problematike.
Základné informácie
- Popri transformačných šablónach XSLT na import/export súborov XML sa pri XML komunikácii v systéme OBERON používajú aj transformačné šablóny XSLT na import súborov CSV exportovaných z iných systémov.
- V systéme OBERON transformačná šablóna XSLT na import súborov CSV slúži na prevod súborov typu CSV (Comma Separated Values - hodnoty oddelené čiarkami) exportovaných z iných systémov do formátu XML, s ktorým pracuje systém OBERON (OBERON XML). Podpora transformácie je zabudovaná priamo v OBERON-e (tzv. transformátor) a vyžaduje šablónu XSLT (uloženú vo formáte XML), ktorá popisuje spôsob priradenia jednotlivých položiek zo súborov CSV do položiek výsledného súboru XML. Šablóna XSLT má základnú štruktúru zhodnú so štruktúrou výsledného súboru XML.
- Transformačné šablóny XSLT na import súborov CSV umožňujú import:
- bežných súborov CSV - údaje sú oddelené bodkočiarkou, prípadne aj iným oddeľovačom,
- bežných súborov CSV s hlavičkou - údaje sú oddelené bodkočiarkou, prípadne iným oddeľovačom, pričom konverzia údajov sa vykonáva na základe názvu stĺpca v súbore CSV, ktorý sa spravidla nachádza v prvom riadku súboru,
- bežných textových súborov s pevnou šírkou - údaje nie sú oddelené oddeľovačom, ale sú stanovené pevné šírky (presné pozície daných údajov),
- import z dvoch súborov - import napr. faktúr, kde v jednom súbore sú hlavičky a v druhom súbore položky faktúr.
- Šablóna XSLT obsahuje základné nastavenia v sekcii Settings na správne načítanie a spracovanie súboru CSV. Vzorovú šablónu XSLT na import súborov CSV je možné získať na webovej stránke www.exalogic.sk v sekcii Na stiahnutie - XML komunikácia - súbory alebo vyexportovaním jedného dokladu (záznamu) danej evidencie do súboru XML. Na úpravu súboru XML je možné použiť vstavaný XML editor, prípadne ľubovoľný iný, napr. XML Notepad.
Základné nastavenia transformačnej šablóny
<?xml version="1.0" encoding="UTF-8"?>
<OBERON>
<Header>
<Settings>
<CSVHeaderLine>1</CSVHeaderLine>
<CSVDelimiters>;</CSVDelimiters>
<CSVFieldWidths>5; 5; 8; 10</CSVFieldWidths>
<CSVEncoding>windows-1250</CSVEncoding>
<CSVDateFormat>d.M.yyyy</CSVDateFormat>
<CSVDecimalSeparator>,</CSVDecimalSeparator>
<XMLDateFormat>dd.MM.yyyy</XMLDateFormat>
<XMLDiscardEmpty>True</XMLDiscardEmpty>
<CSVInputFile>faktura_polozky.csv</CSVInputFile> <CSVRowDataType>//OBERON//Data//InvoicesIssued//Record</CSVRowDataType>
<CSVRowDataType>//OBERON//Data//InvoicesIssued//Record//Items//Item</CSVRowDataType>
</Settings>
</Header>
</OBERON>
Popis jednotlivých nastavení (default je použitý v prípade, že chýba položka alebo je neplatná)
- CSVHeaderLine = 1 (default: 0 - nemá riadok s popisom) číslo riadka, kde je popis stĺpcov súboru CSV. Tento popis je možné použiť ako identifikátor stĺpca. Ak nie je definovaný, potom nie je možné používať indexovanie stĺpcov menom.
- CSVDelimiters = ; (default: ;) zoznam znakov, ktoré sú použité ako oddeľovače jednotlivých položiek v riadku súboru CSV. Nesmie byť nastavený parameter CSVFieldWidths.
- CSVFieldWidths = 5; 5; 8; 10 (default: ) nastavuje šírku jednotlivých stĺpcov v prípade, že CSV je vo formáte s pevnou šírkou stĺpcov.
- CSVEncoding = windows-1250 (default: kódovanie nastavené na počítači) nastavenie kódovania, v ktorom je uložený súbor CSV.
- CSVDateFormat = d.M.yyyy (default: = d.M.yyyy) nastavenie formátu dátumu v súbore CSV.
- CSVDecimalSeparator = . (default: .) nastavenie oddeľovača desatinnej časti čísla v súbore CSV.
- XMLDateFormat = dd.MM.yyyy (default: = dd.MM.yyyy) nastavenie formátu dátumu vo výstupnom súbore XML (neodporúča sa meniť).
- XMLDiscardEmpty = True (default: False) nastavenie na True spôsobí, že nenastavené položky nebudú vo výslednom súbore XML.
- CSVInputFile = faktura_polozky.csv názov ďalšieho súboru, ktorý obsahuje doplnkové CSV údaje pre import (napr. v prípade oddelených súborov faktúr a položiek faktúr). Táto položka sa môže opakovať. Súbory sú indexované v poradí : [0] = súbor z dialógu importu, [1..n] = súbory z CSVInputFile. K hodnote indexu aktuálne spracovávaného súboru sa dá pristupovať pomocou výrazu [[IndexFile]].
- CSVRowDataType = //OBERON//Data//InvoicesIssued//Record zoznam typov, ktoré sa môžu vyskytnúť ako riadok súboru CSV. Táto položka sa môže opakovať. Pred začatím spracovania každého riadku sa vyhodnocuje, ktorý zo zadaných typov vyhovuje. Vyhovujúci typ sa použije na spracovanie riadku.
Dátová časť transformačnej šablóny
<?xml version="1.0" encoding="UTF-8"?>
<OBERON>
<Data>
<InvoicesIssued>
<Record CSVFieldValidate="= #[[IndexFile]] = 0" CreateReference="#[Číslo faktúry]">
<Document_Number>#[Číslo faktúry]</Document_Number>
<Document_Type>Faktúra</Document_Type>
<Date_Document>@[Dátum]</Date_Document>
<Date_Delivery>@[Dátum dod.listu]</Date_Delivery>
<Date_Expiration/>
<Date_VAT/>
<Expiration_Term>$[Platobná podmienka]</Expiration_Term>
<Number_DeliveryNote>#{5}</Number_DeliveryNote>
<Number_Order>#{BF}</Number_Order>
<AccountCoding_Number>10</AccountCoding_Number>
<Document_Classification CSVTranslate="Almelo,NL; Veldhoven=Veldhoven,NL ">$[Miesto odoslania]</Document_Classification>
</InvoicesIssued>
</Data>
</OBERON>
Hodnota (text) položky, ktorá obsahuje výraz, bude vo výslednom súbore XML obsahovať výsledok tohto výrazu.
Popis položky a jej atribútov (default je použitý v prípade, že chýba položka alebo je neplatná)
- Hodnota položky = Výraz (default: )
- CSVFieldValidate = Výraz (default: 1(True)) výraz, ktorý vracia, či daná položka je platná. Ak nie je platná, nevloží sa do výsledného súboru XML a nebudú sa spracovávať jej podpoložky. Hodnota je neplatná, ak výraz vráti 0 (False).
- CSVTranslate ="Almelo,NL; Veldhoven=Veldhoven,NL " (default: ) transformačná tabuľka na prevod načítaných hodnôt z CSV bunky vo formáte : CSVhodnota1=Nová hodnota1; CSVhodnota2=Nová hodnota2.
- DefaultValue = Výraz (default: ) hodnota, ktorá sa použije v prípade, že hodnota položky aj po spracovaní výrazu ostane prázdna.
- CreateReference = Výraz (default: ) systém si uloží tento element do zoznamu referencií pod touto hodnotou na neskoršie použitie pri vkladaní podpoložiek pomocou InsertToReference.
- InsertToReference = Výraz (default: ) hľadá referenčný element s touto hodnotou. Element sa hľadá v zozname, ktorý bol vytvorený pomocou CreateReference.
Výrazy
Sú použité na vytvorenie výslednej hodnoty podľa požiadaviek. Umožňujú napr. spájať texty a vykonávať základné matematické operácie a porovnania hodnôt a logické operácie.
Aktuálne podporované vnútorné premenné (všetky sa dajú použiť aj ako text). Označenie typu $, #, @ je povinné.
- #[[IndexFile]] - vráti index aktuálne spracovávaného súboru (číslované od 0).
- @[[ActualDate]] - vráti aktuálny dátum.
Indexovanie stĺpcov súboru CSV. Označenie typu $, #, @ je povinné.
- [názov stĺpca] - v prípade, že je nastavené číslo riadka hlavičky súboru CSV.
- {index stĺpca} - je možné použiť číslo (1,2,3...).
- {pomenovaný index stĺpca} - index stĺpca ako sa používa v Exceli (A,B,C,...,AA,AB...).
Vyhodnotenie výrazov sa vykonáva takto:
- Načítanie hodnôt vnútorných premenných - nahradí túto časť obsahom tejto bunky z aktuálne spracovávaného CSV riadka.
$[[názov premennej]] - načíta premennú ako text.
#[[názov premennej]] - načíta premennú ako číslo (iba ak to umožňuje).
@[[názov premennej]] - načíta premennú ako dátum (iba ak to umožňuje).
- Načítanie obsahu CSV buniek a vnútorných premenných - nahradí túto časť obsahom tejto bunky z aktuálne spracovávaného CSV riadka.
$[názov CSV stĺpca], ${index} - načíta hodnoty ako text.
#[názov CSV stĺpca], #{index} - načíta hodnoty ako číslo.
@[názov CSV stĺpca], @{index} - načíta hodnoty ako dátum.
- Operácie s textom - umožňuje aktuálne spájať text pomocou operátora +.
Treba dodržať typ načítaných údajov ako text a vlastné texty vkladať do úvodzoviek,
napr. : $[číslo účtu] + "/" + $[kód banky].
- Matematické operácie - umožňuje vypočítať jednoduché matematické výrazy. Výpočet sa bude robiť iba v prípade, že sa výraz začína znakom =,
napr. = #[cena bez dph] * (#[sadzba dph]/100 + 1).
- Logické operácie - umožňuje vykonať porovnávanie operátormi =,!=,<,>,<=,>= a zreťaziť viac logických operácií kľúčovými slovami and, or, xor. Výpočet sa bude robiť iba v prípade, že sa výraz začína znakom =.
Príklady
Naplnenie čísla faktúry zo stĺpca "Číslo faktúry" (č. 5, E) do položky "Document_Number"
- <Document_Number>#[ Číslo faktúry]</Document_Number>
- <Document_Number>#{5}</Document_Number>
- <Document_Number>#{E}</Document_Number>
Vloženie položky, keď je hodnota nenulová
- <Item CSVFieldValidate="= #[Základ vyš. DPH] != 0"></Item>
Transformácia položky "Spôsob úhrady" na iné texty
- <Payment_Method
CSVTranslate="PP=Prevodný príkaz; PT="POS terminál";">
$[Spôsob úhrady]
</Payment_Method>
Použitie default hodnoty, ak nie je vyplnená v súbore CSV
- <CurrencyCode DefaultValue="EUR">$[Mena]</CurrencyCode>
Validácia položky iba pri spracúvaní prvého súboru CSV a vytvorenie referencie podľa čísla faktúry
- <Record
CSVFieldValidate="= #[[IndexFile]] = 0"
CreateReference="#[Číslo faktúry]">
...
</Record>
Validácia položky iba pri spracúvaní druhého súboru CSV a vloženie tejto položky do položky so zhodným číslom faktúry
- <Item
CSVFieldValidate="= #[[IndexFile]] = 1"
InsertToReference="#[Číslo faktúry]">
...
</Item>
Príbuzné témy