XML mit Java OpenSource. (c) Mark Egloff 2003 XSL << EXSLT >>

Größe: px
Ab Seite anzeigen:

Download "XML mit Java OpenSource. (c) Mark Egloff 2003 XSL << EXSLT >>"

Transkript

1 XSL << EXSLT >> 1

2 Extensions for XSL Transformations EXSLT XSL 1.0 hat noch diverse Mängel an Funktionalität. Eine Initiative standardisiert vermisste Funktionalität und stellt sie als Stylesheet Library zur Verfügung EXSLT definiert Funktionen für folgende Bereiche Dates, Times, Dynamic, Common, Functions, Math, Random, Regular Expressions, Sets, Strings 2 Hersteller haben schon begonnen diese Funktionen direkt in die Prozessors wie Xalan fest zu integrieren d.h. externe Library ist nicht immer notwendig

3 3 Beispiel einer Anwendung einer EXLST Funktion Aufgabe Alle Länder der CD s ermitteln EXSLT set:distinct <catalog> <cd> <title>empire Burlesque</title> <artist>bob Dylan</artist> <country>usa</country> <price>10.90</price> </cd> <cd> <title>hide your heart</title> <artist>bonnie Tyler</artist> <country>uk</country> <price>9.90</price> </cd>... </catalog> USA UK EU Norway

4 4 <xsl:stylesheet... > EXSLT set:distinct Beispiel einer Anwendung einer EXLST Funktion Alle Länder der CD s ermitteln Erste Lösung, erfüllt aber Anforderung nicht so ganz. <xsl:template match="/catalog"> <xsl:for-each select="cd/country"> <xsl:value-of select="."/> </xsl:for-each> </xsl:template> </xsl:stylesheet> USA USA USA UK USA Resultat ergibt eine Liste in der mehrmals die gleichen Einträge vorkommen. Analogie SQL: select distinct country from cd oder select country from cd group by country

5 EXSLT set:distinct Beispiel einer Anwendung einer EXLST Funktion Alle Länder der CD s ermitteln Dieses Beispiel verwendet die externe Library von <xsl:stylesheet... xmlns:set=" extension-element-prefixes="set"> <xsl:import href="set/set.xsl" /> <xsl:template match="/catalog"> <xsl:for-each select="set:distinct(cd/country)"> <xsl:value-of select="."/> </xsl:for-each> </xsl:template> 5 </xsl:stylesheet>

6 Eingebettete Extensions in Xalan EXSLT In Xalan sind schon folgende EXSLT Module integriert. dynamic: map(), max(), min(), sum(), math: abs(), sin(), exp(), sqrt(), max(), sets: difference(), distinct(), leading(), strings: align(), concat(), padding(), tokenize() Xalan Javadoc: org.apache.xalan.lib.exsltbase 6 Um die Funktionen dieser Module aufzurufen muss nur der jeweilige Namespace zuvor aufgeführt werden z.b.

7 EXSLT set:distinct Beispiel einer Anwendung einer EXLST Funktion Alle Länder der CD s ermitteln Dieses Beispiel verwendet die eingebettete set:distinct() Funktion von Xalan. Keine zusätzliche EXSLT Library notwendig. <xsl:stylesheet... xmlns:set=" extension-element-prefixes="set"> <xsl:template match="/catalog"> <xsl:for-each select="set:distinct(cd/country)"> <xsl:value-of select="."/> </xsl:for-each> </xsl:template> 7 </xsl:stylesheet>

8 XSL << Xalan Java Extensions >> 8

9 Xalan Extensions XSL Xalan Extensions Xalan bietet verschiedene API s um Extensions zu realisieren. Es ist so flexibel das die Extensions z.t. direkt im XSL in der jeweiligen Sprache geschrieben werden können Xalan Extensions können in folgenden Sprachen geschrieben werden: Java JavaScript NetRexx(IBM) BML (IBM) JScript (MicroSoft) VBScript (MicroSoft) Python Perl TCL 9 Allerdings wird meist für die jeweilige Sprache ein Java JNI Wrapper oder ein entsprechender Interpreter in Java benötigt Zusatz Libraries

10 XSL Xalan Extensions Beispiel einer Xalan Extension verfass in Javascript und direkt im XSL integriert 10 <xsl:stylesheet... > <xalan:component prefix="myext" functions="getdate"> <xalan:script lang="javascript"> // This is javascript function getdate(numdays) { var d = new Date(); var totaldays = parseint(numdays); d.setdate(d.getdate() + totaldays); return d.tolocalestring(); } </xalan:script> </xalan:component> <xsl:template match="deadline"> <xsl:value-of select="myext:getdate(string(@numdays))"/> </xsl:template> </xsl:stylesheet>

11 XSL Xalan Java Extensions Java Integration bei Xalan App 1 <xml> <xml> XSLT Processor <xml> <xml> <xsl> <xsl> <JExt> <JExt> Java Class DB Das XSL enthält Funktionsaufrufe die mit einer bestimmten Java Klasse verknüpft sind. Die Funktionen selber werden in Java Klassen geschrieben. 11

12 XSL Xalan Java Extensions Erstellung von Xalan Java Extensions Die Java Klassen benötigen kein API von Xalan d.h. sie können unabhängig entwickelt werden keine Vererbung, Interfaces oder Relationen Dies bedeutet wiederum, dass jede Java Klasse verwendet werden kann 12 Es gibt 2 Prinzipien um Java Klassen in XSL zu verwenden: Mittels java Namespace einzelne Objektinstanzen erstellen und als <xsl:variable> handzuhaben für Instanzen Eigenen Namespace für die Klasse einrichten und static Methoden direkt aufrufen für static

13 XSL Xalan Java Extensions Erstellung von Xalan Java Extensions Verwendung von Objektinstanzen Um Objektinstanzen zu erstellen muss der Xalan java Namespace definiert werden. Danach kann auf jede Klasse im Classpath über diesen Namespace zugegriffen werden. xmlns:java=" Instanzierungen werden mit dem Syntax java:klasse.new(param) erzeugt und einer <xsl:variable> zugewiesen 13 Instanz Methoden werden mit dem Syntax java:methode($xslvar,param) aufgerufen

