2010-08-05 16 views
2

De quoi ai-je besoin pour utiliser XSLT 2.0 avec Delphi (win32)? En ce moment j'utilise MSXML6 pour toute ma transformation xml. Mais MSXML6 ne prend pas en charge XSLT 2.0.De quoi ai-je besoin pour utiliser XSLT 2.0 avec Delphi

La solution (par ErvinS)
Utilisation de la bibliothèque AltovaXML. Après l'installation, vous devez importer la typelibrary AltovXML. Ensuite, vous pouvez utiliser une source comme ceci:

procedure TfrmMainAltovaXmlDemo.btnTransformClick(Sender: TObject); 
var 
    xmlApp: AltovaXMLLib_TLB.Application; 
    xslt2: AltovaXMLLib_TLB.XSLT2; 
begin 
    xmlApp := AltovaXMLLib_TLB.CoApplication.Create; 
    xslt2 := xmlApp.XSLT2; 
    xslt2.InputXMLFromText := FInputXml; 
    xslt2.XSLFromText := FXslSource; 
    FOutputXML := xslt2.ExecuteAndGetResultAsString; 
end;
+0

voir aussi cette question: http://stackoverflow.com/questions/982687/how-do-i-display-xml-using-an-xslt-document-in-a-delphi-app et cette réponse allemande: http://www.delphipraxis.net/153477-delphi-win32-und-xslt-2-0-a.html –

Répondre

2

Altova a AltovaXML, qui est un composant de COM libre.

+0

+1; maintenant c'est cool! J'ai mis à jour http://en.wikipedia.org/wiki/Altova#Products et http://en.wikipedia.org/wiki/XML_template_engine#Implementations Merci! –

+0

+1 pour la recommandation COM basée sur XSLT 2.0. –

+0

@Alejandro: notez que .NET peut souvent être appelé COM aussi. Notez également que COM n'est généralement pas mon moyen favori d'intégrer une pièce tierce dans mon application Delphi. –

1

Pour autant que je sais qu'il n'y a pas XSLT 2.0 implmenentation pour Delphi lui-même.
En général, il existe seulement quelques implémentations XSLT 2.0.
Wikipédia a un overview of XSLT processors.

  • SAXON a une implémentation open source de XSLT 2.0 en Java et .NET.
  • XJR est une implémentation payante en C/C++.

Vous pouvez tous les intégrer dans vos applications Delphi.
Selon la proximité que vous voulez avoir une telle intégration, il y a quelques points de départ:

  • Java est le plus proche d'intégrer using JNA ou JNI.
  • .NET peut être intégré en utilisant JCL, COM, Unmanaged Exports, Hydra, inverse P/Invoke.
  • XJR peut probablement être intégré en tant que DLL

--jeroen