2016-02-24 20 views
5

ai đó có thể giải thích cho tôi, tại sao mã này hợp lệ?tại sao mã html này hợp lệ?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
    <html<head> 
    <title// 
    <p ltr<span id=p></span</p> 
    </> 

Tôi mong nhận được thư trả lời của bạn. nhờ sự chú ý

+3

Tại sao không nên? (Bạn có một * nhiều * các tính năng HTML khác thường không được sử dụng trong đó, nếu bạn có câu hỏi cụ thể về một trong số chúng thì đây có thể là một câu hỏi hay hơn) – Quentin

+0

Không có vẻ hợp lệ đối với tôi. –

+0

Nó ném 7 cảnh báo. Đối với tôi, điều này không hợp lệ. Nếu bạn không đóng thẻ, cảnh báo sẽ hiển thị. –

Trả lời

5

Mã HTML đó hợp lệ vì HTML 4.01 cho phép những thứ đó và trình duyệt Internet tôn trọng loại tài liệu, sẽ hiển thị điều đó mà không có vấn đề gì.

Nếu bạn thay đổi loại tài liệu thành HTML 5, chắc chắn nó sẽ gây ra lỗi, vì HTML 5 nghiêm ngặt hơn khi viết thẻ HTML thích hợp.

HTML 4,01 (không có lỗi theo https://validator.w3.org/#validate_by_input):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
    <html<head> 
    <title// 
    <p ltr<span id=p></span</p> 
    </> 

HTML 5 (15 lỗi theo https://validator.w3.org/#validate_by_input):

<!DOCTYPE html> 
    <html<head> 
    <title// 
    <p ltr<span id=p></span</p> 
    </> 

Giải thích:

Đó cấu trúc HTML là hợp lệ vì theo HTML 4.0.1 Đặc điểm kỹ thuật (https://www.w3.org/TR/1999/REC-html401-19991224/):

B.3.7 Shorthand đánh dấu

Một số SGML SHORTTAG xây dựng tiết kiệm gõ nhưng không thêm khả năng biểu cảm nào vào ứng dụng SGML. Mặc dù các cấu trúc này giới thiệu về mặt kỹ thuật không có sự mơ hồ, chúng làm giảm độ bền của tài liệu, đặc biệt khi ngôn ngữ được nâng cao để bao gồm các phần tử mới. Do đó, trong khi SHORTTAG cấu trúc SGML liên quan đến các thuộc tính được sử dụng rộng rãi và được triển khai, những liên quan đến các phần tử thì không. Các tài liệu sử dụng chúng phù hợp với các tài liệu SGML, nhưng không có khả năng làm việc với nhiều công cụ HTML hiện có.

Các SHORTTAG xây dựng trong câu hỏi như sau:

  • thẻ NET:
    <name/.../
  • đóng Bắt đầu Tag:
    <name1<name2>
  • Rỗng Bắt đầu Tag:
    <>
  • End rỗng Thẻ:
    </>

Trích dẫn từ https://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.3.7.


Dựa trên đó HTML 4.01 Đặc điểm kỹ thuật, điều này có nghĩa là:

1  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
2  <html<head> 
3  <title// 
4  <p ltr<span id=p></span</p> 
5  </> 
  • Dòng 1 là loại tài liệu có giá trị trong HTML 4.0.1.
  • Dòng 2 hợp lệ <html> thẻ mở, đóng không cho thẻ </html> là cần thiết.
  • Dòng 2 cũng hợp lệ <head> thẻ mở, đóng thẻ </head> là không cần thiết.
  • Dòng 3 là <title> thẻ mở hợp lệ mà trình duyệt Internet đọc <title// <p ltr<span id=p> chỉ đơn giản là <title>, không cần đóng thẻ </title>.
  • Dòng 4-5 là nội dung (HTML bên trong) của <title> thẻ là </span</p> </> (đây là những gì trình duyệt Internet hiển thị làm tiêu đề của trang).

Đó là giải thích bổ sung của tôi. Hy vọng rằng có thể giúp bạn.

+5

"Những mã HTML đó là hợp lệ vì HTML 4.01 cho phép những thứ đó" - Về cơ bản bạn nói rằng nó hợp lệ vì nó hợp lệ, điều này không thực sự hữu ích. – Quentin

+1

"và trình duyệt Internet tôn trọng loại tài liệu, sẽ hiển thị điều đó mà không có vấn đề" - Không phải như vậy. Ví dụ mã đó sử dụng rất nhiều tính năng của HTML mà hầu hết các trình duyệt đều có * không bao giờ * được hỗ trợ. – Quentin

+1

@Quentin Tôi đã cập nhật lời giải thích của mình, hy vọng giải thích nó. –

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