<?xml version='1.0' encoding="UTF-8" ?>

<doc xml:lang="ja">
<head>
  <title>mod_chxj</title>
  <subtitle></subtitle>
  <author>Atsushi Konno</author>
  <date>29 Mar 2005</date>
  <date>Last modified: Sat, 23 Mar 2008 03:21:16 +0900</date>
</head>
<body>
<section title="Overview">

mod_chxjはオープンソースの携帯向けコンテンツ変換Apache2.x用モジュールであり、
CHTML（DoCoMo i-Mode用 CHTML3.0)で記述された文書や通常のHTMLで記述された文書を、アクセスに来た端末のUser-Agentヘッダを見て、それぞれの端末にあった形式に変換します。
HTML文書に限らず、画像（jpg、gif、png）、絵文字についても、定義ファイルに従ってそれぞれのキャリアにあった絵文字に変換します。
Cookie非対応端末、Refer非対応端末のために、Set-Cookie、CookieヘッダやRefererヘッダをシミュレートすることもできます（EXPERIMENTAL)。


</section>
<section title="インストール">
<subsection title="準備">
mod_chxjをインストールする前に、下記のものを用意する必要があります。
<ol>
  <li>Apache2.xのヘッダーファイル群</li>
  <li>Apache2.x用のapxs</li>
  <li>apr(Apache Portable Runtime)ライブラリとそのヘッダファイル郡(apu含む)</li>
  <li>automake、autoconf、libtool1.3.X</li>
  <li>ImageMagick(MagickWand)</li>
  <li>Linux</li>
</ol>
</subsection>
<subsection title="mod_chxjの入手">
mod_chxjは<a href="http://sourceforge.jp/projects/modchxj/">こちら</a>からダウンロードすることができます。
</subsection>
<subsection title="インストール">
以下にmod_chxjインストール手順を示します。
<ol>
<li>Configure スクリプトを生成します(必須ではない)<program title="Configure スクリプトの生成">
$ ./buildconf.sh
</program> 
<note>"$"はプロンプトをあらわします。</note>
</li>
<li>Configure

<program title="Configure">
$ ./configure
</program>
<note>場合によっては--with-apr-configや--with-apu-configも必要です。</note>
<note>0.8.6以下の場合には--with-apache-headerが必須です</note>
<note>詳細はBuildを参照</note>
</li>
<li>mod_chxj.soを生成します
<program title="make">
$ make
</program>
</li>
<li>apacheにインストールします
<program title="install">
$ make install
</program>
</li>
<li>データの設置
etcディレクトリは以下のdevice_data.xmlとemoji.xmlをApache
からアクセスできるところに配置します。
<note>0.9.0からemoji.xml、device_data.xmlの定義フォーマットを変更しましたのでバージョンをあわせてください</note>

以下、/etc/apache2/chxjディレクトリにchxj用設定ファイルを用意する場合

<program title="データの設置">
$ mkdir -p /etc/apache2/chxj
$ cp etc/device_data.xml /etc/apache2/chxj
$ cp etc/emoji.xml /etc/apache2/chxj
</program>
</li>
</ol>
</subsection>
</section>
<section title="Build">
mod_chxjをコンパイルするにはconfigureを行う必要があります。
以下にconfigureのオプションを記します。
<subsection title="メイン">
  <subsection title="--with-apache-header">
      通常指定する必要はありません。configureでApacheのヘッダファイルの場所が検知できなかった場合や、任意のApacheヘッダファイルを使用したい場合に指定します。
      <program title="--with-apache-header">
         $ ./configure --with-apache-header=/usr/include/apache2
      </program>
      上記は/usr/include/apache2以下にApacheのヘッダファイルがある場合の例です。
  </subsection>
  <subsection title="--with-apxs">
      通常指定する必要はありません。configureでapxsを検知できなかった場合や、任意のapxsプログラムを指定したい場合に指定します。
      <program title="--with-apxs">
         $ ./configure --with-apxs=/usr/local/apache2/bin/apxs2
      </program>
      上記は/usr/local/apache2/bin/apxs2を使用するようにapxsに指定しています。
  </subsection>
  <subsection title="--with-apr-config">
      通常指定する必要はありません。
      configureでapr-configを検知できなかった場合や、任意のapr-configプログラムを指定したい場合に指定します。
      <program title="--with-apr-config">
         $ ./configure --with-apr-config=/usr/local/apache2/bin/apr-1-config
      </program>
      上記は/usr/local/apache2/bin/apr-1-configを使用するように指定しています。
  </subsection>
  <subsection title="--with-apu-config">
      通常指定する必要はありません。
      configureでapu-configを検知できなかった場合や、任意のapu-configプログラムを指定したい場合に指定します。
      <program title="--with-apu-config">
         $ ./configure --with-apu-config=/usr/local/apache2/bin/apu-1-config
      </program>
      上記は/usr/local/apache2/bin/apu-1-configを使用するように指定しています。
  </subsection>
</subsection>
<subsection title="Cookieシミュレート機能でMySQLを使用する場合">
  <subsection title="--enable-mysql-cookie">
      Cookieシミュレート機能を使用する際、保存先をデフォルトのDBMでは無く、MySQLに保存するようにします。
      DefaultのDBMで良い場合や、Cookieシミュレート機能を使用しない場合は指定する必要はありません。
      別途MySQLサーバを用意する必要があります。また、本オプションを指定した場合は、--with-mysql-header、--with-mysql-lib-dirも指定します。
      これはMySQLのヘッダとライブラリが必要なことを意味します。使用するMySQLのライブラリは今のところlibmysqlclient_r.soのみです。
      注意) --enable-memcache-cookieとの併用はできません。
      <program title="--enable-mysql-cookie">
         $ ./configure --enable-mysql-cookie --with-mysql-header=/usr/include/mysql  --with-mysql-lib-dir=/usr/lib
      </program>
      上記は、/usr/include/mysql以下にmysql用のヘッダがあり、/usr/lib以下にlibmysqlclient_r.soがある場合の例です。
  </subsection>
  <subsection title="--with-mysql-header">
      --enable-mysql-cookieを指定した場合は必須です。
      MySQLのヘッダファイルの場所を指定します。
      <program title="--with-mysql-header">
         $ ./configure --enable-mysql-cookie --with-mysql-header=/usr/include/mysql  --with-mysql-lib-dir=/usr/lib
      </program>
  </subsection>
  <subsection title="--with-mysql-lib-dir">
      --enable-mysql-cookieを指定した場合は必須です。
      MySQLのライブラリ、libmysqlclient_r.soの設置されているディレクトリを指定します。
      <program title="--with-mysql-lib-dir">
         $ ./configure --enable-mysql-cookie --with-mysql-header=/usr/include/mysql  --with-mysql-lib-dir=/usr/lib
      </program>
  </subsection>
</subsection>
<subsection title="Cookieシミュレート機能でmemcachedを使用する場合">
  <subsection title="--enable-memcache-cookie">
      Cookieシミュレート機能を使用する際、保存先をデフォルトのDBMでは無く、memcachedに保存するようにします。
      DefaultのDBMで良い場合や、Cookieシミュレート機能を使用しない場合は指定する必要はありません。
      別途memcachedを用意する必要があります。また、本オプションを指定した場合は、--with-apr-memcache-header、--with-apr-memcache-lib-dirも指定します。
      これはapr_memcacheのヘッダとライブラリが必要なことを意味します。
      注意) --enable-mysql-cookieとの併用はできません。
      <program title="--enable-memcache-cookie">
         $ ./configure --enable-memcache-cookie --with-apr-memcache-header=/usr/include/apr-memcache0 --with-apr-memcache-lib-dir=/usr/lib
      </program>
      上記は、/usr/include/apr_memcache0以下にapr-memcache用のヘッダがあり、/usr/lib以下にlibapr_memcache.soがある場合の例です。
  </subsection>
  <subsection title="--with-apr-memcache-header">
      --enable-memcache-cookieを指定した場合は必須です。
      apr-memcacheのヘッダファイルの場所を指定します。
      <program title="--with-apr-memcache-header">
         $ ./configure --enable-memcache-cookie --with-apr-memcache-header=/usr/include/apr_memcache0  --with-apr-memcache-lib-dir=/usr/lib
      </program>
  </subsection>
  <subsection title="--with-apr-memcache-lib-dir">
      --enable-mysql-cookieを指定した場合は必須です。
      apr-memcacheのライブラリ、libapr_memcache.soの設置されているディレクトリを指定します。
      <program title="--with-apr-memcache-lib-dir">
         $ ./configure --enable-memcache-cookie --with-apr-memcache-header=/usr/include/apr_memcache0  --with-apr-memcache-lib-dir=/usr/lib
      </program>
  </subsection>
</subsection>
</section>
<section title="Configuration">
以下はmod_chxjが/usr/lib/apache2/modulesディレクトリ配下に設置されたものとしています

<subsection title="htmlファイルが変換対象の場合">

例として、Locationが"/chxj"以下のものは全て変換する場合を説明します。

<ol>
<li>httpd.confに以下を追加します。

<program title="httpd.conf">
#====================================================================================
# モジュールをApache2.0にロード
#====================================================================================
LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so

