Eu estava aplicando comentários de remarcação nos comentários xml de um arquivo de configuração quando o XmlParser relatou que dois hífens ( --
) não são permitidos nos comentários xml.
Verificando a especificação XML , parece que o comentário xml não foi projetado para conter dois hífens por motivos de compatibilidade com os analisadores SGML.
Por que os analisadores SGML não permitem hífens duplos nos comentários?
Respostas:
Esta página descreve um pouco da história do HTML / SGML e as regras bastante complicadas desses dois hífens consecutivos (traço duplo).
A parte relevante sobre SGML:
fonte
--
no comentário, minha cabeça gira em torno da complexidade que apresentará mais tarde.--
dentro de um comentário parece bom para mim. Mas, existe uma maneira padrão de escapar disso? Suponha que eu queira criar (e compartilhar) um filtro de saída para garantir quefoo -- bar
nunca cause um problema. Existe um equivalente SGML defoo -\- bar
? (Tenho certeza de que não é uma barra invertida!) Ou-
(veja esta resposta ), ou algo mais? Se apenas substituirmos--
por-
ou- -
, o escape não é reversível.Porque um hífen duplo é o delimitador de comentários no SGML. O
<!
inicia uma instrução SGML, a--
indica um comentário. Então, basicamente, é pela mesma razão que um comentário em C ++ não pode conter*/
.fonte
-->
é o delimitador de comentários.<!
inicia uma instrução SGML e>
termina-a. Dentro de uma instrução SGML,--
inicia e termina um comentário.-->
é na verdade dois tokens, o--
de delimitar o comentário e>
finalizar a instrução SGML. Agora, tenho uma ideia de onde<![CDATA[
... se]]>
originou.