1

我有一個問題,我似乎無法弄清楚。我不久以前在HTML中構建了一個網站,並且最近集成了Symphony CMS,並且必須將所有內容都更改爲XML。XML/XSLT條件註釋IE樣式表

本來在我的頭上,我有一個特定於Internet Explorer的樣式表,頭看起來是這樣的:

<head> 
     <link rel="stylesheet" href="../css/master.css" type="text/css" media="screen"></link> 
     <!--[if IE]> 
      <link rel="stylesheet" type="text/css" href="../css/ie.css"></link> 
      <script src="../js/html5shiv.js"></script> 
     <![endif]--> 
</head> 

由於開關,這個條件註釋也不再工作,我已經改成了這一點,但不幸的是,我的master.css被Chrome/Firefox等忽略......它只是爲所有瀏覽器加載ie.css樣式表。

<head> 
    <link rel="stylesheet" href="../css/master.css" type="text/css" media="screen"></link>     
    <xsl:comment>[if IE]<![CDATA[><!]]></xsl:comment> 
      <link rel="stylesheet" type="text/css" href="../css/ie.css"></link> 
      <script src="../js/html5shiv.js"></script> 
    <xsl:comment><![CDATA[<!]]>[endif]</xsl:comment>  
</head> 

對不起,我在這個相當新的,我只是不知道我做錯了,我猜我可能需要某種形式的xsl:如果評論,但只是不知道如何去關於它真的。我只需要使chrome/firefox/opera/safari忽略ie.css樣式表的東西。

任何幫助將不勝感激!由於

回答

8

只需使用一個xsl:comment和包裝所有的<![CDATA[]]>內容...

<head> 
     <link rel="stylesheet" href="../css/master.css" type="text/css" media="screen"></link> 
     <xsl:comment><![CDATA[[if IE 6]> 
     <link rel="stylesheet" type="text/css" href="../css/ie.css"></link> 
     <script src="../js/html5shiv.js"></script> 
    <![endif]]]></xsl:comment> 
    </head> 
+0

感謝您的建議你好,我給這一個嘗試今天晚上,讓你知道,如果它作品:) – LT86

+0

非常感謝!我已經嘗試了上述,但它似乎是我的CDATA結束標記不正確。非常感謝您解決我的問題! :) – LT86

+0

@LiamTarpey - 非常受歡迎。請點擊旁邊的複選標記接受我的回答。謝謝! –

1

使用模板,允許有條件的意見以編程方式定義:

<xsl:template name="conditionalComment"> 
    <xsl:param name="qualifier" select="'IE'"/> 
    <xsl:param name="contentRTF" select="''" /> 


    <!--Use entity variables to allow invalid XML output from an XSLT processor--> 
    <xsl:comment>[if <xsl:value-of select="$qualifier"/>]<![CDATA[>]]> 
    <!--Use copy-of rather than value-of to preserve tag delimiters--> 
     <xsl:copy-of select="$contentRTF" /> 
    <!--Use CDATA to output raw characters--> 
     <![CDATA[<![endif]]]></xsl:comment> 

</xsl:template> 

模板需要兩個參數:

<xsl:call-template name="conditionalComment"> 
    <!--Conditional check parameter--> 
    <xsl:with-param name="qualifier" select="'lte IE 6'"/> 
    <!--Stylesheet parameter--> 
    <xsl:with-param name="contentRTF"> 
     &lt;link rel="stylesheet" type="text/css" href="ie-win-fixup.css" /&gt; 
    </xsl:with-param> 
</xsl:call-template> 

個參考