Я думаю, что ваша путаница может быть связана с тем, что вы не поняли точного значения термина "элемент XML".
Да, допустимо иметь комментарий в любом месте содержимого элемента XML (то есть между начальным и конечным тегами), но не внутри начального или конечного тега.
Например, вы не можете иметь комментарий между двумя атрибутами в стартовом теге. Например, следующее не правильно сформировано.
<a b="3" <!-- not 4!--> c="5"/>
В тексте, который вы цитируете, говорится, что в DTD комментарии разрешены только там, где это разрешено грамматикой.
Грамматика для вашего примера
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?
('[' intSubset ']' S?)? '>'
[28b] intSubset ::= (markupdecl | DeclSep)*
[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl
| NotationDecl | PI | Comment
Это говорит нам о том, что между квадратными скобками должно быть указано intSubset
, а Comment
является допустимым intSubset
, поскольку оно является допустимым markupDecl
.