C++ Builder XML -> XSL -> PDF

0

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

1

Pewnie jakiś kolega się zapyta, CO JUŻ UZYSKAŁEŚ? I co Cię zatrzymuje?

0

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

0

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

0

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

0

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:

  • na formatkę wrzucam dwa komponenty TXMLDocument (XMLDoc i XSLDoc)
    w obu ustawiam DOMVendor na MSXML
    pierwszy spinam z plikiem XML
    drugi spinam z plikiem XSL

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 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1