我已经获得了一个示例XML文件(最终我的客户端每天会收到几个这样的文件)和一个XSLT文件,它显然会将XML转换为具有有意义布局的内容,适合在浏览器中显示或打印
我想在现有的旧版Delphi应用程序中添加一些内容,以便用户可以从驱动器中选择一个XML文件并“显示”它(在TWebBrowser或类似文件中)。
我不知道从哪里开始,谷歌搜索delphi,xml和xslt让我看来似乎是基于数据模块/数据库的例子;我只想将给定的XML文件转换为屏幕上的内容。看起来它可能涉及到PageProducer,但我无法理解我需要做的事情。有人提供任何指针,或者指向快速教程的链接吗?
非常感谢!
答案 0 :(得分:10)
Uses
XMLDoc, XMLIntf;
function Transform(XMLContent : string; XSLContent : string) : WideString;
var
XML : IXMLDocument;
XSL : IXMLDocument;
begin
XML := LoadXMLData(XMLContent);
XSL := LoadXMLData(XSLContent);
XML.DocumentElement.TransformNode(XSL.DocumentElement, Result)
end;
答案 1 :(得分:6)
我使用MSXML库在Delphi中进行XSLT转换。很久以前了。工作就像一个魅力!
我不确定您的XSLT会生成什么输出格式,但知道这将有助于您弄清楚如何显示它。我们通过XSLT从XML生成HTML,并在我们的应用程序的窗格上使用ActiveX Web浏览器(IE)控件显示它。
这是link on MSSXML and Delphi可能会有所帮助。
顺便说一句:如果这是您第一次使用XSLT,您可以手动编辑XML文件,并添加指令以使其使用特定的XSLT进行显示。在编辑后在Firefox中打开XML时,将应用XSLT,它将显示MSXML调用的输出。 这是您手动添加到xml的行:
<?xml-stylesheet type="text/xsl" href="myStyleSheet.xsl"?>
答案 2 :(得分:2)
如果您只需要转换,则可以使用TXMLDocument
,保存到磁盘,然后在TWebBrowser
(通过Navigate('file:///...')
)中显示结果。
就我个人而言,我遇到了MSXML的一些问题,所以我开始使用DIXML。
答案 3 :(得分:1)
您可以尝试安装AltovaXML,它可以作为COM +调用。它是免费的,可以从http://www.altova.com/altovaxml.html
下载MsXml只适用于xslt 1.0,但AltovaXml可以使用xslt 2.0