フレームセットDTDの使用が検証障害を引き起こすのはなぜですか?
-
21-09-2019 - |
質問
事業 ランダムなHTMLファイルを使用して、できる限りXHTMLに変換し、XML MetDataでラップします。 Doctypeは、結果のXMLファイルがXHTMLドキュメントではないため、剥奪されます。ただし、XMLファイルからラップされたXHTMLを取得するときは、Doctypeを再挿入する必要があります。
これらはランダムなHTMLファイルであるため、コンテンツを含めることができますが、元のDTDを保存または決定する必要はありません。遷移DTDの単なるスーパーセットであり、すべてのコンテンツに有効であるため、フレームセットDTDが必要であると考えました。ただし、を使用する場合 W3C XHTMLバリデーター 同じドキュメントを使用すると、トランジショナルDTDパスを使用しますが、フレームセットDTDを使用すると失敗します。
問題を再現できる最小限にドキュメントを剥ぎ取りました。これがフレームセットバージョンです:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Make The Move</title>
</head>
<body style="background: none;">
<h3 id="why">Why should I move to Linux?</h3>
</body>
</html>
そして、これが移行バージョンです:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Make The Move</title>
</head>
<body style="background: none;">
<h3 id="why">Why should I move to Linux?</h3>
</body>
</html>
なぜこれが起こっているのか、どのように進めるべきかを説明してください。
解決
フレームセットDTDは、移行の「スーパーセット」ではありません。それは、内部を除く、コンテンツではなく、フレームのレイアウトにのみ使用される特別なDTDです <noframes>
鬼ごっこ)。それは許可されます <head>
と <frameset>
の子供として <html>
鬼ごっこ。
ここ 仕様です。
ページにフレームがあることがわからない限り、移行または厳格なDTDに固執してください。
他のヒント
Chetanが指摘したように、フレームセットDTDはフレームが必要な場合にのみ使用する必要があります。それでも、代わりにTransitionalを使用することをお勧めします。フレームに頼らない場合は、厳格です。