2010-07-23 30 views
38

Tôi biết cách xử lý khoảng trắng trong các nút văn bản cho XML và HTML, nhưng tôi không chắc chắn về khoảng trắng bên trong các phần tử thẻ. Rõ ràng, không gian trắng được sử dụng bên trong các thẻ để phân tách các thuộc tính, nhưng nó có hợp lệ để có các khoảng trắng sau '<' hoặc trước '>' không?Không gian trắng bên trong thẻ XML/HTML

Ví dụ:

<foo> 
</foo> 

Hoặc thậm chí:

<foo> 
</foo > 

Are các thẻ XML hợp lệ? Điều gì về HTML, giả sử chúng là các tên thẻ HTML thực tế?

Trả lời

49

specification (section 3.1 Start-tags, end-tags, and empty-element tags) cho biết không có khoảng trắng giữa '<' và tên thẻ, giữa '</' và tên thẻ hoặc bên trong '/>'. Bạn có thể thêm khoảng trắng sau tên thẻ, mặc dù:

<foo   > 
</foo  > 
<bar 
/> 
+0

Rất tiếc. Điều đó sẽ dạy tôi kiểm tra kỹ thông số kỹ thuật ... +1 –

+0

có hợp lệ để chia nhỏ các thẻ HTML dài thành các dòng riêng biệt không? Ví dụ: ' (newline)' - ví dụ, trong trường hợp các thẻ dài chứa mã PHP bên trong, để làm cho nó dễ đọc hơn. – iDontKnowBetter

+1

@fakaff: Có, đó là hợp lệ. Ngắt dòng, tab và dấu cách là tất cả các ký tự khoảng trắng, và bạn có thể có nhiều khoảng trắng như bạn muốn sau tên thẻ và giữa các thuộc tính (và thậm chí xung quanh '=' trong một thuộc tính). – Guffa

8

<//> là mã thông báo, vì vậy khoảng trắng giữa hai ký tự sẽ là lỗi cú pháp. Và như Guffa pointed out, khoảng trắng không được phép giữa mã thông báo mở và tên. Nhưng bạn có thể thêm khoảng trắng giữa thẻ phần tử và mã thông báo đóng > (hoặc />).

EDIT để phản ánh việc trích dẫn chính xác của Guffa về đặc tả XML.

0

Bạn không thể bắt đầu bằng một khoảng trắng, nhưng bạn có thể (tùy chọn) kết thúc bằng một dấu cách (trước khung góc thứ hai, đóng thẻ đầu tiên).

+0

Câu trả lời này không thêm gì cho những câu trả lời hiện có. – Pyves

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