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> 

个参考