IE7-仅XSL样式表文件(IE7-only stylesheet for XSL document

2019-09-20 18:42发布

如何添加一个IE7-和低只是样式表的XSL页面? 我试着将它添加到模板,像这样的头信息:

<xsl:template name="header">
<!--[if lte IE 7]>
<link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
<![endif]-->
</xsl:template>

和条件从来不是我的文档中得到执行,即使我使用HTML的稿件相同片段,它工作正常。 是什么赋予了?

Answer 1:

注释将解析器作为XSL评论中可以看出,并将从生成的HTML代码下降。

如果你想生成到HTML注释,你需要将其包含在里面CDATA块,所以它会通过XSL解析器被视为纯文本被逐字复制到目标文件。

代码如下所示:

<![CDATA[
  <!--[if lte IE 7]>
  <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
  <![endif]-->
]]>

之间的所有<![CDATA[]]>将被视为纯文本。

希望这应该回答你的问题。

然而,如果可能的话,我会在这里建议最好的解决办法是放弃对IE7支持。 它的使用状态,已经通过地板在过去六个月左右的下降 - 现在几乎低至IE6; 有几乎没有人还在使用它。 我明白在某些情况下,你可能没有选择,但如果你有一个选择,我的建议是放弃它。

[编辑]

好了,经过进一步研究,看来你是对的:一个普通的CDATA确实难逃其输出(尽管声称在很多地方相反)。

相反,你需要使用<xsl:comment>生成输出HTML注释。 有条件的注释语法这样得到相当混乱,而你仍然可能会需要使用CDATA。

我能找到的最好的例子是在这里: http://getsymphony.com/download/xslt-utilities/view/21798/

正如你所看到的,这是相当多的代码。

短版(不灵活)可能是这样的:

<xsl:comment>
    [if lte 7<![CDATA[>]]>
    <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
    <![CDATA[<![endif]]]>
</xsl:comment>

希望帮助。 对不起原来的答案是不完整的。



Answer 2:

这是一个行之有效的方法来做到这一点-这是当DOE是有帮助的罕见情况之一

<xsl:text disable-output-escaping="yes">
        &lt;!--[if lte IE 7]>
        &lt;link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
        &lt;![endif]-->
</xsl:text>

一个完整的例子

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>

 <xsl:template match="/*">
    <xsl:text disable-output-escaping="yes">
        &lt;!--[if lte IE 7]>
        &lt;link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
        &lt;![endif]-->
    </xsl:text>
     <p>
       Done.
     </p>
 </xsl:template>
</xsl:stylesheet>

当在任何XML文档(未使用)被施加这种转变中,想要的,正确的结果产生

<!--[if lte IE 7]>
        <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
        <![endif]-->
<p>
       Done.
     </p>


Answer 3:

你有:

<!--[if lte IE 7]>

它应该是:

<!--[if lt IE 7]>


文章来源: IE7-only stylesheet for XSL document