2010-12-16 68 views
3

當在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知識知道這是否可行?

+0

我也想插入腳本代碼片段包含此CDATA序列,因爲它似乎被認爲是最佳實踐並符合標準。 – eniac 2011-02-22 18:58:54

回答

0

w3schoolsNested 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> 

這可能是什麼你想試驗;正如我所說,我不確定最終會如何處理。

+0

我不能得到這個工作,我不明白如何代碼元素沒有cdata _within_腳本標記可以產生輸出... – 2010-12-19 06:55:52

+0

@丹:對不起,當我發佈我的原始編輯時,我複製了錯誤的部分。我再次編輯它(希望)它現在可以工作:-)。對困惑感到抱歉。 – 2010-12-22 22:07:46

2

我發現你在你的代碼片段中尋找的解決方案就是這樣做的。

<代碼語言= 「HTML」 >

<![CDATA [<腳本類型= 「文/ JavaScript的」 >
<![CDATA [
$選擇$] $結束$ >
< /腳本>] >

< /代碼>

0

爲了呈現VS內的CDATA部分代碼段元素,你需要放棄這種通常使用的代碼元素的CDATA部分和逃逸的全部內容。如果您嘗試僅對第一部分進行編碼,則代碼片段引擎會識別第一個未轉義的CDATA部分,並且不會渲染該部分。

在你的情況下,代碼段元素應該是這樣的(假設你定義了一個$腳本$參數):

<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> 
+0

終於到處去測試這個。它不起作用。我得到這個使用片斷時($腳本$被替換的片段定義$結束$): <腳本> // < [CDATA [//]] > < /腳本> 即! </>保留原樣,在片段中我還沒有換行符... – 2012-07-16 11:49:32

+0

感謝您的反饋意見。這確實奏效 - 或者至少在我當時使用的VS版本中有效。在提供答案之前,我多次測試過它。我有可能誤解了你的要求。 – 2012-09-05 01:38:43

相關問題