なぜXHTML5ではないのですか?


53

だから、HTML5は大きな前進だと言われています。私が気づいた最後の一歩は、XHTMLの導入でした。利点は明白でした。単純さ、厳格さ、標準のXMLパーサーとジェネレーターを使用してWebページを操作できることなどです。

それでは、HTML5がそのすべてをロールバックするということは、どれほど奇妙でイライラするでしょう。ここでも、非標準の構文を使用しています。繰り返しになりますが、過去の荷物と解析の複雑さを処理する必要があります。繰り返しますが、標準のXMLライブラリ、パーサー、ジェネレーター、トランスフォーマーは使用できません。そして、W3Cが10年かけて正当な理由で推し進めたXMLによってもたらされたすべての利点(拡張性、名前空間、標準化など)は失われます。

XHTML5がありますが、HTML5エンコーディングのように人気が出ていないようです。たとえば、このSOの質問を参照してください。HTML5仕様でさえ、XHTML5ではなくHTML5が「ほとんどの著者に推奨される形式」であると述べています。

事実が間違っていますか?そうでなければ、なぜこのように感じるのは私だけですか?XHTML5ではなくHTML5を選択するのはなぜですか?


6
+1 HTML5のXMLの利点がすべて失われていることにイライラしているのは私だけではないようです。
アルセニムルゼンコ

いい質問をします。
コンラッドルドルフ

1
HTML5のXMLの欠点をすべて失って喜んでいるのは私だけではないことを願っています。たとえば、有効なHTML5と有効なXHTMLを比較してみましょう。HTML5:<!DOCTYPE html>Hello World、XHTML:<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"><html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body>Hello World</body></html>
zzzzBov

@zzzzBov、喜んでいるのはあなただけではないので、そもそもこの質問をしました。また、あなたは真剣に書かない<!DOCTYPE html>Hello Worldでしょうか?このバリデータでそれを試してください。
-jameshfisher

1
@eegg、オプションの開始タグの仕様を読んでいないようです。これは完全に有効なHTML5 であるため、私は真剣書く<!DOCTYPE html>Hello World!からです。短いドキュメントは帯域幅のオーバーヘッドが少ないことを意味し、これは大企業にとって大幅な節約に相当します(googleがwww.google.comに送信するものを見たことがありますか?)。
zzzzBov

回答:


25

どうやってここに来たのか読むことをお勧めしますか?。Mark Pilgrimは、HTMLからHTML5までの優れた簡潔な歴史を語っています。

基本的に、私の理解では、多くのWebページは適切なMIMEタイプを指定していないため、XHTMLの「X」を利用していません。


18
うん。その話の要約は、「ねえ、誰も仕様に準拠していません。人々が望むエラーを犯せるように指定することで、仕様に準拠させることができるかもしれません。規格に準拠しています。」誰も仕様を尊重しないという最初の仮定で仕様を書くことからは何も得られません。
-jameshfisher

1
@eegg、あなたの最後の行は現実に対するあなたの無知を示​​しています。多くの人は、誰も完璧ではないと仮定することで、すでに良い結果を得ています。「間違いを犯すと、すべてが壊れる」という仕様ではなく、「[このタイプの間違い]を犯せば、[この結果]こそが起こるはずだ」と言っています。出版するために100%正しい綴り、句読点、文法が必要な場合、棚に何冊の本がありますか?
zzzzBov

6
@zzzzBov、出版された本とのアナロジーは奇妙です。HTMLパーサーは、構文エラーがエラーメッセージで満たされる[ここにある他の言語]のパーサーよりも寛容なのはなぜですか?Cコンパイラが壊れた構文を静かに再解釈するために最善を尽くした場合の混乱を想像してください。
-jameshfisher

@eegg、私他の言語のパーサーがより寛容な方法で構文エラーに反応した場合に何が起こるかを想像することができます:間違ったブラケットやセミコロンの欠落を探す時間を短縮し、機能コードを入力する時間を長くします。優秀なプログラマーがまだプログラムを整形式にしないと言っているわけではありませんが、それは確かに平凡なプログラマーが作業コードを書くのに役立つでしょう。Cプログラムは、おそらくにはるかに似て探して終わるだろうPythonセミコロンや括弧のほとんどが消えてしまうということでプログラムし、どのようなままにしてしまうことは、重要なコードです。
zzzzBov

「要求されたリソース/past.htmlはこのサーバーで使用できなくなり、転送アドレスはありません。」
Marco

6

xml互換のhtml5を作成し、xmlをmimeタイプとして送信すると、xmlパーサーが使用され、すべての優れたジャズが返されます;)

編集:詳細については、http//wiki.whatwg.org/wiki/HTML_vs._XHTMLを参照してください


「良いジャズ」を定義します。知る限り、HTMLをXMLとして解析することには利点がありません。生成と変換は別の問題であり、便利な場合もありますが、解析自体には利点はなく、欠点のみがあります(化粧品のバグが致命的になります)。
ジョーリセブレヒト

