Почему эта форма XHTML не проверяется? - PullRequest
2 голосов
/ 31 октября 2008

Любые идеи, почему это не будет подтверждено здесь:

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>

Ответы [ 6 ]

5 голосов
/ 31 октября 2008

Попробуйте поместить тег fieldset вокруг входов. Я думаю, что идея форм в XHTML заключается в том, что они не могут иметь прямых потомков, которые не являются div, fieldset и т. Д.

3 голосов
/ 31 октября 2008

Вам нужно переехать

<div class="Controls">

так что внутри тег


Это хорошо подтверждает

<!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>
3 голосов
/ 31 октября 2008

Как сказал кто-то еще:

[цитата] Валидатор говорит вам, что ваш скрытый элемент ввода не может сразу следовать за тегом формы - он должен иметь какой-то элемент контейнера. [/ Цитата]

( Источник )

Полагаю, набор полей мог бы помочь; См. 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">

Нет данных для вас: (

1 голос
/ 13 апреля 2010

У меня была та же проблема, и мне потребовалось некоторое время, чтобы разобраться. Это недавнее изменение в валидаторе w3c? просто я уверен, что некоторые из моих страниц с формами, проверенными в прошлом, но теперь все они, кажется, проходят ошибки по той же проблеме.

Раньше я всегда делал что-то вроде:

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

и получаю ошибки проверки, так что теперь я просто добавляю fieldset или div вокруг всех меток и входных данных, чтобы получить его для проверки, например:

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

Кажется, работает, но я уверен, что мне не приходилось делать это раньше ... хммм?

0 голосов
/ 31 октября 2008

Ваши входные элементы должны быть в наборе полей. Это подтверждает и дает дополнительное преимущество, делая документ более доступным для невизуальных пользовательских агентов.

Кроме того, ваша разметка немного страдает от divitis . Вы можете поместить классы в ячейки таблицы напрямую, а не вкладывать в них элементы 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>
0 голосов
/ 31 октября 2008
<!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 в форму.

...