2009-05-29 19 views
45

W atrybucie HTML nazwa = wartość par, jakie są znaki dozwolone dla części "nazwa"? ..... Patrząc na jakieś common attributes wydaje się, że używane są tylko litery (az i AZ), ale jakie inne znaki mogą być również dozwolone? ... może cyfry (0-9), łączniki (-) i kropki (.) ... czy jest jakiś spec dla tego?Jakie znaki są dozwolone w nazwie atrybutu HTML?

+0

To brzmi jak pytanie, które wywołało Angular 2: P –

Odpowiedz

41

Zależy od tego, co masz na myśli przez "dozwolony". Każdy znacznik ma ustaloną listę nazw atrybutów, które są poprawne, aw języku html wielkość liter nie ma znaczenia. W jednym ważnym znaczeniu, tylko te znaki we właściwej kolejności są "dozwolone".

Innym sposobem patrzenia na to jest to, jakie znaki będą traktować przeglądarki jako poprawna nazwa atrybutu. Najlepszą radą jest tutaj specyfikacja parsera HTML 5, którą można znaleźć tutaj: https://html.spec.whatwg.org/multipage/syntax.html#attributes-2

Mówi, że wszystkie znaki z wyjątkiem tabulatora, linii, paszy, przestrzeni, solidus, większej niż znak, cudzysłowu, apostrofu i znak równości będzie traktowany jako część nazwy atrybutu. Osobiście nie próbowałbym jednak forsować takich przypadków.

+5

Odpowiedz na moje pytanie. "wszystkie postacie oprócz ... będą traktowane jako część nazwy atrybutu" - Kudos na znalezieniu tej informacji, również w specyfikacji! –

+0

Tak, nie "pchaj". Niektóre raczej pospolite postacie będą musiały zostać usunięte w selektorach CSS, inne złamią podświetlanie składni edytora, itp. – Rolf

+16

Dla odniesienia, wyrażenie regularne to '/ ([^ \ t \ n \ f \ />" = ] +)/' – Nate

4

Dostępne wartości są wymienione na w3.org. Jeśli dodasz atrybut niestandardowy, nie będziesz już więcej pisać w HTML.

+0

Ostateczny. Więc wszystkie dozwolone znaki są obecne w tym dokumencie. Dzięki! –

+2

To nie do końca prawda, ponieważ można określić własne atrybuty 'data-'. – ioquatix

+1

@ioquatix - Było prawdą w 2009 roku! Nawet w przypadku atrybutów danych w miksie jest to bardzo specyficzna forma dostosowywania zdefiniowana w specyfikacji. – Quentin

15

Zakładając, że mówisz o XHTML, obowiązują zasady XML.

Zobacz http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Name

Nazwy i żetony

[4]  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] 
[4a] NameChar  ::=  NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] 
[5]  Name  ::=  NameStartChar (NameChar)* 
[6]  Names  ::=  Name (#x20 Name)* 
[7]  Nmtoken ::=  (NameChar)+ 
[8]  Nmtokens  ::=  Nmtoken (#x20 Nmtoken)* 
+0

imho, to powinna być akceptowana odpowiedź – revelt

9

Może ja czegoś brakuje, ale uważam, że pytanie jest oparty na fałszywym założeniu. W HTML, atrybuty są ściśle defined zgodnie ze stałą specyfikacją. Jeśli "nadrobisz" własne nazwy atrybutów, nie będziesz już pisać poprawnego kodu HTML.

+33

... chyba że są niestandardowymi atrybutami "data- *". –

+1

@MathiasBynens Cool, jeszcze o tym nie wiedziałem! Mimo to należy pamiętać, że są one ważne tylko dla HTML5, a nie dla żadnej poprzedniej wersji HTML. – Daan

+1

Dlaczego nie używać HTML5? –

Powiązane problemy