1

我有一个我似乎无法弄清楚的问题。我不久前用 HTML 建立了一个网站,最近集成了 Symphony CMS,不得不将所有内容都更改为 XML。

最初在我的脑海中,我有一个特定于 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:if 评论,但只是不确定如何去做。我只需要一些能让 chrome/firefox/opera/safari 忽略 ie.css 样式表的东西。

任何帮助将不胜感激!谢谢

4

2 回答 2

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> 
于 2012-12-05T15:49:28.510 回答
2

使用模板允许以编程方式定义条件注释:

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

参考

于 2014-05-23T13:35:30.860 回答