HTML5가 HTML 주석 표준을 변경합니까?
최근에 HTML5에 새로운 주석 달기 방법이 있음을 발견했습니다.
대신 일반의 <!-- -->
나에 대해 읽은 주석 멀티 라인, 나는 생각 내 IDE가 정기적으로 만든 것으로 나타났습니다 <!div >
주석을. 그래서 나는 그것을 테스트했고 놀랍게도 크롬이 그 태그를 주석 처리했습니다. 그것은 div의 내용이 아닌 태그 만 주석 처리 했으므로 <!/div>
다른 div를 닫지 않기 위해 더 자세히 주석을 달아야했습니다.
다른 테스트를했는데 일반적으로 태그 열기 앞에 느낌표를 넣으면이 기호 <
가 주석 처리됩니다.
이것은 실제로 새로운 것인가? 나쁜 습관입니까? 실제로 매우 편리하지만 아직 실용적이지 않습니까 (새롭지 않은 경우)?
추가 세부 정보 수정 : 이 특정 구문의 구문 오류 또는 잘못된 해석이 좋은 이유이지만 Chrome에서 실제로 전체 주석으로 렌더링 하는 방법은 무엇입니까?
코드는 다음과 같이 작성됩니다 .
<!div displayed> some text here that is still displayed <!/div>
그리고 다음과 같이 렌더링됩니다 .
<!--div displayed--> some text here that is still displayed <!--/div-->
HTML5에는 주석에 대한 새로운 표준이 없습니다. 유효한 주석 구문은 여전히 유일합니다 <!-- -->
. 에서 W3C HTML5의 섹션 8.1.6 :
주석은 4 문자 시퀀스 U + 003C LESS-THAN SIGN, U + 0021 EXCLAMATION MARK, U + 002D HYPHEN-MINUS, U + 002D HYPHEN-MINUS (
<!--
)로 시작해야합니다.
<!
HTML5의 일부가 아닌 SGML DTD 마크 업에서 구문 유래. HTML5에서는 주석, CDATA 섹션 및 DOCTYPE 선언 용으로 예약되어 있습니다. 따라서이 대안이 잘못된 방법인지 여부는 더 이상 사용되지 않는 마크 업의 사용을 나쁜 방법으로 간주하는지 여부에 따라 다릅니다.
Validator.nu는 "Bogus 의견"이있는 것을 호출합니다. — 유효한 주석이 아니더라도 주석처럼 취급됨을 의미합니다. 이것은 아마도 HTML5 이전 버전과의 호환성을위한 것으로, SGML 기반이었고 형식을 취하는 마크 업 선언이 있었 <!FOO>
으므로 이것을 새로운 것으로 부르지 않을 것입니다. 그들이 처리하고 그 이유 처럼 SGML 마크 업 선언을하지 렌더링 할 의미가 특별 선언했기 때문에 의견이다, 그러나 의미는 (위의 예외) HTML5에 있기 때문에, 멀리 HTML5 DOM에 관한 한 그들은 없는 댓글 더 이상 아무것도 .
섹션 8.2.4 의 다음 단계는 이 결론으로 이어 지며 Chrome은 편지를 따르는 것으로 보입니다.
-
다음 입력 문자를 사용하십시오.
"<"(U + 003C)
태그 열기 상태로 전환합니다. -
다음 입력 문자를 사용하십시오.
"!" (U + 0021)
마크 업 선언 열기 상태로 전환하십시오. -
다음 두 문자가 모두 "-"(U + 002D) 문자이면이 두 문자를 사용하고 데이터가 빈 문자열 인 주석 토큰을 작성한 후 주석 시작 상태로 전환하십시오.
그렇지 않으면 다음 7자가 "DOCTYPE"이라는 단어와 ASCII의 대소 문자를 구분하지 않으면 해당 문자를 사용하여 DOCTYPE 상태로 전환하십시오.
그렇지 않으면, 조정 된 현재 노드가 있고 HTML 네임 스페이스에 요소가없고 다음 7 개의 문자가 문자열 "[CDATA ["(U +를 가진 5 개의 대문자 "CDATA")와 대소 문자를 구분하는 경우 005B LEFT SQUARE BRACKET 문자 앞뒤), 해당 문자를 소비하고 CDATA 섹션 상태로 전환하십시오.
그렇지 않으면 이것은 구문 분석 오류입니다. 가짜 댓글 상태로 전환합니다. 소비되는 다음 문자 (있는 경우)는 주석에 포함될 첫 번째 문자입니다.
일련의 문자가 발생하는 경우에만 주석 시작 상태로 전환하라는 메시지가 표시되고
<!--
, 그렇지 않으면 가짜 주석입니다. 이것은 8.1.6 항에 명시된 내용을 반영합니다. -
첫 번째 ">"(U + 003E) 문자 또는 파일 끝 (EOF)을 포함하여 모든 문자를 사용하십시오. 데이터가 상태 머신이 가짜 주석 상태로 전환되게하는 문자를 포함하여 모든 문자의 연결, 즉 마지막으로 소비 된 문자 직전의 문자 (즉, 문자까지)를 포함하는 주석 토큰을 방출합니다. U + 003E 또는 EOF 문자 바로 앞에 있지만 U + 0000 NULL 문자는 U + FFFD REPLACEMENT CHARACTER 문자로 바뀝니다. 주석이 파일 끝 (EOF)까지 시작된 경우 토큰이 비어 있습니다. 마찬가지로 "
<!>
" 문자열로 생성 된 경우 토큰이 비어 있습니다.)일반 영어,이 턴
<!div displayed>
에<!--div displayed-->
와<!/div>
로는<!--/div-->
, 정확히 같은 질문에 설명.
마지막으로, 다른 HTML5 호환 파서는 Chrome과 동일하게 작동 할 것으로 예상 할 수 있습니다.
나는 이것이 <!
마크 업 선언을 의미하기 때문에 좋은 습관이라고 생각하지 않습니다 <!DOCTYPE
. 따라서 당신은 그것이 논평되었다고 생각합니다 (잘 ... 브라우저는 그것을 해석하려고 시도 할 것입니다).
표시되지 않더라도 HTML 코드 주석을위한 올바른 구문이 아닌 것 같습니다.
참고 URL : https://stackoverflow.com/questions/29405858/does-html5-change-the-standard-for-html-commenting
'Programing' 카테고리의 다른 글
Windows 스레딩 : _beginthread vs _beginthreadex vs CreateThread C ++ (0) | 2020.07.01 |
---|---|
C # 엔터티 프레임 워크 : .Find와 .Include를 모델 개체에 결합하려면 어떻게해야합니까? (0) | 2020.07.01 |
각 객체에 대해 일반 저장소와 특정 저장소를 작성하는 이점 (0) | 2020.07.01 |
_DEBUG vs NDEBUG (0) | 2020.07.01 |
C ++에서 컴파일 타임 문자열을 편리하게 선언 (0) | 2020.07.01 |