2012-03-23 42 views
2

我一直認爲HTML需要加上引號在他的性質:不帶引號的HTML屬性?

<div class="service_definition"><div class='service_definition'>

但最近我注意到,W3驗證不承認以下爲錯誤:

<div class=service_definition>

因此,如果我省略引號,這是否正確?還是有任何限制?

+0

並考慮到如果您使用xhtml,您**必須**總是使用引號。請參見[xhtml與html4的區別](http://www.w3.org/TR/xhtml1/#h-4.4)。 – PhoneixS 2012-03-23 10:26:23

+0

什麼版本的html? – 2017-06-22 17:42:37

回答

9

始終使用引號。

我不認爲沒有引號的HTML屬性被歸類爲無效的HTML,但它們可能會導致您在後續的問題上出現問題。

By default, SGML requires that all attribute values be delimited using either double quotation marks (ASCII decimal 34) or single quotation marks (ASCII decimal 39). Single quote marks can be included within the attribute value when the value is delimited by double quote marks, and vice versa. Authors may also use numeric character references to represent double quotes (") and single quotes ('). For double quotes authors can also use the character entity reference ".

In certain cases, authors may specify the value of an attribute without any quotation marks. The attribute value may only contain letters (a-z and A-Z), digits (0-9), hyphens (ASCII decimal 45), periods (ASCII decimal 46), underscores (ASCII decimal 95), and colons (ASCII decimal 58). We recommend using quotation marks even when it is possible to eliminate them.

來源:http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.2


我覺得他們的明確定義,當一個偉大的方式的屬性值開始和結束。

採取例如class屬性,它可以通過空格分隔多個類:

<div class="classa classb" id="123"> 

這清楚地表明我的課是classaclassb,與123的元素ID的瀏覽器。

拿走引號,我們已經有了:

<div class=classa classb id=123> 

瀏覽器現在可以將此解釋爲3類,沒有編號。 classaclassbid=123

或者它甚至可以將其解釋爲3個屬性。 class="classa"classb=""id="123"

(即使計算器的代碼着色系統與這一個掙扎!)

+1

所以這是驗證器的錯誤? – Shylux 2012-03-23 09:55:22

+0

@Shylux沒有它的錯誤,它只是非常不推薦。看我的編輯。 – Curt 2012-03-23 09:57:06

+0

驗證器不一定總是正確的,特別是因爲HTML是一種非常「個人風格」的代碼,我不會建議遵守它的每一條規則。只需使用whats標準,並在所有瀏覽器中都可以使用 – rickyduck 2012-03-23 10:01:30

5

可以省略從屬性值引號如果該值由下列字符的唯一(CF的技術名字的概念):

letters of the English alphabet (A to Z, a to z) 
digits (0 to 9) 
periods . 
hyphens - 

因此,WIDTH = 80和ALIGN = CENTER是WIDTH = 「80」 和ALIGN = 「CENTER」 法律速記。對HREF = foo.html之類的URL的引用是可以接受的,但是通常在用於屬性時URL必須被引用,例如, HREF = 「http://www.hut.fi/」。 - 一些瀏覽器更寬容。一些瀏覽器甚至可以接受含有開始報價的元素,但沒有任何結束報價。這種使用是非常糟糕的做法。

參考http://www.cs.tut.fi/~jkorpela/HTML3.2/3.4.html

0

W3的驗證表明這對我的錯誤:

An attribute value specification must be an attribute value literal unless SHORTTAG YES is specified. 
7

的規則依賴於HTML版本。

在所有類型的XHTML中,由於XHTML是XML,因此屬性值必須始終顯示在引號中。驗證器自然會檢查這一點。在瀏覽器實踐中,情況有所不同。在真正的XML模式下,缺少報價會中止文檔解釋:內容未顯示,僅向用戶顯示錯誤消息(可能包含源代碼的摘錄)。但是,當XHTML被用作HTML時,這是正常的方式(特別是由於舊版IE瀏覽器的XHTML文盲),瀏覽器通過HTML規則處理它。

否則,在HTML中,正式規則因規格而異,但瀏覽器接受不帶引號的屬性值。 HTML5草案反映了這種自由主義的態度:只有當值包含空格,換行符,嚴重(`),等號(=),小於號(<),大於號(>),Ascii引號(')或Ascii撇號(')。

你在實踐中做了什麼很大程度上是一個慣例問題,它應該取決於同事或其他可能爲你的代碼工作而不是公衆輿論的人的意見。許多人認爲XHTML的限制性語法很酷,其他人可能會認爲不必要的引號會混淆代碼,甚至存在一些風險:無論何時需要成對使用某些字符,總會有忘記關閉組件或忘記它的機會。

0

有時您可以無需使用HTML屬性標記。

我最近在SharePoint中創建了一個鏈接到公司Web應用程序的文本文檔。在爲href值(網址)使用引號時,我收到了一條錯誤消息。這在技術上是正確的。

我注意到在DOM中,一組引號被瀏覽器自動添加到href值。所以我嘗試輸入沒有引號的href值,這固定了導航錯誤。