101

가능한 중복 :

HTML의 id 속성에 유효한 값은 무엇입니까?

밑줄은 괜찮아 보인다. 대시는 어떨까요? 다른 특수 문자?

5 답변


106

실제로 HTML과 XHTML에는 차이가 있습니다. XHTML은 XML이므로 XML ID에 대한 규칙이 적용됩니다.

ID 유형의 값은 이름 생성과 일치해야합니다.

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]

출처:XML (Extensible Markup Language) 1.0 (5 판) 2.3

HTML의 경우 다음이 적용됩니다.

아이디 = 이름 [CS]

이 속성은 요소에 이름을 지정합니다. 이 이름은 문서에서 고유해야합니다.

ID 및 NAME 토큰은 a로 시작해야합니다.   편지 ([A-Za-z])를 따르고 따라 할 수 있습니다   임의의 문자 숫자로   ([0-9]), 하이픈 ( "-"), 밑줄   ( "_"), 콜론 ( ":") 및 마침표   ( ".").

출처:HTML 4 사양, 6 장, ID 토큰


  • XML 이름은 HTML 이름의 상위 집합임을 의미합니다. 즉, 유효한 HTML 이름도 유효한 XML / XHTML 이름입니다. - Ben Blank
  • CSS 나 jQuery를 사용하려는 사람들은 ID 내부의 마침표와 콜론을 사용할 수 없게됩니다. 하지만 ... 해킹을위한 훌륭한 방법입니다! - Dan
  • @ 단, 언제든지 탈출 " " 할 수 있습니다. " 및 ":" 백 슬래시를 사용하여 jquery에서 ... - Bor691
  • 정규 표현식/^[a-z]+[a-z0-9\-_:\.]*$/i. - Gajus
  • @ GajusKuizinas ...하지만 유로 중심이고 ASCII 문자 만 허용하는 경우. 이들 "gobbeldygook" 같은 문자 범위[#xF900-#xFDCF]정규 표현식에서 허용하지 않는 이름에 사용할 수있는 유용한 유니 코드 문자를 나타냅니다. - Phrogz

22

W3C 사양기본 HTML 데이터 유형말한다"ID 및 이름 토큰은 문자 ([A-Za-z])로 시작해야하며 문자, 숫자 ([0-9]), 하이픈 (-), 밑줄 ("_"), 콜론 (": ") 및 마침표 (". ")가 포함됩니다.


  • 실제로, ":" XHTML 문서에서 XML 네임 스페이스 때문에 혼란 스럽다. 사용하지 않는 것이 좋습니다. - Dan Davies Brackett
  • 특히 ID가 공백을 포함 할 수 없다는 것을 의미합니다. 이는 < div id = "내 사물"> 이 CSS 규칙과 일치하지 않습니다. #my thing {color : red} - aem
  • 감사. CSS 나 JS와 상호 작용할 때 이러한 것들이 혼란 스러울 것입니까? CSS가 점과 콜론과 혼동되는 것을 볼 수 있었으며 JS에서 대시를 잘 처리하지 못했습니다. - Josh Gibson
  • 마찬가지로 JS 및 CSS API가 정의 될 때 마침표는 종종 고려되지 않으므로 피할 수 없습니다. - Dan Davies Brackett
  • 이러한 제한 사항은 HTML5에서 해제되었습니다. 만나다mathiasbynens.be/notes/html5-id-class. - Mathias Bynens

8

말 그대로 제목을 사용하면 HTML이나 XHTML 규칙이 적용되지 않습니다. 대신 관련 사양은 DOM입니다.

DOM 레벨 3을 소스로 사용하고 "DOM ID"로 "ID"플래그가 설정된 속성을 의미한다고 가정하면이 값은 "DOMString"이며이 문자의 문자는 UTF-16 인코딩 가능 문자가 될 수 있습니다.

16 비트 단위

DOMString의 기본 단위입니다. 이것은 DOMString에 대한 색인 생성   16 비트 단위로 발생합니다. 필수 사항   저것을 오해하지 말라.   DOMString은 임의의 16 비트를 저장할 수 있습니다.   단위. DOMString는 문자입니다.   UTF-16으로 인코딩 된 문자열. 이것은   UTF-16의 제한 사항은 다음과 같습니다.   잘 다른 관련성   문자열에 대한 제한은   유지되어야한다. 단일 문자,   숫자의 형태로 된 예   문자 참조는 다음에 해당 할 수 있습니다.   하나 또는 두 개의 16 비트 단위.

물론, 이것은 아마도 당신이 원하는 것이 아니며 Ludwig Weinzierl의 대답은 당신이 찾고 있던 것입니다. 그러나 모든 DOM을 HTML 또는 XHTML로 직렬화 할 수있는 것은 아니며 DOM에는 고유 한 규칙 집합이 있다는 것을 이해하는 것이 좋습니다.


5

HTML 4.0 스펙에 따르면

ID 및 NAME 토큰은 문자 ([A-Za-z])로 시작해야하며 숫자, 숫자 ([0-9]), 하이픈 ( "-"), 밑줄 ( "_" , 콜론 ( ":") 및 마침표 ( ".")로 구성됩니다.



2

유효한 html 일명 xhtml의 목적을 위해 필립은 정확합니다. id 속성에는 공백이나 특수 문자 (실제로는 이스케이프가 필요하지 않음)가 없어야합니다. 52 문자 알파벳, 대소 문자, 숫자 0-9, 하이픈 ( "-"), 밑줄 ( "_"), 콜론 ( ":") 및 마침표 ( ".")

연결된 질문


관련된 질문

최근 질문