#====================================================================================
# デバイスデータファイルの設定
#====================================================================================
ChxjLoadDeviceData  /etc/apache2/chxj/device_data.xml

#====================================================================================
# 絵文字データファイルの設定
#====================================================================================
ChxjLoadEmojiData   /etc/apache2/chxj/emoji.xml

#====================================================================================
# 変換エンジン動作指示命令
# ChxjConvRule ==> ディレクティブ
# "^/chxj.+$"  ==> Perl互換のURIパターン
# EngineOn     ==> 変換エンジンを動作させる指示
# NONE         ==> サーバ側の文字コード。（NONEを指定した場合は文字コード変換しない)
#====================================================================================
ChxjConvertRule "^/chxj.+$" "EngineOn" "NONE"

</program>
</li>
<li>apacheの再起動。</li>
</ol>
</subsection>
<subsection title="php等の出力結果が変換対象の場合">
<ol>
<li>httpd.confに以下を追加します

<program title="httpd.conf">
#====================================================================================
# モジュールをApache2.xにロード
#====================================================================================
LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so

#====================================================================================
# デバイスデータの設定
#====================================================================================
ChxjLoadDeviceData  /etc/apache2/chxj/device_data.xml

#====================================================================================
# 絵文字データの設定
#====================================================================================
ChxjLoadEmojiData   /etc/apache2/chxj/emoji.xml

#====================================================================================
# 変換エンジン動作指示命令
# ChxjConvRule ==> ディレクティブ
# "^/chxj.+$"  ==> Perl互換のURIパターン
# EngineOn     ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"
# EUC-JP       ==> サーバ側の文字コード。（NONEを指定した場合は文字コード変換しない)
#                  EUC-JPからCP932に文字コード変換します。
#====================================================================================
ChxjConvertRule "^/chxj.+$" "EngineOn" "EUC-JP"

</program>
</li>
<li>apacheの再起動。</li>
</ol>
</subsection>

<subsection title="xoopsを使用し、且つwordpress、bwikiを使用している場合">
<ol>
<li>httpd.confに以下を追加します

<program title="httpd.conf">
#====================================================================================
# モジュールをApache2.xにロード
#====================================================================================
LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so

#====================================================================================
# デバイスデータの設定
#====================================================================================
ChxjLoadDeviceData  /etc/apache2/chxj/device_data.xml

#====================================================================================
# 絵文字データの設定
#====================================================================================
ChxjLoadEmojiData   /etc/apache2/chxj/emoji.xml

#====================================================================================
# 変換エンジン動作指示命令
#====================================================================================
#====================================================================================
# bwikiの設定をします。bwikiではどうもxoopsヘッダの文字コードとbwiki内での携帯スキン
# の文字コードが一致していないようなので、bwiki内で文字コードを変換させないように
# 修正後、以下のルールを記述します。
# 
# ChxjConvRule           ディレクティブ
# "^/modules/bwiki.+$"   このルールを適用したいURIパターン
# "EngineOn"             変換エンジンを有効にします。
# "EUC-JP"               出力時にEUC-JPからCP932に変換させます。
# "PC"                   変換元HTMLはPCサイト用HTMLです。
# "DoCoMo/1.0/D501i"     DoCoMo端末としてbwikiにアクセスさせます。
#
#====================================================================================
ChxjConvertRule "^/modules/bwiki.+$" "EngineOn" "EUC-JP" "PC" "DoCoMo/1.0/D501i"

#====================================================================================
# wordpressの設定をします。
# 
# ChxjConvRule               ディレクティブ
# "^/modules/wordpress.+$"   このルールを適用したいURIパターン
# "EngineOn"                 変換エンジンを有効にします。
# "NONE"                     出力時に文字コード変換をさせません。
# "NONE"                     変換元HTMLはPCサイト用HTMLではありません。
# "DoCoMo/1.0/D501i"         DoCoMo端末としてwordpressにアクセスさせます。
#
#====================================================================================
ChxjConvertRule "^/modules/wordpress/.*$"  "EngineOn"  "NONE" "PC" "DoCoMo/1.0/D501i"

#====================================================================================
# その他の設定をします。
# 
# ChxjConvRule               ディレクティブ
# "^/.+$"                    このルールを適用したいURIパターン
# "EngineOn"                 変換エンジンを有効にします。
# "EUC-JP"                   出力時にEUC-JPからCP932に文字コード変換をさせます。
#
#====================================================================================
ChxjConvertRule "^/.+$" "EngineOn" "EUC-JP" 


&lt;Location /&gt;
  ChxjImageEngine On
  AllowOverride All
&lt;/Location&gt;
</program>
</li>
<li>apacheの再起動。</li>
</ol>
</subsection>




<subsection title="画像自動変換機能を使用する場合">
<ol>
<li>httpd.confに以下を追加します。
下記は、URIが/imgで始まる全ての画像に対して動作するようmod_chxjに指示しています。

<program title="httpd.conf">
&lt;Location /img&gt;
ChxjImageEngine On
ChxjImageCacheDir /tmp
ChxjImageCopyright "A.Konno"
ChxjImageCacheLimit 10485760
&lt;/Location&gt;
</program>

上記の説明を以下に示します。

<ol>
    <li>ChxjImageEngine<br />
      mod_chxjの画像変換ハンドラを起動するよう指示しています。
      DefaultはOff
 
      <br />
      <br />
    </li>


    <li>ChxjImageCacheDir<br />
      mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリを指定します。
      デフォルトは/tmp。

      <program title="ChxjImageCacheDir">
      ChxjImageCacheDir /tmp
      </program>

      mod_chxjに画像変換キャッシュとして/tmpを使用するよう指示します。
      <br />
      <br />
    </li>

    <li>ChxjImageCacheLimit<br />
      mod_chxj?????Ѵ??ϥ??ɥ餬???Ѥ????Ѵ????β????򤪤??Ƥ????ǥ??쥯?ȥ??ε????̤????ꤷ?ޤ???
      ñ?̤?byte??

      <program title="ChxjImageCacheLimit">
      ChxjImageCacheLimit 1024
      </program>

      mod_chxj?˲????Ѵ??????å??????祵?????Ȥ???1kbyte?Ȼ??ꡣ
      ?????ΤȤ??Ѵ????̤?1kbyte?ʾ夢???褦?ʾ????ˤ?INTERNAL_SERVER_ERROR???֤??ޤ???
       ??ʬ???ΰ??????ݤ??뤫?????������??򾮤??????Ƥ??��?????
      <br />
      <br />
    </li>



    <li>ChxjImageCopyright<br />
      mod_chxjの画像変換ハンドラに、転送禁止設定を行うよう指示します。
      パラメータとして任意の文字列をとります。
      ChxjImageCopyrightディレクティブで指定された文字列は、それぞれのイメージの
      コメント部に埋め込まれます。

      <program title="ChxjImageCopyright">
      ChxjImageCopyright "A.Konno"
      </program>

       mod_chxjに転送禁止設定を行うよう指示しています。
       変換後イメージのコメント部分には、キャリア毎に以下の文字列を埋め込みます。

       <b>AU の場合</b>
       <program title="AU">
       kddi_copyright=on,A.Konno
       </program>

       <b>DoCoMoの場合</b>
       <program title="DoCoMo">copy="NO",A.Konno</program>

       <b>SoftBank/Vodafone</b>の場合は、レスポンスヘッダに

       <program title="SoftBank/Vodafone/J-PHONE">
         x-jphone-copyright:no-transfer
       </program>

       を埋め込みます。
       <note>SoftBank/Vodafoneの場合は、リクエストＵＲＬの最後が.pnzか、.jpzで終わるようにダミーを付けなければなりません。</note>
    </li>

    <li>ChxjImageCacheLimit<br />
      mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリの許容量を指定します。
      単位はbyte。

      <program title="ChxjImageCacheLimit">
      ChxjImageCacheLimit 1024
      </program>

      mod_chxjに画像変換キャッシュ最大サイズとして1kbyteと指定。
      ※このとき変換結果が1kbyte以上あるような場合にはINTERNAL_SERVER_ERRORを返します。
       十分な領域を確保するか、画像サイズを小さくしてください。
      <br />
      <br />
    </li>
  </ol>
  </li>
</ol>
</subsection>

<subsection title="文字コードを変換したい場合">
<ol>
<li>httpd.confに以下を追加します。
下記は、URIが/chxjで始まる全てのコンテンツに対して動作するようmod_chxjに指示しています。
サーバ側はEUC-JPであった場合の例です。mod_chxjによってSJISに変換するように指示しています。
サーバ側がShift_JISで無い場合は、Shift_JISコードの10進参照文字列表記を記述することによって
Shift_JISコードの絵文字2バイトコードに変換しクライアントへ返します。

<program title="httpd.conf">
ChxjConvRule "^/chxj.+$" "EngineOn" "EUC-JP"
</program>

上記の説明を以下に示します。

    <ol>
        <li>ChxjConvertRule<br />
          サーバサイドの文字コードを指定します。ここに、EUC-JPと指定してあった場合は、
          EUC-JPからCP932に変換後、クライアントに出力されます。
          省略した場合はNONE
          <ol>
             <li>変換エンジン動作指示命令<br />
             ChxjConvertRule ==> ディレクティブ<br />
             "^/chxj.+$"  ==> Perl互換のURIパターン<br />
             EngineOn     ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"<br />
             EUC-JP       ==> サーバ側の文字コード。（NONEを指定した場合は文字コード変換しない)<br />