3
@Joeri解析が非常に簡単であるという事実は、さまざまな理由で、私の本の利点です(厳密な解析により、エラーの発見が容易になります。
コンラッドルドルフ

他のxmlコンテンツを持つmicin xhtmlなど、標準のhtmlでは利用できない機能を提供することもできます。また、一般的に、すべてのxml機能、例の名前空間を使用します。htmlパーサーは、悪いソースコードを修正することができます-あなたがそれらを呼び出すと化粧品のバグ-しかし、それらの修正には代償があります。代償は、ブラウザーがコードで何を見つける可能性があるかを知る必要があるため、使用可能な機能が制限されることです。
deadalnix

3

HTML5は、ブラウザーがポステルの法則を採用することの論理的で避けられない結論です(「受け入れるものに寛容であること」)。

十分な市場シェアを持つ1つのブラウザーがこの原則を採用すると、他のブラウザーは不適合コンテンツを受け入れることで寛大になるだけでなく、競合他社と同じようにレンダリングすることで、追随を余儀なくされます。HTML5はその状況の論理的な結果です。ブラウザベンダーは、コンテンツを無効として拒否しないため(少なくとも、HTMLレベルではなく、Javascriptは別の問題です!)コンテンツ作成者が投げかける可能性のあるものの解釈を表にして同意します。この環境では、彼らは標準化オタクに親切に反応せず、「go」という単語から不正な形式のコンテンツを拒否した場合にのみ、この混乱に陥ることはないと言いました。

あなたと私は傍観者から叫び、ブラウザーベンダーとそのユーザーに、ジョンポステルを信じていなかったら世界はもっと良い場所だっただろうと言うことができますが、被害は終わりました。


3
ブラウザーの競合するずさんな話は十分に真実です。しかし、ここに問題があります。それが、標準オタクが存在する理由です。 すべてのブラウザーが最初から真っ直ぐで狭いものを強制していた場合、W3Cのような組織は、物事を管理し続けるためにここにいる必要はありません。 規格の全体的なポイントは損傷制御です。標準化団体がだらしを与えて受け入れることは、まさにその目的に反します。
-jameshfisher

1
@eegg:HTML5は解析規則を再定義して、すべての入力を有効にし、予測可能な結果を​​もたらします。構文エラーが不可能な場合、バグのクラス全体が最初から除外されます。XMLの解析エラーの機能は設計上の欠陥であり、そのように認識される必要があります。
ジョーリセブレヒト

1
@Joeri、あなたの立場は、その非常識な論理的結論に導かれたHTML5仕様の立場のようです。「HTML5はすべての入力を有効にするために解析ルールを再定義します」-しません。解析エラーの概念はまだ存在しています。「構文エラーが不可能な場合、バグのクラス全体が最初から除外されます」-多分これはパロディですか?この論理は、@ pthesisの答えに対するコメントで皮肉的に言い換えたものです。はい、構文エラーのクラスは削除され、ブラウザの構文修正エラーのより大きなクラスに置き換えられます
-jameshfisher

2

HTML5仕様は、実際にはHTML4仕様よりも大幅に改善されています。特に、エラー条件と無効なマークアップの処理は実際に標準化されています。つまり、標準を正しく実装するすべてのブラウザは、無効なマークアップを同じように処理します。

HTMLは多くの場合人間によって(通常は何らかのテンプレート言語と組み合わせて)作成され、人間は間違いを犯します。すべてのブラウザーが同じ方法で構文エラーを処理する限り、「受け入れるものに寛容であること」ルールは完全に受け入れられます。

HTMLを処理するツールとライブラリは(ほぼ)すぐに利用でき、HTMLはXMLよりも人間が作成しやすいため、有効なXMLを生成する利点はほとんどありません。


はい、HTML4仕様で。しかし、私のポイントは、XHTML1.1がすでにそれを改善しているということです。HTMLを処理するツール/ライブラリは、BeautifulSoupに似ている傾向があります。すばらしいツールではありますが、解析対象のページとともに死ぬはずです。
-jameshfisher

1

とにかく、クライアント側でより単純なパーサーまたは標準のXMLツールの利点を得ることができません。

WebにはHTMLで数十億のページがあり、そのうちのいくつかは長い間死んだ人々によって書かれているため、XMLに更新されることはありません。したがって、一般に有用なユーザーエージェントを作成する場合、とにかく古い形式のHTMLを解析できる必要があります。XHTMLには、既にサポートしなければならないHTML解析に加えて、新しい解析モードが必要になるため、恐らく追加の複雑さが導入されます。

サーバー側では、たとえば次の方法でXMLツールを利用できます。XSLTを使用してXHTMLを生成します。ただし、XMLツールチェーンを特に使用していない場合、HTMLだけでなくXML構文を使用してもメリットはありません。

(HTMLが「非標準」構文であることは正しくありません。HTMLの構文はHTML5仕様で骨の折れる詳細で指定されているため、XML構文と同じくらい標準です。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.