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

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