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

为什么要使用XMLCDATA块?

  •  4
  • Xeoncross  · 技术社区  · 14 年前

    <node><![CDATA[ ...something... ]]></node>
    

    而不是

    <node>...something...</node>
    

    当然,在这两种情况下,您都需要对数据进行转义:

    function xmlspecialchars($text)
    {
        return str_replace('&#039;', '&apos;', htmlspecialchars($text, ENT_QUOTES, 'utf-8'));
    }
    

    spec 似乎CDATA只是一个可行的解决方案,当你没有选择转义数据-但你仍然信任它。例如,来自您博客的RSS提要(由于某种原因无法转义实体)。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Bruno    14 年前

    CDATA只是保持原始文本原样的标准方法,这意味着无论应用程序处理XML,都不需要对unescape执行任何显式操作。

    当您使用保留符号时,通常通过嵌入在XHTML中的JavaScript获得:

    <script type="text/javascript">
    //<![CDATA[
        var test = "<This is a string with reserved characters>";
    
        if (1 > 0) {
            alert(test);
        }
    //]]>
    </script>
    

    如果你有 if (1 &gt; 0) 相反,它必须显式地取消scape(实际上没有)。这样也更容易阅读。

        2
  •  0
  •   ZXX    14 年前

    它是第一个也是最重要的可读性特性。XML和SGML之前,它原本是人类可读的-信不信由你:-)