使用XSLT创建条件注释?

时间:2009-05-02 05:57:11

标签: internet-explorer xslt conditional-comments

我想在XSLT中创建conditional comments

但是当我使用它时:

<!-- [If IE7] [endif] -->

<xsl:comment>中,XSLT在渲染时将其从输出中删除。

有没有办法在XSLT中创建条件注释?

3 个答案:

答案 0 :(得分:21)

只需使用<xsl:comment>标记,并在标记中包含您的评论。

例如:

<xsl:if test="@id = '1'">
  <xsl:comment>
    <![CDATA[[if IE]><![endif]]]>
  </xsl:comment>
</xsl:if>

Taming Your Multiple IE Standalones是关于此主题的精彩文章。

答案 1 :(得分:6)

上述解决方案假定条件注释内的内容不包含任何XSLT参数。在下面的示例中,我们有一个参数$DATA_ROOT_PATH,应该对其进行处理,以便为我们提供CSS文件的正确位置。在这种情况下,<xsl:comment/>不合适。我们必须使用<xsl:text/>并禁用输出转义。

此处的示例仅在我们使用IE7时才包含CSS文件。

<xsl:text disable-output-escaping="yes">&lt;!--[if IE 7]&gt;</xsl:text>
  <link rel="stylesheet" type="text/css" href="{$DATA_ROOT_PATH}/resources/css/ie7.css" media="screen"/>
<xsl:text disable-output-escaping="yes">&lt;![endif]--&gt;</xsl:text>

如果$DATA_ROOT_PATH = / example ,代码示例将生成如此输出:

<!--[if IE 7]>
  <link rel="stylesheet" type="text/css"
        href="/example/resources/css/ie7.css"
        media="screen" />
<![endif]-->

答案 2 :(得分:0)

这是我能够应用我的样式表的唯一方法:

    <xsl:comment>[if IE]>
      &lt;link rel="stylesheet" type="text/css" href="ie.css" />
      &lt;![endif]</xsl:comment>

我必须确保我的文本与xsl:comment打开/关闭标记之间没有空格