题
现在,我从7年开始开发网站和XML界面,从来没有出现过这种情况,确实有必要使用 >
为一个 >
. 。到目前为止,所有的disiguition都可以通过引用来处理 <
, &
, "
和 '
独自的。
是否有人遇到过这种情况(例如,与SGML处理,浏览器问题,XSLT等有关) >
?
更新: 我只是检查了 XML规格, ,例如,关于第2.4节中的字符数据,例如:
字符数据
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
所以即使在那里, >
除了CDATA部分的结尾序列外,没有提到特殊的东西。
这是一个案例,其中 >
具有任何意义,将是CDATA部分的结束, ]]>
, ,但再说一次,如果您引用了报价(即,字符串) ]]>
)从字面上降落在输出中(因为它是 CDATA).
解决方案
您无需绝对,因为几乎所有XML解释器都会理解您的意思。但是,如果您这样做,您仍然使用一个没有任何保护的特殊角色。
XML是关于语义的,这并不是真正符合语义的。
关于你的 更新, ,您忘记了这部分:
可以使用字符串“>”来表示正确的角度括号(>),并且必须使用两者来兼容。
>
“或字符引用出现在字符串中时”]]>
“在内容中,当该字符串没有标记CDATA部分的末尾时。
文档中给出的用例更多地是这样的:
<xmlmarkup>
]]>
</xmlmarkup>
在这里 ]]>
部分可能是旧SGML解析器的问题,所以 必须 被逃脱= ]]>
出于兼容性。
其他提示
我用了 一个不是19个小时 以前通过严格的XML验证器。另一种情况是,当您在HTML/XML内容文本(而不是属性)中实际使用它们时,例如: <
.
当然,宽松的解析器会接受您投入的大部分内容,但是如果您担心XSS,则是您的朋友。
更新:这是您需要逃脱的示例 >
在Firefox中:
<?xml version="1.0" encoding="utf-8" ?>
<test>
]]>
</test>
当然,它仍然不是必须逃脱孤独的例子 >
.
不如说是(x)HTML文档的作者,而是作为网站上草率的书面评论字段的用户,可以“向您插入HTML”。
我的意思是,如果您以正确的方式进行网站,那么您还是不会对内容进行硬码,对吗?所以你打电话给 htmlentities
或任何(长时间看不到,PHP)会为您替换特殊角色。所以当然,您不会手动输入 >
但我希望你采取措施 >
自动更换。
我只是想到了另一个示例,您需要引用 >
在html5中(不是XHTML5)文档:如果您在没有引号的属性中需要它(当然可以争论)。
<img src=arrow.png alt=>>
应该等于xhtml
<img src="arrow.png" alt=">" />
但话又说回来, (?
想象您有以下文字 this is a not a ]]> nice day
您决定通过CDATA部分包围它 <![CDATA[this is a not a ]]> nice day]]>
.
为了避免这种情况(并允许以未终止标记的部分解析SGML片段),ISO 8879:1986的第10.4条宣布 出现 ]]>
在标记部分外是一个错误.
同样,在SGML标记部分的时代非常流行,因为它们不仅用于CDATA(如XML中),还用于RCDATA(仅允许使用实体和字符参考),并忽略和包括(允许识别标记的识别)内心)。
例如,在SGML中可以写:
<!ENTITY %WHATTODO "INCLUDE">
<![%WHATTODO;[<b>]]></b>]]>
等同于:
<b>]]></b>