2002年3月その1 - マーク付けノート

2002年03月01日

html.attlist

あと、全ページの html 要素に id="ills" class="xhtml11 strict" なるものを加えてみたのだが、どうだろか。

XHTML 1.0 や XHTML 1.1 では現状 html 要素に id や class を記述することはできません。現在策定中の XHTML 1.0 SE が勧告されれば、XHTML 1.0 では記述できるようになる予定ですが。

なお、XHTML 1.0 SE については [XHTMLメモ - XHTML 1.0 to XHTML 1.0 Second Edition] などが詳しいかと。

# ていうか NiAOU さん、トップにメニュー書いて下さい…。

MacIE 5.x と CSS

MacIE 5.x で Ancient library の表示が遅い件ですが、個々の CSS ファイルを表示させてみると block.css を取得するのに異常に時間が掛かるようです。何でかは解りませんが…というか、このファイルは一体…?

ん? ひょっとして単に not found なだけ?

2002年03月02日

XHTML 2.0

XHTML 2.0 草案公開は4月末に延期の由。

MacIE 5.x と CSS (2)

快調に表示されるようになりました > 近藤さん

"

そう言えば、HTML 3.2 には " って存在しないんですよ。これについては Introducing HTML 3.2What happened to "? という節に解説があるんですが、実は HTML 3.2 の DTD では quot なる実体が宣言されていないのです。

# ちなみに Another HTML-lint では補正されています

文書の階層構造

多くのサイト制作者が、HTML 文書の末尾に安易に address 要素や注意書、ナヴィゲーションバーの類を記述してゐる。

だが、屡々、文書の構造上、變なところにそれらの記述が出現してゐる事になつてしまつてゐる場合がある。

それは div3 の終了タグを明記するところなのではないかと。

W3C の HTML なら、HTML 文書(≠ Pre-HTML 文書)でも以下のように記述できるので、問題ありません。

<h1>見出し</h1>

<div>
 <h2>見出し</h2>
 <p>段落</p>
 <div>
  <h3>見出し</h3>
  <p>段落</p>
 </div>
 <div>
  <h3>見出し</h3>
  <p>段落</p>
 </div>
</div>

<div>
 <h2>見出し</h2>
 <p>段落</p>
 <div>
  <h3>見出し</h3>
  <p>段落</p>
 </div>
 <div>
  <h3>見出し</h3>
  <p>段落</p>
 </div>
</div>

<address>連絡先</address>

フォント弄り

いわゆるフォント弄り系のサイトを一括りに非難するのも、ジャンルに対する偏見という意味では同じ穴の狢というか。別にそれはそういうものとしての存在価値はあると思うんだが。

ただ、そういうフォント弄りの文書を HTML でマーク付けすることには全く意味がなく、むしろ HTML 文書としての S/N を悪化させるだけなので、それについては反対である。

フォント弄りの文書は「見栄えに意味がある」文書なのだから、見栄えが直接マーク付けされていなければ意味がない。テキストブラウザで閲覧されても仕方がない訳だし、その意味では、フォント弄りの文書を Strict HTML でマーク付けするのも全くナンセンスだと思う。

じゃあ見栄えを直接マーク付けするにはどんな言語を利用すれば良いのかというと、SVG を使えば良い。例えばこんな感じ。

# ちゃんと計算してないので凸凹しているけど、気にしないように。というか、SVG なんてテキストエディタで書くものじゃないよなあ。バナーサイズならともかく…。

また MIME がちゃんと設定されていないような…ビューアを入れているのに見られない人は、ローカルに保存すれば見られると思います(多分)。そこまでして見るほどのものではないと思うけど。

フォント弄り(2)

object 要素だけのページ作ればいいか。

ちなみにバナーはサイトトップの右下の方にあるやつです。

# 2003-11-11 追記

当時そういう場当たり的な対処をしていたのですが、今は必要がないので該当ページは再公開していません。あと、今はバナーもないです。

2002年03月03日

URI

さう云ふものの URN つて作れないもんですかねつて話。「名無しさん」ぢや可哀想ぢやないですか。

僕らが闇黒日記の見出し(節)を指定する URI を作れないことの方が可哀想です。いや、本当に。

2002年03月07日

だから ISO/IEC 15445 は駄目なのである(1)

主に、神崎さんの記述よりも古林さんの記述を受けて、という動機で書くものであるが。

ISO-HTML において規範とされるマーク付けは、どちらかと言えば好ましくない例として分類されるべきものであると思う。だから、自身で納得して利用する分にはともかく、わざわざこれを推奨するというのは理解できないし、推奨するのは止して欲しいとすら感じる。特に、何も知らない初心者が ISO-HTML から HTML を使い始めるのはためにならないと思う。

野嵜さんのように影響力の強い人が ISO-HTML を推奨してしまうと、意味もなく ISO-HTML に移行してしまう人も出てくる。恐らく誰も推奨しなければ誰も使わない HTML であったと思うのだが、こうなってしまうと誰かが否定的な意見を述べない限り ISO-HTML を使おうとする人が後を絶たなくなる。

神崎さんがわざわざ ISO-HTML の使用を「推奨しない」としたのも、狂信的な ISO-HTML ユーザが増加しているという困った事情に起因するものだと思う。以下、以前に述べたことも含め、ISO-HTML の何が駄目なのかということを述べてみる。

# 2003-11-12 追記

以下の文中、やや不快な表現が続きますが、特に修正はしません。ご了承下さい。

まあ若気の至りと言ってしまえばそれまでなのでしょうが、こういった論調がフレームを拡大させてしまったのは事実だと思うので。ただし、今も論旨そのものを撤回するつもりはありません。

だから ISO/IEC 15445 は駄目なのである(2)

まず初めに、今更 XML 応用でない HTML を推奨することについても批判しておく。後方互換も結構だが、HTML 4.01 Strict や ISO-HTML で文書を記述している人たちは、それらの文書が極めて処理し難いものであり、再利用性に乏しいものであるということは認識しているのだろうか。

「XHTML へ移行するメリットって何かあるの?」という反語を投げる人がいるが、こう言う人は HTML 4.01 や ISO-HTML を使い続けることのデメリットには無頓着なことが多い。僕は旧来の HTML を使い続けることのデメリットの方が遥かに大きいと思う。

当然のことだが、これらの HTML は XML パーザで処理することができない。XML パーザでの処理を行えないとは、XPointerXSL/XSLT による処理を行えないことを意味する。XML 名前空間を利用できないため、他の XML ベースの言語の組み込みにも難がある。

勿論これらの処理には SGML で利用が可能な機構を用いることもできる。例えば、XSLT に相当する処理を行うためには DSSSL を利用すればよい。しかし、DSSSL などを利用可能な環境にある人がどれだけいるのかは甚だ疑問である。マイナーだから使うなという意味ではないが、そういう HTML で文書を作成している人自身 DSSSL なんて知らないのではないだろうか。

