Форум: "Основная";
Текущий архив: 2002.11.11;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c