XSL Transformation (XML, XSLT, XSL-FO, XPath, XMLUnit, JPdfUnit)

Ähnliche Dokumente
XML. XML-Verarbeitung mittels XSL

XSL-FO XSL Formatting Objects

Transformation von XML-Dokumenten mit XSLT

Wege zur Anzeige. XSL die extensible Stylesheet Language. Wege zur Anzeige. Folie 1. Institut für Dokumentologie und Editorik

Web (Site) Engineering (WebSE)

Seminar Dokumentenverarbeitung Sommersemester 2002

Projektseminar "Texttechnologische Informationsmodellierung"

XML-Praxis XSL-FO. Jörn Clausen

XSLT IDE AUTUMN SCHOOL

XML-Praxis XSL-FO. Jörn Clausen.

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

XML-Praxis XSL-FO. Jörn Clausen

XSLT XSL Transformations

Druckvorlage mit XSL FO

Eine Schnelleinführung in XSL

XSL Transformation. Eine praxisorientierte Einführung Philip Heck

3. Seiten- und Seiten(verlaufs)vorlagen

XSLT XSL Transformations

XSL-Formatting Objects.

Einführung in XML. Seminarunterlage. Version 3.05 vom

Extensible Stylesheet Language Transformations XSLT

Seminar Dokumentenverarbeitung

XSLT 2015/2016 S Seite 1 h_da W

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER

Inhalt des Moduls: Grundlagen. Vorlagen. Kontrollstrukturen. Ausgabestrukturen. Parameter und Variablen. Dateibasierte Auslagerung

XSLT für SAP NetWeaver Process Integration. Transformationssprache für XML Dokumente

4. Kontrollstrukturen

XSLT XSL Transformations

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen

XSLT XSL Transformations

XML-Praxis. XSL-FO Übungen. Jörn Clausen

Transformation von XML-Dokumenten. IDE SummerSchool 2013, Chemnitz

Einführung. Hallo-Welt in XSLT

XML Formatting Objects medienunabhängige Dokumentaufbereitung

APEX und Apache FOP Freie PDF-Erstellung mit APEX 3.0.1

1. Einführung 2. DTD 3. XML Schema 4. XPath 5. XSLT 6. XSL-FO 7. XQuery 8. Web Services 9. XML und Datenbanken

XSL und XSLT. Inhalt. Mathias Heilig XSL Übersicht. Formatierungsprozess. Sprachbeschreibung. Vorführung Resümee

Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

XML-Praxis. Einführung in XSLT. Jörn Clausen

Softwaretechnik 2 - XML -

XSL Transformation (XSLT) Teil II

XML Vorlesung FHA SS

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Einführung in XSL-FO

Grundlagen der Extensible Stylesheet Language

XSL Transformations (XSLT) Teil II

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

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen.

XML-Praxis.

Vorlesung Datenbanken II SS 2006

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

XSL Transformationen. -Teil 2 - Schwerpunkt: Templates und Kontrollstrukturen. XSL Transformationen - Teil 2 Christina Krieglstein / 66

Kurzeinführung in XML. Was ist XML? Well-formed u. gültiges XML Erste Anwendung in XML Externe DTD Attribute und Entities Datenausgabe mit XSL

XSLT, Teil 3. Udo Kelter

XSLT: Transformation von XML

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

XML Vorlesung FHA SS

XSL Transformations (XSLT) Teil I

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

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Semistrukturierte Daten

XML. XML-Dokumente Schemadefinition DOM-Parser SAX-Parser Erzeugen von XML-Dokumenten XSL-Transformation API-Auszug

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

Verteilte Anwendungen. Teil 8: XSL II (XSLT)

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Einführung in XML. Arthur Brack FHDW Hannover. 1. Oktober 2009

Texttransformation mit XSLT

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis

10.5 Extensible Stylesheet Language (XSL)

XML exemplarisch. nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79