14 XSL Xalan Java Extensions Beispiel einer Xalan Java Extension (1/2) Verwendung von Objektinstanzen, einfache Java Klasse Counter public class Counter { long count = 0; } public long incr() { return ++count; } public long decr() { return --count; } public long get() { return count; } Klasse hat nur Instanz Members 14 Klasse ist unabhängig von Xalan

15 XSL Xalan Java Extensions 15 Beispiel einer Xalan Java Extension (2/2) Verwendung von Objektinstanzen, Klasse Counter im Stylesheet <xsl:stylesheet... xmlns:java=" <xsl:variable name="i" select="java:counter.new()"/> <xsl:template match="/catalog"> <xsl:apply-templates select="cd"/> </xsl:template> <xsl:template match="cd"> <xsl:variable name="temp" select="java:incr($i)"/> <xsl:value-of select="java:get($i)"/> </xsl:template> </xsl:stylesheet> Syntax ist gewöhnungsbedürftig. Temporäre Variabeln nötig um Java Methoden ausführen zu lassen

16 XSL Xalan Java Extensions Erstellung von Xalan Java Extensions Verwendung von static Methoden Um static Methoden aufzurufen muss der xalan Namespace definiert werden. Danach kann ein eigener Namespace für Klasse eingeführt werden xmlns:xalan=" xmlns:[myspace]="xalan://[klassennamen]" Static Methoden werden mit dem Syntax MySpace:Methode(param) aufgerufen 16

17 XSL Xalan Java Extensions Beispiel einer Xalan Java Extension (1/2) Verwendung von static Methoden, einfache Log4J Klasse import org.apache.log4j.logger; public class Log4JXslExtension { static Logger log = Logger.getLogger(Log4JXslExtension.class); public static void debug(string s){ log.debug(s);} public static void info(string s){ log.info(s); } public static void warn(string s){ log.warn(s); } } public static void error(string s){ log.error(s); } 17 Klasse ist unabhängig von Xalan

18 XSL Xalan Java Extensions Beispiel einer Xalan Java Extension (2/2) Verwendung von static Methoden im Stylesheet <xsl:stylesheet... xmlns:xalan=" xmlns:log4j="xalan://log4jxslextension"> <xsl:template match="/catalog"> <xsl:apply-templates select="cd"/> </xsl:template> <xsl:template match="cd"> <!-- Aufruf der static Methode --> <xsl:value-of select="log4j:info(title)"/> </xsl:template> </xsl:stylesheet> 18

19 XSL Xalan Java Extensions Mapping der Java Datentypen zu XSL Datentypen Folgende Ad-hoc Umwandlungen passieren bei Parameterübergaben Java Types org.w3c.dom.traversal.nodeiterator org.w3c.dom.node org.w3c.dom.nodelist java.lang.string java.lang.boolean java.lang.number org.w3c.dom.documentfragment XSLT Type NodeSet String Boolean Number Result Tree Fragment 19

20 XSL Xalan Java Extensions Beispiel einer Xalan Java Extension Integrierung von Jakarta RegExp in XSL Was ist Regexp? Ein Beispiel // Compile expression, looking for multiple a before b RE r = new RE("(a*)b"); // Match boolean matched = r.match("xaaaab"); // wholeexpr will be 'aaaab' String wholeexpr = r.getparen(0); // insideparens will be 'aaaa' String insideparens = r.getparen(1); 20 RegExp (Reguläre Expressions) dienen dazu um Textdaten anhand Patterns (Regeln) zu verarbeiten

21 XSL Xalan Java Extensions Beispiel einer Xalan Java Extension Integrierung von Jakarta RegExp in XSL Die grep() Funktion, Auszug aus dem Javadoc public java.lang.string[] grep(java.lang.object[] search) Returns an array of Strings, whose tostring representation matches a regular expression. This method works like the Perl function of the same name. Given a regular expression of "a*b" and an array of String objects of [foo, aab, zzz, aaaab], the array of Strings returned by grep would be [aab, aaaab]. Parameters: search - Array of Objects to search Returns: Array of Strings whose tostring() value matches this regular expression. 21 Mittels grep können wir nach bestimmten Stringpatterns suchen

22 XSL Xalan Java Extensions Beispiel einer Xalan Java Extension Integrierung von Jakarta RegExp in XSL grep() Funktion für XSL Funktion wrappen, Nodes als Parameter 22 public static NodeList grep(string pattern, NodeList nlist) { NodeSet resultset = new NodeSet(); String[] sarr = new String[nlist.getLength()]; } for (int i = 0; i < nlist.getlength(); i++) { Node n = nlist.item(i); sarr[i] = n.getnodevalue(); } RE re = new RE(pattern); String[] resultgrep = re.grep(sarr); for (int i = 0; i < resultgrep.length; i++) resultset.addnode(doc.createtextnode(resultgrep[i])); return resultset;

23 XSL Xalan Java Extensions Beispiel einer Xalan Java Extension Integrierung von Jakarta RegExp in XSL Die grep() Funktion im Stylesheet angewendet <xsl:stylesheet... xmlns:xalan=" xmlns:reg="xalan://regexp"> <xsl:template match="/catalog"> <xsl:for-each select="reg:grep('b.*t.*',cd//text())"> <xsl:value-of select="."/> </xsl:for-each> </xsl:template> </xsl:stylesheet> 23 Ausgabe Boonie Tyler

24 XSL Xalan Java Extensions Wann XSL Funktionen wann Java Extensions? Dort wo es Sinn macht! z.b. nützt es nichts 200 Zeilen XSL zu schreiben wenn man es mit Java Extensions in ca. 10 Linien erreichen kann (oder umgekehrt). Die Stärke von XSL liegt daran Baumstrukturen zu verarbeiten Die Stärke von Java sind vorwiegend im Bereich Datenumwandlungen u. Algorithmen 24 Falls Extensions eingesetzt werden müssen, so entwickelt ein offenes, generisches Design um die Wiederverwendbarkeit zu garantieren

