Sdílet prostřednictvím


Proces transformace textových šablon

Proces transformace textové šablony přebírá jako vstup soubor textové šablony a jako výstup vygeneruje nový textový soubor. Pomocí textových šablon můžete například vygenerovat kód jazyka Visual Basic nebo C# nebo můžete vygenerovat sestavu HTML.

V tomto procesu se účastní tři komponenty: modul, hostitel a procesory direktiv. Motor řídí proces; komunikuje s hostitelem a procesorem direktiv za účelem vytvoření výstupního souboru. Hostitel poskytuje veškerou interakci s prostředím, například vyhledání souborů a sestavení. Procesor direktiv přidává funkce, například čtení dat ze souboru XML nebo databáze.

Proces transformace textové šablony se provádí ve dvou krocích. Nejprve modul vytvoří dočasnou třídu, která se označuje jako vygenerovaná transformační třída. Tato třída obsahuje kód, který je generován direktivy a řídicí bloky. Potom modul zkompiluje a spustí vygenerovanou transformační třídu pro vytvoření výstupního souboru.

Komponenty

Komponenta Popis Přizpůsobitelné (Ano/Ne)
Modul Součást modulu řídí proces transformace textové šablony. Ne.
Hostitelský počítač Hostitel je rozhraní mezi modulem a uživatelským prostředím. Visual Studio je hostitelem procesu transformace textu. Ano. Můžete napsat vlastního hostitele.
Procesory direktiv Procesory direktiv jsou třídy, které zpracovávají direktivy v textových šablonách. Direktivy můžete použít k poskytnutí dat textové šabloně ze vstupního zdroje. Ano. Můžete psát vlastní procesory direktiv.

Modul

Modul obdrží šablonu jako řetězec z hostitele, který zpracovává všechny soubory, které se používají v procesu transformace. Modul pak požádá hostitele, aby vyhlašil všechny vlastní procesory direktiv a další aspekty prostředí. Modul pak zkompiluje a spustí vygenerovanou transformační třídu. Modul vrátí vygenerovaný text hostiteli, který obvykle uloží text do souboru.

Hostitel

Hostitel zodpovídá za cokoli, co souvisí s prostředím mimo proces transformace, včetně následujících:

  • Vyhledání textových a binárních souborů požadovaných modulem nebo procesorem direktiv. Hostitel může prohledávat adresáře a globální mezipaměť sestavení za účelem vyhledání sestavení. Hostitel může najít kód procesoru vlastních direktiv pro modul. Hostitel může také vyhledat a číst textové soubory a vracet jejich obsah jako řetězce.

  • Poskytuje seznam standardních sestavení a oborů názvů, které modul používá k vytvoření vygenerované transformační třídy.

  • Poskytnutí domény aplikace, která se používá při kompilaci modulu a spuštění vygenerované transformační třídy. K ochraně hostitelské aplikace před chybami v kódu šablony se používá samostatná doména aplikace.

  • Zápis vygenerovaného výstupního souboru

  • Nastavení výchozí přípony pro vygenerovaný výstupní soubor

  • Zpracování chyb transformace textových šablon Hostitel může například zobrazit chyby v uživatelském rozhraní nebo je zapsat do souboru. (V sadě Visual Studio se chyby zobrazují v okně chybové zprávy.)

  • Poskytnutí požadované hodnoty parametru, pokud uživatel volal direktivu bez zadání hodnoty. Procesor direktiv může zadat název direktivy a parametr a požádat hostitele, aby zadal výchozí hodnotu, pokud ji má.

Direktivy a procesory direktiv

Direktiva je příkaz v textové šabloně. Poskytuje parametry pro proces generování. Direktivy obvykle definují zdroj a typ modelu nebo jiného vstupu a příponu názvu souboru výstupního souboru.

Procesor direktiv může zpracovat jednu nebo více direktiv. Při transformaci šablony musíte mít nainstalovaný procesor direktiv, který dokáže řešit direktivy v šabloně.

Direktivy fungují přidáním kódu do generované třídy transformace. Voláte direktivy z textové šablony a modul zpracuje všechna volání direktiv při vytváření vygenerované transformační třídy. Po úspěšném volání direktivy se zbytek kódu, který napíšete v textové šabloně, může spoléhat na funkčnost, kterou direktiva poskytuje. Můžete například provést následující volání direktivy import v šabloně:

<#@ import namespace="System.Text" #>

Standardní procesor direktiv to převede na using příkaz ve vygenerované transformační třídě. Třídu pak můžete použít StringBuilder ve zbytku kódu šablony, aniž byste ji opravovali jako System.Text.StringBuilder.