Главная страница
    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.007 c
1-34083
John Magic
2002-10-31 08:25
2002.11.11
Как определить существование таблицы


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


3-33881
Дмитрий_авл
2002-10-18 13:37
2002.11.11
Помогите свзяать 2 таблицы MS SQL


1-34048
oomneeq
2002-10-29 18:38
2002.11.11
Как среагировать на (гор) прокрутку TMemo ...


3-33917
Just_Dont_Know
2002-10-23 13:08
2002.11.11
Вопрос по тригерам...





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