25 XSL - Links W3C XSL: SUN Tutorial: Introducing XSL, XSLT and XPath IBM XSL Tutorial: Hands on XSL Apache Xalan: EXSLT: XSLT Standard Library: Jakarta RegExp: 25

26 JAXP << JAXP TRAX API >> 1

27 Was ist TRAX? JAXP TRAX TRAX = Transformation API for XML Mittels TRAX können XSL Transformationen in Java ausgeführt werden. TRAX ist in JAXP integriert und besteht aus folgendem Package: javax.xml.transform 2 Seit Java 1.4.x ist JAXP schon integriert und besitzt für das TRAX eine Xalan Implementation im rt.jar Java Endorsed für neuere Versionen

28 JAXP TRAX Konfiguration Implementationen festlegen: Die JAXP Implementationen können auf verschiedene Weise angegeben werden. Die JVM versucht dabei in folgender Reihenfolge die Konfiguration zu finden: 3 1. Über die System Properties 2. Über die jaxp.properties im JAVA_HOME 3. Mittels dem Jar Service Provider Mechanism 4. Falls nichts gefunden wurde wird jeweils die Standard Implementation der jeweiligen Plattform genommen. JAVA_HOME\jre\lib\rt.jar Xalan

29 JAXP TRAX Konfiguration Implementationen festlegen: Die Implementation kann beim Start der JVM mittels den SystemProperties festgelegt werden: javax.xml.transform.transformerfactory Als Wert muss eine Klasse angegeben werden, die dieses Interface unterstützt. z.b: java classpath xml-apis.jar -Djava.endorsed.dirs=lib/endorsed -Djavax.xml.transform.TransformerFactory= org.apache.xalan.processor.transformer FactoryImpl TestXSLT 4 Ab Java 1.4.x die neuen Xalan Libraries mit dem Endorsed Feature einbinden! Djava.endorsed.dirs!

30 JAXP TRAX Konfiguration JAXP- TRAX Implementationen festlegen: Die Implementation wird mittels dem Jar Service Provider Discovery Mechanism festgelegt. Hierbei wird ein Textfile mit dem gleichem Namen ins META-INF/services des *.jar Files abgelegt: javax.xml.transform.transformerfactory 5 Ab Java 1.4.x die neuen Xalan Libraries mit dem Endorsed Feature einbinden! Djava.endorsed.dirs!

31 Die wichtigsten Klassen von TRAX API: javax.xml.transform Transformer / TransfomerFactory Factory und XSLT Processor für die Ausführung einer Transformation Source XSL und XML EingabeMedium, kann eine SAXSource, DOMSource oder StreamSource sein Result AusgabeMedium kann ein SAXResult, DOMResult oder ein StreamResult sein 6 Templates vorkompilierte Stylesheets, können direkt für Transformationen verwendet werden (Perfomanceoptimierung)

32 Interface Transformer und TransformerFactory 7

33 Verwendung Klassen von TRAX API: Ein Transformer verwenden (single threading) XSL XSL Source Source Transformer Factory XML XML Source Source Trans former Result Result 8

34 Wann welche Source? Source Type DOMSource StreamSource SAXSource Beschreibung Daten liegen schon geparst als DOM vor für kleinere Datenmengen (< 1MB) Daten liegen als Stream vor z.b. als lokales File, oder über TCP/IP Socket für grosse Datenmengen (> 1MB) Daten liegen nicht in XML vor, müssen mit einen eigenen Parser in XML Form gebracht werden eigener SAXParser schreiben 9

35 Wann welches Result? 10 Result Type DOMResult StreamResult SAXResult Beschreibung Falls Ausgabe wieder ein XML in DOM Form sein muss, z.b. für weitere Verarbeitung mit XPath Aus einem DOMResult kann schnell wieder ein DOMSource gemacht werden, somit kann gerade eine weitere Folgetransformation erfolgen. für kleinere Datenmengen (< 1MB) Falls Ausgabe nicht unbedingt XML sein muss z.b. Text, CSV, HTML etc. für grosse Datenmengen (> 1MB) Falls Ausgabe zwar in XML erfolgen muss jedoch Endformat dennoch selber erstellt werden muss eigener ContentHandler schreiben

36 Vorgang einer XSL Transformation mit TRAX: (single threading) 1. TransformerFactory instanzieren 2. XSL Source erzeugen 3. Transformer erzeugen 4. XML Source erzeugen 5. Result Objekt erzeugen 6. Transformation durchführen 11 Der Transformer wird für ein XSL einmal erzeugt und kann dann für mehrere Transformationen verwendet werden

