2010-08-12 65 views
2

我剛剛通過w3c驗證服務(http://validator.w3.org/check)運行了此簡單代碼。下面是我通過運行代碼:HTML 4.01嚴格標準

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd" 
    > 
<html lang="en"> 
<head> 
    <title><!-- Insert your title here --></title> 
</head> 
<body> 
<form name="testform" action="/" method="post"> 
    <input type="text" name="testfield"> 
</form> 
</body> 
</html> 

我得到的輸入欄下面的錯誤:

10號線,40列:文檔類型不 不允許元素「INPUT 「 這裏; 缺少「P」,「H1」,「H2」,「H3」, 「H4」,「H5」,「H6」,「PRE」,「DIV」, 「ADDRESS」起始標記

我沒有看到任何問題。有任何想法嗎?

回答

6

存在的問題是與FORM元件是如何定義在DTD:

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form --> 

因此,它可以有一個%block(除了FORM)或SCRIPT元件。

而且%block被定義爲:

<!ENTITY % block 
"P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT | 
    BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS"> 

而其餘的:

<!ENTITY % heading "H1|H2|H3|H4|H5|H6"> 

<!ENTITY % list "UL | OL"> 

<!ENTITY % preformatted "PRE"> 

因爲你的窗體不包含任何這些作爲直接孩子,頁面驗證失敗。

+0

感謝您的答覆。我不太清楚那是什麼意思。我需要在代碼中更改哪些內容才能解決問題? – blcArmadillo 2010-08-12 20:51:35

+1

@blcArmadillo - [DTD](http://www.w3.org/TR/html4/strict.dtd)是HTML 4.01 Strict的定義,這就是它所驗證的。總之,上面的一個元素(標籤)應該緊跟在'

'標籤之後。由於''不在列表中,因此它在''標籤內不會立即生效。 – Oded 2010-08-12 20:54:07

+0

值得一提的是,除此之外還有另一個規則。上面的產品只是說你不能立即在表格內填寫表格(' ...')。事實上,你不能在表單內的任何位置使用表單,但這不能用DTD表示(同樣,你不能在''內的任何位置有'')。 – 2010-08-12 21:41:31