有关“ASP--->XML--->COM+--->DB”的问题,200,希望大家踊跃提供好的解决方案。(200分)(200分)

  • 主题发起人 主题发起人 小梅
  • 开始时间 开始时间
大家帮忙呀,问题还是没有解决,希望有人能提供一个具体的例子
 
给你个例子吧,以SQLServer 的例子数据库 Northwind 为例
把下面的内容保存为 test.asp 并存放到你的 IIS 的某个公开目录下
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<% dim dbc, connstr
connstr = "Driver={SQL Server};Server=localhost;Uid=sa;Pwd=;Database=northwind"
set dbc = Server.CreateObject("ADODB.Connection")
dbc.Open connstr
%>
<%
dim rs, sqlstr, s, sm
sqlstr = "select * from Employees for xml auto"
set rs = dbc.Execute(sqlstr)
while not rs.eof
s = s &amp;
rs(0)
rs.MoveNext
wend
%>
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>
<%= s %>
</root>
 
把下面的内容存为 test.xsl 和上一个文件放在同一个目录下面

<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match = '*'>
<xsl:apply-templates />
</xsl:template>
<xsl:template match = 'Employees'>
<TR>
<TD><xsl:value-of select = '@EmployeeID' /></TD>
<TD><xsl:value-of select = '@FirstName' /></TD>
<TD><B><xsl:value-of select = '@LastName' /></B></TD>
<TD><xsl:value-of select = '@Title' /></TD>
<TD><xsl:value-of select = '@TitleOfCourtesy' /></TD>
<TD><xsl:value-of select = '@Address' /></TD>
</TR>
</xsl:template>
<xsl:template match = '/'>
<HTML>
<HEAD>
<STYLE>th { background-color: #CCCCCC }</STYLE>
</HEAD>
<BODY>
<TABLE border='1' style='width:600;'>
<TR><TH colspan='6'>Employees</TH>
</TR>
<TR>
<TH >EmployeeID</TH>
<TH >First name</TH><TH>Last name</TH>
<TH >Title</TH><TH>TitleOfCourtesy</TH>
<TH >Address</TH>
</TR>
<xsl:apply-templates select = 'root' />
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
 
然后, 在浏览器中打开test.asp 就可以看到运行结果了
注意: 用ADO连接SQL Server数据库数据库时, 用ODBC方式或者 用上面的方式,
否则,可能运行不正常,
当然, 只要你的机子上装了数据库, 上面的代码是可以正常运行的
 
to LiChaoHui:
非常感谢你的回复,我按你的源代码,试过了,不过可以正常运行,
只是什么也没有显示出来。我怀疑是test.xls有问题,但又对它不太
熟悉,希望你能再看看。
 
xsl区分大小写的,
你把xml中的节点全部用小写,
sql语句中, 把要显示的字段都写上, 并且都写成小写,
xsl文件中的对应的名字也都改成小写
在我的计算机上运行的很正常的
 
在我的计算机上运行的效果, 你可以看一下
http://qixisoft.vicp.net:10080/traffic/test.asp
顺便贴点垃圾给你
〈%@ Language=VBScript %>
〈!-- #include file="ADOVBS.inc" -->
〈%
Dim objConn, objCmd, i
Set objConn = Server.createobject("ADODB.CONNECTION")
objConn.Open "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=PBA;Data Source=(local)"
Set objCmd = Server.CreateObject("ADODB.Command")
objCmd.ActiveConnection = objConn
objCmd.Properties("Output Stream") = Response
objCmd.Properties("XML Root") = "root"
objCmd.CommandText = "Select * from UserStatus for XML Auto"
Response.ContentType = "text/xml"
objCmd.Execute i, , adExecuteStream
Set objCmd = Nothing
objConn.Close
Set objConn = Nothing
%>

三、格式转换XSL文件说明(Persons.xsl)
??例程中使用XSL对XMl数据进行格式化,并以HTML的形式返回到客户端。这个过程也可以放在客户端进行,但考虑到兼容性的问题,例程中采用了在服务器端通过ASP操纵DOM进行格式化的方法。
??XSL文件的内容如下,

<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/Persons">
<script language="javascript">
 function add()
 {
  window.open("add.asp", "add", "width=300,height=320,resize=no");
 }
 function edit(intId)
 {
  window.open("edit.asp?id="+intId, "edit", "width=300,height=320,resize=no");
 }
</script>
<table width="600" border="0" align="center">
 <tr>
  <td align="right"><a href="javascript:add();" title="添加新联系人">添加新联系人</a>  </td>
 </tr>
</table>
<table align="center" width="680" cellspacing="1" cellpadding="2" border="0" bgcolor="#666600">
 <tr class="title" bgcolor="#E5E5E5">
  <td width="25"><xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;</td>
  <td>姓名</td>
  <td>英文名</td>
  <td>手机</td>
  <td>电话</td>
  <td>Email</td>
  <td>QQ</td>
  <td>所在公司</td>
 </tr>
 <xsl:for-each select="Person">
 <TR BGCOLOR="#FFFFFF">
  <TD ALIGN="right"><xsl:value-of select="position()"/></TD>
  <TD STYLE="color:#990000"><A><xsl:attribute name="HREF">javascript:edit('<xsl:value-of select="position()"/>');</xsl:attribute><xsl:attribute name="title">修改信息  </xsl:attribute><xsl:value-of select="Name"/></A></TD>
  <TD><xsl:value-of select="Nick"/></TD>
  <TD><xsl:value-of select="Mobile"/></TD>
  <TD><xsl:value-of select="Tel"/></TD>
  <TD><A><xsl:attribute name="HREF">mailto:<xsl:value-of select="Email"/></xsl:attribute><xsl:value-of select="Email"/></A></TD>
  <TD><xsl:value-of select="QQ"/></TD>
  <TD><xsl:value-of select="Company"/></TD>
 </TR>
 </xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

??在服务器端的转换使用一个函数来完成,格式化成功,返回HTML字符串,格式化失败,打印出错误信息,如下,

'*******************************************
' 说明:使用XSL文件格式化XML文件。
' 作者:gwd 2002-11-05
' 参数:strXmlFile -- Xml文件,路径+文件名
' strXslFile -- Xsl文件,路径+文件名
' 返回:成功 -- 格式化后的HTML字符串
' 失败 -- 自定义的错误信息
'*******************************************
Function FormatXml(strXmlFile, strXslFile)
 Dim objXml, objXsl
 strXmlFile = Server.MapPath(strXmlFile)
 strXslFile = Server.MapPath(strXslFile)
 Set objXml = Server.CreateObject("MSXML2.DOMDocument")
 Set objXsl = Server.CreateObject("MSXML2.DOMDocument")
 objXML.Async = False
 If objXml.Load(strXmlFile) then
  objXsl.Async = False
  objXsl.ValidateonParse = False
  If objXsl.Load(strXslFile) then
   On Error Resume Next ' 捕获transformNode方法的错误
   FormatXml = objXml.transformNode(objXsl)
   If objXsl.parseError.errorCode <> 0 then
    Response.Write "<br><hr>"
    Response.Write "Error Code: " &amp;
objXsl.parseError.errorCode
    Response.Write "<br>Error Reason: " &amp;
objXsl.parseError.reason
    Response.Write "<br>Error Line: " &amp;
objXsl.parseError.line
    FormatXml = "<span class=""alert"">格式化XML文件错误!</span>"
   End If
  else
   Response.Write "<br><hr>"
   Response.Write "Error Code: " &amp;
objXsl.parseError.errorCode
   Response.Write "<br>Error Reason: " &amp;
objXsl.parseError.reason
   Response.Write "<br>Error Line: " &amp;
objXsl.parseError.line
   FormatXml = "<span class=""alert"">装载XSL文件错误!</span>"
  End If
 else
  Response.Write "<br><hr>"
  Response.Write "Error Code: " &amp;
objXml.parseError.errorCode
  Response.Write "<br>Error Reason: " &amp;
objXml.parseError.reason
  Response.Write "<br>Error Line: " &amp;
objXml.parseError.line
  FormatXml = "<span class=""alert"">装载XML文件错误!</span>"
 End If
 Set objXsl = Nothing
 Set objXml = Nothing
End Function

 
to LiChaoHui,
太感谢你了,不过我想知道如何从COM+将xml传给ASP进行处理呢?
 
把xml以字符串的形式返回给调用者 asp 脚本, asp将其输出就可以了
 
在此非常感谢大家提供保贵的答案,谢谢!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部