Anhang B - Nutzung von XSQL

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Templat-Regeln: XSLT Transformation: XML-Dokumente als Bäume: sieben Arten von Knoten. XSLT Verarbeitungsmodell für Templat-Regeln.

Inhaltsverzeichnis. Vorwort... 15

XML-Verarbeitung. XPath XSL die extensible Stylesheet Language. Torsten Schaßan SCRIPTO Modul 4: EDV Wolfenbüttel

bitflux CMS ein crossmedia-fähiges opensource System ein Vortrag von Marcel Linnenfelser

Einführung in XML Extensible Markup Language

TEI und XSLT. Referat von Hannah Goldschmidt und Christian Lütticke Datenbanktechnologie Sommersemester 2011

Thoma ; ' " >) Einstieg für Anspruchsvolle PEARSON ADDISON-WESLEY. [ in Kooperation mit ] Studium

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

XML Extensible Markup Language

XSLT. h_da SS Seite 1

Agenda. 1. Was können wir mit XSLT alles machen? 1. Beispiele: 1. Webseiten 2. Textprozessierung 3. Datenbankabfragen

Duale Zustellung. Standardprofile. Version 1.0.0, DI Arne Tauber

XSL < Extensible Stylesheet Language/>

Erstellen von PDF-Dokumenten für Business-Anwendungen mit XSL-FO

Web Technologien XML, XQuery, XPath und XSLT

IT-Zertifikat: Daten- und Metadatenstandards. Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT kurz und knackig. XSLT und die Praxis

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

XSL-FO. Einführung Web-basierte Anwendungen. Eine Vertiefungsveranstaltung mit Schwerpunkt auf XML-Technologien. XSL Formatting Objects

Konzept und Realisierung Extensible Stylesheet Language


Formatieren mit DSSSL und XSL-FO

Transkript:

XSL Transformation (XML, XSLT, XSL-FO, XPath, XMLUnit, JPdfUnit) IT-Security WS2011/12 FB02 Elektrotechnik u. Informatik FH Münster Referent: Dominic Sondermann, Philipp Steffan und Alexander Jordan

Inhalt Teil 1 - Einführung XSL Sprachfamilie XSL Transformation / XSLT-Prozessor Objekte Serialisieren (XStream) XSLT BookStoreTransformer Apache FOP Teil 2 - XSL Syntax XPath/ XSLT/XSL-FO Teil 3 - Testing XMLUnit JPDFUnit Teil 4 - Einführung - Praktikum 2

Teil 1 - Einführung XSL Sprachfamilie 3

XSL - Sprachfamilie Extensible Stylesheet Language (XSL) Familie von XML Transformationssprachen Unterteilt sich in XSL Transformation (XSLT) XML Path Language (XPath) XSL Formatting Objects (XSL-FO) Transformation und Präsentation von XML Dokumenten 4

XSL Transformation (XSLT) Transformiert XML-Dokumente in neue XML-Dokumente XSLT-Prozessor Benötigt XSLT- und XML-Dokument z.b. SAXON, XALAN oder XT Implementieren JAXP (Java API for XML Processing) Auswahlkriterien Konformität zu den Standards XSLT und XPath Performance Verbreitung Server- oder Client-seitig Unterteilung in POP (Presentation Oriented Publishing) MOM (Message Oriented Middleware) 5

XSL Transformation (XSLT) II Transformation Nicht prozedural Folgt einem Regelwerk (Template-Regeln) Ablauf 1.XML-Parser liest XML-Dokument und XSLT-Dokument und interpretiert beide als Baum. 2.Anwendung von Regeln auf XML ergibt Ergebnisbaum. 3.Result tree in serielle Form bringen. 6

Objekte Serialisieren XML aus Java Objekt erstellen Anforderungen Traversieren des gesamten Objekts Umgang mit Collections Konvertierungswahl z.b. Attribut wird Element- oder Attributknoten Möglichkeiten via XMLEncoder Simple XML Xstream (Spring) 7

