以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  在 ASP 中利用 XSL 转换 XML 遇到问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=12617)


--  作者:不学无术
--  发布时间:12/8/2004 11:33:00 PM

--  在 ASP 中利用 XSL 转换 XML 遇到问题
出现错误,错误信息如下:

msxml3.dll 错误 '80004005'

样式表没有包含文档元素。样式表可能是空的,或它可能不是一个标准格式的 XML 文档。

/ASP_XML/Ch09/transform.asp,行 25

共有三个文件,分别如下:
contacts.xml
-----------------
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="contacts.xsl"?>
<CONTACT_INFO>
  <CONTACT TYPE="business">
    <NAME>
   <FIRST_NAME>John</FIRST_NAME>
   <LAST_NAME>Doe</LAST_NAME>
 </NAME>
 <ADDRESS>
   <STREET_INFO>103 Eastern Avenue</STREET_INFO>
   <CITY>Pleasantville</CITY>
   <STATE>Indiana</STATE>
   <ZIP>30113</ZIP>
 </ADDRESS>
 <PHONE>555-5555</PHONE>
  </CONTACT>
  
  <CONTACT TYPE="personal">
    <NAME>
   <FIRST_NAME>Alice</FIRST_NAME>
   <LAST_NAME>Smith</LAST_NAME>
 </NAME>
 <ADDRESS>
   <STREET_INFO>52B Wilkens Street</STREET_INFO>
   <CITY>Pleasantville</CITY>
   <STATE>Indiana</STATE>
   <ZIP>30113</ZIP>
 </ADDRESS>
 <PHONE>555-6666</PHONE>
  </CONTACT>
  
  <CONTACT TYPE="personal">
    <NAME>
   <FIRST_NAME>Bruce</FIRST_NAME>
   <LAST_NAME>Johnson</LAST_NAME>
 </NAME>
 <ADDRESS>
   <STREET_INFO>52B Wilkens Street</STREET_INFO>
   <CITY>Taylorton</CITY>
   <STATE>Texas</STATE>
   <ZIP>87713</ZIP>
 </ADDRESS>
 <PHONE>555-6981</PHONE>
  </CONTACT>
  
  <CONTACT TYPE="business">
    <NAME>
   <FIRST_NAME>Wiliam M.</FIRST_NAME>
   <LAST_NAME>Kropog</LAST_NAME>
 </NAME>
 <ADDRESS>
   <STREET_INFO>80698 Matthew Street</STREET_INFO>
   <CITY>Covington</CITY>
   <STATE>Louisiana</STATE>
   <ZIP>70433</ZIP>
 </ADDRESS>
 <PHONE>555-0713</PHONE>
  </CONTACT>
</CONTACT_INFO>

contacts.xsl
----------------
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
  <HTML>
    <BODY>
   <FONT face="verdana" size="6" color="#999999">Contacts</FONT>
   <HR size="1" />
   <BLOCKQUOTE>
   <xsl:for-each select="CONTACT_INFO/CONTACT">
     <P>
    <FONT face="verdana" size="4" color="#777777">
      <xsl:value-of select="NAME/FIRST_NAME" />
   <xsl:value-of select="NAME/LAST_NAME" />
    </FONT>
    <FONT face="verdada" size="2" color="#000000">
      <BR />
   <xsl:value-of select="ADDRESS/STREET_INFO" />
   <BR />
   <xsl:value-of select="ADDRESS/CITY" />,
   <xsl:value-of select="ADDRESS/STATE" />
   <xsl:value-of select="ADDRESS/ZIP" />
   <BR />
   <xsl:value-of select="PHONE" />
    </FONT>
  </P>
   </xsl:for-each>
   </BLOCKQUOTE>
   <HR size="1" />
 </BODY>
  </HTML>
</xsl:template>
</xsl:stylesheet>

transform.asp
-------------------
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Translation</title>
</head>

<body>
<%
'Set the source and style sheet locations here
sourceFile = Request.ServerVariables("APPL_PHYSICAL_PATH") & "\contacts.xml"
styleFile = Request.ServerVariables("APPL_PHYSICAL_PATH") & "\contacts.xsl"

'Load the XML
Set source = Server.CreateObject("Microsoft.XMLDOM")
source.async = False
source.Load(sourceFile)

'Load the XSL
Set style = Server.CreateObject("Microsoft.XMLDOM")
style.async = False
style.Load(styleFile)

HTMLcode = source.transformNode(style)

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(Request.ServerVariables("APPL_PHYSICAL_PATH") & "\transform.htm")
objFile.Write(HTMLcode)

Response.Write("File Saved")

Set objFSO = Nothing
%>
</body>
</html>


--  作者:yeriwei
--  发布时间:12/9/2004 10:34:00 AM

--  
sub XmlTrans(XmlFname,XslFname)
 if XmlFname<>"" and XslFname<>"" then
  Dim xml1,xml2,Path
  Path=GetCurrentPath()
  set xml1=server.CreateObject("Microsoft.XMLDOM")
  xml1.async = False
  If Not xml1.Load(Path & xmlFname) Then
   response.write "<font color=red>无法加载文件:" & xmlFname & "</font>"
   Set xml1 = Nothing
   response.end()
  End If'建立XML1对象
  set xml2=server.CreateObject("Microsoft.XMLDOM")
  xml2.async = False
  If Not xml2.Load(Path & xslFname) Then
   Response.Write "<font color=red>无法加载文件:</font>" & XslFname
   Set xml1 = Nothing
   set xml2=nothing
   response.end()
  End If
  response.write xml1.transformNode(xml2)
  set xml2=nothing
  Set xml1 = Nothing
 end if
end sub

在XSL的<?Xslstylesheet下加<xsl:output method="xml" encoding="gb2312" indent="yes"/>


--  作者:不学无术
--  发布时间:12/10/2004 8:37:00 AM

--  
谢谢您的回复,我试试看。
--  作者:不学无术
--  发布时间:12/10/2004 8:58:00 AM

--  
我在公司的机器上运行正常,使用的是 win 2k 系统,IE 6.0 ,当时测试的机器上的系统是 win 2003。

是不是因为组件的版本影响呢?


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms