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

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