我可以在VS 2010 HTML片段中包含CDATA部分吗?
当在VS 2010中使用HTML代码段“脚本”我得到:我可以在VS 2010 HTML片段中包含CDATA部分吗?
<script type="text/javascript"> </script>
我想的片段来呈现以下结果:
<script type="text/javascript">
//<![CDATA[
//]]>
</script>
我已经看了看是.snippet文件这个发现下面的“代码”元素:
<Code Language="html"><![CDATA[<script type="text/javascript">$selected$$end$</script>]]></Code>
,我意识到这可能是一个有点棘手得到这个工作,即这并不:
<Code Language="html"><![CDATA[<script type="text/javascript">
//<![CDATA[
$selected$$end$
//]]>
</script>]]></Code>
有没有人比我懂得更多的XML知识知道这是否可行?
从w3schools:Nested CDATA sections are not allowed.
但它是一个有趣的问题。
编辑: 下面将从事物的XML(片段)边工作,但我不知道怎么结果会被浏览器解释:
<Code Language="html"><![CDATA[<script type="text/javascript">
//<![CDATA[
$selected$$end$
//]]/>
</script>]]></Code>
(注意斜线收盘插入符
之前),这将产生以下输出:
<script type="text/javascript">
//<![CDATA[
//]]/>
</script>
这可能是什么你想试验;正如我所说,我不确定最终会如何处理。
我不能得到这个工作,我不明白如何代码元素没有cdata _within_脚本标记可以产生输出... – 2010-12-19 06:55:52
@丹:对不起,当我发布我的原始编辑时,我复制了错误的部分。我再次编辑它(希望)它现在可以工作:-)。对困惑感到抱歉。 – 2010-12-22 22:07:46
我发现你在你的代码片段中寻找的解决方案就是这样做的。
<代码语言= “HTML” >
<![CDATA [<脚本类型= “文/ JavaScript的” >
<![CDATA [
$选择$] $结束$ >
< /脚本>] >< /代码>
为了呈现VS内的CDATA部分代码段元素,你需要放弃这种通常使用的代码元素的CDATA部分和逃逸的全部内容。如果您尝试仅对第一部分进行编码,则代码片段引擎会识别第一个未转义的CDATA部分,并且不会渲染该部分。
在你的情况下,代码段元素应该是这样的(假设你定义了一个$脚本$参数):
<Code Language="html">
<script type="text/javascript">
//<![CDATA[
$script$
//]]>
</script>
</Code>
这将产生以下结果
<script type="text/javascript">
//<![CDATA[
script goes here
//]]>
</script>
终于到处去测试这个。它不起作用。我得到这个使用片断时($脚本$被替换的片段定义$结束$): <脚本> // < [CDATA [//]] > < /脚本> 即! </>保留原样,在片段中我还没有换行符... – 2012-07-16 11:49:32
感谢您的反馈意见。这确实奏效 - 或者至少在我当时使用的VS版本中有效。在提供答案之前,我多次测试过它。我有可能误解了你的要求。 – 2012-09-05 01:38:43
我也想插入脚本代码片段包含此CDATA序列,因为它似乎被认为是最佳实践并符合标准。 – eniac 2011-02-22 18:58:54