以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  IE和MF中XSL解析器的不同及其解决办法(争做版主大放血)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=50505)


--  作者:hexun831012
--  发布时间:7/25/2007 3:52:00 PM

--  IE和MF中XSL解析器的不同及其解决办法(争做版主大放血)
1、输出
一般的XSL在Mozilla Firefox(MF)中看不到效果,那是因为MF默认的output method是xml,所以只能看到文本,为了保证和IE的效果一样,需要在文档中加上<xsl:output method="html" indent="no"/>,IE在method为html是默认indent为yes。
2、空白
在IE中XSL忽略标签与标签以及标签与文本(不包括文本与标签)之间的空白(空格,回车,缩进等),而MF中不会忽略,这就是为什么很多转换在MF中比IE中多出空格,如何解决这个问题其实要看你对这个问题的态度,如果觉得不重要大可以不解决,但是有些特殊的转换确实需要重视这个问题,我的解决办法是在文档中加入以下代码:
<xsl:template match="text()">
  <xsl:value-of select="normalize-space(.)">
</xsl:if>
3、disable-output-escaping属性
MF不支持disable-output-escaping属性,这很头疼,我的解决办法是在文档中加入以下代码:
<xsl:if test="system-property('xsl:vendor') = 'Transformiix'">
  <script type="text/javascript">
    var paragraphs = document.getElementsByTagName("p");
    for(var i = 0; i < paragraphs.length; i ++)
    {
      paragraphs[i].innerHTML = paragraphs[i].textContent;
    }
  </script>
</xsl:if>
当然javascript的写法自定。
4、其他
请不要使用msxml:script,不用多说了。
system-property的返回值不同,MF也没有msxsl:version。
如果还有不间断更新。


--  作者:hexun831012
--  发布时间:7/25/2007 4:00:00 PM

--  
申请精华,争做版主
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
8,468.750ms