<br />
             EUC-JPからCP932に文字コード変換します。(libiconvに依存します)<br/>
             </li>
          </ol>
     
          <br />
          <br />
        </li>
    </ol>
</li>
</ol>
</subsection>
<subsection title="ディレクティブ">
<ol>
  <li>ChxjLoadDeviceData<br />
  デバイス定義ファイルを指定します。
  <program title="ex)">
    ChxjLoadDeviceData /etc/apache2/device.xml
  </program> 
  </li>
  <li>ChxjLoadEmojiData<br />
  絵文字変換定義ファイルを指定します。
  <program title="ex)">
    ChxjLoadEmojiData   /etc/apache2/chxj/emoji.xml
  </program> 
  </li>
  <li>ChxjImageEngine<br />
  画像変換エンジンを有効にします。
  パラメータとしてOnとOffを指定できます。
  DefaultはOffです。
  <program title="ex)">
    ChxjImageEngine On
  </program>
  </li>
  <li>ChxjImageCacheDir<br />
  イメージの一時ファイル保存場所を指定します。
  <program title="ex)">
    ChxjImageCacheDir   /tmp
  </program> 
  </li>
  <li>ChxjImageCacheLimit<br />
  イメージの一時ファイル保存許容量を指定します。
  下記は1MByteの例。
  <program title="ex)">
    ChxjImageCacheLimit   1048576
  </program>
  </li>
  <li>ChxjImageCopyright<br />
  イメージに著作権情報を付与します。
  <program title="ex)">
    ChxjImageCopyright   "chosakuken jyoho"
  </program> 
  </li>
  <li>ChxjConvertRule<br />
  HTML変換エンジンの適用ルールを記述します。
  本ディレクティブを使用し、変換エンジンのOn|Offを指定します。
  DefaultはOFFです。
  また、ルールは記述された順番に評価し、マッチするものがあれば、その時点で対象ルールを適用します。
  パラメータは3つ必要です。下記にパラメータを記します。
  <table title="パラメータ">
  <tbody>
    <tr>
      <td>第1パラメータ</td><td>URIを評価するPerl互換の正規表現を指定します</td>
    </tr>

    <tr>
      <td>第2パラメータ</td><td>HTML変換エンジンのOn|Offを指定します。Onの場合は"EngineOn"。Offの場合は"EngineOff"を指定します。"EngineOn|EngineOff"の他に"CookieOn|CookieOff"を指定することもできます。複数指定する場合は","で区切って指定します。</td>
    </tr>
    <tr>
      <td>第3パラメータ</td><td>文字コードを指定します。ここで指定した文字コードから"CP932"に変換します。指定できる文字コードはiconv -lコマンドによって確認することができます。変換しなくて良い場合はNONEを指定してください。</td>
    </tr>
    <tr>
      <td>第4パラメータ</td><td>省略した場合は、携帯ページからの変換を意味します。PC用ページからの変換を行う場合は"PC"を第四パラメータに指定します。</td>
    </tr>
    <tr>
      <td>第5パラメータ</td><td>サーバサイドアプリケーションに渡すUser-Agentを指定します。
          例えば、wordpress等のようにCHTMLを出力するアプリケーションがある場合は、"DoCoMo/1.0/N501i"等適当なUser-Agentを指定することによって、アプリケーションにCHTMLを出力するように指示することができます。
          ここで指定したUser-AgentはHTML出力時には評価されません。</td>
    </tr>
  </tbody>
  </table>
  <program title="ex)">
    ChxjConvertRule "^/chxj.+$/" EngineOn EUC-JP
  </program> 
  </li>
  <li>ChxjCookieDir<br />
    クッキー保存先をdbmにする場合（デフォルト）指定します。
    クッキーの内容を保存するディレクトリを指定します。
    指定しない場合は/tmpに保存されます。
  <program title="ex)">
    &lt;Location /&gt;
      ChxjCookieDir   /tmp
    &lt;/Location&gt;
  </program> 
  詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieTimeout<br />
    クッキーを使用する場合に指定します。クッキーの保持期間を秒単位で指定します。
    指定しない場合は、1800秒でクッキーデータを破棄します。
  <program title="ex)">
    &lt;Location /&gt;
      ChxjCookieTimeout 10
    &lt;/Location&gt;
  </program> 
  詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>

  <li>ChxjCookieStoreType<br />
    クッキー保存先を指定します。指定できるものは以下のとおり。
    <table title="保存先">
      <thead>
        <tr>
          <td>値</td><td>意味</td><td>指定例</td>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>"dbm"</td><td>dbmを選択します。</td><td>ChxjCookieStoreType "dbm"</td>
        </tr>
        <tr>
          <td>"mysql"</td><td>mysqlを選択します。<font color="#ff0000">有効にするにはconfigure時にMYSQL COOKIE機能を有効にする必要があります</font></td><td>ChxjCookieStoreType "mysql"</td>
        </tr>
        <tr>
          <td>"memcache"</td><td>memcacheを選択します。<font color="#FF0000">有効にするにはconfigure時にMEMCACHE COOKIE機能を有効にする必要があります</font></td><td>ChxjCookieStoreType "memcache"</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>ChxjCookieMysqlHost<br />
      MySQLサーバの動作するホストを指定します。
      <program title="ChxjCookieMysqlHostの例">
         ChxjCookieMysqlHost "localhost"
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMysqlPort<br />
      MySQLサーバのポート番号を指定します。
      <program title="ChxjCookieMysqlPortの例">
         ChxjCookieMysqlPort 3306
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMysqlDatabase<br />
      MySQLサーバのデータベース名を指定します。
      <program title="ChxjCookieMysqlDatabaseの例">
         ChxjCookieMysqlDatabase "test_db"
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMysqlUsername<br />
      MySQLサーバに接続する際に使用するユーザ名を指定します。
      <program title="ChxjCookieMysqlUsernameの例">
         ChxjCookieMysqlUsername "roottest"
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMysqlPassword<br />
      MySQLサーバに接続する際に使用するパスワードを指定します。
      <program title="ChxjCookieMysqlPasswordの例">
         ChxjCookieMysqlPassword "pwtest"
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMysqlSocketPath<br />
      MySQLのソケットパスを指定します。
      <program title="ChxjCookieMysqlSocketPathの例">
         ChxjCookieMysqlSocketPath  "/tmp/mysql.sock"
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMysqlCharset<br />
      MySQLのエンコードを指定します。
      <program title="ChxjCookieMysqlCharsetの例">
         ChxjCookieMysqlCharset  "utf8"
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMysqlTablename<br />
      MySQLのクッキーを保存するテーブル名を指定します。
      <program title="ChxjCookieMysqlTablenameの例">
         ChxjCookieMysqlTablename  "chxj_cookie"
      </program>
      上記のように"chxj_cookie"と指定すると、実際に作成されるテーブルは、chxj_cookieとchxj_cookie_expireテーブルの2つになります。
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMemcacheHost<br />
      memcachedの動作するホストを指定します。
      <program title="ChxjCookieMemcacheHostの例">
         ChxjCookieMemcacheHost "localhost"
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieMemcachePort<br />
      memcachedのポート番号を指定します。
      <program title="ChxjCookieMemcachePortの例">
         ChxjCookieMemcachePort 11211
      </program>
      詳細は「Cookieシミュレート機能」の項を参照ください。
  </li>
  <li>ChxjCookieStoreType<br />
    ???å?????¸???????ꤷ?ޤ????????Ǥ??????Τϰʲ??ΤȤ??ꡣ
    <table title="??¸??">
      <thead>
        <tr>
          <td>??</td><td>??̣</td><td>??????</td>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>"dbm"</td><td>dbm??��?򤷤ޤ???</td><td>ChxjCookieStoreType "dbm"</td>
        </tr>
        <tr>
          <td>"mysql"</td><td>mysql??��?򤷤ޤ???<font color="#ff0000">ͭ???ˤ????ˤ?configure????MYSQL COOKIE??ǽ??ͭ???ˤ???ɬ?פ??????ޤ?</font></td><td>ChxjCookieStoreType "mysql"</td>
        </tr>
        <tr>
          <td>"memcache"</td><td>memcache??��?򤷤ޤ???<font color="#FF0000">ͭ???ˤ????ˤ?configure????MEMCACHE COOKIE??ǽ??ͭ???ˤ???ɬ?פ??????ޤ?</font></td><td>ChxjCookieStoreType "memcache"</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>ChxjCookieMysqlHost<br />
      MySQL?????Ф?ư????ۥ??Ȥ????ꤷ?ޤ???
      <program title="ChxjCookieMysqlHost????">
         ChxjCookieMysqlHost "localhost"
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMysqlPort<br />
      MySQL?????ФΥݡ????ֹ??????ꤷ?ޤ???
      <program title="ChxjCookieMysqlPort????">
         ChxjCookieMysqlPort 3306
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMysqlDatabase<br />
      MySQL?????ФΥǡ????١???̾?????ꤷ?ޤ???
      <program title="ChxjCookieMysqlDatabase????">
         ChxjCookieMysqlDatabase "test_db"
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMysqlUsername<br />
      MySQL?????Ф???³?????ݤ˻??Ѥ????桼??̾?????ꤷ?ޤ???
      <program title="ChxjCookieMysqlUsername????">
         ChxjCookieMysqlUsername "roottest"
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMysqlPassword<br />
      MySQL?????Ф???³?????ݤ˻??Ѥ????ѥ???ɤ????ꤷ?ޤ???
      <program title="ChxjCookieMysqlPassword????">
         ChxjCookieMysqlPassword "pwtest"
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMysqlSocketPath<br />
      MySQL?Υ????åȥѥ??????ꤷ?ޤ???
      <program title="ChxjCookieMysqlSocketPath????">
         ChxjCookieMysqlSocketPath  "/tmp/mysql.sock"
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMysqlCharset<br />
      MySQL?Υ??󥳡??ɤ????ꤷ?ޤ???
      <program title="ChxjCookieMysqlCharset????">
         ChxjCookieMysqlCharset  "utf8"
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMysqlTablename<br />
      MySQL?Υ??å???????¸?????ơ??֥?̾?????ꤷ?ޤ???
      <program title="ChxjCookieMysqlTablename????">
         ChxjCookieMysqlTablename  "chxj_cookie"
      </program>
      ?嵭?Τ褦??"chxj_cookie"?Ȼ??ꤹ???ȡ??ºݤ˺?��???????ơ??֥??ϡ?chxj_cookie??chxj_cookie_expire?ơ??֥???2?Ĥˤʤ??ޤ???
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMemcacheHost<br />
      memcached??ư????ۥ??Ȥ????ꤷ?ޤ???
      <program title="ChxjCookieMemcacheHost????">
         ChxjCookieMemcacheHost "localhost"
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
  <li>ChxjCookieMemcachePort<br />
      memcached?Υݡ????ֹ??????ꤷ?ޤ???
      <program title="ChxjCookieMemcachePort????">
         ChxjCookieMemcachePort 11211
      </program>
      ?ܺ٤ϡ?Cookie???ߥ??졼?ȵ?ǽ?פι??򻲾Ȥ??��?????
  </li>
