
テンプレートプロセッサ(テンプレートエンジンまたはテンプレートパーサーとも呼ばれる)は、テンプレートとデータ(データモデルで定義)を組み合わせて結果のドキュメントまたはプログラムを生成するように設計されたソフトウェアです。[ 1 ] [ 2 ] [ 3 ]テンプレートが記述される言語は、テンプレート言語またはテンプレート言語と呼ばれます。この記事では、結果ドキュメントとは、ドキュメント、Webページ、ソースコード(ソースコード生成)など、全体または断片を含むあらゆる種類のフォーマットされた出力を指します。テンプレートエンジンは通常、 Webテンプレートシステムまたはアプリケーションフレームワークの一部として含まれており、プリプロセッサまたはフィルターとしても使用できます。
テンプレート エンジンには通常、プレーン テキストを処理する機能に重点を置いた、ほとんどの高水準プログラミング言語に共通する機能が含まれています。
次のような機能があります。
テンプレートプロセッサは通常、システムやフレームワークの一部として使用される独立したソフトウェアですが、シンプルなテンプレート言語は、汎用プログラミング言語の文字列処理機能や、テキストエディタやワードプロセッサなどのテキスト処理プログラムによく組み込まれています。テンプレート言語は、本格的なテンプレートプロセッサのより高度な機能とは対照的に、一般的に単純な置換のみの言語ですが、ロジックを含む場合もあります。
簡単な例としては、多くのプログラミング言語で使用されている「printf」という印刷書式文字列や、多くのテキストエディタやソースコードエディタで使用されているスニペットなどが挙げられます。ワードプロセッサではテンプレートが一般的な機能であり、テンプレートへの自動入力はしばしば「差し込み印刷」と呼ばれます。
構文解析とテンプレートの相補的な性質を示す例として、sedsテキストプロセッサの(substitute)コマンドが挙げられます。これは、 edテキストエディタの検索置換機能に由来しています。置換コマンドは という形式です。ここでは入力を解析するための正規表現であり、 は出力用の単純なテンプレートです。出力テンプレートは、リテラルテキスト、または「完全一致」を表す文字を含む書式文字列、あるいはn番目の部分式を表す特殊エスケープシーケンスから までのいずれかです。例えば、 は「cat」または「dog」をすべて「cats」または「dogs」に置き換えますが、既存の「s」は重複しません。は正規表現の最初の(そして唯一の)部分式であり、 は書式文字列でこれを出力に置き換えます。 s/regexp/replacement/regexpreplacement&\1\9s/(cat|dog)s?/\1s/g(cat|dog)\1
すべてのテンプレート処理システムは、少なくとも次の主要要素で構成されます。
リレーショナルデータベース、 XMLなどのソースファイル、フラットファイルデータベースの代替形式、スプレッドシート、その他様々なフォーマット済みデータソースが対象となります。テンプレート処理システムの中には、使用できるデータの種類が制限されているものもあります。また、最大限の柔軟性を備え、様々な種類のデータに対応できるように設計されたものもあります。
ソース テンプレートは、伝統的に次のように指定されます。
テンプレート エンジンは次の処理を担当します。
さらに、一部のテンプレート エンジンでは追加の構成オプションが許可されます。
これらは、ドキュメント全体またはドキュメントのフラグメントで構成される場合があります。
テンプレート処理は、様々な状況で様々な目的に使用されます。具体的な目的は通常、使用するソフトウェアアプリケーションまたはテンプレートエンジンによって異なります。しかし、テンプレート処理システムの柔軟性により、元の設計者が当初意図していなかった用途への型破りな使用が可能になることも少なくありません。
テンプレートエンジンは、現代のプログラミング言語の主要な機能をすべて備えた、特定の種類のテンプレート処理モジュールです。テンプレートエンジンという用語は、テンプレートとデータを処理してテキストを出力することを主目的または唯一の目的とするプログラミング言語を一般化して表すために発展しました。この用語は、Webテンプレートシステムを用いたWeb開発において最も顕著に用いられますが、他の文脈にも適用されます。[ 4 ]
ドキュメント生成フレームワークでは通常、ドキュメント生成の中心モデルとしてテンプレート処理が使用されます。
ソース コード生成ツールは、特定のアプリケーション ドメイン、特定の組織、またはコンピュータ プログラマーの製造プロセスを簡素化するために、抽象データ モデル (UML、リレーショナル データ、ドメイン固有のエンタープライズ データ ストアなど) からのソース コード(結果ドキュメントとして) の生成をサポートします。
ウェブテンプレートエンジンは、ウェブテンプレートとソースデータ(通常はリレーショナルデータベースから取得)を処理し、1つ以上の出力ウェブページまたはページフラグメントを生成します。通常、ウェブテンプレートシステムまたはアプリケーションフレームワークの一部として組み込まれています。現在、テンプレート処理ソフトウェアは、ウェブ開発の文脈で最も頻繁に使用されています。
XSLTはW3Cによって設計されたテンプレート処理モデルです。主にXMLデータ(Webドキュメントやその他の出力形式)の変換を目的として設計されています。
Perl、Python、PHP、Ruby、C#、Java、Goなどのプログラミング言語は、ネイティブまたはアドオンライブラリやモジュールを通じてテンプレート処理をサポートしています。JavaServer Pages、[ 5 ] Active Server Pages、[ 6 ] Genshi(Python用)、eRubyは、 Webアプリケーション開発用に特別に設計されたテンプレートエンジンの例です。
さらに、テンプレート処理は、テキスト エディター、IDE、リレーショナル データベース管理システムなどのソフトウェア パッケージのサブ機能として組み込まれることもあります。