Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
7-34272
Net_Angel
2002-09-10 13:55
2002.11.11
Как получить информацию о температуре процессора


1-33953
Шурик Ш
2002-11-01 11:57
2002.11.11
Проверка существования файла


14-34210
Abajun
2002-10-22 11:33
2002.11.11
модем


7-34275
Holder
2002-07-18 15:10
2002.11.11
Можно ли заблокировать из Windows кнопку Reset ? (на корпусе)


1-33942
Дмитрий
2002-10-31 17:32
2002.11.11
MDI-application





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский