Главная страница
    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.45 MB
Время: 0.008 c
14-34209
AL2002
2002-10-22 15:54
2002.11.11
Кто знает?..


14-34213
Bboy
2002-10-22 19:31
2002.11.11
Вопрос по Word у


1-34006
GOD
2002-11-02 02:21
2002.11.11
Ну КАк ВАМ СКАЗАТЬ!!!


6-34148
Andrushk
2002-09-10 16:59
2002.11.11
Кто работал с TNMSMTP ???


1-33983
Дмитрий К.К.
2002-11-01 08:46
2002.11.11
Еще раз о создании компонентов в RUN-TIME





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский