InlineScript助手并不总是在CDATA中嵌入脚本

时间:2011-04-01 09:22:49

标签: php html zend-framework xhtml

我发现了:

$actionController->view->inlineScript()->appendScript("\n".'// script here'."\n");

不会总是将脚本嵌入CDATA中。

使用XHTML doctype,您将获得此输出:

<script type="text/javascript">
    //<![CDATA[

// script here

    //]]>
</script>

使用HTML文档类型,您将获得:

<script type="text/javascript">
    //<!--

// script here

    //-->
</script>

这实际上是对的吗? CDATA也不应该在HTML中使用吗?

1 个答案:

答案 0 :(得分:1)

  

不应该在HTML中使用CDATA吗?

我正准备回答一个大胖子“不!” ......但我错了。

HTML 4实际上是一个SGML“应用程序”(想想“方言”)。 SGML是XML的前身。当您尝试定义实际含义时,SGML 确实<![CDATA[ ... ]]>“标记的部分”,但是things get a little complex

HTML 5 keeps the CDATA section syntax。这让我感到很惊讶,因为他们不遗余力地从SGML离开HTML语法。 HTML 5可以是represented either as it's own markup, or as XML

现在,所有这些都说,你完全不需要 在常规HTML文档中使用CDATA部分,而如果你在XML中忘记它,你会发现自己会解析错误文档。