XStream Bibliothek zum (de)serialisieren von Java Objekten Keine Anpassung der Modelklassen (Annotations möglich) Einfache Einbindung package test; public class Person { private String firstname; private String lastname; } public String ObjectToXml(Object o){ XStream xstream = new Xstream(); String xml = xstream.toxml(o); } return xml; public String ObjectToXml(Object o){ XStream xstream = new Xstream(); xstream.alias("target", Person.class); String xml = xstream.toxml(o); } return xml; <test.person> <firstname>john</firstname> <lastname>doe</lastname> </test.person> <target> <firstname>john</firstname> <lastname>doe</lastname> <target> 8

Herausforderungen Referenzen public String toxml() throws Exception { } DummyClass dummy = new DummyClass("testString"); ArrayList<DummyClass> list = new ArrayList<DummyClass>(); list.add(dummy); list.add(dummy); return bst.objtoxml(list); <list> <dummyclass> <dummyattribute>teststring</dummyattribute> </dummyclass> <dummyclass reference="../dummyclass"/> </list> Lösung durch xstream.setmode(xstream.no_references) Hibernate Collections <order>... <createdate>2011-12-04 12:41:51.0</createDate>... <invoiceitemlist class="org.hibernate.collection.persistentbag"> <initialized>true</initialized> <owner class="order" reference="../.."/> <cachedsize>-1</cachedsize> <role>de.fhmuenster.lab4inf.model.order.invoiceitemlist</role> <key class="int">1</key> <dirty>false</dirty> <storedsnapshot class="list">... Lösung durch Xstream Hibernate Converter 9

XSLT XSLT bezeichnet eine Sprache zur Transformation von XML-Dokumenten. Aktuelle Version 2.0 (seit 2007) Verbreitet jedoch Version 1.0 (seit 1999) Deklarativ in XML Später mehr dazu... <xsl:template match="/html/body/content"> <b> <xsl:apply-templates/> </b> </xsl:template> 10

(BookStore)Transformer // String to StreamSource ByteArrayInputStream in1 = new ByteArrayInputStream(xml.getBytes()); Source xmlsource = new StreamSource(in1); // Setup XSL transformer TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newtransformer(new StreamSource(getClass().getResourceAsStream(xslt))); // Set Parameter for output method transformer.setoutputproperty(outputkeys.method, method); // Setup OutputStram ByteArrayOutputStream out = new ByteArrayOutputStream(); Result res = new StreamResult(out); //Start XSLT transformation transformer.transform(xmlsource, res); 1.Instanziieren der TransformerFactory Abstrakte Klasse mit statischer newinstance() Methode Instanziiert konkrete Subklasse die in javax.xml.transform.transformerfactory (System property) angegeben ist. 2.Transformer für angegebene XSL-Datei erzeugen 3.OutputMethode setzen Xml html xhtml text 4.Transformation Starten 11

Apache FOP Formatting Objects Processor Erzeugt aus Layoutdateien (XSL-FO) verschiedene Ausgabeformate wie PDF, PNG, Druckerzeugnisse etc. Primäres Ausgabeformat ist PDF Layout wird in XML beschrieben XSL-FO (Extensible Stylesheet Language Formatting Objects) Kann auch unabhängig von XSLT genutzt werden 12

(BookStore)Transformer II public void fotopdf(string fo,outputstream out) throws IOException, FOPException... 1. Erstellen einer FopFactory Sollte wiederverwendet werden 2. OutputStream/ InputStream vorbereiten 3. FopInstance erstellen Angabe von Ausgabeformat und OutputStream 4. Instanziieren eines JAXP Transformers 5. Start der Transformation Ergebnisse werden durch FOP Transformer geleitet 13

Teil 2 - XSL Syntax 14

XPath Dient der Adressierung von Strukturbestandteilen eines XML-Dokumentes XPath-Ausdrücke liefern Knotenmengen/Sequenzen zurück Beschränkung auf einfache Pfadausdrücke 15