37 12 Beispiel XSL Transformation mit TRAX Stream 2 Stream Transformation (1/3) import javax.xml.transform.*; import javax.xml.transform.stream.*; import java.io.*; public class RunDOM2DOMTransformation { public static void main( String args[] ) { try { // Transformerfactory initialisieren TransformerFactory tfactory = TransformerFactory.newInstance(); 1. if (!tfactory.getfeature(streamsource.feature)!tfactory.getfeature(streamresult.feature)) throw new Exception("not Supported!");

38 Beispiel XSL Transformation mit TRAX Stream 2 Stream Transformation (2/3) //XSL einlesen und StreamSource erzeugen StreamSource ssxsl = new StreamSource(new File("cdhtml.xsl"); 2. // Transformer erzeugen Transformer trans = tfactory.newtransformer(ssxsl); 3. // Eingabe XML als StreamSource erzeugen StreamSource ssxml = new StreamSource(new File("catalog.xml")); 4. 13

39 Beispiel XSL Transformation mit TRAX Stream 2 Stream Transformation (3/3) // Result Objekt erzeugen um Ergebnis aufzunehmen StreamResult sr = new StreamResult( new File("cdcatalog.html")); 5. // Transformation durchführen trans.transform(ssxml,sr); 6. } catch(exception ex) {ex.printstacktrace();} } } 14

40 15 Beispiel XSL Transformation mit TRAX DOM 2 DOM Transformation (1/3) import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.parsers.*; import java.io.*; import org.w3c.dom.*; public class RunDOM2DOMTransformation { public static void main( String args[] ) { try { // Transformerfactory initialisieren TransformerFactory tfactory = TransformerFactory.newInstance(); if (!tfactory.getfeature(domsource.feature)!tfactory.getfeature(domresult.feature)) throw new Exception("not Supported!"); 1.

41 Beispiel XSL Transformation mit TRAX DOM 2 DOM Transformation (2/3) // DOMBuilder initialisieren um XSL und XML zu lesen DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dbuilder = dbfactory.newdocumentbuilder(); //XSL einlesen und DOMSource erzeugen Document docxsl = dbuilder.parse(new File("cdhtml.xsl")); 2. DOMSource dsxsl = new DOMSource(docXSL); // Transformer erzeugen Transformer trans = tfactory.newtransformer(dsxsl); // Eingabe XML als DOMSource erzeugen 4. Document docxml = dbuilder.parse(new File("catalog.xml")); DOMSource dsxml = new DOMSource(docXML);

42 Beispiel XSL Transformation mit TRAX DOM 2 DOM Transformation (3/3) 17 } } // Result Objekt erzeugen um Ergebnis aufzunehmen DOMResult dr = new DOMResult(); 5. // Transformation durchführen trans.transform(dsxml,dr); 6. // Ergebnis ist ein DOM aus Result Objekt extrahieren Document docres = (Document) dr.getnode();... // weitere Verarbeitung des Resultats } catch(exception ex) {ex.printstacktrace();}

43 Mehrstufige Transformation <xml> <xml> 1 XSLT Processor 1 <xml> <xml> 2 XSLT Processor 2 <xml> <xml> 3 <xsl> <xsl> XML1 XML1 <xsl> <xsl> XML2 XML2 Transformationen können hintereinander geschaltet werden Mehrstufige Transformation 18 Damit lassen sich komplexere Transformationen vereinfachen bessere Wartungsfreundlichkeit

44 Beispiel XSL Transformation mit TRAX Mehrstufige Transformation DOM 2 DOM //DOMSource für Eingabe XML festlegen DOMSource dsxml = new DOMSource(docXML); // Result Objekt erzeugen um Ergebnis aufzunehmen DOMResult dr = new DOMResult(); // 1. Transformation durchführen transformer1.transform(dsxml,dr); // Ergebnis ist neue Eingabe für nächste Transformation dsxml = new DOMSource(dr.getNode()); // neues Result Objekt erzeugen um Ergebnis aufzunehmen dr = new DOMResult(); 19 // 2. Transformation durchführen transformer2.transform(dsxml,dr);

45 Verwendung Klassen von TRAX API: Mehrere Transformer gleichzeitig verwenden (multi threading) XSL XSL Source Source Transformer Factory Templates ThreadThreadThread Workers XML XML Source Source Trans former Trans former Trans former Result Result 20

46 Nutzen der Templates Klasse: Bei einer Templates Instanzierung wird das XSL schon vorkompiliert und in Logik gewandelt Bei mehrer Verwendung entsteht dadurch eine enorme Performancegewinnung, da das XSL Stylesheet nicht ständig übersetzt werden muss Templates ist Threadsafe, kann von mehreren Threads gleichzeitig benützt werden 21

47 Vorgang einer XSL Transformation mit TRAX: (multi threading) 1. TransformerFactory instanzieren 2. XSL Source erzeugen 3. Template erzeugen 4. Thread erzeugen 5. Transformer erzeugen 6. XML Source erzeugen 7. Result Objekt erzeugen 8. Transformation durchführen 22 Aus einem Template werden mehrere Transformer erzeugt und einem Thread zugeordnet Threadsafe

48 23 Beispiel XSL Transformation mit TRAX Stream 2 Stream Transformation mit Templates (1/5) import javax.xml.transform.*; import javax.xml.transform.stream.*; import java.io.*; public class RunDOM2DOMTransformation { public static void main( String args[] ) { try { // Transformerfactory initialisieren TransformerFactory tfactory = TransformerFactory.newInstance(); 1. if (!tfactory.getfeature(streamsource.feature)!tfactory.getfeature(streamresult.feature)) throw new Exception("not Supported!");

49 Beispiel XSL Transformation mit TRAX Stream 2 Stream Transformation mit Templates (2/5) //XSL einlesen und StreamSource erzeugen StreamSource ssxsl = new StreamSource(new File("cdhtml.xsl"); 2. // Template erzeugen Templates templ = tfactory.newtemplates(ssxsl); // Threads erzeugen, Templates sharen Thread[] arrthread = new Thread[10]; for( int i=0; i<arrthread.length; i++) { MyTransiThread thread = new MyTransiThread(i,templ); arrthread[i] = thread; thread.start(); } 4.

50 Beispiel XSL Transformation mit TRAX Stream 2 Stream Transformation mit Templates (3/5) // auf Threads warten und beenden for( int i=0; i<arrthread.length; i++) { arrthread[i].join(); } } // end try catch( Exception ex ) { ex.printstacktrace(); } } // end main } end class 25

51 Beispiel XSL Transformation mit TRAX Stream 2 Stream Transformation mit Templates (4/5) import javax.xml.transform.*; import javax.xml.transform.stream.*; import java.io.*; public class MyTransiThread extends Thread { // gemeinsames Objekt, Referenz auf main templ Templates templ; 26 // Constructor public MyTransiThread(int i, Templates templ) { super("mytransi"+i); this.templ = templ; }

52 27 Beispiel XSL Transformation mit TRAX Stream 2 Stream Transformation mit Templates (5/5) public void run() { try { // Transformer erzeugen 5. Transformer trans = templ.newtransformer(); // Eingabe XML als StreamSource erzeugen StreamSource ssxml = new StreamSource(new File("catalog.xml")); // Result Objekt erzeugen um Ergebnis aufzunehmen StreamResult sr = new StreamResult( new File(getName()+".html")); // Transformation durchführen trans.transform(ssxml,sr); } catch(exception ex) {ex.printstacktrace();} }}

53 Klasse TransformatorFactory Verwendung von Features Features definieren in der TRAX API ob eine bestimmte Source oder Result Art unterstützt wird. z.b. So kann man zur Laufzeit überprüfen ob die verwendetete TRAX Implementation diese auch unterstützt z.b.: TransformerFactory tfactory = TransformerFactory.newInstance(); if (!tfactory.getfeature(streamsource.feature)!tfactory.getfeature(streamresult.feature)) throw new Exception("not Supported!"); 28

54 Klasse TransformatorFactory Verwendung von Attributes Die TRAX API erlaubt mittels Attributes herstellerspezifische Optionen zu aktivieren oder auszuschalten. 29 z.b.: import org.apache.xalan.processor.transformerfactoryimpl;... TransformerFactory tfact = TransformerFactory.newInstance(); if (tfact instanceof TransformerFactoryImpl) { tfact.setattribute( TransformerFactoryImpl.FEATURE_INCREMENTAL, Boolean.FALSE); }

55 Klasse Transformator Unterstützung von Parametern Es können für eine Transformation Parameter angegeben werden. Diese überschreiben die Standardwerte von globalen Parametern (Variabeln) welche im XSL definiert wurden z.b.: // Transformer erzeugen Transformer trans = tfactory.newtransformer(dsxsl); // Parameter setzen trans.setparameter("var55", new Integer(55)); trans.setparameter("src","c:/mydocs/pics/image.gif"); // transfomration durchführen trans.transform(dsxml,dsresult); 30

56 Klasse Transformator Ausgabeoptionen festlegen Es können für die Transformation bestimmte Optionen für die Ausgabeformatierung gesetzt werden Diese Angaben überschreiben die Angaben im XSL Stylesheet <xsl:output>. Von der TRAX API gibt es die Klasse OutputKeys welche die standardisierten Ausgabeoptionen als statische Konstanten vorgibt. Es gibt jedoch auch herstellerspezifische Optionen. 31

57 Klasse Transformator Ausgabeoptionen festlegen z.b.: // Transformer erzeugen Transformer trans = tfactory.newtransformer(dsxsl); // Standardisierte Ausgabeoptionen setzen trans.setoutputproperty(outputkeys.encoding, "ISO "); trans.setoutputproperty(outputkeys.indent,"yes"); // herstellerspezifische Ausgabeoptionen setzen trans.setoutputproperty(org.apache.xml.serializer.out putpropertiesfactory.s_key_indent_amount,"4"); // transfomration durchführen trans.transform(dsxml,dsresult); 32

58 Interface URIResolver Eigene Auflösung von Ressourceangaben realisieren Klasse Transformer sowie die Factory unterstützen die Möglichkeit einen eigenen URIResolver zu verwenden seturiresolver() Dadurch besitzt man die Möglichkeit Pfade zu externen Ressourcen in XSL selber aufzulösen siehe auch JAXP Parser API, EntityResolver 33 public interface URIResolver { public Source resolve(string href, String base) throws TransformerException; }

59 Interface URIResolver Eigene Auflösung von Ressourceangaben realisieren <xml> <xml> XSLT Processor result result <xsl> <xsl>? Res Res source source URIResolver File File etc. DB 34 XSL können auf externe Dateien verweisen. Der XSLT Prozessor benützt den Resolver um die Pfadangabe auf das jeweilige Environment anzupassen.

60 Interface URIResolver Eigene Auflösung von Ressourcepfaden realisieren javax.xml.transform URIResolver MyResolver resolve() public class MyResolver implements URIResolver { static final String ROOT = "D:/MyRoot"; public Source resolve(string href, String base) throws TransformerException 35 } { } return new StreamSource( new File(ROOT + "/" + href));

61 Interface ErrorListener Eigener ErrorListener realisieren Klasse Transformer sowie die Factory unterstützen die Möglichkeit einen eigenen ErrorListener zu verwenden seterrorlistener() Dadurch besitzt man die Möglichkeit eine eigene Fehlerbehandlung zu realisieren siehe auch JAXP Parser API, ErrorHandler 36 public interface ErrorListener { public void warning(transformerexception ex); public void error(transformerexception ex); public void fatalerror(transformerexception ex); }

62 Interface ErrorListener Eigener ErrorListener realisieren javax.xml.transform ErrorListener MyListener public class MyListener implements ErrorListener { public void warning(transformerexception ex) throws TransformerException { } logger.warning("mylistener.warning",ex); 37 }...

63 JAXP- TRAX Links JSR 63: Java API for XML Processing Xalan-J : Saxon: OnJava.com: XML Processing with TRAX developer.com: Optimizing Stylesheet Execution with the Java Transformation API for XML (TRAX) 38

JAVA/XML Das bhv Taschenbuch

JAVA/XML Das bhv Taschenbuch Michael Seeboerger-Weichselbaum JAVA/XML Das bhv Taschenbuch UMLJJLLLUJJ Inhaltsverzeichnis Inhaltsverzeichnis Vorwort 15 Teil I: Installation und erste Schritte 17 1 Das Konzept des Buches 19 Aufbau des

Mehr

Web (Site) Engineering (WebSE)

Web (Site) Engineering (WebSE) 1 / 22 Web (Site) Engineering (WebSE) Vorlesung 6: Tools und Programmierung B. Schiemann, P. Reiß Lehrstuhl für Informatik 8 Universität Erlangen-Nürnberg 29.11.2005 2 / 22 Übersicht XML-Beispiel Zugriff

Mehr

Übersicht. Web (Site) Engineering (WebSE) XML-Beispieldokument. Simple API for XML (SAX) [Pro] XML-Beispiel. Vorlesung 6: Tools und Programmierung

Übersicht. Web (Site) Engineering (WebSE) XML-Beispieldokument. Simple API for XML (SAX) [Pro] XML-Beispiel. Vorlesung 6: Tools und Programmierung Übersicht Web (Site) Engineering (WebSE) Vorlesung 6: Tools und Programmierung XML-Beispiel B. Schiemann, P. Reiß Lehrstuhl für Informatik 8 Universität Erlangen-Nürnberg 29.11.2005 Zugriff auf Inhalt,

Mehr

Projektseminar "Texttechnologische Informationsmodellierung"

Projektseminar Texttechnologische Informationsmodellierung Projektseminar "Texttechnologische Informationsmodellierung" Analyse mit XSLT Ziel diese Sitzung Nach dieser Sitzung sollten Sie: Einen ersten Überblick über Funktionen in XPath haben Stylesheets und Templates

Mehr

Softwaretechnik 2 - XML -

Softwaretechnik 2 - XML - Softwaretechnik 2 - XML - Wirtschaftsinformatik 20.07.10 Thomas Perschke Inhalt XML Überblick: Java-API für XML JAXP Heute: SAX Ausblick: DOM Beispielszenario XSL Was ist XML? XML (Extensible Markup Language)

Mehr

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung Matthias Bethke bethke@linguistik.uni-erlangen.de Linguistische Informatik Universität Erlangen-Nürnberg Sommersemester

Mehr

Einführung. Hallo-Welt in XSLT

Einführung. Hallo-Welt in XSLT 2. Vorlagen-Technik Inhalt 1. Einführung 2. Vorlagen 3. XPath 4. Kontrollstrukturen 5. Sortierung, Gruppierung und Nummerierung 6. Parameter und Variablen 7. Vorgaben für Ein- und Ausgabeformate 8. Auslagerung

Mehr

Linux I II III Res WN/TT NLTK XML Weka E XML BNC XSLT BNC/XML 7 BNC/XML XML BNC XSLT. Ressourcen-Vorkurs

Linux I II III Res WN/TT NLTK XML Weka E XML BNC XSLT BNC/XML 7 BNC/XML XML BNC XSLT. Ressourcen-Vorkurs BNC/XML 7 BNC/XML XML BNC XSLT extensible Markup Language I XML erlaubt es, strukturierte Daten in Textdateien zu speichern. Zum Schreiben und Lesen von XML-Dateien genügen einfache Text-Editoren wie Emacs

Mehr

Semistrukturierte Daten

Semistrukturierte Daten Semistrukturierte Daten 7. XSLT Semistrukturierte Daten XSLT Stefan Woltran Institut für Informationssysteme Technische Universität Wien Sommersemester 2011 Stefan Woltran Seite 1 Semistrukturierte Daten

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Berner Fachhochschule Software Schule Schweiz JDOM. http://www.jdom.org/ Beatrice Amrhein. Oktober 06

Berner Fachhochschule Software Schule Schweiz JDOM. http://www.jdom.org/ Beatrice Amrhein. Oktober 06 Berner Fachhochschule Software Schule Schweiz JDOM http://www.jdom.org/ Beatrice Amrhein Oktober 06 1 Motivation JDOM ist ein Open Source, Baumbasiertes, Java API zum Parsen, Erzeugen, Verarbeiten und

Mehr

1 Software Engineering 1

1 Software Engineering 1 1 Software Engineering 1 XML 1.1 XML Extensible Markup Language Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdaten Wird für den Datenaustausch/Speicherung benutzt

Mehr

> Datenstrukturen in Java (Teil 3)

> Datenstrukturen in Java (Teil 3) Datenstrukturen > Datenstrukturen in (Teil 3) Mark Egloff 2006 1 Lernziel Heute Abend > Sie lernen noch eine zusätzliche Datenstrukturen und Ihre Bedeutung kennen Bäume > Sie wissen die Vor und Nachteile

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Eine Schnelleinführung in XSL

Eine Schnelleinführung in XSL Eine Schnelleinführung in XSL Michael Dienert 8. Juli 2014 1 Was ist XSL? XSL ist die Abkürzung von Extensible Stylesheet Language. XSL ist selbst wieder eine XML-Anwendung, d.h. XSL-Dokumente müssen immer

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

XSL Transformation. Eine praxisorientierte Einführung Philip Heck

XSL Transformation. Eine praxisorientierte Einführung Philip Heck XSL Transformation Eine praxisorientierte Einführung Philip Heck Agenda Motivation Hello World - Getting Started with XSLT XSLT Verarbeitung im Detail XPath 2 Motivation datenzentriertes XML als Standard

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

XML Vorlesung FHA SS

XML Vorlesung FHA SS XML Vorlesung FH Aargau, SS 2006 XSL Transformation (XSLT) Teil II Erik Wilde 19.6.2006 Übersicht Conflict Resolution Variablen und Parameter Sortieren Erzeugen des Ausgabebaumes XPath Erweiterungen um

Mehr

IN A NUTSHELL. Elliotte Rusty Harold & W, Scott Means. Deutsche Übersetzung von Kathrin Lichtenberg & Jochen Wiedmann O'REILLY*

IN A NUTSHELL. Elliotte Rusty Harold & W, Scott Means. Deutsche Übersetzung von Kathrin Lichtenberg & Jochen Wiedmann O'REILLY* 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. IN A NUTSHELL Elliotte Rusty Harold & W, Scott Means Deutsche Übersetzung

Mehr

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML 5. Programmierschnittstellen für Grundlagen Dr. E. Schön FH Erfurt Sommersemester 2015 Seite 135 Programmierschnittstelle Notwendigkeit: Zugriff auf -Daten durch Applikationen wiederverwendbare Schnittstellen

Mehr

Projektseminar "Texttechnologische Informationsmodellierung"

Projektseminar Texttechnologische Informationsmodellierung Projektseminar "Texttechnologische Informationsmodellierung" Formatierung und Transformation http://www.text-technology.de/projects/sekimo.html Ziel dieser Sitzung Nach dieser Sitzung sollten Sie: XPath

Mehr

11 XML Programmierung

11 XML Programmierung 11 XML Programmierung Programmatische Interfaces (API) zur Manipulation von XML (DOM und JDOM) Data Binding: Abbildung von DTD/Schema auf isomorphe Datenstrukturen Strombasierte Verarbeitung Integration

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML 5. Programmierschnittstellen für für Medientechnologen Dr. E. Schön Wintersemester 2015/16 Seite 146 Notwendigkeit: Programmierschnittstelle Zugriff auf -Daten durch Applikationen wiederverwendbare Schnittstellen

Mehr

<< Syntax von XSL (2) >>

<< Syntax von XSL (2) >> XSL > 1 XSL Einfache Conditions, Anweisung Mittels kann eine einfache Bedingung mittels XPath Syntax ausgewertet werden. können nur innerhalb

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Erzeugungsmuster. Kapselung der Objekt-Erzeugung Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Übersicht. Web (Site) Engineering (WebSE) Java-Applets II. Java-Applets. Client-basierte Techniken Applets

Übersicht. Web (Site) Engineering (WebSE) Java-Applets II. Java-Applets. Client-basierte Techniken Applets Übersicht Web (Site) Engineering (WebSE) Vorlesung 6: Dynamisierungstechniken für Client und Server B. Schiemann, P. Reiß Lehrstuhl für Informatik 8 Universität Erlangen-Nürnberg 20. 11. 2007 XSL-Verarbeitung

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Programmiermethodik 1. Klausur

Programmiermethodik 1. Klausur Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Programmieren II SAX. Beispiel-Schema kontakt.xsd SAX DOM. Dr. Klaus Höppner JAXB. Hochschule Darmstadt SS 2008

Programmieren II SAX. Beispiel-Schema kontakt.xsd SAX DOM. Dr. Klaus Höppner JAXB. Hochschule Darmstadt SS 2008 Programmieren II SAX Dr. Klaus Höppner DOM Hochschule Darmstadt SS 2008 JAXB 1 / 21 2 / 21 SAX SAX (Simple API for XML) ist eine ereignisorientierte Methode zum Parsen von XML-Dateien. Dies bedeutet, das

Mehr

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

Mehr

XSLT XSL Transformations

XSLT XSL Transformations XML-Praxis XSLT XSL Transformations Teil 2 Jörn Clausen joern@techfak.uni-bielefeld.de Übersicht weitere XSLT-Techniken: Bedingungen, Verzweigungen Schleifen templates aufrufen Variablen, Parameter Anwendungsbeispiel

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

XSLT XSL Transformations

XSLT XSL Transformations XML-Praxis XSLT XSL Transformations Teil 2 Jörn Clausen joern@techfak.uni-bielefeld.de Übersicht weitere XSLT-Techniken: Bedingungen, Verzweigungen Schleifen templates aufrufen Variablen, Parameter Anwendungsbeispiel

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

Extensible Stylesheet Language Transformations XSLT

Extensible Stylesheet Language Transformations XSLT Extensible Stylesheet Language Transformations XSLT 13.06.2007 Grundlagen der Stylesheets XSLT Extensible Stylesheet Language Transformation Transformation Überführt XML-Daten in ein neues Format wieder

Mehr

Seminar Dokumentenverarbeitung

Seminar Dokumentenverarbeitung XPath und XSL/XSLT Seminar Dokumentenverarbeitung Juni 2002 Jan-Gerrit Drexhage jdrexhag@techfak.uni-bielefeld.de Garvin Gripp ggripp@techfak.uni-bielefeld.de 1 XSLT extensible Stylesheet Language (for

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Instrumentierung und Dekodierung

Instrumentierung und Dekodierung 116 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Instrumentierung und Dekodierung Erweiterung der Grafikklassen Das awt-paket erweitert alle Klassen für Grafikobjekte in java.awt, so

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Reflection. Arthur Zaczek. Nov 2014

Reflection. Arthur Zaczek. Nov 2014 Arthur Zaczek Nov 2014 1 Einleitung 1.1 Definition Reflection ist das Auslesen von Metainformationen über Klassen, deren Methoden & Eigenschaften zur Laufzeit. 1.2 Anwendungsfälle Analyse von Programmen

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

XSL. extended Stylesheet Language. Die Stylesheet Sprache für XML

XSL. extended Stylesheet Language. Die Stylesheet Sprache für XML XSL extended Stylesheet Language Die Stylesheet Sprache für XML XPath www.w3.org/tr/xpath Adressierung Die Templates im Stylesheet können nur dann richtig (an der richtigen Stelle) angewandt werden, wenn

Mehr

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

Mehr

Semistrukturierte Daten

Semistrukturierte Daten Semistrukturierte Daten Teil 8: XSLT 1.0 Sommersemester 2007 8.1. Einführung 8.2. Aufbau von XSLT-Stylesheets 8.3. Abarbeitung von XSLT-Stylesheets 8.4. Result Tree 8.5. Kontrollstrukturen 8.6. Variablen,

Mehr

Dateien. DVG Dateien 1

Dateien. DVG Dateien 1 Dateien DVG2-05 - Dateien 1 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem JAVA-Programm her. Das Filesystem enthält als Objekte Devices, Verzeichnisse

Mehr

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR Rainer Stropek cubido Baumschule Expression Trees in C#, CLR und DLR Inhalt Als Anwendungsentwickler kommt man selten mit Expression Trees in Berührung. Sie sind ein Implementierungsdetail von LINQ. Ihre

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Lambda Expressions in Java 8

Lambda Expressions in Java 8 Sie sind da Lambda Expressions in Java 8 Rolf Borst Lambda Expressions sind cool Aus dem Internet Stimmt das? Das total uncoole Beispiel Person nachname : String vorname : String alter : int plz : String

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 3. Klausur Lösung Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

Mehr

Klausur: Java (Liste P)

Klausur: Java (Liste P) Klausur: Java (Liste P) SS05 Erlaubte Hilfsmittel: Gebundene! Unterlagen (Skript mit Anmerkungen, eigene Mitschrift) und maximal ein Buch. Bitte keine losen Blätter. Lösung ist auf den Klausurbögen anzufertigen.

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

XSLT: Transformation von XML

XSLT: Transformation von XML namics Developer Days 21./22.6.2002 XSLT: Transformation von XML Erik Wilde ETH Zürich http://dret.net/netdret/ 21.6.2002 namics DevDays XSLT 1 Übersicht XML als Format für strukturierte Daten Zugriff

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt 26.03.2014 tobias.witt@hhu.de 25.12.01.30 Bürozeiten: 09 Uhr - 12 Uhr FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert

Mehr

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions Kapitel 10 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Exceptions Behandlung von Exceptions Verschiedene Exceptions Mehrere catch-anweisungen Der finally-block WS

Mehr

II.4.5 Generische Datentypen - 1 -

II.4.5 Generische Datentypen - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche

Mehr

10. OLAPLINE-Anwendertreffen

10. OLAPLINE-Anwendertreffen 10. OLAPLINE-Anwendertreffen 26. und 27. April 2017 Schloss Garath Düsseldorf Zwei Tage Weiterbildung und Networking integriert: Vorträge, Workshops und Erfahrungsaustausch rund um TM1 JAVA EXTENSIONS

Mehr

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Transformation von XML-Dokumenten mit XSLT

Transformation von XML-Dokumenten mit XSLT Transformation von XML-Dokumenten mit XSLT Fabian Holzer Proseminar XML - Grundlagen, Verarbeitung und Anwendungen Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl für Systeme der

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10. Institut für Angewandte Informatik

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10.  Institut für Angewandte Informatik Programmieren I Fehlerbehandlung Exceptions Heusch 2. Bd, 3 Ratz 10 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Exceptions und ihre Behandlung Exception - Ausnahmebedingung

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

1. Einführung. Gliederung. Document Object Model (DOM) DOM Die Spezifikation (1) Level 2 HTML Specification. 1. Einführung. 2.

1. Einführung. Gliederung. Document Object Model (DOM) DOM Die Spezifikation (1) Level 2 HTML Specification. 1. Einführung. 2. Gliederung Document Object Model (DOM) Level 2 HTML Specification 1. Einführung Spezifikation 2. DOM Module Levels, Core, Überblick 3. DOM Intern Funktionsweise, Parser 4. DOM Level 2 HTML Eigenschaften,

Mehr

Kapitel 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

Mehr

Übungsstunde 10. Einführung in die Programmierung I

Übungsstunde 10. Einführung in die Programmierung I Übungsstunde 10 Einführung in die Programmierung I Probleme bei Übung 9 [TODO Assistent] Nachbesprechung Übung 10 Aufgabe 1 Comparable boolean lessthan(comparable other) Ziel: Schreiben von Methoden,

Mehr

Java Beans. http://java.sun.com/beans/

Java Beans. http://java.sun.com/beans/ Java Beans http://java.sun.com/beans/ Software Komponenten Eine Software Komponente ist ein eigenständiges, flexibles und einfach wieder verwendbares Stück Software. In Java: + Plattformunabhängigkeit

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Master of Advanced Studies in Software Engineering Java - Advanced Concepts. Musteraufgaben

Master of Advanced Studies in Software Engineering Java - Advanced Concepts. Musteraufgaben 1/7 Musteraufgaben Nr. 1 Enum 1 2 Enum 2 3 Generics 1 4 Generics 2 5 Generics 3 6 Annotation 7 Reflection Aufgabe Hinweis: An der Prüfung dürfen beliebige Papier-Unterlagen verwendet verwendet werden!

Mehr

Kurzanleitung zu XML2DB

Kurzanleitung zu XML2DB Kurzanleitung zu XML2DB Inhaltsverzeichnis 1. Einleitung...3 2. Entwicklungsumgebung...3 3. Betriebsanleitung...3 3.1 Einrichten der Java Umgebung...3 3.2 Allgemeines zu java und javac...4 3.2.1 Allgemeines

Mehr

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1 Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7 Inhaltsverzeichnis RMI Projekt gettime 1 Schritt 1: Interface Klasse definieren 1 Schritt 2: Implementation Class definieren 2 Schritt 3: RMI Compiler erstellen

Mehr

Semistrukturierte Daten

Semistrukturierte Daten Semistrukturierte Daten 8. XSLT Semistrukturierte Daten XSLT Stefan Woltran Emanuel Sallinger Institut für Informationssysteme Technische Universität Wien Sommersemester 2014 Stefan Woltran, Emanuel Sallinger

Mehr

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer Applets Belebung von Webseiten Dipl.-Ing. Wolfgang Beer Was sind Applets? Java Klassen, die spezielle Richtlinien befolgen, um: "in Internet-Browsern lauffähig zu sein" Somit ist, komplexere Funktionalität,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf

Mehr

Exceptions und Vererbung

Exceptions und Vererbung Exceptions und Vererbung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter 2. Exceptions Eigene Exceptions Handling

Mehr

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme Schwerpunkte 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java Imperative Programmierung Beispiel für ein Programm aus drei Komponenten Variable,

Mehr

11. Java Klassen. Klassen - Technisch. Klassen - Beispiel: Erdbebendaten. Klassen - Konzeptuell

11. Java Klassen. Klassen - Technisch. Klassen - Beispiel: Erdbebendaten. Klassen - Konzeptuell Klassen - Technisch Eine Klasse ist eine Einheit mit einem Namen, die Daten und Funktionalität beinhaltet 11. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public

Mehr