Genshiは、XMLのような語彙を持ったテンプレートエンジンで、Pythonで書かれている。 Genshiを利用することにより、XMLをベースとした言語、通常HTMLに出力内容を簡単に挿入したり、ドキュメント間の要素を再利用できる。Genshiは、を元にしており、テンプレート処理を高速化する機能のいくらかを実装することを目的としている。

Genshiは、さまざまなPythonWebフレームワークで利用可能であり、例えばCherryPy、TurboGears、Pylons、web2pyで利用されている。 GenshiはTurboGears 2.x内のKidを置き換えた。

Genshiによるマークアップ Genshiは、名前空間を利用する形でHTMLに対して構文を埋め込む。典型的な構文は属性として与えられ、Python式をクオートした内部に記述する。例えば、下のような構文では、この段落を処理すると「4」が表示される。

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://genshi.edgewall.org/"> <body> <p py:content="2 + 2">ここが4で置き換えられる</p> </body> </html>

名前空間の使用により、GenshiはWYSIWYG HTMLエディタで利用可能である。

KidとGenshiの違い Genshiは、直接テンプレートを処理する。(KidのようにPythonコードを出力したりしない) Genshiは、テンプレートの再利用のためにXIncludeを使用する Genshiは、Kidが持たない属性が追加されている。例:py:choose

参照

外部リンク Genshi official website Genshi tutorial