Gern stehe ich zur fachlichen Unterstützung in XML-Technologien, C#.NET, VisualBasic.NET und Java zur Verfügung. Sprechen Sie mich einfach an: Mail oder ☎ 0151 . 750 360 61


XSL-Übersicht / XSL-Transformationsaufrufe

XSL-Transformationsaufrufe

XSL-Transformationsaufrufe

➪ Die XSL-Transformation kann direkt in ANT, XProc, Java, C#.NET oder anderen Programmiersprachen aufgerufen werden.

Auf dieser Seite:

XSL-Transformationen mit ANT

Neben zahlreichen anderen Möglichkeiten (FOP, als Beispiele) beherrscht ANT auch die XSL-Transformation. Hier ist es möglich, sich ein Target individuell zu konfigurieren, das beliebig oft parametergesteuert aufgerufen werden kann.


<target name="runxsltransformation">
   <delete file="${poutput}" />
   <echo message="deleted: ${poutput}"/>
   <xslt style="${pstyle}" 
         in="${pinput}" 
         out="${poutput}" 
         classpath="${ppath}/${pprocessor}.jar" />
   <echo message="generated: ${poutput}"/>
</target>

Damit das funktionieren kann, benötigen Sie noch eine ANT-Property, in der der Pfad zu den jar-Dateien (XSL-Prozessor) definiert ist, denn diese Information wird im classpath-Attribut als Information benötigt. Alternativ können Sie den Pfad auch direkt in den Classpath hineinschreiben oder bei dem noch folgenden eigentlichen XSL-Transformationsaufruf als zusätzlichen Parameter übergeben.


<property name="ppath" 
         value="(PFAD-ZU-DEN-PROZESSOR-JAR-DATEIEN)"/>

Der tatsächliche Aufruf der jederzeit wiederholbaren Transformation funktioniert über antcall; hier können die Parameter (Input-Datei, Output-Datei, Stylesheet) entsprechend übergeben werden. Durch zahlreiche antcall-Aufrufe können entsprechend viele Einzelkonvertierungen nacheinander durchgeführt werden.


<antcall target="runxsltransformation">
   <param 
      name="poutput" 
      value="C:/wg/output.html" />
   <param 
      name="pinput" 
      value="C:/wg/input.xml" />
   <param 
      name="pstyle" 
      value="C:/wg/xslfile.xsl" />
   <param 
      name="pprocessor" 
      value="saxon9ee" />
</antcall>

Ein Aufruf sieht beispielsweise so aus:


runxsltransformation:
 [delete] Deleting: C:/wg/output.html
   [echo] deleted: C:/wg/output.html
   [xslt] Processing C:/wg/input.xml 
          to C:/wg/output.html
   [xslt] Loading stylesheet C:/wg/xslfile.xsl
   [echo] generated: output.html

XSL-Transformationen mit XProc

Die XSL-Transformation mit XProc finden Sie im Kapitel über .

XSL-Transformationen mit C#.NET

In C#.NET (analog in VisualBasic.NET) steht die Klasse System.Xml.Xsl.XslCompiledTransform bereit, von der nur ein Objekt angelegt werden muss, das die Methoden Load (XSL-Stylesheet) und Transform (Inputdatei, Outputdatei) aufruft.


System.Xml.Xsl.XslCompiledTransform t;
t = new System.Xml.Xsl.XslCompiledTransform();
string input = "input.xml";
string output = "output.html";
string xsldatei = "xsldatei.xsl";
t.Load(xsldatei);
t.Transform(input, output);

XSL-Transformationen mit Java

Zum automatisierten Aufruf einer XSL-Transformation in Java genügt die Verwendung der speziellen Java-Klassen TransformerFactory und Transformer (alle in javax.xml.transform) sowie StreamSource und StreamResult (beide in javax.xml.transform.stream). Die Klasse File liegt in java.io.


 /**starts an XSLT Transform 
  * @param xsltFileName: Path and Name of XSL-Stylesheet
  * @param xmlsourceFileName: Path and Name of XML Sourcefile 
  * @param xmldestFileName: Path and Name of destination file*/
 public static void XSLtransform(
      String xsltFileName, 
      String xmlsourceFileName, 
      String xmldestFileName) {  
  TransformerFactory tfactory;
  Transformer transformer;
  try {
   tfactory = TransformerFactory.newInstance();
   transformer = tfactory.newTransformer(
      new StreamSource(new File(xsltFileName)));
   transformer.transform(
      new StreamSource(new File(xmlsourceFileName)),
      new StreamResult(new File(xmldestFileName)));
   System.out.println("DONE: transformer.transform ...");   
  } catch (TransformerConfigurationException e) {
      e.printStackTrace();   
  } catch (TransformerException e) {
      e.printStackTrace();
  }
 }

Aufrufbar wird das Programm durch das übliche public static void main mit den Parametern


 public static void main(String[] args) {
   XSLtransform(
       "C:/wg/XSL_Beispiele.xslt", 
       "C:/wg/XML_Input.xml", 
       "C:/wg/ergebnis.xml");
 }

wg / 5. April 2018



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/XSL_Transformationsaufrufe_ANT_XProc_Java_Csharp.html