是]]>;序列在XML标记的内容中真的不合法吗?
我有一个带有标记的XML文档,其中包含用户输入的消息,我希望避免不必要的字符转义 根据下面的链接,唯一严格非法的字符是来自(emphasis mine)的“: 符号和字符(&)和左尖括号()可以用字符串“是]]>;序列在XML标记的内容中真的不合法吗?,xml,escaping,standards,Xml,Escaping,Standards,我有一个带有标记的XML文档,其中包含用户输入的消息,我希望避免不必要的字符转义 根据下面的链接,唯一严格非法的字符是来自(emphasis mine)的“: 符号和字符(&)和左尖括号()可以用字符串“”表示,为了兼容,必须使用“”或字符引用进行转义,当该字符串出现在内容中的字符串“]>”中时,该字符串未标记CDATA节的结尾。 这意味着,只要]]>分隔符未用于标记CDATA节的结束,以供读取此文档的XML解析器使用,则不转义是不合法的,即使它不是在CDATA节的上下文中发生的 我不熟悉浏览器
”表示,为了兼容,必须使用“
”或字符引用进行转义,当该字符串出现在内容中的字符串“]>
”中时,该字符串未标记CDATA节的结尾。
这意味着,只要]]>
分隔符未用于标记CDATA节的结束,以供读取此文档的XML解析器使用,则不转义是不合法的,即使它不是在CDATA节的上下文中发生的
我不熟悉浏览器内部使用的XML解析器,但考虑到出于兼容性的原因,这一要求已经到位,您的猜测似乎是正确的
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<message><!-- -- -- <![CDATA["TEST"]]></message>
<signature>Evil</signature>
</root>