Lokalisierungspfad Ein Pfad besteht aus mehreren Lokalisierungsschritten Trennung durch '/' wie bei unixartigen Pfaden Absolute und relative Pfade möglich Syntax eines einzelnen Schrittes: Achse::Knotentest[Prädikat] Achse: child, parent, descendent, Knotentest: Knotenname, Knotentyp Prädikat: Bedingung 16

Beispiele /child::* /child::order/child::book / /order/book //book //book[1] //book[@author="max"] <order> <date>03.12.2011</date> <book author="max"> <title>j2ee</title> <price>19.99</price> </book> <book author="hugo"> <title>xml</title> <price>4.99</price> </book> <book author="max"> <title>jdo</title> <price>29.95</price> </book> </order> //book[price<10] //book[starts-with(title, "J")] 17

XSLT Transformiert einen Quellbaum zu einem neuen Ergebnisbaum Deklarative Sprache in XML Namespace xsl: http://www.w3.org/1999/xsl/transform Wurzelelement: <xsl:stylesheet> Templatebasiert 18

<xsl:stylesheet> Wurzelelement Attribute: version XSLT-Version Jedes XSLT-Stylesheet beinhaltet dieses Element <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/xsl/transform"> <!-- Top-Level-Elements --> </xsl:stylesheet> 19

XSLT-Stylesheet <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/tr ansform"> </xsl:stylesheet> <order> <date>03.12.2011</date> <book author="max"> <title>j2ee</title> <price>19.99</price> </book> <book author="hugo"> <title>xml</title> <price>4.99</price> </book> <book author="max"> <title>jdo</title> <price>29.95</price> </book> </order> Ergebnis: 03.12.2011 J2EE 19.99 XML 4.99 JDO 29.95 20

<xsl:template> Definiert ein Template (top-level-element) Attribute: match XPath-Ausdruck name Eindeutiger Name des Templates Literale Ergebniselemente werden in das Ergebnisdokument übernommen Beispiel: <xsl:template match="/"> <!-- Content --> </xsl:template> 21

XSLT-Stylesheet Hello World <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/tr ansform"> <xsl:template match="/"> <html> <head><title></title></head> <body>hello World!</body> </html> </xsl:template> </xsl:stylesheet> <order> <date>03.12.2011</date> <book author="max"> <title>j2ee</title> <price>19.99</price> </book> <book author="hugo"> <title>xml</title> <price>4.99</price> </book> <book author="max"> <title>jdo</title> <price>29.95</price> </book> </order> 22

<xsl:apply-templates> Templates mithilfe eines XPath-Ausdrucks anwenden Attribute: select XPath-Ausdruck Falls kein passendes Template definiert wurde, werden Built-In templates angewendet (Rekursiv im Baum absteigen und Textelemente ausgeben) Beispiel: <xsl:apply-templates select="/order/book" /> 23

<xsl:value-of> Inhalte von Knoten zur Laufzeit einfügen Attribute: select XPath-Ausdruck Beispiel <xsl:value-of select="/order/book[1]/title" /> 24

XSLT-Stylesheet <xsl:template match="/"> <html> <body> <table> <xsl:apply-templates select="/order/book" /> </table> </body> </html> </xsl:template> <xsl:template match="book"> <tr> <td> <xsl:value-of select="@author" /> </td> <td> <xsl:value-of select="title" /> </td> <td> <xsl:value-of select="price" /> </td> </tr> <order> <date>03.12.2011</date> <book author="max"> <title>j2ee</title> <price>19.99</price> </book> <book author="hugo"> <title>xml</title> <price>4.99</price> </book> <book author="max"> <title>jdo</title> <price>29.95</price> </book> </order> </xsl:template> Max J2EE 19.99 Hugo XML 4.99 Max JDO 29.95 25

Attributwert-Templates Dynamisch generierte Attribute zu einem Element hinzufügen Problem: <a href="<xsl:value-of select='target' />" /> Lösung: <a href="{target}" /> Für komplexere Fälle: <xsl:attribute> 26

