XHTML1.0 時、colorプラグインで bgcolorを指定するとUsageが表示される†
- 元タイトル: XHTML1.0 時 colorプラグインで bgcolorを指定するとエラーになる
- ページ: BugTrack
- 投稿者: みこ
- 優先順位: 普通
- 状態: 保留
- カテゴリー: プラグイン
- 投稿日: 2004-12-22 (水) 13:22:49
- バージョン: cvs(12/20)
メッセージ†
$html_transitional が TRUE のときに、 &color(white,black){テキスト}; とおこなうとエラーが発生します。
たしか、$html_transitional が TRUE のときって、XHTML1.0互換ですよね? (^^;
- お疲れ様です :) ちなみに何エラーでしょうか・・・ -- henoheno
http://cafelounge.net/test/cvs/index.php?colortest -- みこ
- オプション限定の問題ですね。エラーというのはusageですね。 -- henoheno
&color(): bgcolor (with CSS) not allowed;
- FALSE がデフォルトで、TRUE は XHTML 1.0 Transitional (painterプラグインのために用意された変数) ですね。しかし変数名がとてもわかりにくいですね。今まで *.ini.php にあった項目ではないので、このさい改名しましょうか? (^^; -- henoheno
diff -u -r1.18 color.inc.php
--- color.inc.php 14 Dec 2004 14:12:05 -0000 1.18
+++ color.inc.php 22 Dec 2004 14:28:39 -0000
@@ -33,7 +33,7 @@
return '&color():Invalid color: ' . htmlspecialchars($col) . ';';
}
- if (PLUGIN_COLOR_ALLOW_CSS === TRUE && $html_transitional === FALSE) {
+ if (PLUGIN_COLOR_ALLOW_CSS === TRUE || $html_transitional === FALSE) {
$delimiter = '';
if ($color != '' && $bgcolor != '') $delimiter = '; ';
if ($color != '') $color = 'color:' . $color;
- このif文で言いたいのは「XHTML1.1では<font>タグによる色指定は使えないんだぜ」という事だったのに、「XHTML1.0では絶対に<font>タグを使えよ」という内容になっていました (^^; -- henoheno
- すみません、コメント遅れました。確認とれましたのでステータスを完了とします :) -- みこ
余談: XHTML / HTML のDTD切り替えをもっとわかりやすく†
- 余談ですが、わたしも html_transitional は過去の経緯からのとりあえず的な対策フラグだとおもっていて、いっそのこと xhtml1.1/1.0T, html4.01T をも含めて本体およびプラグインにダウングレードの権利((x)htmlバージョンのチェックおよびフラグ書き換えによるxhtml11->10T->html40Tとダウングレードできるフラグ)があるといいなとおもったことは何度かあります。 -- みこ
- なぜ、html40T がはいっているかというと、IEモゴモゴ・・・ -- みこ
- いいですね。というのはtDiaryの一部のテーマ(見つけたのはchristmasのみ)が、どうもMSIEに敏感なCSS*1を使っているようで、 MSIEに対しては <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> を出力しないと中央寄せが効かない、ということがありました。しかしXHTMLとかに気軽に変更できない様では、今度はValidatorに通せなくて困ってしまうのですよね。 -- henoheno
- だんだん雑談じみてきますが (^^; 実はその話題はofficial:質問箱/309にありまして IE は xmlタグを書かなければW3C標準モードになりますが、xmlタグを書かない場合はUTF-8にするべきとなっています。ただそれも既に過去の常識で、現在は上位のプロトコルで文字コードが指定されていれば実はxmlタグを書かなくても OK ではある*2んですけどね。(Validatorはそんなとこまで見てはいないので減点されますけどね (^^;) -- みこ
- ということで、定数を用意するというのはいかがでしょうか。 -- henoheno
- PKWK_DTD_XHTML_1_1
- PKWK_DTD_XHTML_1_0_STRICT
- PKWK_DTD_XHTML_1_0_TRANSITIONAL
- PKWK_DTD_HTML_4_01_STRICT
- PKWK_DTD_HTML_4_01_TRANSITIONAL
- こんなところかな? -- henoheno
- 上記は XHTML/HTML という軸と、STRICT/TRANSITIONAL という軸という感じですか? -- みこ
- コメントありがとうございます :) 数字や文字列で区別させるのは(理解のしやすさや速度面で)無理があるだろうということで定数を考えました。大雑把ですがイメージした分け方はその通りです。また、単純に 「XHTMLなのかHTMLなのか」「STRICTなのかTRANSITIONALなのか(XHTML 1.1 では関係なし)」を判断したいニーズがあるのかどうかは現状ではわからないのでシンプルなものを考えました。 -- henoheno
- いちおう注意点として・・・XHTML1.1 は map(仕様変更), ruby(タグ追加) があるのでその部分だけ気をつけていれば、種類としては上記4つで問題がないとおもいます。ただ、XHTML1.1は各ブラウザの挙動がまだ微妙なので XHTML_1_0_STRICT もあったほうが無難かもしれません。 -- みこ
- cvs:pukiwiki.ini.php (1.103)
- cvs:lib/html.php (1.22-1.23)
- cvs:skin/pukiwiki.skin.php (1.33-1.35)
- cvs:skin/tdiary.skin.php (1.4-1.5)
- cvs:plugin/color.inc.php (1.20)
- cvs:plugin/paint.inc.php (1.17)
- Added pkwk_output_dtd() and DTD definitions
- Re-define $html_transitional => $pkwk_dtd
- まずはこんなところでいかがでしょう(どうすると大変じゃなくなるかな?) -- henoheno
- どうやら、途中の段階を見てしまっていたので(^^; 大半は解決されています。でも、2点だけ・・・ -- みこ
- 1点はどうでもいいことなのですが、 $pkwk_dtd はプレフィックス(pkwk)はいらないのでは? (^^; PukiWiki の定義(DTD)ではないんだし・・・($output_dtd とか $render_dtd ぐらいでいいのでは?) -- みこ
- 2点目は現段階だと、プラグインを通過するときに XHTML1.1 -> XHTML1.0T -> HTML4.0(Strict) がありうるのでこの軸(XHTML1.1以外はポリシーの軸(STRICT/TRANSITIONAL/FRAMESET)を移動できないか、いっそのことTRANSITIONALにするか)をどうするかですね。このあたりは変数よりも関数で受け持ったほうが楽かも・・・ -- みこ
- ふむふむ。DTDのランクダウンの処理が現状は手作業になっていて、paintプラグインでは今のところ 「現状のデフォルトがXHTML 1.1 のときだけ XHTML 1.0 Transitional にする」、というやうな処理をしています。このへんが簡便じゃないですよね。 -- henoheno
- XHTML 1.0 Strict から HTML 4.01 Strict(現状維持) あるいは Transitional にするではなくて、XHTML 1.0 Transitional を HTML 4.01 Strict にしようというのは、有効な要素の範囲に問題がないのでしょうか。私が知らないだけですが、ちょっと確認したほうがいいですね。 -- henoheno
- CYBER@GARDEN: HTML 4.01、XHTML 1.0、XHTML 1.1の要素一覧
- あ、もひとつ(^^; XHTML は <DOCTYPE html ・・・という感じで html は小文字で定義です。 -- みこ
- はい、別途コメントをいただきまして、修正しました (^^; -- henoheno
- ちょっと、日が開いたので意識あわせ。バージョンの軸(XHTML1.1 > XHTML 1.0 > HTML4.0) はダウングレード可能。ただしポリシーの軸は Strict -> Transitional はあっても、 Transitional -> Strict はない。また、FrameSet は PukiWiki ではとりあえずありえない(使わない)でいいんですよね? -- みこ
- で、上記をプラグイン作者やスキン作者(デザイナなど)が意識しなければならない現行は、まずいとおもっているので、関数でおこなったほうがいいかな・・・と( dtd_downgrade( version, policy ) とか?) -- みこ
- で、変更できない場合は・・・エラーか何かの警告を出すほうがいいのかな?(自分でいうのもなんだけど、エラー表示とかだとちょっと厳格すぎるようなきもする (^^; ) -- みこ
- ダウングレードを認める場合の作法はその通りだと思います。TransitionalにしたものをStrictにするのは変ですよね (^^; 現状、このDOCTYPEの仕掛けのためにスキンの下位互換がなくなってしまっている(特に$html_transitionalが存在しなくなっていると思う)ので、もう少し修正が必要ですね -- henoheno
pkwk_output_dtd() already called. Why?†
- BugTrackに新たに起こそうか迷いましたが、ここで。現状のCVS版のhtml.php(1.24)の処理ですが、require(SKIN_FILE);をrequire_once(SKIN_FILE);に変更したほうが良いと思われます。エラー処理時にcatbodyが呼ばれる都合上、本来のエラーと異なる原因で 'pkwk_output_dtd() already called. Why?' が出てしまうのですよ~。 -- にぶんのに
- お、当たらないだろうと思っていた物件(リミッター)に当たるとは。再現する方法は何でしょうか? 問題の関数は恐らくdie_message() ですよね。 -- henoheno
- ちなみにdie_message()の現在の仕様上、スキンファイルの中でdie_message()をコールすると動作がおかしくなります。スキンファイルの中ではdie()を使わねばなりません。 -- henoheno
- 2度呼ばれる理由と、その場所がわかれば話が進むと思われます。 -- henoheno
- あ、失礼。肝心な事を書き忘れていました。その「本来のエラー」は単なる私の環境設定ミスに起因するもので、解決済です。*3 提案の意図は初心者*4が同様の理由で引っかかると当然orgやdevを探しても該当の症状がないため、エラーの特定に一手間掛かるんじゃなかろうかと心配してみたのでした。 -- にぶんのに
- BugTrack2/20 --