</ol>
</subsection>
</section>
<section title="対応するCHTMLタグ">
変換可能なCHTMLタグは以下のとおりです。

<table title="対応タグ一覧">
  <thead>
    <tr>
      <td>タグ</td>
      <td>属性</td>
      <td>CHTML</td>
      <td>HDML</td>
      <td>XHTML</td>
      <td>JHTML</td>
      <td>備考</td>
    </tr>
  </thead>
  <tbody>
    <tr>
       <td>&lt;HTML&gt;</td>
       <td align="center"> </td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">属性を指定した場合は無視します</td>
    </tr>
    <tr>
       <td>&lt;META&gt;</td>
       <td align="center">http-equiv</td>
       <td align="center">△</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">CHTML1.0、HDMLでは無視します</td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">content</td>
       <td align="center">△</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">CHTML1.0、HDMLでは無視します</td>
    </tr>
    <tr>
       <td>&lt;HEAD&gt;</td>
       <td align="center"> </td>
       <td align="center">○</td>
       <td align="center">△</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">属性を指定した場合は無視します</td>
    </tr>
    <tr>
       <td>&lt;TITLE&gt;</td>
       <td align="center"> </td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">属性を指定した場合は無視します</td>
    </tr>
    <tr>
       <td>&lt;BASE&gt;</td>
       <td align="center"> </td>
       <td align="center">○</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">HDMLでは無視します</td>
    </tr>
    <tr>
       <td>&lt;BODY&gt;</td>
       <td align="center">bgcolor</td>
       <td align="center">△</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">text</td>
       <td align="center">△</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">link</td>
       <td align="center">△</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
    </tr>
    <tr>
       <td>&lt;A&gt;</td>
       <td align="center">href</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">accesskey</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;BR&gt;</td>
       <td align="center"> </td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;FONT&gt;</td>
       <td align="center">color</td>
       <td align="center">△</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">HDML,CHTML1.0では無視します</td>
    </tr>
    <tr>
       <td>&lt;FORM&gt;</td>
       <td align="center">action</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">method</td>
       <td align="center">○</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">HDMLでは無視します</td>
    </tr>
    <tr>
       <td>&lt;INPUT&gt;</td>
       <td align="center">name</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"><note>SoftBankの予約クエリ名は内部で変換するので指定しても良い</note></td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">type</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">text,password,hidden,radio,checkbox,submitに対応</td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">value</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"></td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">istyle</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;SELECT&gt;</td>
       <td align="center">name</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">  </td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">size</td>
       <td align="center">○</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">HDMLでは無視します</td>
    </tr>
    <tr>
       <td>&lt;OPTION&gt;</td>
       <td align="center">value</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
    </tr>
    <tr>
       <td> </td>
       <td align="center">checked</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;DIV&gt;</td>
       <td align="center">align</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;HR&gt;</td>
       <td align="center"> </td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;CENTER&gt;</td>
       <td align="center"> </td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;IMG&gt;</td>
       <td align="center">src</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;DL&gt;</td>
       <td align="center">　</td>
       <td align="center">○</td>
       <td align="center">×</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"> </td>
    </tr>
    <tr>
       <td>&lt;DT&gt;</td>
       <td align="center">　</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
    </tr>
    <tr>
       <td>&lt;DD&gt;</td>
       <td align="center">　</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
    </tr>
    <tr>
       <td>&lt;CHXJ:IF&gt;</td>
       <td align="center">lang</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="center">○</td>
       <td align="left">lang="chtml" lang="xhtml" lang="hdml" lang="jhtml"が指定できます</td>
    </tr>
  </tbody>

  上記以外のタグは全て無視されます。

</table>

</section>
<section title="独自拡張タグ">
<ol>
  <li>&lt;CHXJ:IF&gt;<br />
    
       &lt;CHXJ:IF&gt;タグと&lt;/CHXJ:IF&gt;タグではさまれたタグやテキストは、
       変換せずに<b>そのまま</b><note>変換しませんので注意が必要です</note>出力します。必須の属性としてlangがあります。lang属性を指定することによって、
       例えば、<b>「HDML機の場合のみ出力させる」</b>といったことを可能にします。<br />
       <br />
       ex) 
       <program title="HTML文書中にHDML機の場合のみ有効にしたいタグ、または文書がある場合">
       &lt;CHXJ:IF lang="HDML" &gt;
         &lt;NODISPLAY&gt;
           &lt;ACTION TYPE=ACCEPT TASK=GOSUB DEST='device:data/dnld?url=abc&amp;name=abc.jpg&amp;size=100&amp;disposition=devjaww&amp;title=test'&gt;
         &lt;/NODISPLAY&gt;
       &lt;/CHXJ:IF&gt;
       </program><br />

       ex) 
       <program title="i-Modeのみ出力したい文書がある場合">
       &lt;CHXJ:IF lang="chtml" &gt;
         シークレットコードがどーのこーの。
       &lt;/CHXJ:IF&gt;
       </program><br />

       また、lang属性は、複数指定することも可能です。<br /> 

       <program title="HDML機,J-PHONE機は以下を出力します">
       &lt;CHXJ:IF lang="chtml" lang="jhtml"&gt;
       あなたの携帯は、HDML機かJ-HTML機です。
       &lt;/CHXJ:IF&gt;
       </program><br />
    
  </li>
</ol>
</section>




<section title="文字コードについて">
サーバサイドコンテンツについてはShift_JIS(CP932)、EUCJP-WIN(Win外字対応のEUCJP)、UTF-8のどれかで記述することが可能です。
Shift_JISで記述した場合は絵文字についてもShift_JISで、EUCJP-WINで記述した場合は絵文字についてもEUCJP-WINで、UTF-8で記述した場合は絵文字についてもUTF-8で
記述します。<note>詳細は「絵文字について」の項を参照のこと</note>
クライアントサイド（端末側）に送信する文字コードはShift_JISまたはUTF-8を指定することが可能です。<note>指定方法については「デバイス定義」の項を参照のこと。</note>
mod_chxjによりサーバサイドコンテンツの文字コードから端末に送信する文字コードへと絵文字も含めて変換します。
POST/GET中のデータについても端末側文字コードからサーバサイドコンテンツの文字コードへと絵文字も含めて変換します。


<ol>
  <li>注意: Shift_JISでサーバサイドコンテンツを記述した場合はPOST/GETデータもShift_JISでサーバサイドコンテンツに渡されます。</li>
  <li>注意: EUCJP-WINでサーバサイドコンテンツを記述した場合はPOST/GETデータもEUCJP-WINでサーバサイドコンテンツに渡されます。</li>
  <li>注意: UTF-8でサーバサイドコンテンツを記述した場合はPOST/GETデータもUTF-8でサーバサイドコンテンツに渡されます。</li>
  <li>注意: 本変換機能は1.0.0以降から</li>
</ol>

サーバサイドコンテンツの文字コードはChxjConvRuleディレクティブで指定した文字コードになります。
ChxjConvRuleにて矛盾が生じない限り、文字コードの混在も可能です。

