代码之家  ›  专栏  ›  技术社区  ›  Boldewyn

有必要吗?

  •  14
  • Boldewyn  · 技术社区  · 14 年前

    &gt; 为了一个 > . 到目前为止,所有的歧义都可以通过引用 < & , " ' 一个人。

    有没有人遇到过这样的情况(例如,SGML处理、浏览器问题、XSLT等等),你觉得用大于号来逃避是不必要的 &燃气轮机;

    更新: XML spec ,例如,第2.4节中的字符数据:

    字符数据

    [14]      CharData       ::=      [^<&]* - ([^<&]* ']]>' [^<&]*)
    

    > 除了CDATA节的结束序列之外,没有提到什么特别的东西。

    只有一个案子 > 具有任何意义,将是CDATA部分的结尾, ]]> ,但是,如果你引用它,引用(即,文字字符串 ]]&gt; )会在输出中落地(因为它是 CDATA酒店 ).

    5 回复  |  直到 14 年前
        1
  •  7
  •   Colin Hebert    14 年前

    您不需要完全理解,因为几乎任何XML解释器都会理解您的意思。但如果你这样做,你仍然会使用一个没有任何保护的特殊字符。

    XML完全是关于语义的,这并不是真正符合语义的。

    关于你的 更新 ,您忘记了这部分:

    &gt; ]]>

    文档中给出的用例更像是这样:

    <xmlmarkup>
    ]]>
    </xmlmarkup>
    

    在这里 ]]&燃气轮机; 部分可能是旧的SGML解析器的问题,因此 必须 逃入= ]]&gt; 出于兼容性的原因。

        2
  •  3
  •   Community rcollyer    7 年前

    我曾经 one not 19 hours < .

    当然,lax解析器可以接受您抛出的任何东西,但是如果您曾经担心XSS,<是您的朋友。

    更新:下面是一个你需要逃跑的例子 >

    <?xml version="1.0" encoding="utf-8" ?>
    <test>
        ]]>
    </test>
    

    当然,这仍然不是一个必须逃避孤独的例子 >

        3
  •  3
  •   bitmask    14 年前

    与其说是(x)html文档的作者,不如说是网站中草率的书面评论字段的用户,这些字段“提供”了插入html的功能。

    我的意思是如果你用正确的方法做你的网站,你不会硬编码你的内容,对吗?所以你的电话 htmlentities 或者其他什么(好久不见了,php)可以帮你替换特殊字符。 当然,你不会手动输入 &gt; > 自动替换。

        4
  •  0
  •   Boldewyn    13 年前

    > 在HTML5中( 不是XHTML5 )文档:如果您需要在没有引号的属性中使用它(这当然是有争议的)。

    <img src=arrow.png alt=&gt;>
    

    应等同于XHTML

    <img src="arrow.png" alt=">" />
    

        5
  •  0
  •   Javier user3138333    11 年前

    假设您有以下文本 this is a not a ]]> nice day 您决定用CDATA分区将其包围 <![CDATA[this is a not a ]]> nice day]]> .

    为了避免这种情况(并允许解析带有未终止标记部分的SGML片段),iso8879:1986的第10.4条声明 ]]> 在有标记的 .

    例如,在SGML中可以编写:

     <!ENTITY %WHATTODO "INCLUDE">
     <![%WHATTODO;[<b>]]&gt;</b>]]>
    

    相当于:

     <b>]]&gt;</b>