编程语言
首页 > 编程语言> > 在Firefox中使用JavaScript的客户端xslt

在Firefox中使用JavaScript的客户端xslt

作者:互联网

我正在使用客户端xslt将xml文件转换为xhtml.有一些障碍,但除此以外,我设法通过了所有障碍.

问题是当我有一个像这样的简单xml文件时

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="./jsInFf.xsl"?>
<root>hello</root>

并使用这样的简单xsl将其转换为xhtml

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
  xmlns="http://www.w3.org/1999/xhtml">

  <xsl:output method="xml"
  version="1.0"
  encoding="ISO-8859-1"
  indent="yes"
  omit-xml-declaration="no"
  doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
  doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>

  <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>a title</title>
        <script type="text/javascript">
          alert(document);
          alert(document.anchors);
    </script>
      </head>
      <body>
        <xsl:value-of select="." /> world
      </body>
    </html>
  </xsl:template>    
</xsl:stylesheet>

第一个警报将使用Firefox弹出为“ [object XMLDocument]”,而不是像IE和Safari一样弹出“ [object]”.从我收集到的信息来看,这意味着firefox不会产生javascript html文档(或html dom,不确定其措辞是什么). firefox中的第二个警报将是“未定义”,但是在IE和safari中,它是“ [object]”.

因此,在firefox中,没有document.forms或document.anchors等.我知道某些javascript仍可以正常工作,例如document.getElementById,但我担心如果document.forms之类的工具可以使用像ajax这样的更高级的东西就不能正常工作.不存在.

是否有解决方法?在我当前的项目中,我正在重写一堆页面以使用xslt.已经有很多javascipt编写了,如果可能的话,将其全部更改为使用有限的firefox javascript并不是一个真正的选择.

非常感谢您的帮助.

解决方法:

1)解决您的问题

解决问题的方法就像将xsl:output元素上@method属性的值从“ xml”更改为“ html”一样简单.

2)解释差异

HTML DOM扩展了核心XML DOM接口.因此,例如,集合“表单”在XMLDocument中不存在,但在HTMLDocument中

标签:firefox,client-side,xslt,javascript
来源: https://codeday.me/bug/20191107/2003569.html