<xsl:output> Ausgabeformat festlegen (top-level-element) Attribute: method Dokumententyp (xml, html, xhtml, text) version Version (nur bei xml, html,...) encoding Zeichensatz indent Einrückung Falls Element nicht vorhanden, so wird versucht den Typ automatisch zu ermitteln Beispiel: <xsl:output method="xml" version="1.0" indent="yes" /> 27

<xsl:if>, <xsl:choose> Bedingte Anweisungen Attribute: test Boolscher XPath-Ausdruck Beispiel: <xsl:if test="starts-with(title,'j')"> <xsl:value-of select="@author" /> </xsl:if> If-then-else bzw. switch: <xsl:choose>, <xsl:when>, <xsl:otherwise> 28

<xsl:for-each> Iteriert über eine Sequenz Attribute: select XPath-Ausdruck Beispiel: <xsl:for-each select="/order/book"> <xsl:sort select="title" order="ascending" /> <xsl:value-of select="title" /></br> </xsl:for-each> 29

<xsl:variable> Speichert einen Wert. Zugriff über $<name>. Globale und lokale Variablen möglich. Attribute: name Variablenname select XPath-Ausdruck Anstelle von select kann der Inhalt auch direkt als Elementinhalt angegeben werden Beispiel: <xsl:variable name="titlevar" select="title" /> <xsl:variable name="var">value</xsl:variable> <xsl:value-of select="$var" /> 30

<xsl:param> Parameter an das Stylesheet übertragen Attribute: name Name des Parameters select XPath-Ausdruck. Standardwert, falls Parameter nicht zugewiesen Zugriff erfolgt wie bei <xsl:variable> Beispiel: <xsl:param name="cur">dollar</xsl:param> transformer.setparameter("cur", "Euro"); 31

XSL-FO Formatierungssprache für seitenorientierte Präsentationen von XML-Dokumenten PDF, Postscript Namespace fo: http://www.w3.org/1999/xsl/format Wurzelelement: <fo:root> XSL-FO-Dokumente teilen sich auf in: <fo:layout-master-set> - Seitenvorlagen <fo:page-sequence> - Inhalt der Seiten 32

Seitenvorlagen Definieren die Ausmaße einer Seite (z.b. A4) Wurzel : <fo:layout-master-set> Ausmaße: <fo:simple-page-master> Regionen: Body, Before, After, Start, End <fo:layout-master-set> <fo:simple-page-master master-name="simplea4" page-height="29.7cm" page-width="21cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm"> <fo:region-body /> </fo:simple-page-master> </fo:layout-master-set> 33

Seiten Inhalte können an den Rändern oder im Body dargestellt werden Wurzel : <fo:page-sequence> Statische Inhalte: <fo:static> Fließtexte: <fo:flow> <fo:page-sequence master-reference="simplea4"> <fo:static-content flow-name="xsl-region-before"> <fo:block font-size="0.5em"> Mustermann GmbH & Co. KG </fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:block font-size="16pt" font-weight="bold" space-after="5mm"> <xsl:value-of select="/order/book[1]/title" /> </fo:block> </fo:flow> </fo:page-sequence> 34

XSLT XSL-FO <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:fo="http://www.w3.org/1999/xsl/format"> <xsl:output method="xml" version="1.0" indent="yes" /> <xsl:template match="/"> <fo:root xmlns:fo="http://www.w3.org/1999/xsl/format"> <fo:layout-master-set> <fo:simple-page-master master-name="simplea4" page-height="29.7cm" page-width="21cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm"> <fo:region-body margin="1cm" /> <fo:region-before extent="1cm" /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="simplea4"> <fo:static-content flow-name="xsl-region-before"> <fo:block font-size="0.5em"> Mustermann GmbH & Co. KG </fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:block font-size="16pt" font-weight="bold" space-after="5mm"> <xsl:value-of select="/order/book[1]/title" /> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> </xsl:stylesheet> 35

