0

W3C Validation Service がこのコードが有効でないと言う理由を誰か教えてもらえますか?

<!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" xml:lang="en" lang="en">

<head>
<title>this is the title of the web page</title>
</head>
<body>

<form action="formscript.php" method="post">
    first name:<input type="text" name="firstname" />

    <input type="submit" />
</form>

</body>
</html> 
4

2 に答える 2

1

私は両方のコードを試しましたが、バリデーターは質問コードが XHTML 1.0 Transitional として有効であると言っています。

とにかく、ここでの問題は、<fieldset>内部にno<form>があり、テキスト<input>に no がないこと<label>です。

<form action="formscript.php" method="post" name="thisform">
  <fieldset>
    <label for="firstname">first name:</label>
    <input type="text" name="firstname" />

    <input type="submit" />
  </fieldset>
</form>

を忘れないでくださいDOCTYPE

于 2012-10-02T12:56:52.727 に答える
0

最初に投稿されたマークアップは、XHTML 1.0 Transitional ドキュメント タイプ宣言が最初に追加されている場合、有効な XHTML 1.0 Transitional ドキュメントを作成します。

@adamjansch によって編集されたように、XHTML 1.0 Strict 文書型宣言では有効ではなく、おそらくその文書型宣言を使用して検証されました。次に、最初のエラー メッセージは「文字データはここでは許可されていません」であり、考えられる原因の説明がいくつかあります。たとえば、「テキストをコンテナー要素 (a など) でラップせずにドキュメントの本文に直接配置している<p>aragraph</p>」などです。問題は、XHTML 1.0 Strict では、form要素がブロックレベルの子しか持てないことです。

つまり、 のようなテキストおよびテキスト レベルのマークアップは、、 、、inputなどの 1 つまたは複数のブロック コンテナでラップする必要があります。これらのうち、レンダリングにデフォルトの影響を与えない唯一の中立的なものです。pdivfieldsettablediv

<!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" xml:lang="en" lang="en">

<head>
<title>this is the title of the web page</title>
</head>
<body>

<form action="formscript.php" method="post">
  <div>
    first name:<input type="text" name="firstname" />

    <input type="submit" />
  </div>
</form>

</body>
</html> 
于 2012-10-02T14:42:59.150 に答える