Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 XSLT + XML Трансфорация.  [new]
rpalaznik
Member

Откуда: СПб
Сообщений: 49
Добрый день.
Использую компоненты
FreeThreadedDOMDocument60Ptr и CoFreeThreadedDOMDocument60 для трансформации xml в html.
Все работает отлично, html генерируется, во фрейме отображается (прощу прощения за с++).

Msxml2_tlb::FreeThreadedDOMDocument60Ptr xmlStylesheet, xmlSource;
xmlSource =   Msxml2_tlb::CoFreeThreadedDOMDocument60().Create();
xmlStylesheet =  Msxml2_tlb::CoFreeThreadedDOMDocument60().Create();
xmlSource->load(Variant(xmlSourcePath));
xmlStylesheet->load(Variant(xmlStylesheetPath));
LoadHTMLStringToBrowser(WebBrowser, xmlSource->transformNode(xmlStylesheet));


Но если дело доходит до xslt документов, которые начинают инклюдить другие xslt документы, начинаются проблемы.
Т.к. xmlStylesheet ни чего не знает о документе, который нужен для трансформации.

В данном случае, документ ссылается на <xsl:include href="SumInWords.xslt"/>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:clt_ru="urn:customs.ru:CommonLeafTypes:5.10.0" xmlns:cat_ru="urn:customs.ru:CommonAggregateTypes:5.10.0" xmlns:RUScat_ru="urn:customs.ru:RUSCommonAggregateTypes:5.15.0" xmlns:grn_cr="urn:customs.ru:Information:GuaranteeDocuments:GuaranteeCustomsReceipt:5.15.0">
	<xsl:include href="SumInWords.xslt"/>
	<!-- Шаблон для типа GuaranteeCustomsReceiptType -->
	<xsl:template match="grn_cr:GuaranteeCustomsReceipt">
		<html>
			<head>
.......


Подскажите пожалуйста, как можно сделать трансформацию, без редактирования исходного xslt?
Все работает, если вместо инклюда подставить содержание из SumInWords.xslt и если исправить заголовки, но шаблоны эти постоянно обновляются и каждый раз это делать очень не хочется.
15 май 20, 15:57    [22133767]     Ответить | Цитировать Сообщить модератору
 Re: XSLT + XML Трансфорация.  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11776
rpalaznik
Подскажите пожалуйста, как можно сделать трансформацию, без редактирования исходного xslt?
Если не ошибаюсь, то так
xmlStylesheet.setProperty('ResolveExternals', True);
xmlStylesheet.load(...);


Если ошибаюсь, то покажу код в понедельник

Сообщение было отредактировано: 15 май 20, 19:53
15 май 20, 19:54    [22133933]     Ответить | Цитировать Сообщить модератору
 Re: XSLT + XML Трансфорация.  [new]
rpalaznik
Member

Откуда: СПб
Сообщений: 49
_Vasilisk_,

Спасибо большое, работает.
18 май 20, 11:41    [22134883]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить