Я применял комментарии уценки в xml-комментариях файла конфигурации, когда XmlParser сообщил, что два дефиса ( --
) не разрешены в xml-комментариях.
При проверке спецификации XML выясняется, что xml-комментарий не предназначен для того, чтобы содержать два дефиса по причинам совместимости с синтаксическими анализаторами SGML.
Почему парсеры SGML запрещают использование двойных дефисов в комментариях?
Ответы:
На этой странице описывается довольно много истории HTML / SGML и довольно запутанные правила этих двух последовательных дефисов (двойная черта).
Соответствующая часть о SGML:
источник
--
в комментарии, моя голова кружится вокруг сложности, которую он представит позже.--
внутри комментария кажется мне хорошим. Но есть ли стандартный способ избежать этого? Предположим, я хочу создать (и поделиться) выходной фильтр, чтобы гарантировать, чтоfoo -- bar
никогда не вызывает проблем. Есть ли SGML-эквивалентfoo -\- bar
? (Я уверен, что это не обратная косая черта, хотя!) Или-
(см. Этот ответ ), или что-то еще? Если мы просто заменим--
на-
или- -
, выход не будет обратимым.Потому что двойной дефис является разделителем комментариев в SGML.
<!
Запускает команду SGML, то--
указывает на комментарий. Так что в основном по той же причине, что комментарий C ++ не может содержать*/
.источник
-->
это разделитель комментариев.<!
запускает инструкцию SGML,>
заканчивает ее Внутри инструкции SGML--
начинается и заканчивается комментарий.-->
на самом деле это два токена,--
чтобы разделить комментарий и>
завершить инструкцию SGML. Теперь у меня есть идея о том, где<![CDATA[
...]]>
возникла.