在Delphi6中使用XML文件生成html的问题。(217分)

  • 主题发起人 主题发起人 白衣书生
  • 开始时间 开始时间

白衣书生

Unregistered / Unconfirmed
GUEST, unregistred user!
用D6写一个处理XML和XSL的东东,用于生成HTM,程序来自:
http://www.8421.org/download.php?id=179
主要代码如下:
uses
ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
xmlobj, xslobj: Variant;
sl: TStringList;
begin
sl := TStringList.Create;
xmlobj := CreateOLEObject('MSXML2.DOMDocument');
xmlobj.async := false;
xmlobj.load('page.xml');
xslobj := CreateOLEObject('MSXML2.DOMDocument');
xslobj.async := false;
xslobj.load('dispq_.xsl');
sl.Text := xmlobj.transformNode(xslobj);
sl.SaveToFile('test.htm');
xmlobj := unAssigned;
xslobj := unAssigned;
end;

发现执行到 sl.Text := xmlobj.transformNode(xslobj);
这句时会出错。
出现“Keyword xsl:for-each may not contain xsl:result-document.”这个错误提示。
(关键字 xsl:for-each 可能不包含 xsl:result-document)
是什么原因?如何解决?
是不是XML解析器不支持 xsl:result-document 的原因?? 盼望大侠指点。
我安装的是MSXML 3(就是大富翁论坛提示需要安装的那个)
 
xsl:result-document有可能是xml2.6的标记,xml1.0(msxml3.0+)不支持,或者使用了
其他方法实现。
 
果真没有任何办法吗? [:(]
据我所知,Java是可以的。因为已经有人用JSP实现了。
 
在我这里没问题,win2000
 
楼上:
你是怎么做测试的?
我的XSL文档中有如下语句:
<xsl:result-document format="matter" href="{@lmdm}.html">

估计是这个问题。 他们告诉我了,说微软的解析器不支持这个!
郁闷。 [:(]
 
用的他的例子
 
用他的例子测试我这里也成功了。
但是他的XSL中没有xsl:result-document。
要不我把的所有文档给你传过去,你看看,该如何是好?
 
xml得使用我还了解一些,但怎么生成其xls,我还不明白,更谈不上帮你了
 
[:(]
XSL就是格式化XML输出的。
我现在是在DB中取出数据保存为XML,然后用XSL模板将其匹配然后生成HTML。
 
有xml,有什么工具写xsl
 
所有的文本编辑器都可以。
我是用的XMLSPY,可以指定XPath,方便调试。
 
在我的机器上也没有问题啊
 
楼上:
你的XSL文档中包含有xsl:result-document元素吗?
 
TO 白衣书生,
下载的例子里面没有xsl:result-document元素,程序在我这里没问题的。
把你的例子发给我看看吧。
 
到CSDN的XML版去问问,那里有几个MVP在回答,很快。
 
后退
顶部