2010-07-08 20 views
15

Theo http://www.w3.org/TR/html401/interact/forms.html#h-17.4, phần tử đầu vào phải kết thúc bằng một đơn > và không phải là />. Mặc dù hầu hết các trình duyệt có thể xử lý một yếu tố đầu vào kết thúc bằng />, là một yếu tố đầu vào có hợp lệ theo các quy tắc cú pháp HTML không? Nói cách khác là các yếu tố như <input ... /><br /> hợp lệ trong HTML 4?Thẻ đầu vào tự đóng có hợp lệ trong HTML 4 không?

(Câu hỏi này là về HTML và XHTML không !!!)

Trả lời

11

Cú pháp là hợp lệ trong một số nơi nhưng không có nghĩa là giống như trong XHTML, do đó, không sử dụng chúng.

Trong HTML 4 <foo /> (nơi foo là tên của một nguyên tố được xác định như EMPTY) có nghĩa là giống như <foo>> có nghĩa là giống như <foo>&gt; (mặc dù hầu như không có trình duyệt hỗ trợ cú pháp chính xác, Emacs-W3 sử dụng , nhưng đã phá vỡ tính tương thích với tiêu chuẩn có lợi cho việc hiển thị các tài liệu XHTML 1.0 tương thích HTML một cách chính xác).

này, do đó, có giá trị ở những nơi mà bạn có thể có một ví dụ &gt; như bất cứ nơi nào bạn được phép một <img> nhưng không phải ở những nơi khác (chẳng hạn như một <hr> đó là một phần tử con của <body> (trong Strict)).

Tương tác với các quy tắc cho thẻ bắt đầu và kết thúc tùy chọn sẽ làm tăng thêm sự phức tạp. Trong một tài liệu chuyển tiếp, đây là hợp lệ:

<link …/> 
<h1>Hello, world</h1> 

và phương tiện:

<link> 
</head> 
<body> 
&gt; 
<h1>Hello, world</h1> 

cú pháp tốc ký này có thể hữu ích, hoặc ít nhất là một tiết kiệm thời gian, cho những thứ như:

<title/The quick brown fox/ 

thay vì chi tiết hơn:

<title>The quick brown fox</title> 

… nhưng the syntax has never been well supported và đặc điểm kỹ thuật cho biết cần tránh.

+0

Bạn có biết nếu cú ​​pháp NET hỗ trợ Emacs-W3 đầy đủ không? – Alohci

+0

@Alohci - Không có ý tưởng, tôi chỉ bị sốc khi nó rải rác '>' ký tự trên tất cả các tài liệu XHTML của tôi vào năm 2000 (dẫn đến việc tôi học được rất nhiều về cách "làm việc" trong HTML) – Quentin

+0

Lynx hỗ trợ cú pháp viết tắt cho đến ngày nay. – grawity

2

Giải Quyết thực sự ... theo W3C HTML validator 4 nó tốt hơn không sử dụng phong cách này của tên nguyên tố bằng văn bản HTML 4:

NET-enabling start-tag requires SHORTTAG YES 
<br /> 
The sequence <FOO /> can be interpreted in at least two different ways, 
depending on the DOCTYPE of the document. For HTML 4.01 Strict, the '/' terminates 
the tag <FOO (with an implied '>'). However, since many browsers don't interpret it 
this way, even in the presence of an HTML 4.01 Strict DOCTYPE, it is best to avoid 
it completely in pure HTML documents and reserve its use solely for those written in XHTML. 
+1

Có, như Rowland Shaw đã lưu ý, ** có thể chấp nhận được, nhưng không hợp lệ **. – fmark

+2

@fmark - bạn có nó ngược, nó hợp lệ (đôi khi) nhưng không được chấp nhận. Thông báo trình xác thực được trích dẫn ở trên là cảnh báo chứ không phải lỗi. – Quentin

+0

@DavidDorward - Có vẻ như bạn đã đúng, theo thông số kỹ thuật HTML. Tôi đã sửa chữa! – fmark

-1

Từ HTML Compatibility Guidelines:

Bao gồm dấu cách trước theo dõi /> các phần tử trống, ví dụ: <br />, <hr /><img src="karen.jpg" alt="Karen" />. Ngoài ra, hãy sử dụng cú pháp thẻ thu nhỏ cho các phần tử trống, ví dụ: <br />, như cú pháp thay thế <br></br> được cho phép bởi XML cho kết quả không chắc chắn trong nhiều tác nhân người dùng hiện có.

+0

Các hướng dẫn để làm cho trình duyệt xử lý XHTML dưới dạng HTML không có nhiều việc phải làm với HTML là gì (vì chúng xử lý những trình duyệt nào, chứ không phải những gì chúng nên làm) – Quentin

+0

Đồng ý. Câu trả lời của tôi có ý nghĩa hơn là một nhận xét thú vị về một chủ đề liên quan hơn là một câu trả lời dứt khoát. Tôi đoán tôi nên làm cho nó một bình luận trong thời gian tới. – Sjoerd