Develop and Download Open Source Software

Browse CVS Repository

Contents of /modchxj/mod_chxj/doc/modchxj.sdoc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.14 - (show annotations) (download)
Sat Jul 1 02:44:53 2006 UTC (17 years, 9 months ago) by konn
Branch: MAIN
Changes since 1.13: +11 -1 lines
*** empty log message ***

1 <?xml version='1.0' encoding="EUC-JP" ?>
2
3 <doc xml:lang="ja">
4 <head>
5 <title>mod_chxj</title>
6 <subtitle></subtitle>
7 <author>Atsushi Konno</author>
8 <date>29 Mar 2005</date>
9 </head>
10 <body>
11 <section title="Overview">
12
13 mod_chxjはオープンソースの携帯向けコンテンツ変換Apache2.0用モジュールであり、
14 CHTML(DoCoMo i-Mode用 CHTML3.0)で記述された文書や通常のHTMLで記述された文書を、アクセスに来た端末のUser-Agentヘッダを見て、それぞれの端末にあった形式に変換します。
15 HTML文書に限らず、画像(jpg、gif、png)、絵文字についても、定義ファイルに従ってそれぞれのキャリアにあった絵文字に変換します。
16 Cookie非対応端末のために、Set-Cookie、Cookieヘッダをシミュレートすることもできます(EXPERIMENTAL)。
17
18
19 </section>
20 <section title="インストール">
21 <subsection title="準備">
22 mod_chxjをインストールする前に、下記のものを用意する必要があります。
23 <ol>
24 <li>Apache2.0のヘッダーファイル群</li>
25 <li>Apache2.0用のapxs</li>
26 <li>apr(Apache Portable Runtime)ライブラリとそのヘッダファイル郡</li>
27 <li>automake、autoconf、libtool1.3.X</li>
28 <li>ImageMagick(MagickWand)</li>
29 <li>Linux</li>
30 </ol>
31 </subsection>
32 <subsection title="mod_chxjの入手">
33 mod_chxjは<a href="http://sourceforge.jp/projects/modchxj/">こちら</a>からダウンロードすることができます。
34 </subsection>
35 <subsection title="インストール">
36 以下にmod_chxjインストール手順を示します。
37 <ol>
38 <li>Configure スクリプトを生成します<program title="Configure スクリプトの生成">
39 $ ./buildconf.sh
40 </program>
41 <note>"$"はプロンプトをあらわします。</note>
42 </li>
43 <li>Configure
44
45 以下は、/usr/include/apache2.0に、Apache2.0のヘッダーファイルが存在する場合です。
46 <program title="Configure">
47 $ ./configure --with-apache-header=/usr/include/apache2.0
48 </program>
49 <note>--with-apache-headerは必須です。</note>
50 <note>FreeBSD等の場合は--with-iconvも必須です。</note>
51 </li>
52 <li>mod_chxj.soを生成します
53 <program title="make">
54 $ make
55 </program>
56 </li>
57 <li>apacheにインストールします
58 <program title="install">
59 $ make install
60 </program>
61 </li>
62 <li>データの設置
63 etcディレクトリは以下のdevice_data.xmlとemoji.xmlをApache
64 からアクセスできるところに配置します。
65
66 以下、/etc/apache2/chxjディレクトリにchxj用設定ファイルを用意する場合
67
68 <program title="データの設置">
69 $ mkdir -p /etc/apache2/chxj
70 $ cp etc/device_data.xml /etc/apache2/chxj
71 $ cp etc/emoji.xml /etc/apache2/chxj
72 </program>
73 </li>
74 </ol>
75 </subsection>
76 </section>
77 <section title="Configuration">
78 以下はmod_chxjが/usr/lib/apache2/modulesディレクトリ配下に設置されたものとしています
79
80 <subsection title="htmlファイルが変換対象の場合">
81
82 例として、Locationが"/chxj"以下のものは全て変換する場合を説明します。
83
84 <ol>
85 <li>httpd.confに以下を追加します。
86
87 <program title="httpd.conf">
88 #====================================================================================
89 # モジュールをApache2.0にロード
90 #====================================================================================
91 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
92
93 #====================================================================================
94 # デバイスデータファイルの設定
95 #====================================================================================
96 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
97
98 #====================================================================================
99 # 絵文字データファイルの設定
100 #====================================================================================
101 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
102
103 #====================================================================================
104 # 変換エンジン動作指示命令(下記のSetOutputFilter、SetInputFilterも必須です)
105 # ChxjConvRule ==> ディレクティブ
106 # "^/chxj.+$" ==> Perl互換のURIパターン
107 # EngineOn ==> 変換エンジンを動作させる指示
108 # NONE ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
109 #====================================================================================
110 ChxjConvertRule "^/chxj.+$" "EngineOn" "NONE"
111
112 #====================================================================================
113 # 変換させる対象の設定
114 #====================================================================================
115 &lt;Location /chxj&gt;
116 SetOutputFilter chxj_output_filter
117 SetInputFilter chxj_input_filter
118 &lt;/Location&gt;
119 </program>
120 </li>
121 <li>apacheの再起動。</li>
122 </ol>
123 </subsection>
124 <subsection title="php等の出力結果が変換対象の場合">
125 <ol>
126 <li>httpd.confに以下を追加します
127
128 <program title="httpd.conf">
129 #====================================================================================
130 # モジュールをApache2.0にロード
131 #====================================================================================
132 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
133
134 #====================================================================================
135 # デバイスデータの設定
136 #====================================================================================
137 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
138
139 #====================================================================================
140 # 絵文字データの設定
141 #====================================================================================
142 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
143
144 #====================================================================================
145 # 変換エンジン動作指示命令(下記のSetOutputFilter、SetInputFilterも必須です)
146 # ChxjConvRule ==> ディレクティブ
147 # "^/chxj.+$" ==> Perl互換のURIパターン
148 # EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"
149 # EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
150 # EUC-JPからCP932に文字コード変換します。
151 #====================================================================================
152 ChxjConvertRule "^/chxj.+$" "EngineOn" "EUC-JP"
153
154 &lt;Location /chxj&gt;
155 SetOutputFilter chxj_output_filter
156 SetInputFilter chxj_input_filter
157 &lt;/Location&gt;
158 </program>
159 </li>
160 <li>apacheの再起動。</li>
161 </ol>
162 </subsection>
163
164 <subsection title="xoopsを使用し、且つwordpress、bwikiを使用している場合">
165 <ol>
166 <li>httpd.confに以下を追加します
167
168 <program title="httpd.conf">
169 #====================================================================================
170 # モジュールをApache2.0にロード
171 #====================================================================================
172 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
173
174 #====================================================================================
175 # デバイスデータの設定
176 #====================================================================================
177 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
178
179 #====================================================================================
180 # 絵文字データの設定
181 #====================================================================================
182 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
183
184 #====================================================================================
185 # 変換エンジン動作指示命令(下記のSetOutputFilter、SetInputFilterも必須です)
186 #====================================================================================
187 #====================================================================================
188 # bwikiの設定をします。bwikiではどうもxoopsヘッダの文字コードとbwiki内での携帯スキン
189 # の文字コードが一致していないようなので、bwiki内で文字コードを変換させないように
190 # 修正後、以下のルールを記述します。
191 #
192 # ChxjConvRule ディレクティブ
193 # "^/modules/bwiki.+$" このルールを適用したいURIパターン
194 # "EngineOn" 変換エンジンを有効にします。
195 # "EUC-JP" 出力時にEUC-JPからCP932に変換させます。
196 # "PC" 変換元HTMLはPCサイト用HTMLです。
197 # "DoCoMo/1.0/D501i" DoCoMo端末としてbwikiにアクセスさせます。
198 #
199 #====================================================================================
200 ChxjConvertRule "^/modules/bwiki.+$" "EngineOn" "EUC-JP" "PC" "DoCoMo/1.0/D501i"
201
202 #====================================================================================
203 # wordpressの設定をします。
204 #
205 # ChxjConvRule ディレクティブ
206 # "^/modules/wordpress.+$" このルールを適用したいURIパターン
207 # "EngineOn" 変換エンジンを有効にします。
208 # "NONE" 出力時に文字コード変換をさせません。
209 # "NONE" 変換元HTMLはPCサイト用HTMLではありません。
210 # "DoCoMo/1.0/D501i" DoCoMo端末としてwordpressにアクセスさせます。
211 #
212 #====================================================================================
213 ChxjConvertRule "^/modules/wordpress/.*$" "EngineOn" "NONE" "PC" "DoCoMo/1.0/D501i"
214
215 #====================================================================================
216 # その他の設定をします。
217 #
218 # ChxjConvRule ディレクティブ
219 # "^/.+$" このルールを適用したいURIパターン
220 # "EngineOn" 変換エンジンを有効にします。
221 # "EUC-JP" 出力時にEUC-JPからCP932に文字コード変換をさせます。
222 #
223 #====================================================================================
224 ChxjConvertRule "^/.+$" "EngineOn" "EUC-JP"
225
226
227 &lt;Location /&gt;
228 SetOutputFilter chxj_output_filter
229 SetInputFilter chxj_input_filter
230 ChxjImageEngine On
231 AllowOverride All
232 &lt;/Location&gt;
233 </program>
234 </li>
235 <li>apacheの再起動。</li>
236 </ol>
237 </subsection>
238
239 <subsection title="mod_jk2を使用したtomcatの出力結果が変換対象の場合">
240 <ol>
241 <li>httpd.confに以下を追加します
242
243 <program title="httpd.conf">
244 #====================================================================================
245 # モジュールをApache2.0にロード
246 #====================================================================================
247 LoadModule chxj_module /usr/lib/apache2/modules/mod_chxj.so
248
249 #====================================================================================
250 # デバイスデータの設定
251 #====================================================================================
252 ChxjLoadDeviceData /etc/apache2/chxj/device_data.xml
253
254 #====================================================================================
255 # 絵文字データの設定
256 #====================================================================================
257 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
258
259 #====================================================================================
260 # 変換エンジン動作指示命令(下記のSetOutputFilter、SetInputFilterも必須です)
261 # ChxjConvRule ==> ディレクティブ
262 # "^/chxj.+$" ==> Perl互換のURIパターン
263 # EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"
264 # EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
265 # EUC-JPからCP932に文字コード変換します。
266 #====================================================================================
267 ChxjConvertRule "^/chxj.+$" "EngineOn" "EUC-JP"
268
269 &lt;Location /chxj&gt;
270 SetOutputFilter chxj_output_filter
271 &lt;/Location&gt;
272 </program>
273 <note>注意:input_filterは設定しないでください!!!</note>
274 </li>
275
276 <li>chxjfilter-0.0.1.jarを生成します
277 <ol>
278 <li>build.propertiesを環境に合わせて編集します
279
280 <program title="build.propertiesの編集">
281 $ cd java
282 $ vi build.properties
283 </program>
284 </li>
285 <li>chxjfilter-0.0.1.jarを生成します
286
287 <program title="コンパイル">
288 $ ant dist
289 </program>
290 </li>
291 <li>生成されたchxjfilter-0.0.1.jarにクラスパスをとおします</li>
292 </ol>
293 </li>
294
295 <li>web.xmlの編集し、以下を追加します。
296
297 <program title="web.xml">
298 &lt;filter&gt;
299 &lt;filter-name&gt;chxjfilter&lt;/filter-name&gt;
300 &lt;filter-class&gt;com.qsdn.filter.CHXJFilter&lt;/filter-class&gt;
301 &lt;/filter&gt;
302 &lt;filter-mapping&gt;
303 &lt;filter-name&gt;chxjfilter&lt;/filter-name&gt;
304 &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
305 &lt;/filter-mapping&gt;
306 </program>
307 </li>
308
309 <li>apache等の再起動</li>
310 </ol>
311 </subsection>
312
313
314
315 <subsection title="画像自動変換機能を使用する場合">
316 <ol>
317 <li>httpd.confに以下を追加します。
318 下記は、URIが/imgで始まる全ての画像に対して動作するようmod_chxjに指示しています。
319
320 <program title="httpd.conf">
321 &lt;Location /img&gt;
322 ChxjImageEngine On
323 ChxjImageCacheDir /tmp
324 ChxjImageCopyright "A.Konno"
325 &lt;/Location&gt;
326 </program>
327
328 上記の説明を以下に示します。
329
330 <ol>
331 <li>ChxjImageEngine<br />
332 mod_chxjの画像変換ハンドラを起動するよう指示しています。
333 DefaultはOff
334
335 <br />
336 <br />
337 </li>
338
339
340 <li>ChxjImageCacheDir<br />
341 mod_chxj画像変換ハンドラが使用する変換後の画像をおいておくディレクトリを指定します。
342 デフォルトは/tmp。
343
344 <program title="ChxjImageCacheDir">
345 ChxjImageCacheDir /tmp
346 </program>
347
348 mod_chxjに画像変換キャッシュとして/tmpを使用するよう指示します。
349 <br />
350 <br />
351 </li>
352
353
354 <li>ChxjImageCopyright<br />
355 mod_chxjの画像変換ハンドラに、転送禁止設定を行うよう指示します。
356 パラメータとして任意の文字列をとります。
357 ChxjImageCopyrightディレクティブで指定された文字列は、それぞれのイメージの
358 コメント部に埋め込まれます。
359
360 <program title="ChxjImageCopyright">
361 ChxjImageCopyright "A.Konno"
362 </program>
363
364 mod_chxjに転送禁止設定を行うよう指示しています。
365 変換後イメージのコメント部分には、キャリア毎に以下の文字列を埋め込みます。
366
367 <b>AU の場合</b>
368 <program title="AU">
369 kddi_copyright=on,A.Konno
370 </program>
371
372 <b>DoCoMoの場合</b>
373 <program title="DoCoMo">copy="NO",A.Konno</program>
374
375 <b>Vodafone</b>の場合は、レスポンスヘッダに
376
377 <program title="Vodafone/J-PHONE">
378 x-jphone-copyright:no-transfer
379 </program>
380
381 を埋め込みます。
382 <note>Vodafoneの場合は、リクエストURLの最後が.pnzか、.jpzで終わるようにダミーを付けなければなりません。</note>
383 </li>
384 </ol>
385 </li>
386 </ol>
387 </subsection>
388
389 <subsection title="文字コードを変換したい場合(EXPERIMENTAL)">
390 <ol>
391 <li>httpd.confに以下を追加します。
392 下記は、URIが/chxjで始まる全てのコンテンツに対して動作するようmod_chxjに指示しています。
393 サーバ側はEUC-JPであった場合の例です。mod_chxjによってSJISに変換するように指示しています。
394
395 <program title="httpd.conf">
396 ChxjConvRule "^/chxj.+$" "EngineOn" "EUC-JP"
397 </program>
398
399 上記の説明を以下に示します。
400
401 <ol>
402 <li>ChxjConvertRule<br />
403 サーバサイドの文字コードを指定します。ここに、EUC-JPと指定してあった場合は、
404 EUC-JPからCP932に変換後、クライアントに出力されます。
405 省略した場合はNONE
406 <ol>
407 <li>変換エンジン動作指示命令(下記のSetOutputFilter、SetInputFilterも必須です)<br />
408 ChxjConvertRule ==> ディレクティブ<br />
409 "^/chxj.+$" ==> Perl互換のURIパターン<br />
410 EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"<br />
411 EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)<br />
412 <br />
413 EUC-JPからCP932に文字コード変換します。(libiconvに依存します)<br/>
414 </li>
415 </ol>
416
417 <br />
418 <br />
419 </li>
420 </ol>
421 </li>
422 </ol>
423 </subsection>
424 <subsection title="ディレクティブ">
425 <ol>
426 <li>ChxjLoadDeviceData<br />
427 デバイス定義ファイルを指定します。
428 <program title="ex)">
429 ChxjLoadDeviceData /etc/apache2/device.xml
430 </program>
431 </li>
432 <li>ChxjLoadEmojiData<br />
433 絵文字変換定義ファイルを指定します。
434 <program title="ex)">
435 ChxjLoadEmojiData /etc/apache2/chxj/emoji.xml
436 </program>
437 </li>
438 <li>ChxjImageEngine<br />
439 画像変換エンジンを有効にします。
440 パラメータとしてOnとOffを指定できます。
441 DefaultはOffです。
442 <program title="ex)">
443 ChxjImageEngine On
444 </program>
445 </li>
446 <li>ChxjImageCacheDir<br />
447 イメージの一時ファイル保存場所を指定します。
448 <program title="ex)">
449 ChxjImageCacheDir /tmp
450 </program>
451 </li>
452 <li>ChxjImageCopyright<br />
453 イメージに著作権情報を付与します。
454 <program title="ex)">
455 ChxjImageCacheDir "chosakuken jyoho"
456 </program>
457 </li>
458 <li>ChxjConvertRule<br />
459 HTML変換エンジンの適用ルールを記述します。
460 本ディレクティブを使用し、変換エンジンのOn|Offを指定します。
461 DefaultはOFFです。
462 また、ルールは記述された順番に評価し、マッチするものがあれば、その時点で対象ルールを適用します。
463 パラメータは3つ必要です。下記にパラメータを記します。
464 <table title="パラメータ">
465 <tbody>
466 <tr>
467 <td>第1パラメータ</td><td>URIを評価するPerl互換の正規表現を指定します</td>
468 </tr>
469
470 <tr>
471 <td>第2パラメータ</td><td>HTML変換エンジンのOn|Offを指定します。Onの場合は"EngineOn"。Offの場合は"EngineOff"を指定します。"EngineOn|EngineOff"の他に"CookieOn|CookieOff"を指定することもできます。複数指定する場合は","で区切って指定します。</td>
472 </tr>
473 <tr>
474 <td>第3パラメータ</td><td>文字コードを指定します。ここで指定した文字コードから"CP932"に変換します。指定できる文字コードはiconv -lコマンドによって確認することができます。変換しなくて良い場合はNONEを指定してください。</td>
475 </tr>
476 <tr>
477 <td>第4パラメータ</td><td>省略した場合は、携帯ページからの変換を意味します。PC用ページからの変換を行う場合は"PC"を第四パラメータに指定します。</td>
478 </tr>
479 <tr>
480 <td>第5パラメータ</td><td>サーバサイドアプリケーションに渡すUser-Agentを指定します。
481 例えば、wordpress等のようにCHTMLを出力するアプリケーションがある場合は、"DoCoMo/1.0/N501i"等適当なUser-Agentを指定することによって、アプリケーションにCHTMLを出力するように指示することができます。
482 ここで指定したUser-AgentはHTML出力時には評価されません。</td>
483 </tr>
484 </tbody>
485 </table>
486 <program title="ex)">
487 ChxjConvertRule "^/chxj.+$/" EngineOn EUC-JP
488 </program>
489 </li>
490 </ol>
491 </subsection>
492 </section>
493 <section title="対応するCHTMLタグ">
494 変換可能なCHTMLタグは以下のとおりです。
495
496 <table title="対応タグ一覧">
497 <thead>
498 <tr>
499 <td>タグ</td>
500 <td>属性</td>
501 <td>CHTML</td>
502 <td>HDML</td>
503 <td>XHTML</td>
504 <td>JHTML</td>
505 <td>備考</td>
506 </tr>
507 </thead>
508 <tbody>
509 <tr>
510 <td>&lt;HTML&gt;</td>
511 <td align="center"> </td>
512 <td align="center"></td>
513 <td align="center"></td>
514 <td align="center"></td>
515 <td align="center"></td>
516 <td align="left">属性を指定した場合は無視します</td>
517 </tr>
518 <tr>
519 <td>&lt;META&gt;</td>
520 <td align="center">http-equiv</td>
521 <td align="center"></td>
522 <td align="center">×</td>
523 <td align="center"></td>
524 <td align="center"></td>
525 <td align="left">CHTML1.0、HDMLでは無視します</td>
526 </tr>
527 <tr>
528 <td> </td>
529 <td align="center">content</td>
530 <td align="center"></td>
531 <td align="center">×</td>
532 <td align="center"></td>
533 <td align="center"></td>
534 <td align="left">CHTML1.0、HDMLでは無視します</td>
535 </tr>
536 <tr>
537 <td>&lt;HEAD&gt;</td>
538 <td align="center"> </td>
539 <td align="center"></td>
540 <td align="center"></td>
541 <td align="center"></td>
542 <td align="center"></td>
543 <td align="left">属性を指定した場合は無視します</td>
544 </tr>
545 <tr>
546 <td>&lt;TITLE&gt;</td>
547 <td align="center"> </td>
548 <td align="center"></td>
549 <td align="center"></td>
550 <td align="center"></td>
551 <td align="center"></td>
552 <td align="left">属性を指定した場合は無視します</td>
553 </tr>
554 <tr>
555 <td>&lt;BASE&gt;</td>
556 <td align="center"> </td>
557 <td align="center"></td>
558 <td align="center">×</td>
559 <td align="center"></td>
560 <td align="center"></td>
561 <td align="left">HDMLでは無視します</td>
562 </tr>
563 <tr>
564 <td>&lt;BODY&gt;</td>
565 <td align="center">bgcolor</td>
566 <td align="center"></td>
567 <td align="center">×</td>
568 <td align="center"></td>
569 <td align="center"></td>
570 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
571 </tr>
572 <tr>
573 <td> </td>
574 <td align="center">text</td>
575 <td align="center"></td>
576 <td align="center">×</td>
577 <td align="center"></td>
578 <td align="center"></td>
579 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
580 </tr>
581 <tr>
582 <td> </td>
583 <td align="center">link</td>
584 <td align="center"></td>
585 <td align="center">×</td>
586 <td align="center"></td>
587 <td align="center"></td>
588 <td align="left">HDML、CHTML1.0、CHTML2.0では無視します</td>
589 </tr>
590 <tr>
591 <td>&lt;A&gt;</td>
592 <td align="center">href</td>
593 <td align="center"></td>
594 <td align="center"></td>
595 <td align="center"></td>
596 <td align="center"></td>
597 <td align="left"> </td>
598 </tr>
599 <tr>
600 <td> </td>
601 <td align="center">accesskey</td>
602 <td align="center"></td>
603 <td align="center"></td>
604 <td align="center"></td>
605 <td align="center"></td>
606 <td align="left"> </td>
607 </tr>
608 <tr>
609 <td>&lt;BR&gt;</td>
610 <td align="center"> </td>
611 <td align="center"></td>
612 <td align="center"></td>
613 <td align="center"></td>
614 <td align="center"></td>
615 <td align="left"> </td>
616 </tr>
617 <tr>
618 <td>&lt;FONT&gt;</td>
619 <td align="center">color</td>
620 <td align="center"></td>
621 <td align="center">×</td>
622 <td align="center"></td>
623 <td align="center"></td>
624 <td align="left">HDML,CHTML1.0では無視します</td>
625 </tr>
626 <tr>
627 <td>&lt;FORM&gt;</td>
628 <td align="center">action</td>
629 <td align="center"></td>
630 <td align="center"></td>
631 <td align="center"></td>
632 <td align="center"></td>
633 <td align="left"> </td>
634 </tr>
635 <tr>
636 <td> </td>
637 <td align="center">method</td>
638 <td align="center"></td>
639 <td align="center">×</td>
640 <td align="center"></td>
641 <td align="center"></td>
642 <td align="left">HDMLでは無視します</td>
643 </tr>
644 <tr>
645 <td>&lt;INPUT&gt;</td>
646 <td align="center">name</td>
647 <td align="center"></td>
648 <td align="center"></td>
649 <td align="center"></td>
650 <td align="center"></td>
651 <td align="left"> </td>
652 </tr>
653 <tr>
654 <td> </td>
655 <td align="center">type</td>
656 <td align="center"></td>
657 <td align="center"></td>
658 <td align="center"></td>
659 <td align="center"></td>
660 <td align="left">text,password,hidden,radio,checkbox,submitに対応</td>
661 </tr>
662 <tr>
663 <td> </td>
664 <td align="center">value</td>
665 <td align="center"></td>
666 <td align="center"></td>
667 <td align="center"></td>
668 <td align="center"></td>
669 <td align="left"></td>
670 </tr>
671 <tr>
672 <td> </td>
673 <td align="center">istyle</td>
674 <td align="center"></td>
675 <td align="center"></td>
676 <td align="center"></td>
677 <td align="center"></td>
678 <td align="left"> </td>
679 </tr>
680 <tr>
681 <td>&lt;SELECT&lt;</td>
682 <td align="center">name</td>
683 <td align="center"></td>
684 <td align="center"></td>
685 <td align="center"></td>
686 <td align="center"></td>
687 <td align="left"> </td>
688 </tr>
689 <tr>
690 <td> </td>
691 <td align="center">size</td>
692 <td align="center"></td>
693 <td align="center">×</td>
694 <td align="center"></td>
695 <td align="center"></td>
696 <td align="left">HDMLでは無視します</td>
697 </tr>
698 <tr>
699 <td>&lt;OPTION&gt;</td>
700 <td align="center">value</td>
701 <td align="center"></td>
702 <td align="center"></td>
703 <td align="center"></td>
704 <td align="center"></td>
705 <td align="left"><note>必ず閉じてください。そのうち対応します。</note></td>
706 </tr>
707 <tr>
708 <td> </td>
709 <td align="center">checked</td>
710 <td align="center"></td>
711 <td align="center"></td>
712 <td align="center"></td>
713 <td align="center"></td>
714 <td align="left"> </td>
715 </tr>
716 <tr>
717 <td>&lt;DIV&gt;</td>
718 <td align="center">align</td>
719 <td align="center"></td>
720 <td align="center"></td>
721 <td align="center"></td>
722 <td align="center"></td>
723 <td align="left"> </td>
724 </tr>
725 <tr>
726 <td>&lt;HR&gt;</td>
727 <td align="center"> </td>
728 <td align="center"></td>
729 <td align="center"></td>
730 <td align="center"></td>
731 <td align="center"></td>
732 <td align="left"> </td>
733 </tr>
734 <tr>
735 <td>&lt;CENTER&gt;</td>
736 <td align="center"> </td>
737 <td align="center"></td>
738 <td align="center"></td>
739 <td align="center"></td>
740 <td align="center"></td>
741 <td align="left"> </td>
742 </tr>
743 <tr>
744 <td>&lt;IMG&gt;</td>
745 <td align="center">src</td>
746 <td align="center"></td>
747 <td align="center"></td>
748 <td align="center"></td>
749 <td align="center"></td>
750 <td align="left"> </td>
751 </tr>
752 <tr>
753 <td>&lt;CHXJ:IF&gt;</td>
754 <td align="center">lang</td>
755 <td align="center"></td>
756 <td align="center"></td>
757 <td align="center"></td>
758 <td align="center"></td>
759 <td align="left">lang="chtml" lang="xhtml" lang="hdml" lang="jhtml"が指定できます</td>
760 </tr>
761 </tbody>
762
763 上記以外のタグは全て無視されます。
764
765 </table>
766
767 </section>
768 <section title="独自拡張タグ">
769 <ol>
770 <li>&lt;CHXJ:IF&gt;<br />
771
772 &lt;CHXJ:IF&gt;タグと&lt;/CHXJ:IF&gt;タグではさまれたタグやテキストは、
773 変換せずに<b>そのまま</b><note>変換しませんので注意が必要です</note>出力します。必須の属性としてlangがあります。lang属性を指定することによって、
774 例えば、<b>「HDML機の場合のみ出力させる」</b>といったことを可能にします。<br />
775 <br />
776 ex)
777 <program title="HTML文書中にHDML機の場合のみ有効にしたいタグ、または文書がある場合">
778 &lt;CHXJ:IF lang="HDML" &gt;
779 &lt;NODISPLAY&gt;
780 &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;
781 &lt;/NODISPLAY&gt;
782 &lt;/CHXJ:IF&gt;
783 </program><br />
784
785 ex)
786 <program title="i-Modeのみ出力したい文書がある場合">
787 &lt;CHXJ:IF lang="chtml" &gt;
788 シークレットコードがどーのこーの。
789 &lt;/CHXJ:IF&gt;
790 </program><br />
791
792 また、lang属性は、複数指定することも可能です。<br />
793
794 <program title="HDML機,J-PHONE機は以下を出力します">
795 &lt;CHXJ:IF lang="chtml" lang="jhtml"&gt;
796 あなたの携帯は、HDML機かJ-HTML機です。
797 &lt;/CHXJ:IF&gt;
798 </program><br />
799
800 </li>
801 </ol>
802 </section>
803
804
805
806 <section title="文字コード">
807 文字コードは、絵文字の入出力がある関係上、Shift_JISのみとしています。
808 </section>
809
810
811 <section title="絵文字について">
812 i-Mode用の絵文字を書いておけば、アクセスしたキャリアによって、mod_chxjが対応の絵文字に自動変換します。
813 ソースに2byteのバイナリコードを直接書いても、10進参照文字列<note>16進参照文字列には対応していません</note>&amp;#XXX;の形)で書いても、どちらでも変換対象になります。
814 10進参照文字列で書いた場合は、mod_chxjにより、自動で2バイトコードに変換します。
815 <subsection title="絵文字変換定義">
816 絵文字の変換に関する動作を変えたい場合(例えば「ハートがあったら、AUの場合はスペードに」とか、「変換定義がおかしい」といった場合)は、
817 emoji.xmlファイルを直接編集することによって定義を変更することが可能です。emoji.xmlはXMLファイルとなっていますので、vi等で簡単に定義を
818 変更することができます<note>厳密にはXMLになっていないので、日本語の記述はSJISでお願いします。</note>
819
820 <br />
821 以下に、emoji.xmlファイルの一部を記します。
822 <program title="emoji.xml">
823 &lt;?xml encoding="Shift_JIS" &gt;
824
825 &lt;emoji&gt;
826 &lt;set&gt;
827 &lt;no&gt;1&lt;/no&gt;
828 &lt;imode&gt;
829 &lt;hex1&gt;f8&lt;/hex1&gt;
830 &lt;hex2&gt;9f&lt;/hex2&gt;
831 &lt;string&gt;&amp;#63647;&lt;/string&gt;
832 &lt;description&gt;&lt;/description&gt;
833 &lt;/imode&gt;
834 &lt;ezweb&gt;
835 &lt;A&gt;44&lt;/A&gt;
836 &lt;B&gt;44&lt;/B&gt;
837 &lt;C&gt;44&lt;/C&gt;
838 &lt;D&gt;44&lt;/D&gt;
839 &lt;/ezweb&gt;
840 &lt;jphone&gt;
841 &lt;string&gt;$Gj&lt;/string&gt;
842 &lt;/jphone&gt;
843 &lt;/set&gt;
844 </program>
845
846 絵文字の定義は、&lt;emoji&gt;タグから&lt;/emoji&gt;タグまでの間にあります。その中の要素を説明します。
847 1つの絵文字につき、1つのセット(&lt;set&gt;タグから&lt;/set&gt;タグまで)とし、キャリア毎の絵文字を定義しています。
848
849 <ol>
850 <li>&lt;imode&gt;要素<br />
851 まず、元となるi-Mode用の絵文字は、&lt;imode&gt;タグにはさまれた間に定義されています。
852 &lt;imode&gt;要素は、2バイトコード要素(&lt;hex1&gt;&lt;hex2&gt;)と、
853 10進参照文字列要素(&lt;string&gt;)を保持していて、この2つの要素を変換元の値として使用します。
854 アクセスしてきた端末が、i-Mode機であった場合で、かつCHTML中に10進参照文字列が絵文字として書かれている場合には、
855 &lt;hex1&gt;&lt;hex2&gt;要素に定義されている値に置換します。
856 </li>
857 <br />
858 <br />
859 <li>&lt;ezweb&gt;要素<br />
860 アクセスしてきた端末が、AU機であった場合、&lt;ezweb&gt;要素に定義されている値に変換します。
861 &lt;ezweb&gt;要素は、&lt;A&gt;&lt;D&gt;要素を持っていて、それぞれAUの絵文字タイプA〜Dに対応していますので、
862 もし、Dタイプの絵文字端末であったなら、&lt;D&gt;要素に定義されている値に変換します。ここで定義されている値は、
863 HDML機の場合は、<b>&lt;IMG ICON="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
864 XHTML機の場合は、<b>&lt;IMG LOCALSRC="XX"&gt;</b>の"XX"の部分に当てはめられて、置換されます。
865 </li>
866 <br />
867 <br />
868 <li>&lt;jphone&gt;要素<br />
869 アクセスしてきた端末が、Vodafone/J-Phone端末であった場合、&lt;jphone&gt;要素に定義されている値に変換します。
870 &lt;jphone&gt;要素は、&lt;string&gt;要素を保持していて、ここで定義されている値を直接使用します。
871 </li>
872 </ol><br />
873 emoji.xmlに定義されていない絵文字で、変換したい絵文字がある場合には、このファイルに新たな定義を足せば、
874 変換するようになります。
875 </subsection>
876 </section>
877
878
879 <section title="デバイス定義 device_data.xml">
880 mod_chxjの動作を決定付ける重要な定義です。変換対象の端末は全て、device_data.xmlファイルに定義される必要があります。
881 定義されていない端末は、mod_chxjとしては、認識することができません。認識できない場合には、CHTMLをそのまま出力します。
882 </section>
883
884
885 <section title="イメージ画像変換機能">
886 mod_chxjには、JPEG、GIF、PNG、BMPファイルを置いておくだけで、デバイス定義に従って、それぞれのキャリア対応のフォーマットに変換する機能があります。
887 画像のサイズ(縦X横)も、端末の画面サイズに合わせて変換します。
888 画像のサイズ(バイト数)については、デバイス定義中のキャッシュサイズを見て、その値よりも小さくなるように<b>努力</b>しますが、元の画像が
889 大きすぎる場合や、複雑な画像の場合には、キャッシュサイズよりも小さくできずに表示できない場合があります。
890 <br />
891 それぞれのタグで指定する場合には、ファイル名の拡張子(.jpgや.gif等)をはずした形で指定します。<br />
892 本機能には3つのモードが存在します。そのモードを以下に記します。
893
894 <subsection title="サムネイルモード">
895 端末側画面サイズの約3分の1程度のサイズ(縦X横)に画像を縮小表示します。
896 <program title="サムネイルモード 使用例">
897 &lt;IMG SRC="/img/logo?Mode=Thumbnail"&gt;
898 </program>
899 </subsection>
900 <subsection title="壁紙モード">
901 端末側画面のサイズにマッチするサイズに拡大・縮小します。横長の画像の場合には、縦幅を合わせた後に左右をトリミングします。
902 <program title="壁紙モード 使用例">
903 &lt;IMG SRC="/img/logo?Mode=WP"&gt;
904 </program>
905 </subsection>
906 <subsection title="EzGetモード">
907 壁紙ダウンロードを行いたい場合に使用します。EzGETモードは、壁紙モードで出力される画像サイズと同一サイズの画像が使用されます。
908 <program title="EzGetモード 使用例">
909 &lt;A HREF="/img/logo?Mode=EzGet"&gt;
910 </program>
911 </subsection>
912 <subsection title="その他の機能">
913 モードの他に、画像サイズ(縦X横)を直接指定することも可能です。
914 <b>w</b>パラメータ、<b>h</b>パラメータを使用して指定します。
915 <ol>
916 <li>wパラメータ<br />
917 横幅を指定します。
918 </li>
919 <li>hパラメータ<br />
920 縦幅を指定します。
921 </li>
922 <program title="w/hパラメータ 使用例">
923 &lt;IMG SRC="/img/logo?w=100&amp;h=200"&gt;
924 </program>
925 <li>User-Agentパラメータ(uaパラメータ)<br />
926 User-Agentを指定します。指定した場合は、リクエストヘッダ中のUser-Agentを本パラメータの値で上書きします。
927 このパラメータに"IGN"を指定した場合は、User-Agentを無視します。Thumbnailモード、壁紙モードと併用時は、
928 640x480を元に画像サイズを算出します。
929 </li>
930 </ol>
931 </subsection>
932 上記全てのモード、パラメータはGETリクエストとしてのみ使用できます。
933 </section>
934
935 <section title="QRコード出力機能">
936 <subsection title="QRコード出力ハンドラの登録">
937 QRコード出力機能を使用するには、QRコードハンドラを登録します。
938 httpd.confに以下の記述を追加します。
939 <program title="httpd.conf">
940 AddHandler chxj-qrcode .qrc
941 </program>
942 なお、ハンドラを登録しないでも、出力フィルターを経由させることで、QRコードを出力させることも可能です。(※QRコードの動的出力を参照)
943 </subsection>
944 <subsection title="QRコードソースファイルの設置">
945 ハンドラを登録したら、その登録した拡張子を持つファイルを用意します。
946 <program title="例:a.qrc">
947 &lt;?xml version=1.0 ?&gt;
948
949 &lt;qrcode&gt;
950 &lt;version&gt;13&lt;/version&gt;
951 &lt;level&gt;H&lt;/level&gt;
952 &lt;mode&gt;8bit&lt;/mode&gt;
953 &lt;size&gt;1&lt;/size&gt;
954 &lt;data&gt;テストデータです&lt;/data&gt;
955 &lt;/qrcode&gt;
956 </program>
957 .qrcファイルは、qrcode要素、version要素、level要素、mode要素、size要素、data要素から成り立ちます。
958 <ol>
959 <li>versionタグ
960 versionタグは出力するQRコードの生成に利用するバージョンを指定します。
961 使用できるバージョンは、1〜40までの40種類です。
962 </li>
963 <li>levelタグ
964 levelタグは出力するQRコードの生成に利用する誤り検出レベルを指定します。
965  使用できるレベルは、L、Q、M、Hの4つです。
966 </li>
967 <li>modeタグ
968 modeタグは出力するQRコードの生成に利用するモードを指定します。
969 使用できるモードは、NUM(数字モード)ALPHA(英数字モード)8BIT(8ビットバイトモード)KANJI(漢字モード)です。
970 </li>
971 <li>sizeタグ
972 sizeタグは1モジュールを何ピクセルであらわすかを指定します。
973 0を指定した場合は、4を指定した場合と同じ動作をします。
974  使用できるサイズは、0〜20までです。
975 </li>
976 <li>dataタグ
977 dataタグは、QRコードに出力するデータを指定します。改行した場合は、改行文字もQRコード内に符号化されます。
978 </li>
979 </ol>
980 </subsection>
981 <subsection title="QRコードの動的出力機能">
982 プログラム等を使用し、動的にQRコードを出力したい場合は、上記の.qrcファイルの内容をそのままOutputFilterに通してあげればOKです。
983
984 <program title="phpでQRコードを動的に出力する例">
985 &lt;php
986 $version = $_POST["version"];
987 $level = $_POST["level"];
988 $mode = $_POST["mode"];
989 $size = $_POST["size"];
990 $data = $_POST["data"];
991
992 echo "&lt;qrcode&gt;\n";
993 echo "&lt;version&gt;".$version."&lt;/version&gt;\n";
994 echo "&lt;level&gt;".$level."&lt;/level&gt;\n";
995 echo "&lt;mode&gt;".$mode."&lt;/mode&gt;\n";
996 echo "&lt;size&gt;".$size."&lt;/size&gt;\n";
997 echo "&lt;data&gt;".$data."&lt;/data&gt;\n";
998 echo "&lt;/qrcode&gt;\n";
999 &gt;
1000 </program>
1001 そして、上記のコードを、OutputFilterを通るところに設置すれば完了です。
1002 なお、OutputFilterを通る場合は、画像変換エンジンも動作してしまうため、使用するクライアントのUser-Agentを定義するか、もしくは、
1003 ua=IGNを指定して、リクエストしなければなりません。(もちろん、画像変換エンジンをそのまま使用する場合は何もしないでいいです。)
1004
1005
1006 </subsection>
1007 </section>
1008 <section title="Cookieシミュレート機能(EXPERIMENTAL)">
1009 <subsection title="Cookieシミュレート機能(EXPERIMENTAL)">
1010 Cookieを受け付けない(無視する)端末のためにCookieをシミュレートします。本機能を有効にするためにはChxjConvertRuleディレクティブを使用する必要があります。ChxjConvertRuleディレクティブの第2パラメータにCookieOnを指定します。
1011
1012 <program title="Cookieシミュレート機能を有効にする例">
1013 ChxjConvertRule "^/chxj.+$" "EngineOn,CookieOn" "NONE"
1014 </program>
1015 </subsection>
1016 </section>
1017 </body>
1018 </doc>

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26