以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  应Admin要求前来罐水(firefox中xsl:copy-of的问题终于解决)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=68760)


--  作者:hexun831012
--  发布时间:10/27/2008 8:59:00 PM

--  应Admin要求前来罐水(firefox中xsl:copy-of的问题终于解决)
在firefox中,copy-of(或copy)带有命名空间的节点,哪怕是默认命名空间,firefox会照样输出,但并不解析。
比如:
<sitemap xmlns="http://www.hexsoft.org/schema/sitemap">
<!-- ...-->
  <object>
    <form action="/search/">
      <input name="key"/>
    </form>
  </object>
<!--...-->
</sitemap>
XSL:
<xsl:template match="object">
  <xsl:copy-of select="."/>
</xsl:template>
在转换文档中,会输出form那段,但是并没有效果,这是为什么哪?
道理很简单,form那段在该文档中其实属于http://www.hexsoft.org/schema/sitemap命名空间下,所以在理论上,它并不是HTML,所以firefox不解析,但IE解析。
我个人认为,其实这也算是一个BUG,如果按照上述说法,copy-of应该输出命名空间声明,而firefox采取的做法却是不理会。
解决的方法有很多,比如给form加上http://www.w3.org/1999/xhtml或xmlns="",或者给主文档加上前缀,熟悉xmlns的朋友应该很好解决。
呵呵
--  作者:Qr
--  发布时间:10/28/2008 8:41:00 AM

--  
这个问题如果用XML+XSL方式做过WEB页或JS+DOM方式向WEB页添加元素的,应该比较熟悉了。
对于firefox来说,命名空间就是铁的纪律,非常严格。html节点下如果有任何节点不属于http://www.w3.org/1999/xhtml这个命名空间,将不被解析。唯一的做法是,给没有命名空间的节点指定命名空间,而IE的“兼容性”比较强,会忽略这一点。

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