Drodzy forumowicze,
Mam projekt w C++ Builder i
mam problem z "wrzuceniem" XML-a na szablon XSL i później wyświetlić go w PDF.
Czy któryś z szanownych forumowiczów mógłby pomóc?
pozdrawiam
Pewnie jakiś kolega się zapyta, CO JUŻ UZYSKAŁEŚ? I co Cię zatrzymuje?
na razie potrafię tylko załadować pliki XML i XSL do komponenntów typu TXMLDocument ale nie potrafię "ich połączyć".
XMLDoc->LoadFromFile("XMLFile.xml");
XSLDoc->LoadFromFile("XSLFile.xsl");
nie znajduję w googlach przykładów łączenia tego typu plików
przykładowy link
https://edn.embarcadero.com/article/27106
ale to są przykłady dla Delphi
function DoTransform(const xml, xsl : string ): string;
var
XMLDoc : IXMLDOMDocument;
XSLDoc : IXMLDOMDocument;
Template : IXSLTemplate;
Processor : IXSLProcessor;
begin
Result := '';
try
XMLDoc := CoFreeThreadedDOMDocument30.Create;
XSLDoc := CoFreeThreadedDOMDocument30.Create;
XMLDoc.load(xml);
XSLDoc.load(xsl);
Template := CoXSLTemplate30.Create;
Template.stylesheet := XSLDoc;
Processor := Template.createProcessor;
Processor.input := XMLDoc;
Processor.transform;
result := Processor.output;
finally
XMLDoc := nil;
XSLDoc := nil;
end;
end;
i nie potrafię tego zastosować w C++ Builder
Podratujcie :)
Czy do takiej transformacji trzeba dorzucić jakąś zewnętrzną bibliotekę? Jak ją dołączyć do mojego projektu i skorzystać z poszczególnych obiektów?
Doczytałem, że można skorzystać z biblioteki DOM XML od Microsoft ale nie mogę jej nigdzie znaleźć na ich stronach i nie wiem jak ją dołączyć do projektu i jak z niej skorzystać.
W moim embarcadero znalazłem komponent typu Microsoft XML v.6.0 i zaimportowałem go do buildera. Pojawiły mi się nowe komponenty ale nie umiem z nich skorzystać.
poradźcie
Tak to jest z niszową technologią.
Z całą pewnością zaimportowany MS XML jest zupełnie niekompatybilną ścieżką programowania vs komponenty własne. Albo rybki, albo akwarium
szkoda czasu na spieranie się czy coś jest niszowe czy nie. Trzeba to ogarnąć i już :)
znalazłem jeszcze trzy(chyba przydatne) linki:
https://flylib.com/books/en/3.264.1.113/1/
https://community.idera.com/developer-tools/programming-languages/f/delphi-language/70354/xslt-transformation-removes-comments-in-xml-file
https://stackoverflow.com/questions/48401406/xslt-transform-using-txmldocument
Na razie chciałbym to ogarnąć w jak najprostszy sposób:
a w kodzie mam coś takiego
UnicodeString myString;
XMLDoc->DocumentElement->TransformNode(XSLDoc->DocumentElement,myString);
tak mniej więcej było w przykładach z powyższych linków
ale otrzymuję błąd:
Could not find a match for 'IXMLNode::TransformNode(_di_IXMLNode,UnicodeString)'
może komuś wpadnie coś do głowy ;)
UglyMan