
ウェブパブリッシングにおけるウェブテンプレートシステムを使用すると、ウェブデザイナーや開発者はウェブテンプレートを活用して、検索結果などのカスタムウェブページを自動的に生成できます。これにより、静的なウェブページ要素を再利用しつつ、ウェブリクエストパラメータに基づいて動的な要素を定義できます。
Webテンプレートは静的コンテンツをサポートし、基本的な構造と外観を提供します。開発者は、コンテンツ管理システム、Webアプリケーションフレームワーク、HTMLエディタからテンプレートを実装できます 。[ 1 ]
ウェブテンプレートシステムは、以下の要素で構成されています。
テンプレートとコンテンツのリソースは、テンプレートエンジンによって処理および結合され、それぞれが同様の視覚形式を持つウェブ文書を大量生産します。この記事の目的上、ウェブ文書には、HTTP、HTTPS、またはその他のインターネットプロトコルを介してウェブ上で送信されるさまざまな出力形式が含まれます。[ 3 ]

テンプレートプロセッサ(テンプレートエンジンまたはテンプレートパーサーとも呼ばれる)は、テンプレートとデータ(データモデルで定義される)を組み合わせて、結果のドキュメントまたはプログラムを生成するように設計されたソフトウェアです。[ 4 ] [ 5 ] [ 6 ]テンプレートが記述されている言語は、テンプレート言語またはテンプレート言語として知られています。この記事では、結果ドキュメントとは、ドキュメント、Web ページ、ソース コード(ソース コード生成の場合)など、全体または断片を含む、あらゆる種類のフォーマットされた出力を指します。テンプレートエンジンは通常、Web テンプレート システムまたはアプリケーション フレームワークの一部として含まれており、プリプロセッサまたはフィルタとしても使用できます。
モデルが通常リレーショナルデータベースに格納される場合、MVCアーキテクチャの残りの構成要素はコントロールとビューです。最も単純なシステムでは、これら2つは分離されていません。しかし、関心の分離の原則を適用することで、関係を完全に分離することができます。
例えば、ビューテンプレートは次のようになります。
< !DOCTYPE html> < html xmlns = " http://www.w3.org/1999/xhtml" > <head> <title>サイト</title> </head> <body> < h1 data - xp = " title " > < ! --プレースホルダー-- > </h1> </body> </html>次に、コントロールテンプレートがビューを読み込み、XPathアドレッシングを使用してデータベースからコンポーネントを挿入します。たとえば、次のようになります。
<?php $doc = new DOMDocument ; $doc- > preserveWhiteSpace = false ; $doc- > Load ( 'view.html' ); $titlenode = $doc- > createTextNode ( "Like this" ); $xpath = new DOMXPath ( $doc ); $xpath- > registerNamespace ( "h" , "http://www.w3.org/1999/xhtml" ); $query = "//h:*[@data-xp='title']/comment()" ; $entries = $xpath- > query ( $query ); foreach ( $entries as $entry ) { $entry- > parentNode- > replaceChild ( $titlenode , $entry ); } echo $doc- > saveXML (); ?>ウェブブラウザとウェブサーバーはクライアント/サーバーアーキテクチャです。[ 7 ]サイトはパフォーマンスを向上させるためにウェブキャッシュもよく使用します。多くの実装では、テンプレートファイルには、ページが生成されるときにアプリケーションから提供されるデータに置き換えられる変数またはプレースホルダーが含まれています。[ 8 ]
テンプレート言語には以下が含まれます。
テンプレートエンジンのソースコードは、独自開発のものでもオープンソースのものでも構いません。
多くのテンプレートシステムは、より大きなプログラミングプラットフォームまたはフレームワークのコンポーネントです。これらは「プラットフォームのテンプレートシステム」と呼ばれます。一部のテンプレートシステムでは、別のテンプレート言語またはエンジンに置き換えるオプションがあります。[ 9 ]
Perl、Ruby、C、Javaなどのプログラミング言語は、テンプレート処理をネイティブに、またはアドオンライブラリやモジュールを介してサポートしています。JavaServer Pages(JSP)、PHP、Active Server Pages ( VBScript、JScript 、またはその他の言語を使用したASP )は、それ自体がWebテンプレートエンジンの例です。これらの技術は通常、サーバーサイドのテンプレートシステムで使用されますが、「エッジサイド」プロキシや静的ページ生成にも応用できます。
静的サイトジェネレーターは、マークダウンやアスキードックなどのフラットなテキスト入力ファイルを使用して静的なウェブページを生成するエンジンです。例としては、Jekyll(Liquid、Ruby)、Hugo(Goテンプレート)、Pelican(Jinja2、Python)などがあります。
Wix、Weebly 、Dudaなどのホスティング型ウェブサイトビルダーの中には、従来のプログラミングではなくグラフィカルユーザーインターフェースを介して静的および動的なウェブページを作成できるテンプレートベースのシステムを提供しているものがある。[ 10 ]