Teil 3 - Testing 36

XMLUnit http://xmlunit.sourceforge.net/ Maven: xmlunit 1.3 (Stand: September 2009) Kompatibel zu JUnit 3.x Durch XMLAssert auch unter JUnit 4.x Allgemein: Erkennt Differenzen zwischen XML-Strings Kann XPath-Ausdrücke evaluieren Validiert XML gegen DTD (Document Type Definition) oder XSD (XML Schema Definition) 37

XMLUnit Einbinden der Dependency <dependency> <groupid>xmlunit</groupid> <artifactid>xmlunit</artifactid> <version>1.3</version> </dependency> Verwendung public class BookStoreTransformerTest extends XMLTestCase { oder } public void testxsltransformoutputmethodhtml() throws Exception {... assert... } public class BookStoreTransformerTest { } public void testxsltransformoutputmethodhtml() throws Exception {... XMLAssert.assert... } 38

XMLUnit Beispiel I <de.fhmuenster.lab4inf.model.dummyclass> <dummyattribute>teststring</dummyattribute> </de.fhmuenster.lab4inf.model.dummyclass> 39

XMLUnit Beispiel II Erwartet: <?xml version= 1.0 encoding= UTF-8?> <html> <head><title/></head> <body> TestString </body> </html> Erzeugt: <?xml version='1.0' encoding='utf-8'?> <html> <head><title></title></head> <body> TestString </body> </html> assertequals: asserttrue(similar): asserttrue(identical): fail ok ok 40

XMLUnit Beispiel II Erwartet: <?xml version= 1.0 encoding= UTF-8?> <html> <head><title/></head> <body> TestString </body> </html> Erzeugt: <?xml version='1.0' encoding='utf-8'?> <html> <body> TestString </body> <head><title/></head> </html> assertequals: asserttrue(similar): asserttrue(identical): fail ok fail 41

XMLUnit Weitere Möglichkeiten: Whitespace oder Kommentare ignorieren Nur XML-Skelett überprüfen lassen Mit DetailedDiff die Anzahl an Unterschieden feststellen Mit dem TolerantSaxDocumentBuilder wohlgeformte HTML-Dateien erzeugen 42

JPDFUnit http://jpdfunit.sourceforge.net Maven: jpdfunit 1.1 (Stand: Dezember 2009) Allgemein: Simple API um PDF-Dateien zu testen Überprüft Inhalte und Metadaten einer.pdf Inhalte auch mittels REGEXP in einer.pdf suchen 43

JPDFUnit einbinden Einbinden des Repository <repositories> <repository> <id>jpdfunit-repo</id> <url>http://jpdfunit.sourceforge.net/repo</url> </repository> </repositories> Einbinden der Dependency <dependency> <groupid>net.sf.jpdfunit</groupid> <artifactid>jpdfunit</artifactid> <version>1.1</version> </dependency 44

JPDFUnit Verwendung public class BookStoreTransformerTest extends DocumentTestCase { } public void testxsltransformoutputmethodhtml() throws Exception {... assert... } oder public class BookStoreTransformerTest { } public void testxsltransformoutputmethodhtml() throws Exception { DocumentTester tester = new DocumentTester( Pfad/zum/pdf ); tester.assert... } 45

JPDFUnit Beispiel I Auf Inhalte im PDF prüfen Möglichkeiten bei TextSearchType: CONTAINS STARTSWITH ENDSWITH REGEXP... Oder Inhalte auf bestimmter Seite suchen tester.assertcontentcontainstextonpage("teststring", 1, TextSearchType.CONTAINS); 46

JPDFUnit Beispiel II Meta-Angaben prüfen 47

Quellen W3C Standards Apache-FOP Projekt XML von Becher, Margit (als E-Book über FH-Bibliothek beziehbar) W3Schools.com 48

Praktikum http://www.mscit.de/public:xsl 49