XML 주석에 두 개의 하이픈이 포함될 수없는 이유


16

XmlParser가 XML 주석에 두 개의 하이픈 ( --)이 허용되지 않는다고 보고했을 때 구성 파일의 XML 주석에 마크 다운 주석을 적용하고 있었습니다.

XML 사양을 확인하면 xml 주석이 SGML 파서와의 호환성을 위해 두 개의 하이픈을 포함하도록 설계되지 않은 것으로 보입니다.

SGML 파서가 주석에서 이중 하이픈을 허용하지 않는 이유는 무엇입니까?


2
난 당신이 "그 표준의 말씀이기 때문에"보다 더 나은 답변을 얻을 것이다 생각하지 않는다
JK합니다.

글쎄, 그보다 더 나은 해답이있을 수 있지만 즉, :-( 나는 선택의 여지가없는, 유일한 대답이다.
OnesimusUnbound

답변:


30

이 페이지는 상당히 많은 HTML / SGML 히스토리와 두 개의 연속 하이픈 (이중 대시)의 다소 복잡한 규칙을 간략하게 설명합니다.

SGML에 대한 관련 부분 :

간단히 말해서 주석의 시작과 끝에 이중 대시는 주석을 시작하고 종료하지 않습니다. 이중 대시는 주석에 포함 할 수있는 내용이 변경되었음을 나타냅니다. 첫 번째-주석을 시작하고 주석을 종료하지 않고> 문자를 포함 할 수 있음을 브라우저에 알려줍니다. 두 번째-주석을 끝내지 않습니다. 브라우저에> 문자가 있으면 주석을 끝내야한다고 알려줍니다. 다른-가 추가되면> 문자 허용으로 돌아갑니다.


7
참조하는 섹션 입니다. --주석 내 에서 SGML 사양이 의도 한 것을 읽었을 때 머릿속에서 나중에 소개 할 복잡성에 대해 머리를 돌립니다.
OnesimusUnbound

1
--댓글 안에 절대로 사용하지 말라고 충고하는 것은 나에게 좋은 것 같습니다. 그러나 탈출하는 표준 방법이 있습니까? foo -- bar문제가 발생하지 않도록 출력 필터를 만들고 공유하고 싶다고 가정 합니다. SGML에 해당하는 것이 foo -\- bar있습니까? (하지만 백 슬래시가 아니라고 확신합니다!) 또는 -( 이 답변 참조 ) 또는 다른 것? 우리가 바꿀 경우 ---또는 - -의 탈출은 되돌릴 수 없습니다.
fazy

12

이중 하이픈 SGML에서 주석 구분 기호 이기 때문 입니다. 는 <!(가), SGML 명령을 시작 --주석을 나타냅니다. 따라서 기본적으로 C ++ 주석에 포함 할 수없는 것과 같은 이유입니다 */.


1
-->주석 구분 기호 라고 생각 합니다.
OnesimusUnbound

10
전혀 그렇지 않다. <!SGML 명령어를 시작하고 >종료합니다. SGML 명령어 내 --에서 주석을 시작하고 종료합니다.
Jörg W Mittag

7
Ahh는 답변에 의견을 추가합니다. <! someRelevantSgmlTag-주석-someAttribute = "blabla"-다른 주석->을 쓸 수 있고 의미 의미는 <! someRelevantSgmlTag someAttribute = " blabla ">
Jimmy Hoffa

1
아 이해가 되네요 --> 실제로 --주석을 구분하고 >SGML 명령을 종료 하는 두 개의 토큰 입니다. 지금, 나는 위치에 대한 아이디어가 <![CDATA[... ]]>유래한다.
OnesimusUnbound

의견을 병합했습니다.
Joris Timmermans
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.