また、これらの HTML では暗黙に EMPTYNRM NO が宣言されているため、強制空要素の終了タグを記述することができない。従って完全タグ付きの記述が不可能であるから、当然整形式の記述も不可能である。XML では最低限整形式であることが求められるが、その最低限の記述を行えないのである。

完全タグ付きの記述が行えないとは、DTD を読まない処理系での処理が不可能であることを意味する。現に Mozilla は XML でない 文書の DTD を読んでいないため、未知の強制空要素を記述すると正しく終了タグを補えない。

XHTML が XML で定義されているのは伊達や酔狂ではない。XML は極めて汎用性の高い優れた規格であり、その意味においては XHTML 1.0 と HTML 4.01 にすら雲泥の差がある。XHTML Basic には大きな Errata があるため、現状では全く使用に耐えないが(*1)、こと XHTML 1.1 は DTD の定義に関してもこれ以上なく高い完成度を誇っている(*2)。

ちなみに、特に HTML 4.01 や ISO-HTML などが後方互換に優れているなどということはない。XML が従来の SGML と互換性を持たないことは屡々述べられるが、これらの HTML もこの「従来の SGML」で定義されている訳ではないのである(*3)。これらの HTML は、全て SGML の機能拡張版である SGML Annex K (Web SGML 適応)によって定義されている。

一方、XHTML に準拠した文書は、古いブラウザで見られないことがよくあります。例へば、Mac 版の Internet Explorer 4 は、XML 宣言のある XHTML 準拠の HTML 文書をうまく整形できません。文書のソースがそのまま表示されます。

これは MacIE 4.5x の実装が(SGML 的に)不正なのが問題なのであり、XHTML の問題ではない。「NN 4.x は CSS を正しく解釈できません。だから CSS を使わずに font を使った方が無難でしょう」というのと同じ論法である。そもそも XML 宣言は単なる処理命令であり、処理命令は全ての SGML 応用で記述可能である。

原理的な話をしても、HTML 4.01 も ISO-HTML も XHTML も全て Web SGML 応用である。その中で、HTML 4.01 や ISO-HTML が Web SGML の機構をフルに活用しているのに対し、XHTML は Web SGML の機能限定版である XML の機構のみを用いて定義されている。その意味では XHTML の方が互換性は高い。

特に、この「XML 応用か否か」という差違が、今後の情報処理において決定的なものになるのは想像に難くない。今後 Web SGML パーザがエンドユーザレベルにまで普及するとでもいうなら話は別だが、そんなことはまず有り得ないだろう。パーザレベルでの処理を考慮した場合、HTML 4.01 や ISO-HTML は Web SGML として処理しなければならないが、XHTML は XML として処理できる。必要とする処理系の規模の差は歴然である。

HTML 4.01 や ISO-HTML を推奨するというのは、早い話が XML ではなく SGML を使いましょうと言っているのと同じである。それも、この場合には単なる SGML ではなく Web SGML なのである。元々 SGML で作業をしてきたという人相手ならともかく、初心者相手に XML でなく SGML で文書を作成しましょうというのはまともでないと思う。

なお、某所でも書いたことだが、「XHTML は HTML より難しい」の類の解説は出鱈目である。少なくともその発言が出るということは、発言者は全く SGML/XML を理解していない可能性が高い。XHTML 1.1 から学習を始めて、その後でマニアックな HTML 4.01 についても学習してみる、というのはある程度敷居が高いかも知れないが、その逆は全く簡単なものである。

もし、上記のような主張を目にして XHTML への移行を躊躇しているのなら、取り敢えず XHTML の書き方と留意点などに目を通してみてもらいたい。HTML 4.01 Strict や ISO-HTML のユーザなら、一時間足らずで XHTML 1.1 を理解することができるはずである。自分の情報の利用価値を高いものにしたいのであれば、僕は XHTML への移行を推奨する。

*1

XHTML Basic 1.0 の DTD は名前空間制約を満たしていない。これは完全な Errata であるため、いずれ修正されるはずではあるが、現状ではどうにもならない。早めに何とかして欲しいものである。

# モジュール XHTML の特性を活かして、文書型宣言を下記のように記述すれば何とかなるが、これは XHTML Basic と呼んで良いのか解らない。XHTML Modular Framework Module の公開識別子を考えれば構わない気もするのだが。

<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
            "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd" [
<!ENTITY % xhtml-arch.module "IGNORE" >
]>
*2

ばけらさんがこの DTD を腐っていると表現したことがあったが、恐らくばけらさんは当時 XHTML のモジュールをいじったことがなかったのだと思う。様々な方法で利用すると良く解るが、この DTD は本当に良くできている。

# 2003-11-12 追記

ばけらさんが云々は、IGNORE 区間中にある未定義のパラメタ実体参照について言っていたもので、これはばけらさんの誤解でした。(参照: えび日記, 2001-11-29)

*3

HTML 4.0 は従来の SGML (最小リテラル "ISO 8879:1986")で定義されているにも関わらず、十六進数文字参照を利用できることになっていた。このため、実は HTML 4.0 では SGML に適合しない記述が認められていたのである。

この不整合は、HTML 4.01 勧告によって定義言語を Web SGML (最小リテラル "ISO 8879:1986 (WWW)")とすることで正された。ISO-HTML でも十六進数文字参照は使用可能であるから、当然定義は Web SGML によって行われている。

だから ISO/IEC 15445 は駄目なのである(3)

上に述べたことは XML と SGML との比較であり、HTML 4.01 はそれほど批判しないのに ISO-HTML を批判することの理由にはならない。次に、XML/SGML のことは抜きにして、HTML 4.01 Strict と ISO-HTML とを比較してみる。

「普通の文書を普通にマーク附けしていくと、或種の DTD に自然に適合するやうになる」と云ふ、言はば「ネイティヴ」の HTML 制作者の出現する事を、私は期待してゐる。ウェブサイトの制作者は今、やたらと苦勞して「HTML 文書」を作つてゐる。しかし、自然に HTML 文書を書けるやうになれば、制作者はもつと樂を出來るだらう。

そして、その「自然に書かかれた HTML 文書」が宣言すべき DTD の選擇肢の一つとして、ISO/IEC 15445:2000 の DTD はあり得る。生成された HTML 文書が ISO/IEC 15445:2000 に適合するならば、制作者はその文書で ISO/IEC 15445:2000 準據を宣言して構はない。

しかしそう言う一方で、野嵜さんは明らかに ISO-HTML を「推奨」している。恐らく「野嵜さんが推奨しているから」という理由で ISO-HTML を使うようになった人も多いと思うのだが、ここが問題なのである。

