奇怪的transformNode问题!

superjs 2002-03-28 01:20:22
我是通过在页面创建DOM对象来解析xml文件的!
如下:
test.htm
<html>
<head>
<title>Test</title>
<script language= "javascript">
function init()
{
var strXML = "Test.xml";
var strXSL = "testA.xsl";

//alert("Init Enter");
var xmldom = new ActiveXObject("Msxml2.DOMDocument.4.0");
xmldom.async = false;
xmldom.loadXML(strXML);

//alert("Enter XML");
var xsldom = new ActiveXObject("Msxml2.DOMDocument.4.0");
xsldom.async = false;
xsldom.loadXML(strXSL);

//alert("Enter XSL");
var rtvalue = xmldom.transformNode(xsldom); //这一句一直报样式表无效或为空

//alert("Tranfer");
mdiv.innerHTML rtvalue;
return;
}
</script>
</head>
<body onload="init()">
<div id="mdiv">
</div>
</body>
</html>

Test.xml
<?xml version="1.0" encoding="GB2312"?>
<root>
<A ID="1" name="A1">
<B ID="1" name="B1">1B1Test</B>
<B ID="2" name="B2">1B2Test</B>
<B ID="3" name="B3">1B3Test</B>
</A>
<A ID="2" name="A2">
<B ID="1" name="B1">2B1Test</B>
<B ID="2" name="B2">2B2Test</B>
<B ID="3" name="B3">2B3Test</B>
<B ID="4" name="B4">2B4Test</B>
<B ID="5" name="B5">2B5Test</B>
<B ID="6" name="B6">2B6Test</B>
</A>
</root>

testA.xsl(这个就是“无为”大侠上次帮我写的)
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="root">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="A">
<xsl:value-of select="@ID" />:<br />
<table border="1" cellpadding="0" cellspacing="0">
<tr><th>Name</th><th>Value</th>
</tr>
<xsl:apply-templates />
</table>
</xsl:template>
<xsl:template match="B">
<tr>
<td><xsl:value-of select="@name" /></td>
<td><xsl:value-of select="." /></td>
</tr>
</xsl:template>
</xsl:stylesheet>

现在的问题是如果用xml中直接链接样式表的话,可以看到应有的效果,但是通过Dom就不行了,我怀疑是不是文件没有读入成功阿!我用了全路径也不行的说!
我快要崩溃了,谁来救救我阿!
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
superjs 2002-03-28
  • 打赏
  • 举报
回复
两位说的都对,脚本报错确实是因为innerHTML少写=的关系,我都急糊涂了!
孟子E章 2002-03-28
  • 打赏
  • 举报
回复
对了
Msxml2.DOMDocument.4.0
也一样
孟子E章 2002-03-28
  • 打赏
  • 举报
回复
这样改:
<html>
<head>
<title>Test</title>
<script language= "javascript">
function init()
{
var strXML = "Test.xml";
var strXSL = "testA.xsl";

//alert("Init Enter");
var xmldom = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmldom.async = false;
xmldom.load(strXML);

//alert("Enter XML");
var xsldom = new ActiveXObject("Msxml2.DOMDocument.3.0");
xsldom.async = false;
xsldom.load(strXSL);

//alert("Enter XSL");
var rtvalue = xmldom.transformNode(xsldom); //这一句一直报样式表无效或为空

//alert("Tranfer");
document.all.mdiv.innerHTML=rtvalue;
return;
}
</script>
</head>
<body onload="init()">
<div id="mdiv">
</div>
</body>
</html>
chechy 2002-03-28
  • 打赏
  • 举报
回复
我觉得应该是
var xmldom = new ActiveXObject("Msxml2.DOMDocument.4.0");
xmldom.async = false;
xmldom.load(strXML);

//alert("Enter XML");
var xsldom = new ActiveXObject("Msxml2.DOMDocument.4.0");
xsldom.async = false;
xsldom.load(strXSL);

load是从文件中读取。
loadXML是从字符串中读取。
superjs 2002-03-28
  • 打赏
  • 举报
回复
快点来人看看吧!
superjs 2002-03-28
  • 打赏
  • 举报
回复
忘了说了,我的环境是IE6.0,xml4.0(装4.0之前把4.0beta给卸载了,并regsvr32 /u msxml4.dll和regsvr32 msxml3.dll了)
我用xmlsdk帮助中的dom的使用例子就是hello.htm那个是很正确的阿!
快来救救我!

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