web-dev-qa-db-ja.com

text / html MIMEタイプを使用して構文XHTML5を提供しますか?

現在、HTML5タグで記述されたサイトがあります。プログラムによるデータの抽出を容易にするために、名前空間などをサポートして、サイトをXMLとして解析できるようにしたいと思います。

現在、私は<!DOCTYPE html>

<meta charset="utf-8">

私が収集したものは、HTML5でコンテンツタイプを明示的に設定することと同等です。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

私の現在の設定のために。 XMLを提供するために、正しいことは

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

また、Content-Typeを

<meta http-equiv="content-type" content="application/xhtml+xml; charset=iso-8859-1" />

または、それは必要ではありませんか? content-typeを「application/xhtml + xml」にすることの利点は何ですか?欠点は何ですか? (そのように聞こえるかもしれません Internet Explorerのレンダリングを中断します サイトの??しかし、おそらくその情報は古くなっていますか?)

どうもありがとう!

2
cboettig

ポリグロットドキュメントを作成しようとしているようです(そして、私は Clippy !のように聞こえます)本質的に、それは有効なXMLでもあるHTML5ドキュメントです。

基本的には、通常どおり続行し、有効なHTML5を作成する必要があります。自己閉鎖要素を閉じる必要があります(たとえば、<br><br />になり、imgsourcehrなどでも同じです)属性は引用符で囲まれています(例:class="foo"ではなく、class=foo)。

これらを読んでください:

(そのうちのいくつかは少し古いかもしれません)

その他の注意事項:

  • 質問で言及したXHTML 1.0 Strict DoctypeはXHTML5ではありません。 XHTML 1.0です。代わりに<!DOCTYPE html>を使用してください。
  • ページをapplication/xhtml+xmlとして提供すると、IE8以下ではページがまったく機能しなくなります。さらに、マークアップにエラーがまったくある場合application/xhtml+xmlをサポートするブラウザーはページをレンダリングしません!
  • HTML5の例ではcharset=UTF-8を、XHTMLではcharset=iso-8859-1を設定しています。それらは異なるものです。それらをいつどこで使用するかわからない場合は、どこでもUTF-8を使用してください。
  • XMLプロローグ(<?xml version="1.0" encoding="UTF-8"?>)を使用すると、古いバージョンのIEが「Quirksモード」にドロップされます。これはレガシーレンダリングモードであり、回避する必要があります。
2
Olly Hodgson

トピック外ではありませんが、これは動的に生成されたサイトですか?もしそうなら、なぜあなたは人々があなたのマークアップからデータをスクレイプするのではなく、サービス読み取りソフトウェアにより適したフォーマットを返すのですか?

JSONまたは実際のXMLまたはRSSをこれらのフィードを要求するクライアントに提供することで同じ目的を果たすことができ、XHTMLを送信するかどうか心配する必要がないように思えます。

XHTMLは専用のフィードほど効率的ではありません。スタイルやインタラクティブな操作を行わずに実際の生のHTMLマークアップを返さない限り、大量のジャンクビットを送信するためです。パーサーはとにかく破棄するだけです。

ほとんどの動的フレームワークは、データソースからJSONまたはXMLを直接生成するための簡単なツールを提供するため、現代のほとんどのHTMLマークアップに必要なすべての追加機能を解析することなく消費できる効率的なフィードを提供することを支持します。

ここで、これが動的に生成されたサイトでない場合、もう少しユースケースがあるかもしれませんが、なぜ静的サイトをスクリーンスクレーパーへのフィードとして使用する必要があるのか​​疑問に思うでしょう。

この猫の皮を剥ぐ方法はたくさんあるので、解決しようとしている問題をよりよく理解しようとしているだけで、効率的な解決策がもう少し詳細に提示されるかもしれません。

1