Css 仅适用于XSL文档的IE7样式表

Css 仅适用于XSL文档的IE7样式表,css,xslt,internet-explorer-7,conditional-comments,Css,Xslt,Internet Explorer 7,Conditional Comments,如何将IE7和lower only样式表添加到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> 即使我在纯

如何将IE7和lower only样式表添加到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文档中使用了相同的代码段,条件语句也不会在我的文档中执行,而且效果很好。给出了什么?

解析器将该注释视为XSL中的注释,并将从生成的HTML代码中删除

如果要在HTML中生成注释,需要将其包含在
CDATA
块中,这样XSL解析器就会将其视为纯文本,逐字复制到目标文档中

代码如下所示:

<![CDATA[
  <!--[if lte IE 7]>
  <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
  <![endif]-->
]]>
<xsl:comment>
    [if lte 7<![CDATA[>]]>
    <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
    <![CDATA[<![endif]]]>
</xsl:comment>
希望有帮助。抱歉,原始答案不完整。

您有:

<!--[if lte IE 7]>

这里有一种行之有效的方法——这是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>
<!--[if lte IE 7]>
        <link rel="stylesheet" type="text/css" href="/rcm/verisign/style/2012/ie7.css"/>
        <![endif]-->
<p>
       Done.
     </p>

!--[如果lte IE 7]>
link rel=“stylesheet”type=“text/css”href=“/rcm/verisign/style/2012/ie7.css”/
![endif]-->
完整示例

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

!--[如果lte IE 7]>
link rel=“stylesheet”type=“text/css”href=“/rcm/verisign/style/2012/ie7.css”/
![endif]-->

完成。

将此转换应用于任何XML文档(未使用)时,将生成所需的正确结果

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


完成。


条件/ie-only样式表是否需要doctype?你有吗?据我所知没有。我只有一个XHTML1.0严格的doctype谢谢!您知道cdata块的外观吗?我以前从未使用过。我添加了,当我在文档中查看源代码时,所有括号都已转换为和。有什么建议吗?事实上,很抱歉,最后一件事——它仍然不起作用,因为在呈现的页面中,cdata块中的<和>变成了和。@user1436111-这很奇怪。这不应该。。。CDATA的全部要点在于它将内容视为纯文本,而不进行解析。参见@user1436111-做了一些进一步的研究;答案是否定的<代码>lte
正确。意思是“小于或等于”,这是他想要的。