Strict-HTML スレッド 2.0 (W2C Recommendation)

このエントリーをはてなブックマークに追加
377Name_Not_Found
バグ辞典スレ向きかとも思ったんですが、取り敢えずこちらに……。

ruby内(rbやrt)で、HTML4.01で言う%inline;が使いたかったので、
DTDに記されていた例(xhtml11-flat.dtd・1042行目辺り)を使って

<?xml version="1.0" encoding="ISO-2022-JP-2" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
<!ENTITY % NoRuby.content "( #PCDATA | %InlNoRuby.class; %Misc.class; )*" >
]>
<html xmlns="http://www.w3.org/1999/xhtml" version="-//W3C//DTD XHTML 1.1//EN" xml:lang="ja-JP" dir="ltr">
(以下略)

と拡張したんですが、このファイルをMozilla(Mozilla {Build ID: 2002011403} (Windows))に食べさせたら
Mozillaが吹っ飛んでしまいました。

これは、私の記述ミスなのでしょうか? それとも単にMozillaのバグ?
一応、W3CのHTML Validatorでは問題なしと言われたんですが……。
#普通のXHTML 1.1に戻したらちゃんと食べてくれましたので、他に問題がある訳では無いみたいです。
378Name_Not_Found:02/01/21 12:49 ID:yfs3P/04
すみません、"encoding="ISO-2022-JP-2"は間違いです、ISO-2022-JPです。
379Name_Not_Found:02/01/21 14:08 ID:ofiJ9dC7
>>377
XHTML1.1ではデフォルトでrt/rb内にインライン要素を記述できるよ。
(ruby要素の入れ子を除く)

ruby.modじゃなくもっと上の方で上書き定義されているのでそれを見て下さい。
(ていうか同じ所でハマった経験がある…)

%NoRuby.content;の場合、フラットDTDでは2687行の記述ではなく
1046行の記述が適用されます。
380Name_Not_Found:02/01/21 14:18 ID:ofiJ9dC7
ちなみに。
<!DOCTYPE html 外部識別子 [内部サブセット]>
の記述の場合、パーザの解析は「内部サブセット→外部サブセット」の順で行われます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
<!ENTITY % NoRuby.content "( #PCDATA | %InlNoRuby.class; %Misc.class; )*" >
]>
と記述してしまうと、パラメタ実体参照"%InlNoRuby.class;"や"%Misc.class;"の実体が
未定義であるため、ここでエラーになる訳です。

これを回避するためには
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
<!ENTITY % NoRuby.content "( #PCDATA | &#37;InlNoRuby.class; &#37;Misc.class; )*" >
]>
として、%がパラメタ実体参照の開始と見なされないようにして下さい。
(&を&amp;と書くのと一緒です)
381Name_Not_Found:02/01/21 14:26 ID:ofiJ9dC7
微妙に誤読したかも。

>>377
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd

http://www.w3.org/TR/xhtml11/DTD/xhtml11-flat.dtd
も定義は一緒です。(xhtml11-flat.dtdに一部ミスがあるっぽいけど)

xhtml11-flat.dtdはxhtml11.dtdを見易くしただけのものですよ…。
382Name_Not_Found:02/01/21 14:34 ID:ofiJ9dC7
更に誤読ハケーソ。連カキコすまそ。鬱。

>>377はちゃんと
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
<!ENTITY % NoRuby.content "( #PCDATA | &#37;InlNoRuby.class; &#37;Misc.class; )*" >
]>
って書いてたつもりだったのね(数値文字参照は展開されます…)。

それでmozがこけたとすれば、mozが悪いと思います。
383377:02/01/21 14:49 ID:yfs3P/04
>>379
あっ、そうか、先にある1044〜1048行の宣言の方が有効なんですよね。ありがとうございます。
#後に同じ宣言がある場合、そちらで上書きされるものだと勘違いしてました……。
#今まで、二日も掛けて何やってたんだ私は。
>>380
すみません、それは大丈夫です。どうやら、数値実体参照をそのまま書き込んだ為、
展開されてしまったみたいです。"&amp;#37;"と書けばいいのかな?
#って、上の実体参照を記すのにも実体参照を使ってるんですが……あぁ頭が混乱しそう。
>>381
御意。%Color.datatype;(でしたか)が無いのは有名なミスでしょうか?
>>382
はい、そうです。どうも、御丁寧にありがとうございます。

……ところで、382氏は、ひょっとしてsatoshii氏ですか?
#違っていたらごめんなさい。
いつも、興味深く拝見させて頂いております。件の拡張も、satoshii氏のサイトで勉強させて頂きました。
これからも頑張って下さい。一読者として、陰ながら応援しております。