在asp里调用XML和XSL出错,不知为什么?

BigVictor 2004-09-16 11:16:21
我的XML文件里定义<?xml-stylesheet type="text/xsl" href="TEST.xslt"?>.
直接用IE打开XML可以正确显示样式。
但,我用asp调用这两文件却出错,以下是asp文件:
<html>
<head>
<title>Test</title>
<script language="javascript">
ToTransform();
var xml;
var xsl;
function ToTransform()
{
// Load XML
xmlfile = new ActiveXObject("MSXML2.DOMDocument");
xmlfile.async = false;
xmlfile.load("TEST.xml");

// Load the XSL
xsltsheet = new ActiveXObject("MSXML2.DOMDocument");
xsltsheet.async = false;
xsltsheet.load("TEST.xslt");

var strResult;
strResult=xmlfile.transformNode(xsltsheet);
document.write(strResult);
}
</script>
</head>
</html>
错误提示是:“documentelement ”为空或不是对象。
我就不明白为何直接用IE打开XML却能正确显示?请大伙讲个明白!!!谢了!!
...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2004-09-18
  • 打赏
  • 举报
回复
<xsl:stylesheet version="1.1">??? not 1.0?

wow!

in your xslt, you have this:

stylesheet=document.XSLDocument;
source=document.XMLDocument;
nodes=source.documentElement.childNodes;