HTMLエディタは、静的なウェブページのみを生成するためにウェブテンプレートシステムを使用することがよくあります。これらは、すぐに展開できる既製のウェブデザインと見なすことができ、迅速な展開のために「クッキーカッター」ウェブサイトを大量生産するために使用されます。また、 CSSスタイルの代わりにテーマが含まれていることも一般的です。一般的に、テンプレート言語はエディタのソフトウェアでのみ使用されます。[ 11 ]
FrontPageとDreamweaverは、かつてテンプレートサブシステムを備えた最も人気のあるWebエディタでした。Flash Webテンプレートは、Macromedia Flashを使用して視覚的にインタラクティブなWebサイトを作成します。
多くのサーバーサイドテンプレートシステムには、サーバー上で出力ページを公開するオプションがあり、公開されたページは静的です。これはVignetteなどのコンテンツ管理システムでは一般的ですが、サーバー外生成とはみなされません。ほとんどの場合、この「公開オプション」はテンプレートシステムに干渉せず、 Wgetなどの外部ソフトウェアで実行できます。

人々は、このタスク向けに改良された既存のソフトウェアを用いて、テンプレートから生成されたサーバーサイドの動的ページを利用し始めた。初期のソフトウェアは、 CGI上で動作する、Web利用向けに改良されたプリプロセッサとマクロ言語であった。次に、シンプルながらも重要な技術として、 SSIを皮切りに拡張モジュール上で直接実行される方式が登場した。
多くのテンプレートシステムは、通常、サーバーサイドのテンプレートシステムとして使用されます。
技術的には、多くの「サーバーサイド組み込みスクリプト言語」で使用されている、HTML(またはXMLなど)内にプログラミング言語を埋め込む手法もテンプレートです。これらはすべて埋め込み型複合言語です。
サーバーサイドのテンプレートエンジンとして使用されるプリプロセッサもあります。例:
エッジサイドのテンプレートおよびインクルージョンシステムに関して言えば、「エッジサイド」とは、クライアント(ブラウザ)とオリジンサーバーの間に存在するWebサーバーを指します。これらはしばしば「リバースプロキシ」サーバーと呼ばれます。これらのサーバーは通常、画像やページフラグメントなどのコンテンツをキャッシュし、効率的にブラウザに配信することで、オリジンサーバーへの負荷とトラフィックを軽減する役割を担っています。
基本エッジサイドインクルード(ESI)は、SSIに似た言語です。ESIはコンテンツ配信ネットワーク向けに実装されています。ESIテンプレート言語は、JavaScriptとAjaxを使用したり、ブラウザの「プラグイン」を介してWebブラウザに実装することもできます。

多くのWebブラウザは、XMLデータにXSLTスタイルシートを適用してデータをXHTMLドキュメントに変換することで、ブラウザ自体にテンプレート機能を提供することができます。その他のシステムでは、 JavaScriptやその他のクライアントサイドスクリプト言語 を使用してブラウザにテンプレート機能を実装しています。
最もシンプルな形式はトランスクルージョン(HTMLフレーム)です。それ以外の場合は、動的なウェブページが必要になります。
例:
{{cite book}}: CS1メンテナンス: 場所 (リンク)