我遇到了一个我似乎无法弄清楚的问题。我不久前在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:如果评论但不确定如何去做。我只需要一些能使chrome / firefox / opera / safari忽略ie.css样式表的东西。
任何帮助将不胜感激!感谢
答案 0 :(得分: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>
答案 1 :(得分: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">
<link rel="stylesheet" type="text/css" href="ie-win-fixup.css" />
</xsl:with-param>
</xsl:call-template>
<强>参考强>