Ясно, что этот вопрос носит чисто академический характер. К счастью, у него есть определенный ответ.
Вы не можете избежать окончания конца CDATA. Правило 20 производства XML спецификации совершенно ясно:
[20] CData ::= (Char* - (Char* ']]>' Char*))
EDIT: Это правило продукта буквально означает «Раздел CData может содержать все, что вы хотите, а последовательность»]] > '. Никаких исключений. ".
EDIT2: тот же раздел также читает:
В разделе CDATA используется только строка CDEnd распознается как разметка, так что левые угловые скобки и амперсанды могут встречаться в их буквальной форме; им не нужно (и не может) сбежать с помощью «
blockquote><
» и «&
». Секции CDATA не могут встраиваться.Другими словами, невозможно использовать ссылку на объект, разметку или любую другую интерпретационную форму. Единственный проанализированный текст внутри секции CDATA -
]]>
, и он завершает раздел.Следовательно, невозможно выйти из
]]>
в секции CDATA.EDIT3 : тот же раздел также читает:
2.7 Разделы CDATA
[Определение: разделы CDATA могут возникать в любом случае, когда могут встречаться персональные данные; они используются для удаления блоков текста, содержащих символы, которые в противном случае были бы распознаны как разметка. Секции CDATA начинаются со строки «& lt;! [CDATA [" и заканчиваются строкой "]] & gt;":]
blockquote>Тогда может быть раздел CDATA, где могут встречаться любые персональные данные , включая несколько смежных секций CDATA на одном участке CDATA. Это позволяет разделить токен
]]>
и поместить две части его в соседние секции CDATA.ex:
can be difficult and
]]> следует записать как
can be difficult and
]]>