Комментарии XML и "-"
<!-- here is some comment --
^
|
what can be here apart from '>'?
Кажется, что XML не нравится "-" внутри комментариев. Я где-то читал, что "-" переключает некоторые режимы внутри объекта <! ... >
, но <!-- -- -- -->
(четное число --
s) также недействительно. Если это какая-то историческая особенность, что это за "про"? ( "contra" часть неспособна иметь --
в комментариях).
В чем причина усложнения обработки комментариев, если не сделать только "- > " конец комментария и разрешить "-" внутри?
Ответы
Ответ 1
Из документа стандартов:
http://www.w3.org/TR/REC-xml/#sec-comments
[Определение: комментарии могут появляться в любом месте документа за пределами другого разметки; кроме того, они могут отображаться в типе документа декларация в местах, разрешенных грамматикой. Они не являются частью символьные данные документа; XML-процессор может, но не обязательно, сделать это возможно, приложение может получить текст комментариев. Для , строка "-" (двойная дефиса) не должна происходить внутри комментарии.] Ссылки на объекты параметров не должны распознаваться внутри комментарии.
Ответ 2
Возможно, это может быть полезно для кого-то. У меня была проблема, что я хотел бы прокомментировать параметр командной строки в XML, который начинается с -:
<arg line="-v --line-break 0" />
так естественным образом, как этот
<!-- <arg line="-v --line-break 0" /> -->
не работал, но я узнал, что если -
заменен на него эквивалентом UTF-8 -
, он работает и может быть допущен внутри комментариев.
Итак, в моем случае строка
<arg line="-v --line-break 0" />
корректно анализируется и может быть частью комментариев.
Конечно, это выглядит немного уродливо, но если кто-то хочет сохранить строку - как комментарий в своем XML - я думаю, что это все еще лучше, чем ничего.
Ответ 3
Это один из тех глупых правил, что в XML, потому что он был в SGML, и люди не хотели нарушать совместимость. Почему в SGML кто-то догадывается: возможно, потому, что он сохранил три строки кода в исходном парсере.
Ответ 4
--
не разрешено для совместимости с SGML. Из В SGML и HTML:
Не допускается пробел между объявлением разметки разделитель ( "<!" ) и открытый разделитель комментариев ( "-" ), но разрешено между ограничителем закрытия комментария ( "-" ) и разметкой разделитель объявления ( " > " ). Общей ошибкой является включение строка дефисов ( "---" ) в комментарии. Авторы должны избегать помещая два или более смежных дефиса внутри комментариев.
Итак, в SGML <!
и >
открывать и закрывать "объявления разметки" и --
открывает и закрывает комментарии.