2016-02-24 144 views
5

有人可以向我解釋,爲什麼這段代碼有效?爲什麼這個html代碼有效?

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

我期待收到您的回覆。感謝您的關注

+3

爲什麼不應該這樣? (你有很多不常用的HTML特性,如果你對它們中的一個有特定的問題,那麼這可能會是一個更好的問題) – Quentin

+0

對我來說這似乎不合適。 –

+0

它引發7個警告。對我而言,這是無效的。如果您不關閉標籤,則會顯示警告。 –

回答

5

這些HTML代碼是有效的,因爲HTML 4.01允許這些事情,而尊重文檔類型的互聯網瀏覽器將顯示沒有問題。

如果您將文檔類型更改爲HTML 5,那麼肯定會給出錯誤,因爲HTML 5對於編寫正確的HTML標籤要求更嚴格。

HTML 4.01根據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 515錯誤根據https://validator.w3.org/#validate_by_input):

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

說明:

即HTML結構是有效的,因爲根據HTML 4.0.1規範(https://www.w3.org/TR/1999/REC-html401-19991224/):

B.3.7速記標記

一些SGML SHORTTAG構建節省打字但SGML應用程序沒有表現能力。儘管這些構造在技術上不會引入歧義,但它們會降低文檔的健壯性,特別是在語言增強以包含新元素時。因此,儘管與屬性相關的SGML的SHORTTAG構造被廣泛使用和實現,但與元素相關的構造不是。使用它們的文檔符合SGML文檔,但不可能與許多現有的HTML工具一起使用。

的SHORTTAG構建中的問題有以下幾種:

  • NET標籤:
    <name/.../
  • 封閉開始標記:
    <name1<name2>
  • 空開始標記:
    <>
  • 空結束標籤:
    </>

https://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.3.7引用。


因此基於該HTML 4。01規格,這意味着:

1  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
2  <html<head> 
3  <title// 
4  <p ltr<span id=p></span</p> 
5  </> 
  • 行1爲HTML 4.0.1有效的文檔類型。
  • 第2行有效<html>打開標籤,關閉</html>標籤沒有必要。
  • 第2行也有效<head>打開標籤,關閉</head>標籤沒有必要。
  • 第3行是一個有效的<title>開放標記,其中互聯網瀏覽器讀取<title// <p ltr<span id=p>只需<title>,關閉</title>標記是沒有必要的。
  • 第4-5行是<title>標記的內容(內部HTML),它是</span</p> </>(這是因特網瀏覽器顯示爲頁面標題的內容)。

這是我另外的解釋。希望能夠幫助你。

+5

「這些HTML代碼是有效的,因爲HTML 4.01允許這些東西」 - 你基本上說它是有效的,因爲它是有效的,這不是非常有用。 – Quentin

+1

「和尊重文檔類型的互聯網瀏覽器,將顯示沒有問題」 - 並非如此。該代碼示例使用了大多數瀏覽器都支持的* HTML特性。 – Quentin

+1

@Quentin我已經更新了我的解釋,希望能解釋一下。 –