普通の HTML なら、普通にマーク付けしていけば大抵は DTD に適合する。僕(恐らく神崎さんも)が問題にしているのは「自然なマーク付けが ISO-HTML では意味もなく不適合になってしまう」ということなのである。特に、見出しを含む章や節を div としてマーク付けできないというのは、マーク付け言語として余りにも不自然であり、その意味では DTD 自体が不思議マークアップを推奨しているようなものである。

見出しを含む「章」や「節」を div 要素として明示するのは、Strict 的に推奨されるべきマーク付けであると思う。このようなマーク付けを批判する人もいて、そういう人はどうも div = スタイルという偏見を持っているようだが、それこそむしろ「構造と見栄えの分離」を曲解したものである。div は「ブロック要素のまとまり」を示すものである。「h2 から次の h2 まで」という、子供にもわかるような論理的な範囲の存在を理解できないのだろうか。

以前、見出しの階層構造がきちんと取れているのなら、div で括らなくても「章」や「節」の範囲は自明である。だからそのようなマーク付けは冗長であり、Strict HTML として不可である。ということを言っていた人がいた。これは全くの誤りである。そもそも、この人の言う「自明」とは何なのだろうか。

例えば、head 要素の内容と body 要素の内容はほとんど重複しない。つまり、head 要素や body 要素の範囲というのはタグを記述しなくとも自明な場合が多い。特に、ISO-HTML のように script 要素を定義していない HTML では、head と body の範囲は常に自明である。

この場合、html 要素の内容が (head, body) となっている意味はあるのだろうか。これら二つは常に存在が自明な要素である。自明なのだから、html 要素の直下にわざわざ head や body といった要素型を定義する必要はないのではないだろうか。つまり、head や body といった要素型を定義せず、html 要素の内容を直接 (meta や link や title, ブロック要素) としても構わないのではないだろうか。

何故こういった自明な要素を定義しなければならないのか。理由は簡単である。第一に、文書や定義の自然言語的な意味を解すことのないパーザにとって、DTD 内に定義されていなくとも自明な要素など存在しないからである。存在が自明というのは自然言語的に自明というだけであり、実際に HTML を処理するパーザには全く自明などではない。

そして第二に、そもそもマーク付け言語というものは、文書内で処理を必要とする箇所の「範囲」と「分類」を明示するためのものである。「範囲」というのは取りも直さず「要素」のことであり、「分類」というのは「要素型の指定」とそれに付随する「属性の指定」のことである。

title 要素や meta 要素、link 要素などのまとまりは全て「書類情報」を示すものであり、見出し要素や段落要素などは全て「本文」を示すものである。これらの「書類情報」や「本文」といった括りは、極めて自明な「範囲」 ― 換言すれば「要素」― である。自明な範囲だからこそ、当然マーク付けを行うのである。

ISO-HTML では見出しを含む「章」や「節」を div と見なせない。これほど誰の目にも明らかな「範囲」=「要素」をマーク付けできないなどという馬鹿な話はない。もし、この「要素」 ― すなわち「見出しを含む div」 ― をマーク付けせず、しかもそれでなお「見出しから見出しまでの範囲(例えば div1 疑似要素のような)」を扱うことを期待するのであれば、それは最早 SGML などではない

「このタグは位置が自明だから省略する」というのは、レガシーな SGML の発想としてもまだ許せるものである。しかし、「この要素は存在が自明だから記述しない」というのは Strict どころか不思議マークアップもいいところである。

勿論、上記の議論に関わらず、見出しを含めた章や節を div と見なすか否かは著者の勝手である(それほど重要ではないと思う要素についてはマーク付けを行わなくとも構わないという意味で)。しかし、div で括られていた方が文書の利用価値が高いのは間違いないことは確かであるし、そういうマーク付けの方が間違いなく理に適ったものであることも確かである。

HTML 4.01 や XHTML 1.1 で文書を作成していても、章や節を div と見なさない人もいる。しかし、「面倒臭い」とか「とにかくサイズを小さくしたい」というような事情がない限りは、できるだけこの div をマーク付けすべきであると思う。XHTML 2.0 で section 要素が勧告されるまでは、この div を明示するという記述の方が、より Strict なマークの付けかたなのだと思って欲しい。

野嵜さんが言うように、自然にマーク付けした結果それがある DTD に適合するという形で ISO-HTML 準拠になったというのなら問題はない。しかし、この DTD を「推奨」することは、初心者が「見出しを div で括ってはならない」という意味不明な書式を「そうであることが望ましい」かのように勘違いすることを助長するおそれがあるように思う。だから、敢えて「推奨しない」と明言する必要が出てくるのである。

2002年03月08日

だから ISO/IEC 15445 は駄目なのである(4)

野嵜さんのように影響力の強い人が ISO-HTML を推奨してしまうと、意味もなく ISO-HTML に移行してしまう人も出てくる。

随所に野嵜さんのように影響力の強い人がという言葉が出て来るが、偏見もいいところである。因みに私自身は、野嵜さんが ISO-HTML 準拠になる以前から神崎さんのサイトで ISO-HTML のことを知り、その理念に共感し、現在も尚自分のサイトに反映させている。少なくとも私自身は批判対象ではない。

これは単に客観的な事実を述べたものであって、「影響を受けて」行動した人を批判するものではありません。変な HTML を使う人が増えてしまうということが問題なのであって、上の文はその一因を指摘したものです。

というか僕自身 PC Tips で HTML を学んだ人間ですし、そもそも何ものの影響も受けずに何かに興味を持つなんてことは有り得ませんから、誰かが誰かに影響を与えられるということ自体については当然のことと思っています。上の文はあくまで「何故 ISO-HTML を批判する必要があるのか」という動機について述べたものであり、それ以上の意味は持ちません。

XHTML Basic には大きな Errata があるため、現状では全く使用に耐えないが、こと XHTML 1.1 は DTD の定義に関してもこれ以上なく高い完成度を誇っている。

この文章は、暗に「XHTML-Basic はカスだ、XHTML 1.1 を推奨する」という感じに捉えられる。何度も自サイトで述べているし石川氏も承知だと思うが、XHTML-Basic は携帯電話などを含めた、より多くの端末からのアクセスを意図して作られた規格である。スクリプトなどクライアント側に負担のかかる記述が許される XHTML1.1 準拠の文書よりは、必要最小限で基本的な要素のみを含む XHTML-Basic 準拠のそれの方が、「より多くの人に見てもらえる」という点では優れていると思う。確かに現在の携帯電話は Shift-JIS しか通らず、現状では全く使用に耐えないが、将来的には、携帯端末からのインターネットへのアクセス数は、PC/Mac のそれを凌駕するに違いないと考えている。

ともあれ、DTD の出来不出来だけで、規格の推奨非推奨を決めつけないで欲しい。

