【问题标题】:Can I include CDATA section in a VS 2010 HTML snippet?我可以在 VS 2010 HTML 片段中包含 CDATA 部分吗?
【发布时间】:2011-05-26 15:30:26
【问题描述】:

在 VS 2010 中使用 HTML sn-p“脚本”时,我得到:

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

我希望 sn-p 呈现以下结果:

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

//]]>
</script>

我为此查看了 .sn-p 文件并找到了以下“代码”元素:

    <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 知识的人知道这是否可行?

【问题讨论】:

  • 我还希望插入脚本代码 sn-p 包含此 CDATA 序列,因为它似乎被认为是最佳实践且符合标准。

标签: xml visual-studio-2010 code-snippets


【解决方案1】:

我在您的 sn-p 中找到了您正在寻找的解决方案,只需执行此操作即可。


$selected$]]$end$>
]]>

代码>

【讨论】:

    【解决方案2】:

    为了在 VS sn-p Code 元素中呈现 CDATA 部分,您需要放弃通常使用的 Code 元素的 CDATA 部分并转义整个内容。如果您尝试仅对第一部分进行编码,则 sn-p 引擎会识别第一个未转义的 CDATA 部分,并且不会呈现该部分。

    在您的情况下,sn-p 代码元素应如下所示(假设您定义了 $script$ 参数):

    <Code Language="html">
        &lt;script type=&quot;text/javascript&quot;&gt;
        //&lt;![CDATA[
          $script$
        //]]&gt;
        &lt;/script&gt;
    </Code>
    

    这将产生以下结果

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

    【讨论】:

    • 终于有时间测试了。它不起作用。我在使用 sn-p 时得到了这个(在 sn-p 定义中,$script$ 被 $end$ 替换):<script> //<![CDATA[ //]]> </脚本> IE。 </>保持原样,更重要的是我在 sn-p 中没有换行...
    • 感谢您的反馈。这确实有效——或者至少对我当时使用的 VS 版本有效。在提供它作为答案之前,我对其进行了多次测试。我可能误解了您的要求。
    【解决方案3】:

    来自w3schoolsNested CDATA sections are not allowed.

    但这是一个有趣的问题。

    编辑: 以下将在 xml (sn-p) 方面起作用,但我不确定浏览器将如何解释结果:

    <Code Language="html"><![CDATA[<script type="text/javascript">
        //<![CDATA[
            $selected$$end$
        //]]/>
    </script>]]></Code>
    

    (注意结束插入符号前的斜线)

    这将产生以下输出:

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

    这可能是您想要尝试的东西;正如我所说,我不确定最终会如何处理。

    【讨论】:

    • 我无法让它工作,我不明白没有 cdata within 脚本标记的代码元素如何产生该输出...
    • @Dan:对不起;当我发布我的原始编辑时,我复制了错误的部分。我再次对其进行了编辑,并且(希望)它现在可以工作了:-)。很抱歉造成混乱。
    猜你喜欢
    • 2021-02-19
    • 2012-07-06
    • 1970-01-01
    • 2013-05-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多