我想在 XSLT中创建条件注释。
但是当我使用这个时:
<!-- [If IE7] [endif] -->
在 中<xsl:comment>
,XSLT 在呈现时将其从输出中删除。
有没有办法在 XSLT 中创建条件注释?
我想在 XSLT中创建条件注释。
但是当我使用这个时:
<!-- [If IE7] [endif] -->
在 中<xsl:comment>
,XSLT 在呈现时将其从输出中删除。
有没有办法在 XSLT 中创建条件注释?
只需使用<xsl:comment>
标签并将您的评论包含在标签中。
例如:
<xsl:if test="@id = '1'">
<xsl:comment>
<![CDATA[[if IE]><![endif]]]>
</xsl:comment>
</xsl:if>
Taming Your Multiple IE Standalones是一篇关于这个主题的好文章。
上述解决方案假定条件注释内的内容不包含任何 XSLT 参数。在下面的示例中,我们需要$DATA_ROOT_PATH
处理一个参数,以便为我们提供 CSS 文件的正确位置。在这种情况下<xsl:comment/>
是不合适的。我们必须使用<xsl:text/>
和禁用输出转义。
仅当我们使用 IE7 时,此处的示例才会包含 CSS 文件。
<xsl:text disable-output-escaping="yes"><!--[if IE 7]></xsl:text>
<link rel="stylesheet" type="text/css" href="{$DATA_ROOT_PATH}/resources/css/ie7.css" media="screen"/>
<xsl:text disable-output-escaping="yes"><![endif]--></xsl:text>
如果$DATA_ROOT_PATH
= /example ,代码示例将生成如下输出:
<!--[if IE 7]>
<link rel="stylesheet" type="text/css"
href="/example/resources/css/ie7.css"
media="screen" />
<![endif]-->
This was the only way I was able to get my ie stylesheet to be applied:
<xsl:comment>[if IE]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]</xsl:comment>
I had to make sure there is no space between my text and the xsl:comment opening/closing tags