Вопрос по – Почему форма, вложенная в p, не проверяется как XHTML

30

Возьмите, например, этот фрагмент 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" xml:lang="en" lang="en">
<head>
  <title>A webpage</title>
</head>
<body>
  <p>
    <form action="something.php" method="get">
      <input type="submit" value="Hello"/>
    </form>
  </p>
</body>
</html>

Дерево должно быть допустимым, однако оно не будет правильно обрабатываться в браузере.

страница проверки не дает каких-либо предложений? 太極者無極而生

Ваш Ответ

5   ответов
1

этот, так как:

Line 8, Column 44: document type does not allow element "form" here; missing one of "object", "ins", "del", "map" start-tag ✉ The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

One possible cause for this message is that you have attempted to put a block-level element (such as "p" or "table") inside an inline element (such as "a", "span", or "font").

Line 9, Column 40: document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag input type="submit" value="Hello" The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

One possible cause for this message is that you have attempted to put a block-level element (such as "p" or "table") inside an inline element (such as "a", "span", or "font").

Error: User Rate Limit Exceeded
-1

W3C Markup Validator, который скажет вам, что недопустимо с большинством (X) HTML и CSS документов.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
-3

validator.w3.org в результате вам нужно поменять теги P и FORM, чтобы они передавались как действительный HTML-код W3C.

<!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>A webpage</title>
</head>
<body>
  <form action="something.php" method="get">
    <p>
      <input type="submit" value="Hello"/>
    </p>
  </form>
</body>
</html>
Error: User Rate Limit ExceededWHYError: User Rate Limit Exceeded
57

http://validator.w3.org

Помимо предупреждения о том, что вы не указали кодировку символов (и, следовательно, она предполагает UTF-8), основная ошибка заключается в том, что<p> не разрешено содержать не встроенный контент. Вы можете удалить<p> а также</p> полностью или переместите их внутрь<form>.

Что касается «почему», то это потому, что это так, как это определено в схеме, которая определяет, что является и что не является действительным XHTML. Если вы посмотрите наэтот раздел определения XHTML вы увидите, что<p> разрешено содержать только текст или «встроенный»; (не «блокировать») теги. Однако<form> считается как «блок»; содержание не является «встроенным»; содержание.

Другими словами, форма может содержать абзацы, но абзац не может содержать формы.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
-2

<body>
  <form action="something.php" method="get">
  <p>
    <input type="submit" value="Hello"/>
  </p>
  </form>
</body>
Error: User Rate Limit ExceededWHYError: User Rate Limit Exceeded

Похожие вопросы