Как отобразить 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