<?xml version="1.0" encoding="Shift_JIS" ?>

<document>

 <properties>
  <title>Texen</title>
  <author email="jvanzyl@locus.apache.org">Velocity Documentation Team</author>
  <translator>熊坂祐二</translator>
  <translator>新穂洋史</translator>
  <original>texen</original>
 </properties>

<body>

<section name="Texen とは?">

<p>
Texen は、汎用テキスト生成ユーティリティです。
ほぼどんな種類のテキストでも生成できます。
Ant によって実行されるその実体は、<a href="http://jakarta.apache.org/ant/">Ant</a> タスクで、
Texen は、制御テンプレート、場合によってはワーカテンプレート群と、生成された出力を管理するための
制御コンテキストを使用します。
TexenTask は直接使用することもできますが、通常はサブクラス化します。
何らかの出力を生成する前に制御コンテキストを初期化するためです。
</p>
<p>
Texen は、Turbine Web アプリケーションフレームワークで必要とされるソース生成を行うために作成されました。
<a href="http://jakarta.apache.org/turbine/">Turbine</a> にある
<a href="http://jakarta.apache.org/turbine/torque.html">Torque</a> ユーティリティ
（これは TexenTask のサブクラスです）では、Turbine プロジェクトのために SQLの生成と、
OR (オブジェクト-リレーショナル) マッピングのソース生成を担っています。
これは、1つの例にすぎません;
Texenは、テキストの生成ならほぼ何にでも使えるのです！
</p>
</section>

<section name="TexenTask">

<p>
このささいな例は Ant の build.xml から Texen を使う方法を示しているわけですが、
Texen の仕組みがどのようなものかも示しています。
</p>
<p>
<em>Ant ビルドファイル</em>
</p>

<source><![CDATA[
<project name="HtmlGenerator" default="main" basedir=".">

  <taskdef name="texen" classname="org.apache.velocity.texen.ant.TexenTask"/>

  <!-- ================================================================ -->
  <!-- G E N E R A T E  H T M L  P A G E S                              -->
  <!-- ================================================================ -->
  <!-- このターゲット(main)は、制御コンテキストの情報に基づいて         -->
  <!-- HTMLページ群を生成します。                                       -->
  <!-- ================================================================ -->

  <target name="main">

    <echo message="+------------------------------------------+"/>
    <echo message="|                                          |"/>
    <echo message="| Generating HTML pages!                   |"/>
    <echo message="|                                          |"/>
    <echo message="+------------------------------------------+"/>

    <texen
      controlTemplate="Control.vm"
      outputDirectory="."
      templatePath="."
      outputFile="generation.report"
    />

  </target>

</project>
]]></source>

<p>
<em>制御テンプレート</em>
</p>

<source><![CDATA[
#*

file: Control.vm

これは HTML ページジェネレータのための制御テンプレートです！

*#

#set ($Planets = ["Earth", "Mars", "Venus"])

#foreach ($planet in $Planets)

    #set ($outputFile = strings.concat([$planet, ".html"]))
    $generator.parse("HtmlTemplate.vm", $outputFile, "planet", $planet)

#end
]]></source>

<p>
<em>ワーカテンプレート</em>
</p>

<source><![CDATA[
#*

file: HtmlTemplate.vm

これはワーカテンプレートです。
制御テンプレートから呼ばれて、実用的な出力を生成します
(この例はあまり実用的ではありませんが)。 :-)

*#

#set ($bgcolor = "#ffffff")

<html>
  <head>
    <title>
      Everything you wanted to know about $planet!
    </title>
  </head>
  <body bgcolor="$bgcolor">

  $planet is a great place to live!

  </body>
</html>
]]></source>

<p>
Texen は、Earth.html、Mars.html、 Venus.html の 3 つの html ページを生成します。
もっと実用的にするためには、TexenTask をサブクラス化したり、
制御コンテキストに何かオブジェクトを設定したり、
有効な出力を生成するために制御コンテキストに情報を設定したりします。
</p>

<p>
Texen の全機能の実例は、Turbine の Torque ユーティリティを参照してください。
Torque のスタンドアローン版は、
<a href="http://jakarta.apache.org/builds/jakarta-turbine/torque/release/">ここ</a>
にあります。
</p>
</section>

</body>
</document>
