2

これがここで検証されない理由についてのアイデア:

http://validator.w3.org/#validate_by_input

フォーム入力タグが間違っているようですが、XHTML 仕様を読んで問題なく検証できるはずです。何か案は?

<!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">
 <head>
  <title>Test</title>
 </head>

 <body>
    <div class="Header">
        <table class="HeaderTable">
            <tr>
                <td>
                    <div class="Heading">Test <span class="Standard">Test</span>
                    </div>
                </td>
                <td>
                    <div class="Controls">
                        <form id="ControlForm" method="get" action="Edit.php">
                            <input type="submit" name="action" id="Edit" value="Edit" />
                            <input type="submit" name="action" id="New" value="New" />
                        </form>
                    </div>
                </td>
            </tr>
        </table>
    </div>
 </body>
</html>
4

6 に答える 6

5

fieldset入力の周りにタグを付けてみてください。XHTML のフォームの考え方は、div、フィールドセットなどではない直接の子孫を持つことができないということだと思います。

于 2008-10-31T12:35:24.117 に答える
3

他の誰かが言ったように:

[引用] バリデーターは、非表示の入力要素が form タグの直後に続くことはできないことを伝えています。何らかのコンテナー要素が必要です。[/見積もり]

ソース

フィールドセットが役立つと思います。XHTML DTDを参照してください。

<!ELEMENT form %form.content;>

<!ENTITY % form.content "(%block; | %misc;)*">

<!ENTITY % misc "noscript | %misc.inline;">
<!ENTITY % misc.inline "ins | del | script">

<!ENTITY % block "p | %heading; | div | %lists; | %blocktext; | fieldset | table">

<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
<!ENTITY % lists "ul | ol | dl">
<!ENTITY % blocktext "pre | hr | blockquote | address">

あなたへの入力はありません:(

于 2008-10-31T12:39:43.220 に答える
3

移動する必要があります

<div class="Controls">

<formタグのにあるように


これはうまく検証されます

<!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">
<head>
    <title>Test</title>
</head>

<body>
    <div class="Header">
        <table class="HeaderTable">
        <tr>
            <td>
                <div class="Heading">Test <span class="Standard">Test</span></div>
            </td>
            <td>
                <form id="ControlForm" method="get" action="Edit.php">
                    <div class="Controls">
                        <input type="submit" name="action" id="Edit" value="Edit" />
                        <input type="submit" name="action" id="New" value="New" />
                    </div>
                </form>
            </td>
        </tr>
        </table>
    </div>
</body>
</html>
于 2008-10-31T12:40:50.533 に答える
1

私はまったく同じ問題を抱えていて、理解するのに時間がかかりました。これは w3c バリデーターの最近の変更ですか? 過去にフォームが検証された私のページのいくつかは確かですが、今ではすべて同じ問題でエラーが発生しているようです。

私はいつも次のようなことをしていました:

<div>
<form>
    <label></label>
    <input />
    <label></label>
    <input />
    <label></label>
    <input />
</form>

検証エラーが発生するので、すべてのラベルと入力の周りにフィールドセットまたは div を追加して、次のように検証します。

<div>
<form>
    <fieldset>or<div>
        <label></label>
        <input />
        <label></label>
        <input />
        <label></label>
        <input />
    </fieldset>or</div>
</form>

うまくいくように見えますが、過去にこれを行う必要はなかったと思います...うーん?

于 2010-04-13T13:24:32.133 に答える
0
<!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">
 <head>
  <title>Test</title>
 </head>

 <body>
    <div class="Header">
        <table class="HeaderTable">
                <tr>
                        <td>
                                <div class="Heading">Test <span class="Standard">Test</span>
                                </div>
                        </td>
                        <td>

                            <form id="ControlForm" method="get" action="Edit.php">
                                <div class="Controls">
                                                <input type="submit" name="action" id="Edit" value="Edit" />
                                                <input type="submit" name="action" id="New" value="New" />
                                </div>
                            </form>

                        </td>
                </tr>
        </table>
    </div>
 </body>
</html>

フォーム内に div を配置します。

于 2008-10-31T12:45:04.160 に答える
0

入力要素はフィールドセット内にある必要があります。これにより検証が行われ、非視覚的なユーザー エージェントがドキュメントにアクセスしやすくなるという追加の利点があります。

余談ですが、あなたのマークアップは分割に少し悩まされいます。div 要素を入れ子にするのではなく、表のセルにクラスを直接配置することもできます (レイアウトのための表の使用についてはコメントしません)。また、フォーム要素を div 内にネストするのではなく、直接スタイルすることもできます。

とにかく、検証するためにフィールドセットが追加された例を次に示します。

<!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">
  <head>
    <title>Test</title>
  </head>
  <body>
    <div class="Header">
      <table class="HeaderTable">
        <tr>
          <td>
            <div class="Heading">Test <span class="Standard">Test</span></div>
          </td>
          <td>
            <div class="Controls">
              <form id="ControlForm" method="get" action="Edit.php">
                <fieldset>
                  <input type="submit" name="action" id="Edit" value="Edit" />
                  <input type="submit" name="action" id="New" value="New" />
                </fieldset>
              </form>
            </div>
          </td>
        </tr>
      </table>
    </div>
  </body>
</html>
于 2008-10-31T12:53:57.823 に答える