2009-06-20 17 views
27
<!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> 
+4

trang xác thực không đưa ra một số đề xuất? –

Trả lời

53

Nhìn vào các thông báo lỗi mà bạn nhận được khi bạn cố gắng rằng với http://validator.w3.org

Ngoài một cảnh báo rằng bạn đã không được xác định một mã hóa ký tự (và rằng nó do đó giả định UTF-8), lỗi chính là rằng <p> không được phép chứa nội dung không trực tuyến. Bạn có thể xóa hoàn toàn <p></p> hoặc di chuyển chúng bên trong <form>.

Đối với 'lý do', đó là vì đó là cách nó được định nghĩa trong lược đồ xác định cái gì và cái gì không hợp lệ XHTML. Nếu bạn nhìn vào số this section of the XHTML definition bạn sẽ thấy rằng <p> chỉ được phép chứa các thẻ văn bản hoặc 'nội dòng' (không phải 'chặn').Tuy nhiên, <form> được tính là nội dung 'chặn' không phải là nội dung 'nội dòng'.

Nói cách khác, biểu mẫu có thể chứa đoạn văn, nhưng đoạn văn không thể chứa biểu mẫu.

+1

+1 là câu trả lời duy nhất (cho đến nay) để thực sự giải thích vấn đề là gì –

+2

+1 vì cùng một lý do ở đây. Mọi người khác cũng giống như "vâng, nó không xác thực theo validator.w3c.org –

+0

Loại nội dung chỉ được xác định bởi tiêu đề HTTP. – pepkin88

1

Theo this, bởi vì:

Dòng 8, Cột 44: loại tài liệu nào không cho phép yếu tố "hình thức" ở đây; thiếu một trong "đối tượng", "ins", "del", "bản đồ" thẻ bắt đầu ✉ Yếu tố được đề cập không được phép xuất hiện trong ngữ cảnh trong đó bạn đã đặt; các phần tử khác được đề cập là là những phần tử duy nhất được cho phép ở đó và có thể chứa phần tử được đề cập. Điều này có nghĩa là mà bạn cần phần tử có chứa hoặc có thể bạn đã quên đóng một phần tử trước đó.

Một nguyên nhân có thể cho thông điệp này là mà bạn đã cố gắng đưa một yếu tố khối cấp (chẳng hạn như "p" hoặc "bảng") bên trong một phần tử nội tuyến (chẳng hạn như "a", "nhịp cầu ", hoặc " phông chữ ").

Dòng 9, Cột 40: loại tài liệu không không cho phép phần tử "đầu vào" ở đây; thiếu một "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "trước", "địa chỉ", "fieldset", "ins", "del" bắt đầu-tag loại đầu vào = "gửi" giá trị = "Xin chào" Phần tử được đề cập không được phép xuất hiện trong ngữ cảnh mà bạn đã đặt; các yếu tố được đề cập khác là chỉ những phần tử được phép ở đó và có thể chứa phần tử được đề cập. Điều này có nghĩa là bạn cần một thành phần có chứa hoặc có thể là bạn đã quên đóng một phần tử trước đó.

Một nguyên nhân có thể cho thông điệp này là mà bạn đã cố gắng đưa một yếu tố khối cấp (chẳng hạn như "p" hoặc "bảng") bên trong một phần tử nội tuyến (chẳng hạn như "a", "nhịp cầu ", hoặc " phông chữ ").

+0

+1 cho các mục sau: "... bạn đã cố gắng đặt phần tử cấp khối (chẳng hạn như" p "hoặc" bảng ") bên trong phần tử nội tuyến (chẳng hạn như" a "," span "hoặc" font ")." –

-1

Bạn không thể đặt biểu mẫu bên trong đoạn văn. Viết như thế này:

<body> 
    <form action="something.php" method="get"> 
    <p> 
    <input type="submit" value="Hello"/> 
    </p> 
    </form> 
</body> 
+3

Anh ấy hỏi _WHY_ nó không hợp lệ, không phải cách khắc phục. –

-1

Hãy thử sử dụng W3C Markup Validator, sẽ cho bạn biết những gì không hợp lệ với hầu hết các tài liệu HTML và CSS.

+4

Tôi nghĩ anh ấy có thể nhận ra điều này vì anh ấy đã biết nó không hợp lệ. Anh ta hỏi tại sao nó không hợp lệ, không phải vậy. –

+1

Cũng giống như trình duyệt tính hợp lệ của W3C giải thích khá rõ lý do tại sao nó không hợp lệ, tôi đã nghĩ đó là cách thông tin nhất để giải quyết vấn đề. Tốt hơn là nên nói với ai đó cách giải quyết vấn đề, thay vì chỉ cho họ câu trả lời. – DaveR

-3

Tôi đã chạy thử nghiệm với mã HTML của bạn thông qua validator.w3.org và kết quả là bạn cần trao đổi thẻ P và FORM để nó chuyển thành HTML W3C hợp lệ.

<!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> 
+4

Anh ấy đã yêu cầu _WHY_ nó không xác thực, không phải cách khắc phục. –

Các vấn đề liên quan