在服务器端使用xsl文件转换xml文件为HTML格式问题

o_racle 2004-03-14 10:14:16
<%
Dim objDocument,objTransform,strXML
Set objDocument = Server.CreateObject("MSXML2.DOMDocument")
Set objTransform = Server.CreateObject("MSXML2.DOMDocument")
objDocument.Load "http://localhost/XML/FourAxisNC.xml"
objTransform.Load "C:\Inetpub\wwwroot\XML\textstyle.xsl"
strXML = objDocument.transformNode(objTransform) *******
response.write Server.HTMLEncode(strXML) 'line52
%>

********行有错误,提示为:
msxml3.dll (0x8000000A)
完成该操作所需的数据还不可使用。
/asp/NC11111.asp, 第 51 行
...全文
123 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2004-03-14
  • 打赏
  • 举报
回复
see

PRB: Load Method Fails When Loading XML File Over HTTP
http://support.microsoft.com/default.aspx?scid=kb;EN-US;281142
o_racle 2004-03-14
  • 打赏
  • 举报
回复
yes,it's very good! Thank you !
请您到另一个地方去跟一下贴,我在给您100分!
saucer 2004-03-14
  • 打赏
  • 举报
回复
response.write Server.HTMLEncode(strXML)
===>
response.write strXML
o_racle 2004-03-14
  • 打赏
  • 举报
回复
yes,the output on my machine is just like yours. but that is not the final output, I want the <br> maker can work just like "enter(换行)".
o_racle 2004-03-14
  • 打赏
  • 举报
回复
可能是我的ASP文件中的问题。在/asp/NC11111.asp中,我这样用的:

<table cellSpacing=2 cellPadding=2 width=650 border=1 align=center>
<TBODY>
<tr>
<td>
<%
Dim objDocument,objTransform,sPathxml,strXML,strHTML

Set objDocument = Server.CreateObject("MSXML2.DOMDocument")
Set objTransform = Server.CreateObject("MSXML2.DOMDocument")
objDocument.async = false 'line 37
objDocument.setProperty "ServerHTTPRequest", true

sPathxml = "http://localhost/XML/"
sPathxml = sPathxml & nc
sPathxml = sPathxml & ".xml"
objDocument.Load sPathxml

objTransform.Load "C:\Inetpub\wwwroot\XML\textstyle.xsl"
objTransform.async = false

strXML = objDocument.transformNode(objTransform)
'response.write Server.HTMLEncode(strXML) 'line 51
strHTML = Server.HTMLEncode(strXML) 'line 52
response.write strHTML 'line 53
%>
'<%=strHTML%> 'line 55
</td>
<td align=middle>
<embed src="\svg\<%=nc%>.svg" ><br><br><a href="\svg\<%=nc%>.svg" target=_blank>查看放大图片</a>
</TD>
</TR>
</TBODY>
</TABLE>

我是直接将转换的内容以字符串的形式输出到页面上的,所以即使添加了<br>这样的标记,也不起作用反而被直接输出了。有没有其他的办法?
saucer 2004-03-14
  • 打赏
  • 举报
回复
it works fine on my machine

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<xsl:apply-templates select="//TEXT" />
</xsl:template>

<xsl:template match="TEXT">
<br/>
<td WORD-BREAK="break-all" font-size="16px" width="630" height="55">
<xsl:apply-templates select="BRS" />
</td>
</xsl:template>

<xsl:template match="BRS">
<xsl:for-each select="BR">
<br><xsl:value-of select="." /></br>
</xsl:for-each><br/>
</xsl:template>

</xsl:stylesheet>

output:
<br><td WORD-BREAK="break-all" font-size="16px" width="630" height="55"><br>机床主要特点:<br>1.机床配有数控回转工作台,可实现四轴四联动加工。<br>2.主轴为无级变速,并通过四级变档,提高了切削扭矩。<br>3.主轴箱可进行30度回转,实现倾斜孔的加工。<br>4.机床造型美观,性能价格比高。<br></td>


