Я использую xslt на стороне клиента для преобразования xml-файлов в xhtml. Были некоторые препятствия, но мне удалось обойти их все, кроме этого.
Проблема в том, что когда у меня есть простой XML-файл, подобный этому
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="./jsInFf.xsl"?>
<root>hello</root>
и преобразовать его в xhtml с помощью простого xsl, подобного этому
<?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>
первое оповещение всплывет как «[object XMLDocument]» с firefox вместо «[object]», как это делается для IE и safari. Из того, что я понял, это означает, что Firefox не создает HTML-документ javascript (или html dom, не уверен, что это за формулировка). Второе предупреждение в Firefox будет «неопределенным», но в IE и Safari это «[объект].
Так что в firefox нет document.forms или document.anchors и т. Д. Я знаю, что некоторые javascript все еще будут работать, например, document.getElementById, но я боюсь, что более продвинутые вещи, такие как ajax, не будут работать должным образом, если document.forms и подобное не существует.
Есть ли обходной путь для этого? В моем текущем проекте я переписываю кучу страниц для использования xslt. Уже написано много javascipt, и изменение всего этого, чтобы использовать ограниченный javascript firefox, на самом деле не вариант, если это вообще возможно.
Большое спасибо за любую помощь.