</section>




<!-- ================================================================================ -->
<!--                                                                                  -->
<!-- 絵文字について                                                                   -->
<!--                                                                                  -->
<!-- ================================================================================ -->
<section title="絵文字について">
  i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。
  ソースに2byteのバイナリコードを直接書いても、10進参照文字列(&amp;#XXX;の形)、16進参照文字列(&amp;#xXXX;の形)で書いても、変換対象になります。
  10進参照文字列、16進参照文字列はmod_chxjにより自動で2バイトコードに変換されます。
  <note>コンテンツをSJISで記述する場合には絵文字もSJISで、コンテンツをEUCJP-WINで記述する場合には絵文字もEUCJP-WINで、UTF-8で記述する場合には絵文字もUTF-8で記述する必要があります</note>

<subsection title="絵文字変換定義">
絵文字の変換に関する動作を変えたい場合（例えば「ハートがあったら、ＡＵの場合はスペードに」とか、「変換定義がおかしい」といった場合）は、
emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、人によってはvi等で簡単に定義を
変更することができるかもしれません。

emoji.xmlは3つのパートに分かれています。1つ目はDoCoMo→DoCoMo/au/SoftBankの変換定義部。
2つ目はau→DoCoMoの変換定義部。3つ目はSoftBank→DoCoMoの変換定義部。
1つ目はサーバサイドコンテンから各キャリアの絵文字に変換する際に使用されます。
2つ目と3つ目はPOST/GETデータの変換に使用されます。


<br />
<!-- ================================================================================ -->
<!-- DoCoMo->DoCoMo/au/SoftBank変換定義                                               -->
<!-- ================================================================================ -->
<subsection title="DoCoMo→DoCoMo/au/SoftBank変換定義">
以下に、emoji.xmlファイルの1つ目のパート、DoCoMo→DoCoMo/au/SoftBankの変換定義部を記します。
<program title="emoji.xml">
&lt;emoji&gt;
  &lt;set&gt;
    &lt;no&gt;1&lt;/no&gt;
    &lt;imode&gt;
      &lt;sjis-hex&gt;f89f&lt;/sjis-hex&gt;
      &lt;sjis-dec&gt;63647&lt;/sjis-dec&gt;
      &lt;eucjp-hex&gt;8ffca1&lt;/eucjp-hex&gt;
      &lt;eucjp-dec&gt;9436321&lt;/eucjp-dec&gt;
      &lt;unicode-hex&gt;e63e&lt;/unicode-hex&gt;
      &lt;unicode-dec&gt;58942&lt;/unicode-dec&gt;
      &lt;utf8-hex&gt;ee98be&lt;/utf8-hex&gt;
      &lt;utf8-dec&gt;15636670&lt;/utf-dec&gt;
      &lt;description&gt;晴れ&lt;/description&gt;
    &lt;/imode&gt;
    &lt;ezweb&gt;
      &lt;A&gt;
        &lt;no&gt;44&lt;/no&gt;
        &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
        &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
        &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
        &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
        &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
        &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
      &lt;/A&gt;
      &lt;B&gt;
        &lt;no&gt;44&lt;/no&gt;
        &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
        &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
        &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
        &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
        &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
        &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
      &lt;/B&gt;
      &lt;C&gt;
        &lt;no&gt;44&lt;/no&gt;
        &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
        &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
        &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
        &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
        &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
        &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
      &lt;/C&gt;
      &lt;D&gt;
        &lt;no&gt;44&lt;/no&gt;
        &lt;sjis-hex&gt;f660&lt;/sjis-hex&gt;
        &lt;sjis-dec&gt;63072&lt;/sjis-dec&gt;
        &lt;unicode-hex&gt;e488&lt;/unicode-hex&gt;
        &lt;unicode-dec&gt;58504&lt;/unicode-dec&gt;
        &lt;utf8-hex&gt;eebda0&lt;/utf8-hex&gt;
        &lt;utf8-dec&gt;15646112&lt;/utf-dec&gt;
      &lt;/D&gt;
    &lt;/ezweb&gt;
    &lt;softbank&gt;
      &lt;no&gt;74&lt;/no&gt;
      &lt;sjis-hex&gt;476a&lt;/sjis-hex&gt;
      &lt;sjis-dec&gt;116572776975&lt;/sjis-dec&gt;
      &lt;unicode-hex&gt;e04a&lt;/unicode-hex&gt;
      &lt;unicode-dec&gt;57418&lt;/unicode-dec&gt;
      &lt;utf8-hex&gt;ee818a&lt;/utf8-hex&gt;
      &lt;utf8-dec&gt;15630730&lt;/utf-dec&gt;
    &lt;/softbank&gt;
  &lt;/set&gt;
     ・
     ・
     ・
     ・
&lt;/emoji&gt;
</program>

絵文字の定義は、&lt;emoji&gt;タグから&lt;/emoji&gt;タグまでの間にあります。その中の要素を説明します。
1つの絵文字につき、1つのセット（&lt;set&gt;タグから&lt;/set&gt;タグまで）とし、キャリア毎の絵文字を定義しています。
合計176セットあります。

<ol>
  <li>&lt;imode&gt;要素<br />
まず、元となるi-Mode用の絵文字は、&lt;imode&gt;タグにはさまれた間に定義されています。
&lt;imode&gt;要素は子にsjis、eucjp、utf8、unicodeのそれぞれ16進と10進表記データを保持します。
sjis-hexはShift_JISコードの16進表記、sjis-decはShift_JISコードの10進表記、eucjp-hexはEUCJP-WINの16進表記、eucjp-decはEUCJP-WINの10進表記、utf8-hexはUTF-8の16進表記、utf8-decはUTF-8の10進表記、unicode-hexはUNICODEの16進表記、unicode-decはUNICODEの10進表記となります。
サーバサイドコンテンツがSJISで記述されている場合はimode要素のsjis-hex、sjis-decを参照します。
同様にがEUCJP-WINで記述されている場合はimode要素のeucjp-hex、eucjp-decを参照します。
UTF-8で記述されている場合はimode要素のutf8-hex、utf8-decを参照します。<br />
サーバサイドコンテンツのマッチするコードがimode要素の中に存在すれば、変換は同一set内のデータを使用して行われます。
  </li>
<br />
<br />
  <li>&lt;ezweb&gt;要素<br />
アクセスしてきた端末が、AU機であった場合、&lt;ezweb&gt;要素に定義されている値に変換します。
&lt;ezweb&gt;要素は、&lt;A&gt;〜&lt;D&gt;要素を持っていて、それぞれAUの絵文字タイプＡ〜Ｄに対応していますので、
もし、Ｄタイプの絵文字端末であったなら、&lt;D&gt;要素の&lt;no&gt;に定義されている値に変換します。ここで定義されている値は、
HDML機の場合は、<b>&lt;IMG ICON="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
XHTML機の場合は、<b>&lt;IMG LOCALSRC="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
同要素にはsjis-hex、sjis-dec、unicode-hex、unicode-dec、utf8-hex、utf8-decが有りますが、今のところ使用していません。
  </li>
<br />
<br />
  <li>&lt;softbank&gt;要素<br />
アクセスしてきた端末が、SoftBank/Vodafone/J-Phone端末であった場合、&lt;softbank&gt;要素に定義されている値に変換します。
&lt;softbank&gt;要素は、上記要素と同様にsjis-hex、sjis-dec、unicode-hex、unicode-dec、utf8-hex、utf8-decを保持しています。
アクセスしてきた端末にはsjisを返す場合はsjis-hex、sjis-decの値を使用します。utf8を返す場合にはutf8-hex、utf8-decでは無くunicode-hex、unicode-decを返します。
SoftBank端末の場合は3G端末は基本的にUTF8を返すようにデバイス定義にて定義されています。UTF8で定義された場合でSoftBankの場合はUNICODEの参照文字列を返すように
なっています。(問題回避のため)
  </li>
</ol><br />
emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、
変換するようになります。<note>同一コード領域に割り当てる必要があるかもしれません</note>
</subsection>


<!-- ================================================================================ -->
<!-- au->DoCoMo変換定義                                                               -->
<!-- ================================================================================ -->
<subsection title="au→DoCoMo変換定義">
au->DoCoMo変換の定義は主にau端末からサーバサイドへのPOST/GETデータの変換に使用されます。
定義はemoji.xmlファイルの&lt;ezweb2imode&gt;タグではさまれたところに定義してあります。
&lt;set&gt;から&lt;/set&gt;までの間が1絵文字を表現する部分になります。
<br />
以下に、emoji.xmlファイルの2つ目のパート、au→DoCoMo変換定義を以下に記します。
<program title="emoji.xml">
&lt;ezweb2imode&gt;
  &lt;set&gt;
    &lt;no&gt;1&lt;/no&gt;
    &lt;ezweb&gt;
      &lt;sjis-hex&gt;F659&lt;/sjis-hex&gt;
      &lt;utf8-hex&gt;eebd99&lt;/utf8-hex&gt;
    &lt;/ezweb&gt;
    &lt;imode&gt;
      &lt;no&gt;220&lt;/no&gt;
    &lt;/imode&gt;
  &lt;/set&gt;
   ・
   ・
   ・
&lt;/ezweb2imode&gt;
</program>
<br />
<ol>
  <li>&lt;no&gt;要素<br />
auで定義されている絵文字番号を保持します。
  </li>
<br />
<br />
  <li>&lt;ezweb&gt;要素<br />
&lt;no&gt;で定義された絵文字番号の実際にPOST/GETされてくる値を保持します。sjis-hexは端末がShift_JISの場合のPOST/GETデータ、utf8-hexは端末がUTF-8の場合のPOST/GETデータになっています。
POST/GETされたデータはこの要素に記述されたコードとマッチングされ、マッチした場合絵文字を特定します。
  </li>
<br />
<br />
  <li>&lt;imode&gt;要素<br />
&lt;ezweb&gt;要素でマッチした場合に参照されるEzWeb絵文字に対応するDoCoMo絵文字番号を保持します。mod_chxjによりDoCoMo絵文字に変換する場合に使用されます。
  </li>
<br />
<br />
</ol>
</subsection>


<!-- ================================================================================ -->
<!-- SoftBank->DoCoMo変換定義                                                         -->
<!-- ================================================================================ -->
<subsection title="SoftBank→DoCoMo変換定義">
SoftBank-&gt;DoCoMo変換の定義は主にSoftBank端末からサーバサイドへのPOST/GETデータの変換に使用されます。
定義はemoji.xmlファイルの&lt;softbank2imode&gt;タグではさまれたところに定義してあります。
&lt;set&gt;から&lt;/set&gt;までの間が1絵文字を表現する部分になります。
<br />
以下に、emoji.xmlファイルの3つ目のパート、SoftBank→DoCoMo変換定義を以下に記します。
<program title="emoji.xml">
&lt;softbank2imode&gt;
  &lt;set&gt;
    &lt;no&gt;
      1
    &lt;/no&gt;
    &lt;softbank&gt;
      &lt;webcode&gt;
        4721
      &lt;/webcode&gt;
      &lt;sjis-hex&gt;
        f941
      &lt;/sjis-hex&gt;
      &lt;utf8-hex&gt;
        ee8081
      &lt;/utf8-hex&gt;
    &lt;/softbank&gt;
    &lt;imode&gt;
      &lt;no&gt;
        140
      &lt;/no&gt;
    &lt;/imode&gt;
  &lt;/set&gt;
   ・
   ・
   ・
   ・
&lt;/softbank2imode&gt;
</program>
<br />
<ol>
  <li>&lt;no&gt;要素<br />
SoftBankで定義されている絵文字番号を保持します。
  </li>
<br />
<br />
  <li>&lt;softbank&gt;要素<br />
&lt;no&gt;で定義された絵文字番号の実際にPOST/GETされてくる値を保持します。webcodeは端末がShift_JISの場合でウェブコードを送信してくる場合のPOST/GETデータ、sjis-hexは端末がShift_JISの場合のPOST/GETデータ、utf8-hexは端末がUTF-8の場合のPOST/GETデータになっています。
POST/GETされたデータはこの要素に記述されたコードとマッチングされ、マッチした場合絵文字を特定します。
  </li>
<br />
<br />
  <li>&lt;imode&gt;要素<br />
&lt;ezweb&gt;要素でマッチした場合に参照されるSoftBank絵文字に対応するDoCoMo絵文字番号を保持します。mod_chxjによりDoCoMo絵文字に変換する場合に使用されます。
  </li>
<br />
<br />
</ol>
</subsection>


</subsection>
</section>

<br />
<br />






<!-- ================================================================================ -->
<!--                                                                                  -->
<!-- デバイス定義                                                                     -->
<!--                                                                                  -->
<!-- ================================================================================ -->
<section title="デバイス定義 device_data.xml">
mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。
定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、変換せずにそのまま出力します。ただし、Perl互換の正規表現によって定義できるため、正規表現の書き方によっては全ての機種に対応させることも可能です。

<br />
<subsection title="デバイス定義の要素">
まず以下にデバイス定義を記します。
<program title="device_data.xml">
&lt;devices&gt;
  &lt;user_agent pattern="^KDDI-([^     ]+) UP.Browser/[^   ]+ .+"&gt;
    &lt;device&gt;
      &lt;device_id&gt;HI21&lt;/device_id&gt;
      &lt;device_name&gt;C3001H&lt;/device_name&gt;
      &lt;html_spec_type&gt;XHTML_MOBILE_1_0&lt;/html_spec_type&gt;
      &lt;width&gt;120&lt;/width&gt;
      &lt;heigh&gt;130&lt;/heigh&gt;
      &lt;gif&gt;true&lt;/gif&gt;
      &lt;jpeg&gt;true&lt;/jpeg&gt;
      &lt;png&gt;true&lt;/png&gt;
      &lt;bmp2&gt;false&lt;/bmp2&gt;
      &lt;bmp4&gt;false&lt;/bmp4&gt;
      &lt;color&gt;4096&lt;/color&gt;
      &lt;emoji_type&gt;C&lt;/emoji_type&gt;
      &lt;wp_width&gt;120&lt;/wp_width&gt;
      &lt;wp_heigh&gt;116&lt;/wp_heigh&gt;
      &lt;cache&gt;9740&lt;/cache&gt;
      &lt;dpi_width&gt;72&lt;/dpi_width&gt;
      &lt;dpi_heigh&gt;72&lt;/dpi_heigh&gt;
      &lt;charset&gt;SJIS&lt;/charset&gt;
    &lt;/device&gt;
    ・
    ・
    ・
  &lt;/user_agent&gt;
  &lt;user_agent&gt;
    ・
    ・
    ・
  &lt;/user_agent&gt;
    ・
    ・
    ・
&lt;/devices&gt;
</program>
デバイス定義は&lt;devices&gt;タグに囲まれた中に記述します。
devicesタグはuser_agentタグを子に持ちます。user_agentはpattern属性を保持し、端末のUser-Agentヘッダとマッチングされます。user_agentタグのpattern属性とマッチした場合には、そのuser_agentタグの子ノードであるdevice要素を1つづつ見に行きます。user_agentタグのpattern属性は正規表現となっていて、$1がデバイス識別IDになるように定義されていますので、$1とdevice_idタグの要素をマッチングします。マッチしたdeviceを該当端末とし、mod_chxjは該当端末用の変換処理を行います。

<br />
以下に各タグについての説明を記します。
<ol>
  <li><b>devicesタグ</b><br />
     全ての要素は一組のdevicesタグに囲まれます。この中に存在する要素がデバイス定義になります。
    <br />
    <br />
  </li>
  <li><b>user_agentタグ</b><br />
    User-Agentのパターンとそのパターンにマッチするdeviceを子ノードに持ちます。<br />
    pattern属性にはUser-AgentとマッチさせるPerl互換の正規表現を指定します<br />
    仮に"KDDI-CA31 UP.Browser/・・・"というUser-Agentを保持する端末からのアクセスがあった場合は、
    &lt;user_agent pattern="^KDDI-([^     ]+) UP.Browser/[^   ]+ .+"&gt;にマッチしますが、&lt;user_agent pattern="^UP.Browser/[^\-]+-([^     ]+) .+" &gt;
    にはマッチしません。
    よってmod_chxjは&lt;user_agent pattern="^KDDI-([^     ]+) UP.Browser/[^   ]+ .+"&gt;の子ノードを処理対象と判断します。<br />
    pattern属性の要素である正規表現には必ず$1で後方参照できるようグルーピングが必要です。$1で後方参照する値は以下に記すdevice_idタグの値と比較されます。
    device_idとの比較の結果、等しい値であればそのdevice_idを保持するdeviceタグが該当端末として選択されます。<br />
    user_agentタグレベルではマッチしているもののdevice_idが期待する値を持っていない場合は、user_agentタグ中の最後のdeviceが選択されます。
    <br />
    <br />
  </li>
  <li><b>deviceタグ</b><br />
    一台の端末を表現します。<br />
    子ノードとして以下を保持します。<br />
    <ol>
      <li>device_id</li>
      <li>device_name</li>
      <li>html_spec_type</li>
      <li>width</li>
      <li>height</li>
      <li>gif</li>
      <li>jpeg</li>
      <li>png</li>
      <li>bmp2</li>
      <li>bmp4</li>
      <li>color</li>
      <li>emoji_type</li>
      <li>wp_width</li>
      <li>wp_height</li>
      <li>cache</li>
      <li>dpi_width</li>
      <li>dpi_height</li>
      <li>charset</li>
    </ol>
    <br /><br />
  </li>
  <li><b>device_idタグ</b><br />
    user_agentタグのpattern属性により生成された$1により後方参照される値と比較される値を保持します。通常DoCoMoであればUser-Agentの「機種名」部、
    auであればUser-Agentの「デバイスID」部、 SoftBankであれば、User-Agentの「機種名」部を記述します。
    <program title="例">
      &lt;!-- DoCoMo F905iの場合 --&gt;
      &lt;device_id&gt;F905i&lt;/device_id&gt;

      &lt;!-- au W54Tの場合 --&gt;
      &lt;device_id&gt;TS3E&lt;/device_id&gt;

      &lt;!-- SoftBank 822SHの場合 --&gt;
      &lt;device_id&gt;822SH&lt;/device_id&gt;
    </program>
  </li>
  <li><b>device_nameタグ</b><br />
    mod_chxjでは本値をデバッグログ出力時にのみ使用します、人が見てわかりやすい名前を入力しておきます。
    device_idと混同しないように注意します。
    <program title="au W21CAの例">
      &lt;device_name&gt;W21CA&lt;/device_name&gt;
    </program>
  </li>
  <li><b>html_spec_typeタグ</b><br />
    端末のサポートするHTMLタイプを指定します。本タグの値によりHTML変換結果が変わります。
    指定できる値は以下のとおりです。大文字、小文字は区別しません。
    <table title="対応HTMLタイプ一覧">
      <thead>
        <tr>
          <td>値</td>
          <td>意味</td>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>CHTML_1_0</td>
          <td>CHTML1.0対応機種の場合記述します。HTML変換結果はCHTML1.0になります。</td>
        </tr>
        <tr>
          <td>CHTML_2_0</td>
          <td>CHTML2.0対応機種の場合記述します。HTML変換結果はCHTML2.0になります。</td>
        </tr>
        <tr>
          <td>CHTML_3_0</td>
          <td>CHTML3.0対応機種の場合記述します。HTML変換結果はCHTML3.0になります。</td>
        </tr>
        <tr>
          <td>CHTML_4_0</td>
          <td>CHTML4.0対応機種の場合記述します。HTML変換結果はCHTML4.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
        </tr>
        <tr>
          <td>CHTML_5_0</td>
          <td>CHTML5.0対応機種の場合記述します。HTML変換結果はCHTML5.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
        </tr>
        <tr>
          <td>CHTML_6_0</td>
          <td>CHTML6.0対応機種の場合記述します。HTML変換結果はCHTML6.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
        </tr>
        <tr>
          <td>CHTML_7_0</td>
          <td>CHTML7.0対応機種の場合記述します。HTML変換結果はCHTML7.0になります。(0.9.0時点ではCHTML3.0と同じ)</td>
        </tr>
        <tr>
          <td>XHTML_MOBILE_1_0</td>
          <td>auのXHTML対応機種の場合に記述します。HTML変換結果はXHTMLになります。</td>
        </tr>
        <tr>
          <td>HDML</td>
          <td>auのHDML対応機種の場合に記述します。HTML変換結果はHDMLになります。</td>
        </tr>
        <tr>
          <td>JHTML</td>
          <td>SoftBankの端末の場合に記述します。HTML変換結果はSoftBank用HTMLになります。</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li><b>widthタグ</b><br />
    端末の横幅を指定します。
  </li>
  <li><b>heightタグ</b><br />
    端末の縦幅を指定します。
  </li>
  <li><b>gifタグ</b><br />
    端末がgif画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない）場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
  </li>
  <li><b>jpegタグ</b><br />
    端末がjpeg画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない）場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
  </li>
  <li><b>pngタグ</b><br />
    端末がpng画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない）場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
  </li>
  <li><b>bmp2タグ</b><br />
    端末がbmp2画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない）場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
    通常はfalse。
  </li>
  <li><b>bmp4タグ</b><br />
    端末がbmp4画像を表示することができる場合(サポートしている場合)はtrueを指定します。表示できない(サポートしていない）場合はfalseを指定します。<note>大文字、小文字の区別なし</note>
    通常はfalse。
  </li>
  <li><b>colorタグ</b><br />
    端末の表示可能色数。
  </li>
  <li><b>emoji_typeタグ</b><br />
    auの場合に指定します。au以外の場合は指定しても意味はありません。<br />
    設定できる値は以下のとおり。
    <table title="emoji_typeに設定できる値">
      <thead>
        <tr>
          <td>値</td>
          <td>意味</td>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>A</td>
          <td>図柄タイプAをサポートしている場合に指定します。</td>
        </tr>
        <tr>
          <td>B</td>
          <td>図柄タイプBをサポートしている場合に指定します。</td>
        </tr>
        <tr>
          <td>C</td>
          <td>図柄タイプCをサポートしている場合に指定します。</td>
        </tr>
        <tr>
          <td>D</td>
          <td>図柄タイプDをサポートしている場合に指定します。</td>
        </tr>
      </tbody>
    </table>
    <note>大文字、小文字の区別なし</note>
  </li>
  <li><b>wp_widthタグ</b><br />
    壁紙の横幅を指定します。Mode=WPで画像生成する場合、この値が使用されます。
  </li>
  <li><b>wp_heightタグ</b><br />
    壁紙の縦幅を指定します。Mode=WPで画像生成する場合、この値が使用されます。
  </li>
  <li><b>cacheタグ</b><br />
    ブラウザのキャッシュサイズを指定します。
  </li>
  <li><b>dpi_widthタグ</b><br />
    端末の解像度。
  </li>
  <li><b>dpi_heightタグ</b><br />
    端末の解像度。
  </li>
  <li><b>charsetタグ(0.9.0にて追加)</b><br />
    端末に送信する文字コードを指定します。指定できる値はSJISかUTF-8のみ。
  </li>
</ol>
<br />
</subsection>
<br />
</section>


<section title="イメージ画像変換機能">
mod_chxjには、JPEG、GIF、PNG、BMPファイルを置いておくだけで、デバイス定義に従って、それぞれのキャリア対応のフォーマットに変換する機能があります。
画像のサイズ（縦Ｘ横）も、端末の画面サイズに合わせて変換します。
画像のサイズ（バイト数）については、デバイス定義中のキャッシュサイズを見て、その値よりも小さくなるように<b>努力</b>しますが、元の画像が
大きすぎる場合や、複雑な画像の場合には、キャッシュサイズよりも小さくできずに表示できない場合があります。
<br />
それぞれのタグで指定する場合には、ファイル名の拡張子（.jpgや.gif等）をはずした形で指定します。<br />
本機能には３つのモードが存在します。そのモードを以下に記します。

<subsection title="サムネイルモード">
  端末側画面サイズの約３分の１程度のサイズ（縦Ｘ横）に画像を縮小表示します。
  <program title="サムネイルモード 使用例">
  &lt;IMG SRC="/img/logo?Mode=Thumbnail"&gt;
  </program>
</subsection>
<subsection title="壁紙モード">
  端末側画面のサイズにマッチするサイズに拡大・縮小します。横長の画像の場合には、縦幅を合わせた後に左右をトリミングします。
  <program title="壁紙モード 使用例">
  &lt;IMG SRC="/img/logo?Mode=WP"&gt;
  </program>
</subsection>
<subsection title="EzGetモード">
  壁紙ダウンロードを行いたい場合に使用します。EzGETモードは、壁紙モードで出力される画像サイズと同一サイズの画像が使用されます。
  <program title="EzGetモード 使用例">
  &lt;A HREF="/img/logo?Mode=EzGet"&gt;
  </program>
</subsection>
<subsection title="その他の機能">
  モードの他に、画像サイズ（縦Ｘ横）を直接指定することも可能です。
<b>w</b>パラメータ、<b>h</b>パラメータを使用して指定します。
  <ol>
  <li>wパラメータ<br />
  横幅を指定します。
  </li>
  <li>hパラメータ<br />
  縦幅を指定します。
  </li>
  <program title="w/hパラメータ 使用例">
  &lt;IMG SRC="/img/logo?w=100&amp;h=200"&gt;
  </program>
  <li>User-Agentパラメータ（uaパラメータ）<br />
  User-Agentを指定します。指定した場合は、リクエストヘッダ中のUser-Agentを本パラメータの値で上書きします。
  このパラメータに"IGN"を指定した場合は、User-Agentを無視します。Thumbnailモード、壁紙モードと併用時は、
  640x480を元に画像サイズを算出します。
  </li>
  </ol>
</subsection>
上記全てのモード、パラメータはＧＥＴリクエストとしてのみ使用できます。
</section>

<section title="ＱＲコード出力機能">
<subsection title="ＱＲコード出力ハンドラの登録">
ＱＲコード出力機能を使用するには、ＱＲコードハンドラを登録します。
httpd.confに以下の記述を追加します。
<program title="httpd.conf">
  AddHandler chxj-qrcode .qrc
</program>
なお、ハンドラを登録しないでも、出力フィルターを経由させることで、ＱＲコードを出力させることも可能です。（※ＱＲコードの動的出力を参照）
</subsection>
<subsection title="ＱＲコードソースファイルの設置">
ハンドラを登録したら、その登録した拡張子を持つファイルを用意します。
<program title="例：a.qrc">
  &lt;?xml version=1.0 ?&gt;
  
  &lt;qrcode&gt;
    &lt;version&gt;13&lt;/version&gt;
    &lt;level&gt;H&lt;/level&gt;
    &lt;mode&gt;8bit&lt;/mode&gt;
    &lt;size&gt;1&lt;/size&gt;
    &lt;data&gt;テストデータです&lt;/data&gt;
  &lt;/qrcode&gt;
</program>
.qrcファイルは、qrcode要素、version要素、level要素、mode要素、size要素、data要素から成り立ちます。
<ol>
<li>versionタグ
  versionタグは出力するＱＲコードの生成に利用するバージョンを指定します。
  使用できるバージョンは、１〜４０までの４０種類です。
</li>
<li>levelタグ
  levelタグは出力するＱＲコードの生成に利用する誤り検出レベルを指定します。
　使用できるレベルは、L、Ｑ、Ｍ、Ｈの４つです。
</li>
<li>modeタグ
  modeタグは出力するＱＲコードの生成に利用するモードを指定します。
  使用できるモードは、NUM（数字モード）ALPHA（英数字モード）8BIT（８ビットバイトモード）KANJI（漢字モード）です。
</li>
<li>sizeタグ
  sizeタグは１モジュールを何ピクセルであらわすかを指定します。
  ０を指定した場合は、４を指定した場合と同じ動作をします。
　使用できるサイズは、０〜２０までです。
</li>
<li>dataタグ
  dataタグは、ＱＲコードに出力するデータを指定します。改行した場合は、改行文字もＱＲコード内に符号化されます。
</li>
</ol>
</subsection>
<subsection title="ＱＲコードの動的出力機能">
  プログラム等を使用し、動的にＱＲコードを出力したい場合は、上記の.qrcファイルの内容をそのままOutputFilterに通してあげればＯＫです。つまり、ChxjConvertRuleディレクティブで"EngineOn"と指定したURIが指すディレクトリに設置すれば良いということです。mod_chxj内部で、Content-Typeがtext/xmlの場合、QRCode用のファイルであるかどうかを一度読み込んで判断するので、Content-Typeには、text/xmlを設定してください。

  <program title="phpでＱＲコードを動的に出力する例">
    &lt;php
      $version = $_POST["version"];
      $level   = $_POST["level"];
      $mode    = $_POST["mode"];
      $size    = $_POST["size"];
      $data    = $_POST["data"];

      header("Content-Type: text/xml; charset=Shift_JIS");

      echo "&lt;qrcode&gt;\n";
      echo "&lt;version&gt;".$version."&lt;/version&gt;\n";
      echo "&lt;level&gt;".$level."&lt;/level&gt;\n";
      echo "&lt;mode&gt;".$mode."&lt;/mode&gt;\n";
      echo "&lt;size&gt;".$size."&lt;/size&gt;\n";
      echo "&lt;data&gt;".$data."&lt;/data&gt;\n";
      echo "&lt;/qrcode&gt;\n";
    &gt;
  </program>
  そして、上記のコードを、mod_chxj変換エンジンが処理するはずであるところに設置すれば完了です。
  
</subsection>
</section>
<section title="Cookieシミュレート機能(EXPERIMENTAL)">
<subsection title="Cookieシミュレート機能(EXPERIMENTAL)">
  Cookieを受け付けない（無視する）端末のためにCookieをシミュレートします。本機能を有効にするためにはChxjConvertRuleディレクティブを使用する必要があります。ChxjConvertRuleディレクティブの第２パラメータにCookieOnを指定します。
  
  <program title="Cookieシミュレート機能を有効にする例">
    ChxjConvertRule "^/chxj.+$" "EngineOn,CookieOn" "NONE"
  </program>

</subsection>
<subsection title="One-Time ID">
Cookieシミュレートでは、aタグ、imgタグ、formタグのURL部にOne-Time IDを埋め込むことで実現します。
そのため、ユーザがブラウザの戻るボタン等で戻った場合はCookieを取得できなくなります。
</subsection>
<subsection title="Cookieの保存場所">
Cookieの内容はサーバ側に保存されます。
保存先にはdbm、memcached、mysqlが選択できます。<br />
<font color="#ff0000">注意) memcached、mysqlを保存先に選択する場合はconfigure時にそれぞれ指定する必要があります</font><br />
保存先の指定にはChxjCookieStoreTypeディレクティブを使用します。
  <program title="ChxjCookieStoreTypeでDBMを指定した例">
    ChxjCookieStoreType "dbm"
  </program>
  <program title="ChxjCookieStoreTypeでMySQLを指定した例">
    ChxjCookieStoreType "mysql"
  </program>
  <program title="ChxjCookieStoreTypeでmemcacheを指定した例">
    ChxjCookieStoreType "memcache"
  </program>
  上記ChxjCookieStoreTypeが指定されない場合はdbmが選択されます。
<br />

デフォルトではDBMを使用し、保存ディレクトリはChxjCookieDirディレクティブを使用することで指定することができます。指定しなかった場合は、/tmpに保存されます。
  <program title="ChxjCookieDirの例">
    ChxjCookieDir /var/abc
  </program>

DBMの代わりにMySQLやmemcachedを指定することもできます。その際は、ChxjCookieDirは指定する必要はありません。
MySQLを使用するには、configure時にMySQL COOKIE機能を有効にして、コンパイルする必要があります。<note>Buildの項参照</note>
memcachedを使用するには、configure時にMEMCACHE COOKIE機能を有効にして、コンパイルする必要があります。<note>Buildの項参照</note>


MySQLを使用する場合にはChxjCookieStoreTypeディレクティブのほかに、以下のディレクティブを指定する必要もあります。
<ol>
  <li>ChxjCookieMysqlHost<br />
      MySQLサーバの動作するホストを指定します。
      <program title="ChxjCookieMysqlHostの例">
         ChxjCookieMysqlHost "localhost"
      </program>
  </li>
  <li>ChxjCookieMysqlPort<br />
      MySQLサーバのポート番号を指定します。
      <program title="ChxjCookieMysqlPortの例">
         ChxjCookieMysqlPort 3306
      </program>
  </li>
  <li>ChxjCookieMysqlDatabase<br />
      MySQLサーバのデータベース名を指定します。
      <program title="ChxjCookieMysqlDatabaseの例">
         ChxjCookieMysqlDatabase "test_db"
      </program>
  </li>
  <li>ChxjCookieMysqlUsername<br />
      MySQLサーバに接続する際に使用するユーザ名を指定します。
      <program title="ChxjCookieMysqlUsernameの例">
         ChxjCookieMysqlUsername "roottest"
      </program>
  </li>
  <li>ChxjCookieMysqlPassword<br />
      MySQLサーバに接続する際に使用するパスワードを指定します。
      <program title="ChxjCookieMysqlPasswordの例">
         ChxjCookieMysqlPassword "pwtest"
      </program>
  </li>
  <li>ChxjCookieMysqlSocketPath<br />
      MySQLのソケットパスを指定します。
      <program title="ChxjCookieMysqlSocketPathの例">
         ChxjCookieMysqlSocketPath  "/tmp/mysql.sock"
      </program>
  </li>
  <li>ChxjCookieMysqlCharset<br />
      MySQLのエンコードを指定します。
      <program title="ChxjCookieMysqlCharsetの例">
         ChxjCookieMysqlCharset  "utf8"
      </program>
  </li>
  <li>ChxjCookieMysqlTablename<br />
      MySQLのクッキーを保存するテーブル名を指定します。
      <program title="ChxjCookieMysqlTablenameの例">
         ChxjCookieMysqlTablename  "chxj_cookie"
      </program>
      上記のように"chxj_cookie"と指定すると、実際に作成されるテーブルは、chxj_cookieとchxj_cookie_expireテーブルの2つになります。
  </li>
</ol>

memcachedを使用する場合にはChxjCookieStoreTypeのほかに以下のディレクティブを指定する必要もあります。
<ol>
  <li>ChxjCookieMemcacheHost<br />
      memcachedの動作するホストを指定します。
      <program title="ChxjCookieMemcacheHostの例">
         ChxjCookieMemcacheHost "localhost"
      </program>
  </li>
  <li>ChxjCookieMemcachePort<br />
      memcachedのポート番号を指定します。
      <program title="ChxjCookieMemcachePortの例">
         ChxjCookieMemcachePort 11211
      </program>
  </li>
</ol>
</subsection>
<subsection title="Cookieの保持期間">
ChxjCookieTimeoutディレクティブで保持期間を指定することができます。指定しなかった場合は1800秒でサーバに保存されているCookieは削除されます。
  <program title="ChxjCookieTimeoutの例">
    &lt;Location /&gt;
      ChxjCookieTimeout 10
    &lt;/Location&gt;
  </program>
  上記の例は、10秒でタイムアウト(サーバから削除)するように指定しています。
</subsection>
<subsection title="CookieLazyMode">
ChxjCookieLazyMode?ǥ??쥯?ƥ??֤?"true"?????ꤹ????One-Time ID?????Ѥ??ʤ??褦?ˤ??뤳?Ȥ??Ǥ??ޤ???
Cookie?Ѥ?ID??????Ʊ????ID?????꿶?????ޤ???
?ʲ???CookieLazyMode?????򵭤??ޤ???
<program title="ChxjCookieLazyMode????">
  ChxjCookieLazyMode true
</program>
true?ʳ??????ꤹ?????̾???One-Time ID?⡼?ɤˤʤ??ޤ???
</subsection>
</section>



<section title="Refererシミュレート機能(EXPERIMENTAL)">
<subsection title="Refererシミュレート機能(EXPERIMENTAL)">
DoCoMo端末などのRefererに対応していない機種のためにRefererシミュレート機能を提供します。
本機能は、Cookieシミュレート機能を有効にすると、自動で有効になります(将来的には変更予定)。
</subsection>
</section>



</body>
</doc>
