Как отобразить XML с помощью документа XSLT в приложении Delphi? - PullRequest
12 голосов
/ 11 июня 2009

Мне дали образец XML-файла (в конечном счете, мой клиент будет получать несколько таких файлов каждый день) и XSLT-файл, который, по-видимому, преобразует XML-файл в нечто с осмысленным макетом, подходящим для отображения в браузере или печати .

Я бы хотел поместить что-то в существующее унаследованное приложение Delphi, чтобы пользователь мог выбрать один из XML-файлов на диске и «отобразить» его (в TWebBrowser или аналогичном).

Я понятия не имею, с чего начать, и Googling delphi, xml и xslt дает мне примеры, основанные на модуле данных / базе данных; Я просто хочу преобразовать данный XML-файл во что-то на экране. Похоже, что это может быть связано с PageProducer, но я не могу понять, что мне нужно делать. Кто-нибудь предлагает какие-либо указатели, или, возможно, ссылку на быстрый учебник?

Большое спасибо!

Ответы [ 4 ]

10 голосов
/ 16 июня 2009
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 голосов
/ 11 июня 2009

Я использовал библиотеку MSXML для преобразования XSLT в Delphi. Это было давно. Работал как шарм!

Я не уверен, какой выходной формат будет генерировать ваш XSLT, но знание этого поможет вам понять, как его отобразить. Мы сгенерировали HTML из XML через XSLT и отобразили его с помощью элемента управления ActiveX Web Browser (IE) на панели нашего приложения.

Вот ссылка на MSSXML и Delphi , которая может помочь.

Кстати: если вы впервые работаете с XSLT, вы можете вручную отредактировать файл XML и добавить директиву, чтобы он отображался с использованием определенного XSLT. Когда вы откроете XML в Firefox после редактирования, будет применен XSLT, и он покажет вам, что будет выводом ваших вызовов MSXML. Вот строка, которую вы добавляете вручную в xml:

<?xml-stylesheet type="text/xsl" href="myStyleSheet.xsl"?>
2 голосов
/ 11 июня 2009

Если вам нужны только преобразования, вы можете использовать TXMLDocument, сохранить на диск и затем отобразить результат в TWebBrowser (через Navigate('file:///...')).

Лично у меня были некоторые проблемы с MSXML, поэтому я начал использовать DIXML .

1 голос
/ 13 ноября 2009

Вы можете попробовать установить AltovaXML, его можно вызвать как COM +. Это бесплатно и можно скачать с: http://www.altova.com/altovaxml.html

MsXml может работать только с xslt 1.0, но AltovaXml может работать с xslt 2.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...