使用XSLT创建条件注释?

Was*_*ikh 12 xslt internet-explorer conditional-comments

我想在XSLT中创建条件注释.

但是当我使用它时:

<!-- [If IE7] [endif] -->
Run Code Online (Sandbox Code Playgroud)

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

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

Cer*_*rus 21

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

例如:

<xsl:if test="@id = '1'">
  <xsl:comment>
    <![CDATA[[if IE]><![endif]]]>
  </xsl:comment>
</xsl:if>
Run Code Online (Sandbox Code Playgroud)

驯服你的多个IE Standalones是一篇关于这个主题的好文章.


Eri*_*ärd 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>
Run Code Online (Sandbox Code Playgroud)

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

<!--[if IE 7]>
  <link rel="stylesheet" type="text/css"
        href="/example/resources/css/ie7.css"
        media="screen" />
<![endif]-->
Run Code Online (Sandbox Code Playgroud)