是]]>;序列在XML标记的内容中真的不合法吗?

是]]>;序列在XML标记的内容中真的不合法吗?,xml,escaping,standards,Xml,Escaping,Standards,我有一个带有标记的XML文档,其中包含用户输入的消息,我希望避免不必要的字符转义 根据下面的链接,唯一严格非法的字符是来自(emphasis mine)的“: 符号和字符(&)和左尖括号()可以用字符串“”表示,为了兼容,必须使用“”或字符引用进行转义,当该字符串出现在内容中的字符串“]>”中时,该字符串未标记CDATA节的结尾。 这意味着,只要]]>分隔符未用于标记CDATA节的结束,以供读取此文档的XML解析器使用,则不转义是不合法的,即使它不是在CDATA节的上下文中发生的 我不熟悉浏览器

我有一个带有标记的XML文档,其中包含用户输入的消息,我希望避免不必要的字符转义

根据下面的链接,唯一严格非法的字符是来自(emphasis mine)的“:

符号和字符(&)和左尖括号()可以用字符串“
”表示,为了兼容,必须使用“
”或字符引用进行转义,当该字符串出现在内容中的字符串“
]>
”中时,该字符串未标记CDATA节的结尾。

这意味着,只要
]]>
分隔符未用于标记CDATA节的结束,以供读取此文档的XML解析器使用,则不转义是不合法的,即使它不是在CDATA节的上下文中发生的

我不熟悉浏览器内部使用的XML解析器,但考虑到出于兼容性的原因,这一要求已经到位,您的猜测似乎是正确的

<?xml version="1.0" encoding="UTF-8" ?> 
<root>
  <message>&lt;!-- -- -- &lt;![CDATA[&quot;TEST&quot;]]></message>
  <signature>Evil</signature>
</root>