我现在开发网站和XML界面已经7年了,而且从来没有出现过这样的情况,真正有必要将>
用于>
。到目前为止,所有歧义都可以通过单独引用<
,&
,"
和'
来处理。
有没有人遇到过某种情况(例如,与SGML处理,浏览器问题,XSLT等有关),你发现它与>
一起逃避大于号的必不可少?
更新:我刚刚使用XML spec进行了检查,例如,在第2.4节中有关字符数据的内容:
字符数据
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
所以即使在那里,>
也没有被提及为特殊的东西,除了CDATA部分的结束序列。
>
具有任何意义的这一个案例将是CDATA部分]]>
的结尾,但如果你引用它,那么再次引用(即,文字字符串]]>
)将在字面上输出(因为它是 CDATA )。
答案 0 :(得分:7)
您不需要绝对,因为几乎任何XML解释器都能理解您的意思。但如果你这样做,你仍然会使用一个没有任何保护的特殊角色。
XML完全是关于语义的,并不是真正符合语义的。
关于更新,您忘记了这一部分:
右尖括号(&gt;)可以使用字符串“&gt;”表示,并且为了兼容性,必须使用“
>
”或字符串引用进行转义,当它出现在字符串中时“]]>
“在内容中,当该字符串未标记CDATA部分的结尾时。
文档中给出的用例更多地是这样的:
<xmlmarkup>
]]>
</xmlmarkup>
此处]]>
部分可能是旧SGML解析器的问题,因此出于兼容性原因,必须转义为= ]]>
。
答案 1 :(得分:3)
与(x)html文档的作者不同,更多的是作为网站中草率的书面评论字段的用户,“提供”您插入HTML。
我的意思是如果你以正确的方式建立自己的网站,你就不会硬编码你的内容,对吧?因此,您对htmlentities
或其他任何内容(长时间没有看到,php)的调用将会为您替换特殊字符。
当然,您不会手动输入>
,但我希望您采取措施,以便自动替换>
。
答案 2 :(得分:3)
我之前用one not 19 hours传递了一个严格的xml验证器。另一种情况是当你在html / xml内容文本(而不是属性)中实际使用它们时,如下所示:<
。
当然,一个松散的解析器会接受你扔的大部分东西,但如果你曾经担心过XSS,那么&amp; lt;是你的朋友。
更新:以下是您需要在Firefox中转义>
的示例:
<?xml version="1.0" encoding="utf-8" ?>
<test>
]]>
</test>
当然,它仍然不是逃避孤独>
的一个例子。
答案 3 :(得分:0)
我想到了另一个例子,你需要在HTML5( not XHTML5 )文档中引用>
:如果你需要在没有引号的属性中(这是某种东西,那可以当然是争论。)
<img src=arrow.png alt=>>
应该等同于XHTML
<img src="arrow.png" alt=">" />
但话说回来,(?&lt;!X)HTML不是SGML。
答案 4 :(得分:0)
想象一下,您有以下文字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(仅允许实体和字符引用)和IGNORE和INCLUDE(允许识别其中的标记)。
例如,在SGML中可以写:
<!ENTITY %WHATTODO "INCLUDE">
<![%WHATTODO;[<b>]]></b>]]>
相当于:
<b>]]></b>