as I understand, XMLDocument/XSLDocument is valid only when you are browsing an xml document (with xml-stylesheet) directly, but not when you are doing transformation with transformNode in code, see

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/xmconaccessingxmlandxsltdocumentsfromscript.asp
BigVictor 2004-09-17
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsll="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title> XML之动态分页排序</title>
<style>
body{ font: 12px "宋体", "Arial", "Times New Roman"; }
table { font-size: 12px; border: 0px double; border-color: #99CC99 #99CC99 #CCCCCC #CCCCCC; cellpadding:3;cellspacing:3; bgcolor:#eeeeee; text-decoration: blink}
span { font-size: 12px; color: red; }
.keybutton { cursor:hand; font-size: 12px; color: #003300; background: #ffffff; border: 0px solid;}
a:link { font-size: 12px; color: #333300; text-decoration: none}
a:visited { font-size: 12px; color: #333300; text-decoration: none}
a:hover { font-size: 12px; color: #003300; text-decoration: none; background: #E4E4E4}
a:active { font-size: 12px; color: #FF0000; text-decoration: none}
.biankuang { BORDER-RIGHT: #006699 1px solid; BORDER-TOP: #006699 1px solid; FONT-SIZE: 12px; BORDER-LEFT: #006699 1px solid; COLOR: #333333; BORDER-BOTTOM: #006699 1px solid; BACKGROUND-COLOR: #ffffff }

</style>
<script>
<xsl:comment><![CDATA[
var search;
var OnePageNum=2; //one page item count
var PageNum=1; //current page item
var XMLPageNum=1; //Page totle count

function pages(Num)
{
OnePageNum=parseInt(EntityCountPage_txt.value);
stylesheet=document.XSLDocument;
source=document.XMLDocument;
nodes=source.documentElement.childNodes;
len=nodes.length;
for(i=1;i<(len/OnePageNum);i++);
XMLPageNum=i;
var firstNum=0;
var lastNume=0;

if (Num=="first") {PageNum=1;}
if (Num=="previous") {if (PageNum>1) PageNum -=1;}
if (Num=="next") {if (PageNum<XMLPageNum) PageNum +=1;}
if (Num=="last") {PageNum =XMLPageNum;}

sortField=document.XSLDocument.selectSingleNode("//@test");

firstNum=OnePageNum*(PageNum-1)+1;
lastNum=OnePageNum*(PageNum-1)+OnePageNum;

EntityPage_txt.value=PageNum.toString();
EntityAllPage_txt.value=XMLPageNum.toString();
EntityCount_txt.value=len.toString();

text="position() >= "+firstNum+" and position() <= "+lastNum;
sortField.value=text;
Layer1.innerHTML=source.documentElement.transformNode(stylesheet);
}

function taxis(a)
{
stylesheet=document.XSLDocument;
source=document.XMLDocument;
sortField=document.XSLDocument.selectSingleNode("//xsl:sort/@select");
sortOrderAttribute=document.XSLDocument.selectSingleNode("//xsl:sort/@order")

if (sortOrderAttribute.value== "descending")
{
sortOrderAttribute.value= "ascending";
}
else
{ sortOrderAttribute.value= "descending";
}
sortField.value=a;
Layer1.innerHTML=source.documentElement.transformNode(stylesheet);
}
]]></xsl:comment>
</script>
</head>
<BODY onselectstart="return false;" onload="pages('first');">
<p align="center"><span>XML动态分页排序</span>
</p>
<div id="Layer1" name="Layer1">
<xsl:apply-templates select="people"/>
</div>

<table cellSpacing="2" align="center" cellPadding="2" width="80%" bgColor="#ffffff" border="0">
<tr bgColor="#f0f0f0">
<td>第<input class="biankuang " style="BACKGROUND-COLOR: #f0f0f0; TEXT-ALIGN: center" type="text" disabled="disabled" size="4" value="1" name="EntityPage_txt"></input>页/共<input class="biankuang " disabled="disabled" style="BACKGROUND-COLOR: #f0f0f0; TEXT-ALIGN: center" type="text" size="4" name="EntityAllPage_txt"></input>页</td>
<td>总记录数<input class="biankuang " disabled="disabled" style="BACKGROUND-COLOR: #f0f0f0; TEXT-ALIGN: center" type="text" size="5" name="EntityCount_txt"></input>每页<input class="biankuang " style="TEXT-ALIGN: center" type="text" onchange="pages('first');" size="3" value="10" name="EntityCountPage_txt"></input>条记录</td>
<td width="50">
<button id="cmdfirstPage" onclick="pages('first');">第一页</button></td>
<td width="50"><button id="cmdpreviousPage" onclick="pages('previous');">上一页</button></td>
<td width="50"><button id="cmdnextPage" onclick="pages('next');">下一页</button></td>
<td width="50"><button id="cmdlastPage" onclick="pages('last');">最末页</button>
</td>
</tr>
</table>

<p align="center">
<a href="www.guardait.com">动态分页+排序</a><p align="center"><span>---Edit:zhouaiping QQ:734250 date:2004/09/10</span></p>
</p>
</BODY>
</html>
</xsl:template>
<xsl:template match="people">
<TABLE width="80%" border="1" align="center" cellpadding="1" cellspacing="1" bordercolordark="#ffffff" bordercolorlight="#ADAAAD" >
<TR bgcolor="#d4d0c8" align="center">
<TD style="cursor:hand;TEXT-DECORATION: underline" align="center" onClick="taxis('name')">姓名</TD>
<TD style="cursor:hand;TEXT-DECORATION: underline" align="center" onClick="taxis('zwgz')">职务工资</TD>
<TD style="cursor:hand;TEXT-DECORATION: underline" align="center" onClick="taxis('zwjt')">职务津贴</TD>
<TD style="cursor:hand;TEXT-DECORATION: underline" align="center" onClick="taxis('gngz')">工龄工资</TD>
<TD style="cursor:hand;TEXT-DECORATION: underline" align="center" onClick="taxis('gwjt')">岗位津贴</TD>
<TD style="cursor:hand;TEXT-DECORATION: underline" align="center" onClick="taxis('jtf')">交通费</TD>
<TD style="cursor:hand;TEXT-DECORATION: underline" align="center" onClick="taxis('dszrf')">独生子女费</TD>
</TR>
<xsl:apply-templates select="row">
<xsl:sort select="gngz" order="ascending" data-type="text"></xsl:sort>
</xsl:apply-templates>

</TABLE>
</xsl:template>
<xsl:template match="row">
<xsl:if test="position() >= 1 and position() <= 2">
<tr align="center">
<xsl:apply-templates select="name"/>
<xsl:apply-templates select="zwgz"/>
<xsl:apply-templates select="zwjt"/>
<xsl:apply-templates select="gngz"/>
<xsl:apply-templates select="gwjt"/>
<xsl:apply-templates select="jtf"/>
<xsl:apply-templates select="dszrf"/>
</tr>
</xsl:if>
</xsl:template>
<xsl:template match="name">
<td bgcolor="#d4d0c8" align="center">
<xsl:value-of select="."/>
</td>
</xsl:template>
<xsl:template match="zwgz">
<td bgcolor="#ffffff" align="center">
<xsl:value-of select="number(.)"/>
</td>
</xsl:template>
<xsl:template match="zwjt">
<td bgcolor="#ffffff" align="center">
<xsl:value-of select="number(.)"/>
</td>
</xsl:template>
<xsl:template match="gngz">
<td bgcolor="#ffffff" align="center">
<xsl:value-of select="number(.)"/>
</td>
</xsl:template>
<xsl:template match="gwjt" align="center">
<td bgcolor="#ffffff">
<xsl:value-of select="number(.)"/>
</td>
</xsl:template>
<xsl:template match="jtf" align="center">
<td bgcolor="#ffffff">
<xsl:value-of select="number(.)"/>
</td>
</xsl:template>
<xsl:template match="dszrf" align="center">
<td bgcolor="#ffffff">
<xsl:value-of select="number(.)"/>
</td>
</xsl:template>
</xsl:stylesheet>
请思归帮忙看看
BigVictor 2004-09-17
  • 打赏
  • 举报
回复
xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 U (http://www.xmlspy.com) by zhouaiping -->
<?xml-stylesheet type="text/xsl" href="TEST.xslt"?>
<people>
<row>
<name>宋1</name>
<zwgz>1500</zwgz>
<zwjt>100</zwjt>
<gngz>200</gngz>
<gwjt>50</gwjt>
<jtf>30.5</jtf>
<dszrf>100</dszrf>
</row>
<row>
<name>宋3</name>
<zwgz>1700.5</zwgz>
<zwjt>120</zwjt>
<gngz>260</gngz>
<gwjt>20</gwjt>
<jtf>0</jtf>
<dszrf>0</dszrf>
</row>
<row>
<name>宋8</name>
<zwgz>1100.5</zwgz>
<zwjt>190</zwjt>
<gngz>300</gngz>
<gwjt>10</gwjt>
<jtf>30</jtf>
<dszrf>10</dszrf>
</row>
<row>
<name>宋9</name>
<zwgz>100</zwgz>
<zwjt>10</zwjt>
<gngz>10</gngz>
<gwjt>40</gwjt>
<jtf>500</jtf>
<dszrf>10</dszrf>
</row>
<row>
<name>宋2</name>
<zwgz>1600.5</zwgz>
<zwjt>110</zwjt>
<gngz>250</gngz>
<gwjt>100</gwjt>
<jtf>0</jtf>
<dszrf>0</dszrf>
</row>
<row>
<name>宋5</name>
<zwgz>1500.5</zwgz>
<zwjt>130</zwjt>
<gngz>180</gngz>
<gwjt>70</gwjt>
<jtf>130</jtf>
<dszrf>140</dszrf>
</row>
<row>
<name>宋6</name>
<zwgz>1600</zwgz>
<zwjt>130</zwjt>
<gngz>160</gngz>
<gwjt>40</gwjt>
<jtf>190</jtf>
<dszrf>190</dszrf>
</row>
<row>
<name>宋4</name>
<zwgz>1400.5</zwgz>
<zwjt>130</zwjt>
<gngz>170</gngz>
<gwjt>50</gwjt>
<jtf>100</jtf>
<dszrf>100</dszrf>
</row>
</people>
saucer 2004-09-17
  • 打赏
  • 举报
回复
make sure the files are properly loaded:

...

xmlfile.load("TEST.xml");
alert(xmlfile.xml);

...

xsltsheet.load("TEST.xslt");
alert(xsltsheet.xml);

or post your xml/xslt files

8,906

社区成员

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

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