2013-03-03 123 views
3

我在查找HTML標記的有效字符時遇到問題。Valid HTML標記名稱字符

在這個(Is the at-sign (@) a valid HTML/XML tag character?)回答它說:

之後再看看XML規格:

的標籤包括:

'<' 名稱(S屬性)* S ? '>' A名稱包括:

NameStartChar(NameChar)* A NameStartChar包括:

「:」 | [A-Z] | 「_」| [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] NameChar包含:

NameStartChar | 「 - 」| 「」 | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] @符號是U + 0040

所以@符號是無效的NameChar或NameStartChar,因此 不是在一個名稱中有效。

但是HTML語法頁面(http://www.w3.org/TR/html-markup/syntax.html#tag-name),它只是說:

標籤名稱元素中使用開始標記和結束標記給予 元素的名稱。 HTML元素的名稱只能使用0-9,a-z和A-Z範圍內的字符 。

什麼是HTML標記名稱中的valids字符? HTML4,XHTML和HTML5有什麼區別?

+3

有效的HTML字符是HTML規範中提到的那些字符。有效的XML字符是XML規範中提到的那些字符。什麼是混亂? – JJJ 2013-03-03 11:44:32

+0

這就是爲什麼我真的不喜歡StackOverflow:Google上最熱門的搜索結果,但是由於某些模塊決定關閉社區(或潛在社區)而導致一個非答案的封閉問題。自定義HTML標籤現在已經成爲一件事,官方的W3C規範草案指出標籤名稱的* XML *字符列表現在對HTML有效!關閉合法的問題真的讓我感到厭煩,並說明我爲什麼不經常參加這個活動。例如,編寫[universal-ish標記解析器](https://github.com/cubiclesoft/ultimate-web-scraper/blob/master/support/tag_filter.php)時,這個問題是有意義的。 – CubicleSoft 2018-02-08 15:29:30

回答

1

HTML文檔必須符合HTML規範。 XML文檔必須符合XML規範。 XHTML文檔必須符合XML和HTML規範。

因此,對於XHTML文檔,您必須從兩個規範中取得有效字符的交集。由於XHTML基於XML規範,因此它不允許在XML中禁止使用字符。因此,XHTML中允許的字符總是XML的子集。所以允許的字符來自XHTML規範。

+0

XHTML不僅僅是一個XML格式的HTML文檔。 W3C爲XHTML定義了特定的規範。作爲一個側面提示:沒有對應於HTML5的XHTML規範 – xorcus 2015-03-17 08:30:18

+1

@xorcus這是對的,我從來沒有說過像'XHTML不僅僅是一個XML格式的HTML文檔'。我想你誤解了XHTML文檔必須符合XML和HTML規範。我並不是說這一點就夠了。 – 2015-03-17 10:31:05