これは、XHTML Basic の DTD が XML 的に(正確には XML 名前空間的に)不正だということを言っているものであり、それはDTD の出来不出来だけで非推奨とせざるを得ないレベルのものです。何せ、XHTML Basic の文書型を宣言している時点で不正な記述と見なされてしまうという Errata なのですから。

UA の実装云々は全く問題ではありません。勿論僕も理念的な意味や基本的な DTD 設計は推奨しています(そもそも XHTML 1.1 も XHTML Basic も造りはほとんど一緒ですから)。エラーが修正されれば明日からでも推奨しますし、エラーを修正した DTD を自前で用意できる人は今使用しても全く構わないと思います(修正例を示したのもそのためですし)。

そもそも div 要素は「汎用ブロックコンテナ」である。従って、マーク附けの方法は一意ではなくなる。「ここが(何らかの)一塊だ」ということは明示出来るが、閲覧者、あるいは処理系によっては誤解を招く

仰るとおり、div 要素型は「汎用ブロックコンテナ」です。だからこそ、「幾つかのブロック要素からなるまとまり」があればそれを div 要素と見なす、という以外のマーク付けは有り得ないと思います(blockquote/td/th/li/dd は除外しますが)。

上記引用の強調は石川によるものですが、閲覧者、あるいは処理系によっては誤解を招くとは一体どのような誤解を招くというのでしょうか。少なくとも処理系がマーク付けを「文字通りの意味」以外に受け取ることはないと思います。作成者が誤解に基づく使用法でもしない限りは。

過度の div 要素の濫用はファイル容量を肥大させ、「メンテナンス性」を低下させる。あまりにも入れ子が深くなると、閲覧者はもちろん、制作者自身にもわけがわからなくなる。

過度に濫用しなければ問題はありません。むしろ、適切に用いなければ「何のために定義されている要素型なのか」ということになりませんか。「見出しと段落からなるまとまり」というのは、最も基本的な div 要素であると思います。

また、「見出しが body 直下にしか書けない」や「address が body 直下に書けない」という制約も、別の観点から見れば、創意工夫のネタでもある。

それこそ変な DTD に無理に意義を認めようとしている以外の何ものでもないように思います。また、それなりに充実したサイトを作ることが出来るというのも、やや根拠が薄弱であるように思います。古林さんのサイトにせよ、野嵜さんのサイトにせよ、内容や見栄えが充実しているのは確かですが、「充実したソースになっているか」という HTML の種類を比較する上では最も重要な部分を蔑ろにされてはいないでしょうか。

少なくとも、ISO-HTML において意図している理念や思想を無視して、単に DTD の矛盾や記法制限をあげつらって、ISO-HTML は不思議マークアップだと決めつけるのは頂けない。

最も肝要なことですが、パーザには理念や思想は全く関係ありません。HTML を扱うのはパーザです。理念や思想を理解する人間ではありません。パーザにとってはパージングされる定義が全てですから、理念がきちんと SGML 宣言や DTD に表出していなければ、その理念は全く意味を持ちません

特に見出しの順序云々に関しては、古林さんも御存知の通り DTD 的な制約を受けるものではありません。あれは HTML としてどうしろというものではなく、ISO に準拠するためにはこうしろというものでしかありません。

ちなみに、XHTML Basic の場合は理念がきちんと DTD に記述されていますから、パーザにとっても有意味な定義として扱われます。こういう場合なら評価すべきでしょう。しかし、理念を評価すると言っても、肝心の DTD にその理念が記述されていなければ、その DTD を使う意味はないと思います。

ともあれ、影響力があろうがなかろうが、「ISO-HTML を推奨したい」という個人的な意見は許されるはずだし、あくまでそれは一意見に過ぎない。石川氏は「◎◎を推奨するのは止めろ」と言っておきながら、「△△は推奨しない、自分は◎◎を推奨する」と言っている。

自分が良いと思うものを「推奨する」として、悪いと思うものを「推奨しない」とするのは当然でしょう。野嵜さんの言を借りれば、僕もまた「自然なマーク付け」を推奨する目的で戦略的に ISO-HTML を批判しているのです。

それと、「○○を推奨したい」という「個人的な意見」そのものを批判する気は全くありません。「ISO-HTML を推奨する」という内容のみを批判しているのであって、「個人的に意見を述べる」という行為を批判するなどというのは、僕も全く人間としての冒涜であると思います。これだけは誤解しないで欲しいと思います。

最後に一つ言っておく。本気で ISO-HTML を廃止したいならば、ISO のリエゾンあるいはワーキンググループに何らかの形で訴え、規格の取り下げを図るなり、改善を求めるように仕向けるべし。規格自体はまだ発展途上であるし、より理念にかなった提案を熱意をもって出来れば、多少なりとも受け入れられるはずである。

ISO-HTML を廃止したいなどとは全く思っておりません。現状の規格は無茶だから、推奨はしないと言っているだけであって、将来的に改善されれば僕自身もユーザになるかも知れません。

ただ、僕の思うような改善がなされるとすれば、それは現状の XHTML 1.1 とほとんど同様(多少の高機能化はあるでしょうが)の定義になると思いますから、現状では XHTML 1.1 を推奨するということです。

それと、本当に改善案を訴える必要があるのは、現 ISO-HTML ユーザ自身なのでは? 現状の定義こそが完成型だと言うのなら、最早僕は何も申しませんが。

XHTML Basic の Errata について

上で触れた通り XHTML Basic の DTD には大きなエラーがあるのですが、余り知られていないようなので詳しく解説しておきます。

