2009-06-11 24 views
10

我已經給出了一個示例XML文件(最終我的客戶端每天都會收到其中的幾個)以及一個XSLT文件,它將顯然將XML轉換爲具有有意義佈局的內容,適合在瀏覽器中顯示或打印。如何在Delphi應用程序中使用XSLT文檔顯示XML?

我想將一些東西放入現有的傳統Delphi應用程序中,以便用戶可以從驅動器中挑選其中一個XML文件並「顯示」它(以TWebBrowser或類似方式)。

我不知道從哪裏開始,谷歌搜索,xml和xslt讓我看到基於datamodule /數據庫的例子;我只想將給定的XML文件轉換爲屏幕上的內容。看起來它可能涉及一個PageProducer,但我無法完全理解我需要做的事情。任何人都可以提供任何指針,或者可以鏈接到快速教程?

非常感謝!

+0

好吧,這激起了從幾個老鄉的Delphi程序員的一些利益,所以我會做在接下來的幾天裏回到這裏並且發表了一個我如何運作的例子(當我這樣做的時候)。 :-) – robsoft 2009-06-13 07:59:05

+0

Kieveli關於在文檔中添加樣式表引用的提示非常有用,因爲它在測試和檢查事物時節省了時間。 肯的小費做了竅門,考慮到他在評論中提到的變化。 – robsoft 2009-06-28 08:31:54

回答

9
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; 
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"?> 
+0

感謝您的支持!當我按照你的建議編輯XML文檔時,我確實在外觀上發生了變化,但它顯然沒有正確使用XSLT文檔中的信息;我想知道他們是否真的不匹配,所以轉換不起作用,因爲它沒有找到XSLT引用的實體。我會回到客戶那裏尋求更多的幫助。謝謝你讓我開始,但真的很感激它。 – robsoft 2009-06-13 07:55:26

+0

_「,它會告訴你什麼是MSXML調用的輸出」_ >> no,當你以這種方式應用樣式表並通過Firefox顯示時,** [TransformiiX](https://en.wikipedia 。org/wiki/TransforMiiX)處理器,而不是MSXML。** – Abel 2015-09-21 15:41:23

2

如果你只需要轉換,你可以使用TXMLDocument,保存到磁盤,比顯示結果的TWebBrowser(通過Navigate('file:///...'))。

就我個人而言,我有一些MSXML的問題,所以我開始使用DIXML

+0

+ 1用於DIXML鏈接,看起來非常有用。我還沒有正確探究這個問題,但我希望我可以做一些簡單的事情,只需要幾個標準組件 - 所以謝謝你的建議! – robsoft 2009-06-13 07:58:01

1

您可以嘗試安裝AltovaXML,它可以作爲COM +調用。它是免費的,可以從下載:http://www.altova.com/altovaxml.html

MSXML可以只適用於XSLT 1.0,但AltovaXml可以用XSLT 2.0工作

相關問題