HTML 対応化 expat & PHP3 パッチ

[ 戻る | トップページに戻る ]
[ HTML 対応化 expat & PHP3 パッチって? | パッチ内容 | 使い方 | 更新履歴 | ダウンロード ]

HTML 対応化 expat & PHP3 パッチって?

James Clark さまが作成された XML パーサである expat で HTML のパースを可能とするためのパッチ、 およびそれを Rasmus Lerdorf さまらが開発された PHP3 から利用するためのパッチです。

PHP3 は標準で XML パーサとして expat を利用していますが、 expat で HTML のパースを行うと、XML ではタグの省略を許していないために <BR> など終了タグのない (もしくは省略可能な) エレメントを使用すると パースエラーとなってしまいます。 しかもこのような fatal error からは復帰できない (エラーを検出後、続く HTML 文書 をパースしようとしてもできない) ため HTML のパースには利用できません。
そこで HTML 文書を expat でパースしてもエラーとならないようにするのがこの パッチです。これからは XHTML という時代に XML パーサで HTML 文書をパースできて 何が嬉しいかは難しいところ。(^^; まあ私はある目的があってこれを作ったのだが、需要は少ないかも。

なお expat は単独配布バージョンではなく、apache (1.3.12) 付属の expat-lite (1.2) が対象です。
また PHP3 は国際化バージョンである php-3.0.15-i18n-ja が対象です。

expat のオリジナルの配布元は http://www.jclark.com/xml/expat.html です。
PHP3 のオリジナルの配布元は http://www.php.net です。

パッチ内容

使い方

(expat-lite へのパッチあて)
apache のソースに含まれる expat-lite のあるディレクトリで 以下のコマンドを実行する。
$ cd .../apache_1.3.12/src/lib
$ zcat expat-lite.patch.gz | patch -p0

(PHP3 へのパッチあて)
PHP3 のソースを展開したディレクトリで以下のコマンドを実行する。
$ cd .../php-3.0.15-i18n-ja
$ zcat php-3.0.15-i18n-ja.patch.gz | patch -p0

(PHP3 サンプルソース)
$parser = xml_parser_create();
xml_set_element_handler($parser, "start_element", "end_element");
xml_set_character_data_handler($parser, "character_data");
xml_parser_set_option($parser, XML_OPTION_HTML_MODE, 1);     <--- これ!
使用後は HTML_MODE を 0 に戻すことを忘れないように。 apache の場合、常時起動している httpd プロセスは HTML_MODE の設定値を 保持しているので、戻すのを忘れると ある httpd に接続した時には 1 (前に HTML_MODE を 1 にしていた場合) 、 別の httpd に接続した場合には 0 となって、アクセス毎に動作がことなるという 現象に悩むことになる。

更新履歴

ダウンロード


[ 戻る | トップページに戻る ]
[ HTML 対応化 expat & PHP3 パッチって? | パッチ内容 | 使い方 | 更新履歴 | ダウンロード ]