XHTML Basic のオリジナル DTD は、Modularization of XHTML (以下 XHTMLMOD) の XHTML Modular Framework Module (公開識別子 -//W3C//ENTITIES XHTML Modular Framework 1.0//EN)を使用しています。ところが、実際に XHTML Basic のオリジナル DTD に記述されているシステム識別子を持つ XHTML Modular Framework Module(XHTML Basic 版) は、公開識別子が同一であるにも関わらず、XHTMLMOD のオリジナルと一部記述が異なります。

http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod (XHTMLMOD オリジナル)
<!ENTITY % xhtml-arch.module "IGNORE" >
http://www.w3.org/TR/xhtml-basic/xhtml-framework-1.mod (XHTML Basic オリジナル)
<!ENTITY % xhtml-arch.module "INCLUDE" >

XHTMLMOD のオリジナルでは、xhtml-arch.module というモジュールは IGNORE なのですが、何故か XHTML Basic の版ではこれが INCLUDE になっています。結果、XHTML Basic では XHTML Base Architecture Module (公開識別子 -//W3C//ELEMENTS XHTML Base Architecture 1.0//EN) というモジュールが取り込まれるのですが、このモジュールが問題なのです。

このモジュールには次のような処理命令(PI)が記述されています(xhtml-basic10-f.dtd では164行目辺り。以下、引用中の強調は全て石川による)。

<?IS10744:arch xhtml
    public-id       =  "-//W3C//NOTATION AFDR ARCBASE XHTML 1.1//EN"
    dtd-public-id   =  "-//W3C//DTD XHTML 1.1//EN"
    dtd-system-id   =  "xhtml11.dtd"
    doc-elem-form   =  "html"
    form-att        =  "html"
    renamer-att     =  "htnames"
    suppressor-att  =  "htsupp"
    data-ignore-att =  "htign"
    auto            =  "ArcAuto"
    options         =  "HtModReq HtModOpt"
    HtModReq        =  "Framework Text Hypertext Lists Structure"
    HtModOpt        =  "Standard"
?>

これは HyTimeArchitectural Forms Definition Requirements で定義されている処理命令なのですが、この処理命令のターゲット名(PI Target)はコロン : を含んでいます。XML 1.0 勧告では、処理命令は次のように定義されています。

  • [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
  • [5] Name ::= (Letter | '_' | ':') (NameChar)*
  • [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
  • [17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))

従って、XML 1.0 勧告的には上の処理命令は正しいことになります。ところが、Namespaces in XML にはこんな記述があります。

An XML document conforms to this specification if all other tokens in the document which are required, for XML conformance, to match the XML production for Name, match this specification's production for NCName.

The effect of conformance is that in such a document:

  • All element types and attribute names contain either zero or one colon.
  • No entity names, PI targets, or notation names contain any colons.

つまり、XML 名前空間勧告を満たすためには、処理命令のターゲット名にコロンを記述してはならないことになっているのです。XHTML Basic のオリジナル DTD はこれに違反しています。

もっとも、XML 名前空間勧告に違反しているものの、この記述は XML としては妥当なものです。従って、「初めからこの文書は名前空間を扱わない」と見なせば正当化できるかも知れませんが、その場合には XML 文書としては全く特別な意味を持たず、例えばリンクやスクリプトなどは全く機能しなくなるということになります。

また、実際にはこの DTD では XML 勧告の予約名である 'xmlns' という属性を定義していますから、強制的に XML 名前空間の機構を利用しているものと見なされるはずです。

以上のように、これは大きなエラーですから、現状このオリジナルの DTD を利用することはお薦めできません。しかし、私見では、恐らくローカルに XHTML Basic オリジナルの DTD 及びモジュール一式を保存し、XHTML Modular Framework Module のみをXHTMLMOD のものに置き換えれば問題ないように思います。もしくはもっと単純に、次のような DTD を作成するのも恐らく可であると思います。

<!ENTITY % xhtml-arch.module "IGNORE" >
<!ENTITY % xhtml-basic10.dtd
     PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
            "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd" >
%xhtml-basic10.dtd;

こうすれば勿論 DTD 的な問題は解消しますし、オリジナルの DTD を改変したことになるか(なるなら XHTML Basic は名乗れない)という点でも、恐らく問題ないはずと思います。根拠としては、前述の通り XHTML Modular Framework Module の公開識別子がどちらも -//W3C//ENTITIES XHTML Modular Framework 1.0//EN であり、この公開識別子で示されるモジュールはむしろ XHTMLMOD のものであるからです。

実際、W3C HTML Validation Service で XHTML Basic の文書を検証してもエラーにならないのは、このパーザがシステム識別子を読まずに公開識別子でモジュールを判断し、XHTMLMOD のものを使用して検証を行っているためです。と思ったら、単に名前空間についての検証を行っていないだけでした。

逆に、カタログを利用していない環境で、システム識別子からモジュールを判断して XHTML Basic の文書を検証すると、必ずエラーが生じてしまうはずです。例えば Openwave SDK 5.1 などでは Entity, EntityRef, PI, Notation names, or NMToken cannot contain a colon. Line 36, Position 16 <?IS10744:arch xhtml というエラーが返るとのことです。

# 2003-11-12 追記

PITarget のコロンと Namespace in XML 仕様の問題ですが、当時 Namespace in XMLerrata に気付いていなかったため、やや用語が不正確です。詳しくは Namespace nameprefix の対応 (マーク付けノート, 2003-04-09) を参照して下さい。

だから ISO/IEC 15445 は駄目なのである(5)

ただ私は、id 属性でも書いたとおり、情報処理用のデータが必須とは思っていないので(3)には反対。web 上には、リソースをデジタルデータとして活用する人もいれば、文書として活用する人もいると思うし、前者にとっては足りないかもしれないけど、後者にとっては無駄な情報ですからねぇ。

これは確かに同意です。ただ、個人的には「前者にとっての不足」と「後者にとっての無駄」という二種類のリスクでは、前者の負うリスクの方が大きいと感じます。実際に自分がどういうマーク付けをすることになるのか、というのは、実際にある程度 HTML を書いてみなければ判らないことですし。

# それと、XHTML 2.0 の予習でも述べたように、id がなくても XHTML なら XPointer で何とかできるのですが、旧来の HTML に対してはこの機構が使用できないという辺りも、一考の余地があるように思います。

まして、HTML 4.01 Strict や ISO-HTML のユーザなら、一時間足らずで XHTML 1.1 を理解することができるはずであると言われているとおり、初心者は ISO-HTML を覚えてから xHTML に移行すれば理解が早いのでは?

それは話が逆です。HTML (基本的に SGML そのもの) は遥かに XHTML (基本的に XML そのもの) より難しいものですから、最初に HTML を理解することが大変なのです。しかも、この「難しい部分」は XHTML では全く不要なものですから、敢えて HTML 覚える必要があるというのでない限り、HTML を学ぶ必要はないと思います。「既に HTML を覚えてしまっているのなら」XHTML への移行そのものは簡単、という話です。

div に関する ISO-HTML の表現力の限界は、body に対してフラットたれと言う HTML 1.0 に端を発する、HTML 全体の限界であり、HTML 4.01 と ISO-HTML はこの件に等価の問題(無規制か、過剰規制か)を抱えているように思える

これも本当に同意です。ただ、やはり今後の HTML の在り方(特に XHTML 2.0 で予定されている section/h 要素型の導入や p 要素型がブロック要素を持てるようになるという変更)を考えた場合、HTML 4.01 の定義の方がそれに近いものではないかと思います。

上記二つの文書で、昨日の文章に対する的確な要約とそれに対する的を射た意見が述べられていたおかげで、改めて考えを整理できました。

だから ISO/IEC 15445 は駄目なのである(6)

それと、だから ISO/IEC 15445 は駄目なのである(2) で言いたかったのは、主に(ISO-HTML の場合と同様) HTML 4.01 を「推奨」する人への批判であり、現状の(エンド)ユーザ自身に対して「移行せよ」とまで言うつもりはなかったのですが、(特に導入部分の)表現が過剰 ― むしろ攻撃的 ― であったことをお詫びします。

要は、HTML よりも XHTML の方が「簡易」でかつ「応用も可能な」言語である、ということを改めて明言しておきたかったのです。XHTML から勉強し始めて、その上で HTML 4.01 にも興味を持つ、というのは稀なケース(であるべき)です。

という訳で、これから学ぼうという人は初めから XHTML を学んだ方が良いでしょうし、既に HTML を理解している人なら XHTML への移行は簡単(そして HTML より XHTML の方が利点が多い)ですから、どちらの場合にも XHTML を推奨します、ということを言いたかったのです。

だから ISO/IEC 15445 は駄目なのである(7)

…などと言いつつ、首領おお、そうか、XML格好好い、早速XHTML1.1に移行しよう、などと思ってしまっていたりという記述を読んで、XHTML の未来はバラ色ですぜ、などと勧誘してみるテスト。

だから ISO/IEC 15445 は駄目なのである(8)

例へば、以下のやうなマーク附けは、XHTML の DTD 的には全く問題のないものである。

  • div
    • h1
    • h2
    • p
    • p
    • h2
    • p
    • p
  • h2
  • p
  • p
  • h3
    • div
      • h4
      • p
      • p
      • p
      • h2
      • p
      • p

もちろん、「XHTML 派」の人も、このやうな「構造化」は好ましくない、と主張する。しかし、DTD 的に問題のない記述を、どうして批判出來るのだらうか。

下記のような構造は XHTML 1.0/1.1/Basic では不可ですが、ISO-HTML では可とされます。

もっと極端に言えば、<div class="h1">これは見出しです</div> のような記述だって valid です。DTD 的に問題のない記述だから批判できませんか?

そんなことはありません。「不思議マークアップをするな」と一蹴すべきです。前に書きましたが、valid = strict ではありません。その意味ではむしろ、DTD に表現できない部分のためのマーク付けだと表現しても良いでしょう。

しかし、誰かが言っていたように、DTD 的に表現可能であるのに valid = strict にならない DTD も問題ではあると思います。ちなみに、現状の HTML の要素型だけでは、副作用的な制約を設けない限り見出し順は DTD に表現できません。一方、ul > del > #PCDATA のような構造は XHTML ですら禁止可能です。

ついでに言えば、野嵜さんはXHTML 派と表現なさっていますが、ISO-HTML のように「見出しは body 直下にしか記述できない」という制約を用いれば、見出し順の制約は XHTML でも記述可能です(まあ、XHTML というのは XHTML 1.0/1.1/Basic を指したものなのでしょうけど)。しかも、別に div1 や pre-html といった新しい要素型を定義する必要もありません。

ただ、この制約がそれほどの犠牲を払ってまでパーザで検証すべきものであるとは、僕は思いません。これは、制作者が「h1 は見出しである」「p は段落である」というのと同次元の自明な制約として知っておくべきことです。

「段落でないものを p としてマーク付けしていたらエラーを返す」というような制約が求められることはありません。何故なら、そもそも HTML とは、マーク付け言語とは、そういう論理的な意味を明示するためにあるのです。もしそんな検証が機械で行えるなら、HTML という言語自体の存在意義がなくなってしまいます。

勿論 DTD その他でそういう検証が行えるのなら別ですが、何らかの無理矢理な制約を設けない限り行えないような種類の検証は不要です。「h1 の次に h2 を飛ばして h3 が出現したらエラー」という検証を、他の部分に支障を来しても求めるというのは、「p が段落でなかったらエラー」という検証を求めるのと大差ないように思います。

2002年03月09日

heading と header、見出し要素(2)

そう言えば、User's Guide to ISO/IEC 15445:2000(E) ISO-HTML でも h1-h6 を header と表現しているようですね。

MIME タイプ

久し振りに Moz 0.9.8 を起動してみたら、いつの間にかこのサイトでもスタイルシートが適用されている。きちんと .css が text/css になるよう変更してくれたようで、取り敢えず感謝。ここを読んだ訳ではないだろうけど。

しかし、何か変だなと思っていたら、.dtd を text/xml にしてくれているような…それは text/plain のままで宜しいと思うのですが。.mod も .sd も .dcl も text/plain のままで宜しいので。

あと、ついでと言っては何ですが、.svg を image/svg+xml に、.mml を application/mathml+xml に、.xhtml と .xht を application/xhtml+xml にして頂けると嬉しいのですが。

# まあ、流石にこれは当分改善されないだろうけど。ちなみに .dtd や .mod を application/xml-dtd にされるのは個人的に困るのです。SGML の DTD もあるので。

# 今気付いたが、もしかすると Geocities で valid HTML とかの DTD が application/xml-dtd のモジュールを取り込んでいるのも、本当はよくないのかも知れない。やはり XHTMLMOD のモジュールくらいはローカルに置いておくべきか。

だから ISO/IEC 15445 は駄目なのである(9)

XHTML 2.0 で section 要素が勧告されるまでは、この div を明示するという記述の方が、より Strict なマークの付けかたなのだと思って欲しい。 というあたりに違和感が。s/Strict な/論理構造を表現した/ あたりか?

strict でも良いのでは。Strict HTML の strict というのは、「HTML は論理構造をマーク付けするためのものである」という原則に対して strict という意味であると思うので。

# その意味では、ISO-HTML は strict というより rigid だと思ったり。しつこいか。

2002年03月10日

だから ISO/IEC 15445 は駄目なのである(10)

まとめです。

ことの発端は、神崎さんが"ISO-HTML での見出し、address 要素などについて"の記述を一部改訂したことです。この記事で神崎さんは、ISO-HTML に不合理な点があることを述べた上で、(従って)特別な必要がない限り、ISO-HTMLの利用はお薦めしませんと述べています。

ISO-HTML のユーザの方たちはこの記述に不満を感じたらしく、特に古林さんは次のように述べていました。

久々に、心の底から腹が立った。ここまで腹の立つ経験は、 弥月氏らによる中傷とサイト締め出し以来である。原因は「ISO-HTML での見出し、address 要素などについて」。なぜここまで iso-html を貶す言い方をするのだろう。はっきり言って、私には全く理解できない。

しかし、僕は神崎さんの記述は適切なものであると思うし、何より古林さんがどこにどう腹を立てたのかが解りません。「ISO-HTML にはおかしな制約があるのでお薦めしない」という記述に不満があるならば、「その制約はおかしくなどない」という根拠を示した批判をすべきです。

そこで、僕は ISO-HTML を推奨するならその根拠を明確に示して欲しいし、そもそもそんな根拠は存在しないと思う、ということを述べて、適切な根拠を示さずに ISO-HTML を推奨することを批判しました。論旨は主に次の二つです。

部分的な反論には僕が再度反論しており、その限りでは、前者に対する実質的な反論は今のところなされていないように思います。

ただ、上記の指摘とは無関係ながら、野嵜さんは「商業界では W3C より ISO/JIS の方が権威も知名度もある。W3C の規格には無関心であっても、ISO/JIS の規格になら従おうとする企業もあるのではないか」という利点を指摘しています(これについてはいわいさんも指摘している)。また、野嵜さんはこれについて次のようにも述べています。

また、ISO/IEC 15445:2000 は「古めかしい規格」ではありますが、世間一般の「HTML 觀」はそれを通り越して更に古いのであります。ISO/IEC 15445:2000 は、さう云ふ「舊弊な HTML 觀」と W3C の XML ベースの新しい HTML とを結ぶ「拔け道」として機能し得るのであり、機能させるべき仕樣なのであります。

これは神崎さんの言うところの特別な必要の一例であり、僕も一理あると思います。ところが、野嵜さんは後者の「非 XHTML の HTML を推奨することへの批判」への反論として、XML が SGML の機能を限定していること(XML が SGML より簡潔である原因)自体に対する批判も述べています。

HTML 4.01 Strict で明示を「省略して良い」とされた要素がどうして「省略して良い」のかを、「XHTML 派」の人は全く考察してゐないのではないか。

手拔きパーサで處理出來るやうに XML ではタグの省略が意味もなく一律に禁止された。だから、XML ベースの XHTML では省略出來るものも出來なくなつた。それだけの事だ。

これは明らかに XML/XHTML に対する批判であり、前述の(時間的には後述ですが)「ISO-HTML は XHTML への橋渡しとなるべき(= 本質的/将来的には XHTML の方が ISO-HTML より好ましい)」という記述と矛盾しています。野嵜さんは、XHTML を肯定なさっているのか、否定なさっているのか、どちらなのでしょうか。

また、XML に対する批判の内容そのものについても、手拔きパーサで處理出來るということを無意味と考えていらっしゃるのかという疑問があります。僕はこれ以上ない明快な意味であると思うのですが。それと、この制約は必ずしもパーザのみに対してのものではありません。OMITTAG YESEMPTYNRM NO の文書は、人間に取っても非常に読み難いものです(*4)。

もう一度、「ISO-HTML が XHTML への橋渡しとなりうる」ということについては同意であると繰り返しておきます。ただし、この理屈は当然「『商業的な理由などから ISO/JIS の権威が必要である人』相手に ISO-HTML を推奨すること」の根拠にしかなりません。「仕様そのものの内容」を推奨する理由や、「一般のウェブ制作者」に対しても推奨する理由にはなりません。

PC Tips の記事を見る限り、野嵜さんは明らかに「権威」以外の部分の「仕様」そのものについても推奨を行っており、戦略のターゲットも企業より個人制作者向けであるように感じました。また、その「仕様そのものについての推奨」も、かなりおかしなものであるように思います。例えば次のような「好評価」がそうです。

address 要素が div 要素の中に必ず含まれてゐなければならないと云ふ妙な癖がありますが、全體として極めて素直な仕樣です。

妙な癖があるのに素直とはどういうことなのでしょうか。というか、それなら XHTML 1.1 はどうなのでしょう。何かおかしな癖があったり、ひねくれたところがあったりしたでしょうか。

僕は XHTML 1.1 を「癖もなく素直な」DTD であると思うのですが、「素直で癖もない」DTD より「素直だが妙な癖のある」 DTD の方を推すというのであれば、それは「馬鹿な子ほど可愛い」という「親馬鹿」以外の何ものでもないと思います(ある意味真理ではありますが)。

上記の「妙な癖があるが素直である」というのは、セールストークにおける基本的なトリックです。ちょっと冷静に判断すれば、上記のように「素直だが妙な癖がある」と換言し、内容を改竄することなく逆の印象に変えてしまうことができます。どちらの文言も、主観的に陽ないし陰の印象を与えたものです。

この文言の客観的な意味は、あくまで「癖もあるし素直でもある」に過ぎません(言うまでもなく部分/全体という条件は付いていますが)。しかも、こう言い換えてみると、この文言は矛盾してはいないでしょうか? (こういうことを、読者の方には気に掛けていただきたいのです。)

この辺りも以前から疑問に感じていた部分であり、今回こういう記事を書く至った原因の一つであることを付け加えておきます。

*4

次のような body 要素を持つ HTML 4.01 準拠の文書があったとします('' は PCDATA)。

<body>

<p>
…
<ul>
<li>
…
<li>
…
</ul>
<p>
…
<img>
…
<p>
…

</body>

こういう文書を見ても混乱しないのは、皆さんが HTML 4.01 の DTD (的な制約)を熟知しているからです。この文書のパーズツリー(解析木)は次のようになります。

<body>
 <p>
  …
 </p>
 <ul>
  <li>
   …
  </li>
  <li>
   …
  </li>
 </ul>
 <p>
  …
  <img>
  </img>
  …
 </p>
 <p>
  …
 </p>
</body>

皆さんの想像通りでしょう。しかし、以下のマーク付けではどうでしょうか。

<body>

<para>
…
<li>
<it>
…
<it>
…
</li>
<para>
…
<artwork>
…
<para>
…

</body>

これは上の HTML の例と同程度に基本的な SGML の文書インスタンスの例で、要素名も極めてポピュラーなものにしてあります。どの要素がどこまで続いているのか、それぞれの要素の終了タグがどこに補われるか、これを見て判断できますか?

HTML 的な定義なら、という想像は簡単にできます。しかし、HTML の定義は通常の SGML 文書に比べるとかなり異端のものです。普通、リスト(li)は段落(para)の内容になりますし、逆に画像(artwork)を段落の内容とはしない場合も多くあります。また、画像が空要素かどうかも定義によります。元々 HTML でも画像は空要素になる予定ではなかったのですし、現に object は空要素ではなくなっています。

こういった定義は、当然ながら、DTD (さらに場合によっては SGML 宣言)を読まなければ人間にも理解できません。しかし、まず文書インスタンスを見た時点で、ある程度意図の読み取れないようなマーク付けは好ましくありません。

上の para の例では、常識的な定義を想定しても、内容モデルが (#PCDATA) なのか (#PCDATA|li)* なのか (#PCDATA|artwork)* なのか (#PCDATA|li|artwork)* なのか ANY なのか EMPTY なのか、少なくとも六通りの解釈が有り得ます。これは、artwork や it にしても同様です。

こういう紛らわしさをなくすためには、タグの省略を禁止してしまえばよいのです。しかし、旧来の SGML や HTML 4.01 / ISO-HTML のような EMPTYNRM NO の文書では、少なくとも強制空要素の終了タグを記述することはできません。

この不便を解消したのが XML です。少なくとも、XML の文書インスタンスを見て、内容モデルがどうなっているのかで悩んだ人はいないはずです。文書型宣言が省略されていれば、全ての要素型は暗黙に ANY と宣言されることになっているのですが、普通はそんなことを気に掛ける必要すらないでしょう。

# なお、ここでは SGML のサブセットとしての XML という立場を取っていますので、スキーマは取り敢えず DTD に限定して話を進めています。> NiAOU さん

だから ISO/IEC 15445 は駄目なのである(11)

そもそも、マーク附けされる自然言語の文書はフラットでリニアな構造なのであり、自然にマーク附けすれば出來上るマーク附け文書はフラットでリニアな構造になる。

この時点で階層になっていますが。それと、インラインの要素型は全て階層構造を示すためのものです。「HTML がフラットな構造を表す言語である」というのは、あくまで作為的な制約ですし、その制約はそもそもブロックレベルにしか課されていません。

本質的に address はよろしくない要素である。

ならば記述すべきではないのでは? あるいは、よろしくないなら採用せねば良いのだし、意図的に address を採用したにせよ、敢えて「body 直下では禁止」になる理由は野嵜さん自身述べていません。「闇黒日記」風のマーク付けを簡易化した、以下のような構造には何か不自然な点があるのですか?

少なくとも、この構造で address だけ div で括るというのは滑稽に思えますが。それとも、段落ごとまとめて div と見なすべきですか。しかし、この文書の規模が大きくなって、<p>…</p><h2>…</h2><p>…</p> になると、「まとめて div と見なす」こともできなくなってしまう。これはどうしても不合理にしか思えないのですが。

そもそも、私が「言葉 言葉 言葉」「PC Tips」で「ISO-HTML」を使つてゐる事が「ISO-HTML を推奬してゐる明かな證據である」と石川さんは決め附けました。これでは「言葉狩り」と一緒です。

そんなことは書いていません。PC Tips の内容や闇黒日記での記述を読む限りはそうであろうと判断したのですが。野嵜さんは実際には ISO-HTML を推奨していないということなのでしょうか?

文書の節構造を明示すべき義務も、今のところ、XHTML にはないのであります。

ですから、それは DTD 的には ISO-HTML も同じ穴の狢ですし、逆に、やろうと思えば XHTML でも同様の定義が DTD に表現可能だということは例示の通りです(-//Mark no Tsukekata//DTD XHTML 1.1 Heading Checker//EN)。これは「旧来の HTML」に留まることを推奨する理由にはなりません。

古林さんの将来的には、現行の ISO-HTML の理念を盛り込んだ ISO-XHTML なるものが出来れば嬉しいかとという希望に対しての回答にもなると思いますが、XML 的には「HTML であること」は「どこの定めた DTD か」ではなく「どの名前空間に属しているものか」で表現されます。これは DTD を変更しても全く差し障りなく表現可能ですから、XHTML の場合には「DTD を自作する」ことは全く問題にならないのです(新しい要素型/属性でも追加するのでない限り)。

「素直で癖もない」DTD より「素直だが妙な癖のある」 DTD の方を推す、と云ふ事を、私はしてゐません。

少なくとも初めの段階ではそうだったのではないでしょうか。現在は address に対する考え方の方を修正なさったようですが。

こういった定義は、当然ながら、DTD (さらに場合によっては SGML 宣言)を読まなければ人間にも理解できません。しかし、まず文書インスタンスを見た時点で、ある程度意図の読み取れないようなマーク付けは好ましくありません。

或意味、XML の存在意義を否定してゐるとも取れるのですがー。

野嵜さんの考える XML の存在意義とは?

なぜ W3C は、HTML 4.01 で一部のタグの記述を省略出來るやうに定義したのか

強制空要素の終了タグを省略せざるを得ないからかと。これは XHTML で改善されました、ということもできます。

「body 直下に address を置けない」から「ISO-HTML」を使ふべきでない ― 何を言つてゐるんだ。自分の書きたいやうに書けないからと言つて、文書型に文句を言ふのは筋違ひだ。

てめへで勝手に別の文書型を使へば良いだけぢやねえか。

ですから、使うべきでないとは言っていません。勧めるべきではないと言っているのです。

モジュール化された XHTML

<!ENTITY % pre.qname  "pre" >

なんだ %pre.qname; ってのは単に pre ですか、ほっ。中身のほうは……。

本当は <!ENTITY % pre.qname "%XHTML.pfx;pre" > が優先されるという罠。例えば xmlns:h="http://www.w3.org/1999/xhtml" の時に、簡単に preh:pre に変更できるように、という機構なのです。

だから ISO/IEC 15445 は駄目なのである(12)

例へば、ブロック要素は全て div で、インライン要素は全て span でマーク附けしてゐたとしても、制作者が階層構造を明示してゐたとすれば、その制作者の態度を「XHTML 信者」は批判し得ない。

XHTML の DTD では、見出し要素を含まない或 HTML 文書がよろしくないものである事を決められない。

或文書のマーク附けが、良いものであるか、惡いものであるかを、「XHTML 信者」は「常識」を根據にしてしか決定出來ない。

もちろん、「ISO-HTML」も、さうだと言へばさうなのではあるが、仕樣書の段階で見出し及び文書の構造まで説明がなされてゐるのだから、ISO/IEC 15445:2000 準據の文書を公開した制作者は「見出しなんか知らない」と言へない。

もっと極端に言えば、<div class="h1">これは見出しです</div> のような記述だって valid です。DTD 的に問題のない記述だから批判できませんか?

そんなことはありません。「不思議マークアップをするな」と一蹴すべきです。前に書きましたが、valid = strict ではありません。その意味ではむしろ、DTD に表現できない部分のためのマーク付けだと表現しても良いでしょう。

だから ISO/IEC 15445 は駄目なのである(13)

確かに機械は融通が効かないから機械/パーザは理念まで見ないのは事実。しかし、その仕様を作成するのは、何らかの理念を有する人間ではないですか。その意味で、「ISO-HTML の DTD 上の欠陥は認めるが、それだけで駄目であるとまで言うのは止めてくれ」と言ったのです。

了解しました。

# 2003-11-12 追記

当時ここに以下のような文がコメントアウトされていたのですが、自戒を込めて公開しておきます。

それと、駄目なのであるという物騒な物言いは、こういう導入の方がどちらの側も真面目に議論できるかと思ってしたものです。要するに煽り以上の意味はありません。気分を害された方にはこの場を借りて謝っておきます。

この文書のステータス

URI
http://www.satoshii.org/markup/notes/2002/03a
初版
2002-03-01
最終更新
2003-11-22
著者
石川哲志
Copyright © 2002-2003 Satoshi ISHIKAWA, All Rights Reserved.