ProgramingTip

HTML 속성 이름에 허용되는 문자는 무엇입니까?

bestdevel 2020. 11. 18. 09:32
반응형

HTML 속성 이름에 허용되는 문자는 무엇입니까?


HTML 속성 이름 = 값 쌍에서 '이름'부분에 허용되는 문자는 무엇입니까? ..... 가지 공통 속성을 형상 보면 문자 (az 및 AZ) 만 사용되는 것으로 보이지만 다른 문자도 허용 될 수 있습니까? ... 아마도 숫자 (0-9), 하이픈 (-) 및 마침표 (.) ... 이것에 대한 사양이 있습니까?


"허용됨"이 의미하는 바에 따라. 각 태그에는 유효한 속성 이름의 고정 목록이 있으며 html에서는 대소 문자를 구분하지 않습니다. 한 가지 중요한 의미에서 올바른 순서의 올바른 문자 만 "허용"입니다.

그것을 보는 또 다른 방법은 브라우저가 유효한 속성 이름으로 취급하는 문자입니다. 여기에서 가장 좋은 조언은 HTML 5의 파서 사양에서 나옵니다. 여기에서 사용할 수 있습니다 : https://html.spec.whatwg.org/multipage/syntax.html#attributes-2

탭, 줄 바꿈, 양식 피드, 공백, 실선,보다 큼 기호, 따옴표, 아포스트로피 및 등호 기호를 사용하는 모든 문자는 속성 이름의 일부로 처리됩니다. 개인적으로 나는 이것의 가장자리 케이스를 붙이려 고하지 않을 것입니다.


XHTML에 대해 이야기하고 가정하면 XML 규칙이 적용됩니다.

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

이름과 토큰

[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)*

아마도 내가 뭔가를 놓치고 있을지도 모르지만 나는 그 질문이 잘못된 가정에 근거한 생각합니다. HTML에서 속성은 고정 된 사양에 따라 엄격하게 정의 합니다. 자신의 속성 이름을 '구성'하면 더 이상 유효한 HTML을 작성하지 않습니다.


이 질문이 제기 된 이후로 웹은 상당히 발전했습니다. 웹 구성 요소 (사용자 지정 요소)의 작성자는 사용자 지정 요소에 대한 특성을 정의 할 때 사용할 수있는 유효한 이름을 알아보기 위해 사용할 수 있습니다.

여기에 부분적으로 올바른 답변이 여러 개 있으므로 사양을 기반으로 보완하고 업데이트합니다.

첫째, HTML5에서 이름은 대부분의 문자로 시작할 속성 수 있으며 이전 버전의 HTML보다 훨씬 더 관대합니다. @ S.Lott의 대답은 HTML 2 및 XHTML에는 적합하지 않습니다.

HTML5의 경우 : ( spec )

속성 이름은 공백 문자, U + 0000 NULL, U + 0022 QUOTATION MARK ( "), U + 0027 APOSTROPHE ( '), U + 003E GREATER-THAN SIGN (>), U + 이외의 하나 이상의 문자로 구성되어야합니다. 002F SOLIDUS (/) 및 U + 003D EQUALS SIGN (=) 문자, 제어 문자 및 유니 코드로 정의되지 않은 모든 문자 HTML 구문에서 속성 이름 (외래 요소에 대한 이름 포함)은 다음과 같이 쓸 수 있습니다. 속성 이름에 대해 대소 문자를 구분하지 않는 ASCII 일치 인 소문자와 대문자의 혼합.

즉, 여기에있는 다른 주석가가 맞습니다. 유효한 속성 목록에없는 기본 제공 요소에 속성을 사용하면 기술적으로 사양을 위반하게됩니다. 브라우저 작성자는 이것에 대해 많은 관용을 가지고 있습니다 (많은?) 해를 끼치 지에 대해. 많은 라이브러리가이를 이용하여 일반 HTML 태그를 향상 시키므로 기술적으로 유효한 HTML이 아니기 때문에 혼란을 야기합니다. HTML5는 데이터 속성 명명 규칙을 사용하여 속성의 사용자 지정 데이터에 대한 표현을 제공합니다.

이러한 규칙은 사용자 지정 요소에 따라 증가합니다.

사용자 정의 요소 작성자는 요소에 대해 원하는 모든 종류의 속성을 구현할 수있는 속성 이름은 HTML5보다 제한적입니다. 실제로 사양 에서는 속성 이름이 XML 이름 제한을 따라야합니다 .

상당히 큰 유니 코드 기호 문자 그룹과 함께 ASCII 기호 및 구두점은 XML이 XML 문서 외부에서 사용되는 이름에서 구분 기호로 더 유용하기 때문에 이름에서 제외됩니다. 이 그룹을 제공하면 해당하는 경우에 XML 이름의 일부가 될 수없는 것에 대한 확실한 보장이 제공됩니다. 문자 # x037E, GREEK QUESTION MARK는 정규화라는 단어 참조의 의미를 표현 수있는 세미콜론이 제외 제외됩니다.

이름과 토큰

[4] NameStartChar :: = ":"| [AZ] | "_"| [az] | [# 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] 이름 :: = NameStartChar (NameChar) *

[6] 이름 :: = 이름 (# x20 이름) *

[7] Nmtoken :: = (NameChar) +

[8] Nmtoken :: = Nmtoken (# x20 Nmtoken) *

따라서 사용자 정의 요소 이름의 경우 대 / 소문자 영숫자, "_"밑줄, ":"콜론 또는 사양에서 호출 된 모든 유니 코드 문자를 시작 문자로 다음 대시 "-", 점 "을 사용할 수 있습니다.", 알파 등 ... 본문 문자로.


허용되는 값은 w3.org에 기재되어 있습니다. 사용자 정의 속성을 추가하면 더 이상 HTML을 작성하지 않습니다.

참고 URL : https://stackoverflow.com/questions/925994/what-characters-are-allowed-in-an-html-attribute-name

반응형