Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.11;
Скачать: CL | DM;

Вниз

XML -> HTML   Найти похожие ветки 

 
neXt ©   (2002-10-30 20:38) [0]

У меня есть два файла
test.xml
test.xsl
в первом, соответственно, XML документ со ссылкой на test.xsl типа

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root></root>

В файле test.xsl описана таблица стилей (кажется это называется XSLT) типа

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl=" http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="root">
TEST
</xsl:template>

и тп.

мне нужно программно (из дельфы) получить HTML (или pdf) текст, который, например умеет демонстрировать IE. Почему-то такой функции не включено в стандартный MSXML. Возможно кто-то знает где найти соответствующую библиотечку или (идеально) исходники такой функции на паскале.
ЗЫ: извиняюсь за непрофессиональность изложения вопроса.


 
asmith   (2002-10-31 12:49) [1]

Для этого именно в в стандартном MSXML входит функция
transformNode, которая преобразует XML документ в другой XML документ (в том числе и в HTML) с использованием стилевой таблицы XSL. Вот как это схематично сделать на Delphi:
var
xmldoc, xsldoc, htmldoc : OleVariant;
xmldoc := CreateOleObject("Microsoft.XMLDOM");
xmldoc.load(strXMLFileName);
xsldoc := CreateOleObject("Microsoft.XMLDOM");
xsldoc.load(strXSLFileName);
htmldoc := CreateOleObject("Microsoft.XMLDOM");
htmldoc := xmldoc.transformNode(xsldoc);
htmldoc.save(strHTMLFileName);
Можно также импортировать в Delphi библиотеку типов MSXML и работать прямо с интерфейсами.
Но самое смешное, что этог делать не нужно, если задача - просто демонстрировать XML данные в IE. Если XML-файл содержит ссылку на таблицу стилей (<?xml-stylesheet type="text/xsl" href="test.xsl"?>) и такой файл лежит рядом с XML-файлом, то IE выполнит нужную трансформацию сам при попытке открыть XML-файл и отобразит результат трансформации.


 
neXt ©   (2002-10-31 19:38) [2]

Огроменное спасибо. Это то что мне нужно.
А по поводу самого смешного скажу, что мне нужно именно предбразование и не обязательно в HTML, а не демонстрация в браузере.
И ещё замечание. В строчках

htmldoc := xmldoc.transformNode(xsldoc);
htmldoc.save(strHTMLFileName);

есть ошибочка, xmldoc.transformNode(xsldoc) возвращает строку, а не объект, поэтому htmldoc в этом примере не нужен.

Ещё раз - спасибо.


 
asmith   (2002-10-31 19:46) [3]

Точно! Сорри!



Страницы: 1 вся ветка

Текущий архив: 2002.11.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
7-34262
ResTec
2002-09-06 02:16
2002.11.11
Как определить загрузку процессора: процеса?, потока (нити)?


1-34058
b-Ars
2002-10-24 12:29
2002.11.11
Как модально показать форму из DLL


14-34221
N A N
2002-10-11 10:13
2002.11.11
Подскажите хороший журнал по теме ИТ, программирования, ОС и т.д.


1-34120
neXt
2002-10-30 20:38
2002.11.11
XML -> HTML


1-33958
Григорий Ситнин
2002-10-30 10:41
2002.11.11
Собственный Form Wizard