初學者常會遇見這樣的情況,通過Xslt格式經輸出的html頁,明明在查看源代碼中什麼都有,但就是不能在IE中顯示出來,在Firefox中確顯示正常,在Dreamweaver的所見即所得編輯器中也正常。我以前也爲這個問題迷惑過,還就此問題問了孟子E章,在此謝謝孟子。
究其原因,是因爲IE的的Bug,根據最新XHTML的標準,如果一個html/xml標籤內沒有內容,可以使用反斜槓來結束這個標籤,假如你在xslt中寫入<script src="youscriptfile.js"></script>,並且通過vs.net 2005(通過其它語言格式化我沒有測試過)中的XslCompiledTransform類進行格式,那麼你輸入出的結果將是<script src="youscriptfile.js" />,XslCompiledTransform是.Net Framework 2.0才增加的,嚴格執行XHTML,但令人費解的是IE卻不能支持以反斜槓結尾的標籤。
我們可以在script中間加一些字符,就如:<script src="youscriptfile.js">a</script>,但對於其它HTML標籤如DIV就不行了,因爲這樣會輸出內容。
<xsl:comment />標籤會輸出一個<!---->HTML註釋,比如我們在CSS的Style樣式可以這樣寫:
css 代碼
- <style type="text/css">
- <xsl:comment>
- .yourcss
- {
-
- }
- </xsl:comment>
- </style>
將輸出成爲:
css 代碼
- <style type="text/css">
- <!--
- .yourcss
- {
-
- }
- -->
- </style>
根據這個特性,我們可以這樣寫:<script src="youscriptfile.js"><xsl:comment /></script>,
<xsl:comment />
。這樣輸出的結果在IE中就能正常顯示了。
你可能會想到直接在XSLT中使用<!---->,但很遺憾地告訴你,這樣是不行的,因爲<!---->也是XSLT的註釋,<!---->是不會被輸出的。
如果你不能確定HTML標籤中是否有內容,請在標籤中加上<xsl:comment />,這樣可以避免不必要的麻煩。