客户端XSLT与在Firefox的JavaScript(client side xslt with

2019-09-17 03:04发布

我使用的客户端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>

第一警报会弹出为“[对象的XMLDocument]”与Firefox代替“[对象]”像它的IE和Safari。 从我收集,这意味着Firefox没有没有产生JavaScript的HTML文件(或HTML DOM,不知道的措辞是什么)。 在Firefox第二类提醒将是“未定义”,但在IE和Safari它是“[对象]。

因此Firefox没有document.forms或document.anchors等等。我知道一些JavaScript仍然可以工作,喜欢的document.getElementById,但是恐怕像阿贾克斯更先进的东西都不行属性格式,如果document.forms之类的东西不存在。

对此有一个变通? 在我目前的项目,我重写一堆网页使用XSLT。 有很多javascipt的已经writen,如果它甚至有可能改变这一切利用有限的Firefox JavaScript是不是一个真正的选择。

非常感谢您的任何帮助。

Answer 1:

1)修复您的问题

解决您的问题是从“XML”改变@method属性值对XSL“HTML”那样简单:输出元素。

2)方式的差分

HTML DOM扩展核心XML DOM接口。 因此,举例来说,集“形式”是不存在的XMLDocument,但在HTMLDocument的



Answer 2:

我使用了XML的原因是我想使用XHTML的输出。 因为我做的客户端上的转变,我仅限于XSLT 1.0和XHTML是不是一种选择。 我曾见过几个网站的方式来输出XHTML是选择XML和使用省略的XML声明。 我猜这是什么造成的Firefox创建XML DOM。

继谢尔盖的意见,我身边改变了我的输出方法和一切似乎工作。 这是它看起来像现在

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

我在IE中签出的doctype。 它仍然说,这是XHTML,即使该方法的HTML。 我不知道为什么这么多的网站建议xml输出方法破解...

感谢您的解释与XML和HTML的DOM的差异。 出于好奇,是有什么办法可以手动创建从XML DOM一个HTML DOM?



文章来源: client side xslt with javascript in firefox