【问题标题】:IE Conditional Comment in XSLT 1.0 inside tagXSLT 1.0 内标签中的 IE 条件注释
【发布时间】:2014-11-24 21:40:24
【问题描述】:

如何仅在 IE6 上显示标题(不是 HTML 注释),如果这行代码 <a title="" href="#">some text</a> 在 xsl 文件中?

以下选项不起作用:

<a <![CDATA[[if IE 6]>title="hi"<![endif]]]> href="#">some text</a>


<a &lt;![if IE 6]&gt;"title="hi"&lt;![endif]&gt; href="#">some text</a>

我知道这个问题应该在 90 年代问:)

还有其他选择吗? 谢谢。

【问题讨论】:

  • 为什么不发布所需的结果。这比不产生问题的代码更有助于理解您的问题。
  • @michael.hor257k 结果是无效的xsl,页面不显示那个文件。
  • 该页面将显示您告诉它的任何代码。它不验证。

标签: html xml internet-explorer xslt conditional-statements


【解决方案1】:

我不知道除了 HTML 注释中给出的任何条件 IE 构造。要在 XSL 中插入 cmets,请使用 &lt;xsl:comment&gt;:

<xsl:comment><![CDATA[[if IE 6]>
    Special instructions for IE 6 here
    <![endif]
    ]]>
</xsl:comment>

CDATA 跟在同一行的&lt;xsl:comment 后面是有特定原因的。 IE 无法识别这些 cmets,除非字符 &lt;!--[if IE 6]&gt; 在一行上是连续的。其余部分,包括endif,显然可以展开到后续行。

但是,由于您不能将 HTML 注释放在标签中间,就像您尝试做的那样。因此,您必须提供整个 &lt;a&gt; 标签的替代版本:

<xsl:comment><![CDATA[[if IE 6]>
    <a title="hi" href="#">some text</a>
    <![endif]]]>
</xsl:comment>

<xsl:comment><![CDATA[[if gt IE 6]>
    <a href="#">some text</a>
    <![endif]]]>
</xsl:comment>

但是,请注意这个MS link

重要提示从 Internet Explorer 10 开始,标准模式不再支持条件 cmets。

测试输出

<!--[if IE 6]>
    Special instructions for IE 6 here
    <![endif]
-->

在IE11下的IE9仿真模式下测试。

【讨论】:

【解决方案2】:

我建议你(如果你在你的页面中使用 jQuery)你在 IE 评论中包含一个编辑你的 A 标签的 jquery 外部文件。

您可以通过一些服务器端脚本(例如PHP)设置一个xsl变量,以便发现浏览器类型并根据该变量进行检查测试。

不幸的是,XSLT 更多地取决于使用的引擎,所以你可以使用基于引擎的一些特殊功能,或者使用其他方式。

享受您的代码!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-23
    • 2012-02-24
    • 2016-07-22
    • 1970-01-01
    • 2011-02-04
    • 2022-10-04
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多