o_racle 2004-03-14
  • 打赏
  • 举报
回复
这样改效果没有变呀 :-(
saucer 2004-03-14
  • 打赏
  • 举报
回复
<xsl:value-of select="BRS" />
===>
<xsl:apply-templates select="BRS" />
o_racle 2004-03-14
  • 打赏
  • 举报
回复
yes,it's right too! Thank you very much , saucer!
这时候在Web页面上的输出为:
机床主要特点: 1.机床配有数控回转工作台,可实现四轴四联动加工。 2.主轴为无级变速,并通过四级变档,提高了切削扭矩。 3.主轴箱可进行30度回转,实现倾斜孔的加工。 4.机床造型美观,性能价格比高。

但是我想在Web页面上的输出具有换行效果,为
机床主要特点:
1.机床配有数控回转工作台,可实现四轴四联动加工。
2.主轴为无级变速,并通过四级变档,提高了切削扭矩。
3.主轴箱可进行30度回转,实现倾斜孔的加工。
4.机床造型美观,性能价格比高。

这该怎么办?
saucer 2004-03-14
  • 打赏
  • 举报
回复
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />

or

<xsl:output omit-xml-declaration="yes" />
o_racle 2004-03-14
  • 打赏
  • 举报
回复
OK,it's right! Thank you saucer!
但是我想转换XML为HTML时候不要输出<?xml version="1.0" encoding="UTF-16"?>处理指令,该如何处理。

我的xsl文件为:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:apply-templates select="//TEXT" />
</xsl:template>

<xsl:template match="TEXT">
<br/>
<td WORD-BREAK="break-all" font-size="16px" width="630" height="55">
<xsl:value-of select="BRS" />
</td>
</xsl:template>

<xsl:template match="BRS">
<xsl:for-each select="BR">
<br><xsl:value-of select="." /></br>
</xsl:for-each><br/>
</xsl:template>

</xsl:stylesheet>

我的xml文件为:
<?xml version="1.0" encoding="gb2312"?>
<!--File Name:FourAxisNC.xml -->
<CONTENT>
<TEXT>
<BRS>
<BR>机床主要特点:</BR>
<BR>1.机床配有数控回转工作台,可实现四轴四联动加工。</BR>
<BR>2.主轴为无级变速,并通过四级变档,提高了切削扭矩。</BR>
<BR>3.主轴箱可进行30度回转,实现倾斜孔的加工。</BR>
<BR>4.机床造型美观,性能价格比高。</BR>
</BRS>
</TEXT>
</CONTENT>

谢谢指点!
saucer 2004-03-14
  • 打赏
  • 举报
回复
objDocument.setProperty "ServerHTTPRequest", true
o_racle 2004-03-14
  • 打赏
  • 举报
回复
首先确认文件是存在的。
在添加了objDocument.async = false
objDocument.setProperty("ServerHTTPRequest", true)
之后,出现错误提示:
Microsoft VBScript 编译器错误 (0x800A0414)
调用子程序时不能使用括号
/asp/NC11111.asp, line 33, column 50
objDocument.setProperty("ServerHTTPRequest", true)
-------------------------------------------------^
saucer 2004-03-14
  • 打赏
  • 举报
回复
makre sure the files exist, try

<%
Dim objDocument,objTransform,strXML
Set objDocument = Server.CreateObject("MSXML2.DOMDocument")
objDocument.async = false
objDocument.setProperty("ServerHTTPRequest", true)
objDocument.Load "http://localhost/XML/FourAxisNC.xml"

Set objTransform = Server.CreateObject("MSXML2.DOMDocument")
objTransform.async = false

objTransform.Load "C:\Inetpub\wwwroot\XML\textstyle.xsl"

strXML = objDocument.transformNode(objTransform) *******
response.write Server.HTMLEncode(strXML) 'line52
%>


8,909

社区成员

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

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