Как отобразить XML с использованием XSLT-документа в приложении Delphi?
Мне предоставлен образец XML файла (в конечном итоге мой клиент будет получать несколько из них каждый день) и XSLT файл, который, по-видимому, превратит XML в что-то со значимым макетом, подходящим для отображения в браузере или печати.
Я хотел бы поместить что-то в существующее унаследованное приложение Delphi, чтобы пользователь мог выбрать один из XML файлов с диска и "отобразить" его (в TWebBrowser или аналогичном).
Я понятия не имею, с чего начать, и Googling delphi, xml и xslt получают мне примеры, которые, похоже, основаны на datamodule/database; Я просто хочу преобразовать данный XML файл в нечто на экране. Похоже, что это может быть связано с программой PageProducer, но я не могу понять, что мне нужно делать. Кто-нибудь предлагает какие-либо указатели, или, может быть, ссылку на быстрый учебник?
Большое спасибо!
Ответы
Ответ 1
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;
Ответ 2
Я использовал библиотеку MSXML для преобразования XSLT в Delphi. Это было давно. Работали как шарм!
Я не уверен, какой формат вывода будет создан XSLT, но зная, что это поможет вам разобраться, как его отобразить. Мы сгенерировали HTML из XML через XSLT и отображали его с помощью элемента управления ActiveX Web Browser (IE) на панели в нашем приложении.
Здесь ссылка на MSSXML и Delphi, которая может помочь.
BTW: Если вы впервые работаете с XSLT, вы можете вручную отредактировать файл XML и добавить директиву, чтобы отобразить его с помощью конкретного XSLT. Когда вы откроете XML в Firefox после редактирования, XSLT будет применяться, и он покажет вам, что будет выводить ваши вызовы MSXML.
Здесь строка, которую вы добавляете вручную в xml:
<?xml-stylesheet type="text/xsl" href="myStyleSheet.xsl"?>
Ответ 3
Если вам нужны только преобразования, вы можете использовать TXMLDocument
, сохранить на диск и отобразить результат в TWebBrowser
(через Navigate('file:///...')
).
Лично у меня были некоторые проблемы с MSXML, поэтому я начал использовать DIXML.
Ответ 4
Вы можете попробовать установить AltovaXML, его можно вызвать как COM+. Он бесплатный и может быть загружен с: http://www.altova.com/altovaxml.html
MsXml может работать только с xslt 1.0, но AltovaXml может работать с xslt 2.0