Softwaretechnologien Teil: XML-Technologien und Programmierung Master-Studiengang IKT Herbst 2010

Größe: px
Ab Seite anzeigen:

Download "Softwaretechnologien Teil: XML-Technologien und Programmierung Master-Studiengang IKT Herbst 2010"

Transkript

1 Softwaretechnologien Teil: XML-Technologien und Programmierung Master-Studiengang IKT Herbst 2010 Matthias K. Krause, Hochschule für Telekommunikation, Leipzig 7. Oktober 2010 Dieses Skript ist hier und ergänzendes Material zur Veranstaltung liegt hier 1

2 Inhaltsverzeichnis 1 Themen 3 2 Ein kurzer Exkurs zu ant 4 3 Extended Markup Language (XML) XML Document Type Description (DTD) XML Schema XSL/XSLT XSL in der XML-Sprachfamilie Einfache Transformationen mit Schleifen Bedingungen Gruppierungen Templates Fremdschlüssel Durchschleifen von XML-Tags Ein komplettes Beispiel XML-API-Programmierung Java API for XML Processing (JAXP) Simple API for XML (SAX) Document Object Model (DOM) XSLT Grundlegende Probleme Konfigurationsdaten und Internationalisierung (I18n) Datenbank-Programmierung mit JDBC

3 1 Themen Der Vorlesungsteil beschäftigt sich schwerpunktmäßig mit XML-Technologien: Einführend wird ein Softwaretool namens ant vorgestellt, dessen Steuerdateien im XML-Format dargestellt werden. ant dient der Automatisierung von Abläufen, anhand der Steuerdateien wird ersichtlich, wie XML prinzipiell aufgebaut ist und wie der Rahmen XML, der an sich ohne jegliche inhaltliche Bedeutung ist, als Behälter für etwas wie eine Ablaufprogrammierung dienen kann. Der nächste Teil beschreibt XML (Extended Markup Language) mit ihren Eigenschaften und Bestandteilen, im weiteren wird gezeigt, wie mit der XML-Sprache XSLT (Extended Stylesheet Language Transformations) Transformationen zwischen verschiedenen XML-Formaten durchgeführt werden können. Weiterhin geht es um dem Umgang mit XML-Dokumenten aus Programmiersprachen heraus, hier insbesondere am Beispiel von Java. Ergänzend werden einige grundlegende Themen wie Ablage von Konfigurationsdaten durch Programme, Internationalisierung und Datenbankprogrammierung innerhalb von Java angerissen. 3

4 2 Ein kurzer Exkurs zu ant ant ist ein Produkt der Apache Software Foundation. Es ist ein Tool, welches, ähnlich wie make, in einem automatisierten Ablauf eine Reihe von Handlungen abarbeiten kann und dabei Schritte bedingt ausführen kann. So kann man mit ant z.b. Compilieren und/oder Linken, wenn beim Linken festgestellt wird, daß der Quellcode neuer als der Objektcode ist, wird vorher noch compiliert. ant bedient sich einer Konfigurationsdatei, die in XML geschrieben ist, was in diesem Kurs als Einstieg in XML verwendet werden soll. Andererseit ist die Leistung von ant an sich interessant und an vielen Stellen für die Automatisierung von Abläufen verwendbar. Von Vorteil ist die Tatsache, daß das Tool betriebssystemunabhängig ist, Voraussetzungen sind nur die im Folgenden genannten Software-Voraussetzungen: ant (die Software und Informationen dazu befinden sich im jwsdp, in der Java Enterprise Edition oder kann bei der Apache Software Foundation bezogen werden) Java-Standard-Edition Ein Blick ins ant-manual [1] bringt uns Infos zum Aufruf (das Makefile heißt build.xml) ant [options] [target [target2 [target3]...]] Options: -help, -h print this message -version print the version information and exit -quiet, -q be extra quiet -verbose, -v be extra verbose -debug, -d print debugging information -lib <path> specifies a path to search for jars and classes -buildfile <file> use given buildfile (default: build.xml) -file <file> -f <file> -D<property>=<value> use value for given property -propertyfile <name> load all properties from file with -D properties taking precedence... und im Teil Using ant einen Überblick zu seinen wesentlichen Bestandteilen: project, das Rootelement, welches alle Informationen zum Build-Vorgang enthält. Das Default-Target (default-attribut) wird bei Aufruf ohne Targetangabe verwendet: 1 <project name="myproject" default="dist" basedir="."> 2 <description> 3 simple example build file 4 </description> HIER STEHEN ALLE ANDEREN ELEMENTE DER STEUERDATEI 7 8 </project> properties sind Eigenschaften, die an zentraler Stelle gesetzt und dann an verschiedenen Stellen im Skript genutzt werden können (Vorsicht: properties sind NICHT änderbar, ist der Wert gesetzt, bleibt er so, auch wenn er scheinbar im Text überschrieben wurde!!!) 4

5 <property name="src" location="src"/> 3 <property name="build" location="build"/> 4 <property name="dist" location="dist"/> 5 <property name="who" value="peter"/> 6... targets sind Container für Tasks, die beim Ruf angegeben und ausgeführt werden können. Über ein depends-attribut können andere Targets angegeben werden, die, falls ihr Produkt nicht aktuell ist, vorher ausgeführt werden. 1 <target name="copyshop" depends="init"...> 2 <mkdir... /> 3 <copy... /> 4 </target> Hier enthält das Target zwei Tasks mit den Namen mkdir und copy. Ist das Target init nicht aktuell (das bedeutet, das der Zustand der Ergebnisse der Abarbeitung von init nicht aktuell ist) wird init aufgerufen. Danach werden die beiden eingeschlossenen Tasks abgearbeitet. tasks sind Aufgaben, die ausgeführt werden können, hier beschreibt der Elementname schon den Charakter der Task, Beispiele sind: Compilieren von Javacode: javac, Kopieren von Files: copy, Verpacken mit dem Zip-Mechanismus: zip, Durchführen einer XSL Transformation: Xslt/Style Folgendes Listing bringt einen Einblick in die Möglichkeiten, die sich mit ant eröffnen: Listing 1: einfaches Makefile build.xml 1 <project name="myproject" default="dist" basedir="."> 2 <description> 3 simple example build file 4 </description> 5 <!-- set global properties for this build --> 6 <property name="src" location="src"/> 7 <property name="build" location="build"/> 8 <property name="dist" location="dist"/> 9 10 <target name="init"> 11 <!-- Create the time stamp --> 12 <tstamp/> 13 <!-- Create the build directory structure used by compile --> 14 <mkdir dir="${build}"/> 15 </target> <target name="compile" depends="init" 18 description="compile the source " > 19 <!-- Compile the java code from ${src} into ${build} --> 20 <javac srcdir="${src}" destdir="${build}"/> 21 </target> 22 5

6 23 <target name="doc" depends="compile" 24 description="generate the javadoc docu" > 25 <!-- Create the doc directory --> 26 <mkdir dir="${dist}/doc"/> 27 <javadoc destdir="${dist}/doc"> 28 <fileset dir="${src}" /> 29 </javadoc> 30 </target> <target name="dist" depends="compile,doc" 33 description="generate the distribution" > 34 <!-- Create the distribution directory --> 35 <mkdir dir="${dist}/lib"/> <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file --> 38 <jar jarfile="${dist}/lib/myproject-${dstamp}.jar" basedir="${build}"/> 39 </target> <target name="clean" description="clean up" > 42 <!-- Delete the ${build} and ${dist} directory trees --> 43 <delete dir="${build}"/> 44 <delete dir="${dist}"/> 45 </target> 46 </project> Das File ist nahezu selbsterklärend, hingewiesen werden soll lediglich auf die Erzeugung eines Zeitstempels (Timestamp - Zeile 12) und die Nutzung des zugehörigen Datumsstempels (Zeile 35). Übung 1 Schreiben Sie ein build-file für ant, durch das eine Verzeichnisstruktur (Angabe in einer property) in ein Zip-File verpackt wird, dessen Name das Datum in der Form...yyyymmdd... enthält! Im weiteren Verlauf werden wir ant auch verwenden, um Aufgaben im Bereich XML/XSLT zu realisieren: XmlValidate (optional task, validiert eine XML-Datei, im Beispiel ist die DTD in der XML-Datei angegeben) <xmlvalidate file="data.xml"/> XSLT (core task, macht eine XSL-Transformation ohne Validierung) <xslt in="data.xml" style="style.xsl" out="data.html"/> SchemaValidate (optional task, validiert eine XML-Datei, speziell zur Validierung gegen ein XMLSchema) <schemavalidate nonamespacefile="schema.xsd" file="data.xml" /> Das File data.xml selbst enthält selbst keine Schemadeklaration bzw. Namespaces 6

7 3 Extended Markup Language (XML) Folgenden Stoff wollen wir behandeln: Aufbau und Gestaltung von XML-Files inhaltliche Restriktionen mit DTD und XMLSchema textuelle Transformationen mit XSLT 3.1 XML Unter finden Sie die Empfehlung des W3C zur Extensible Markup Language (XML) 1.0 (Second Edition), DIE Quelle zur Spezifikation von XML. Es gibt dort auch eine deutsche Übersetzung, die allerdings, da nicht sämtliche Links im Dokument vorhanden sind, nicht so gut navigierbar ist wie das Original. Unter ( ) ist eine navigierbare deutsche Übersetzung zu finden. Kurz und handlich ist XML kurz & gut [2] Im Java Enterprise Tutorial [3, Kap. Introduction To XML] finden Sie eine kurze Einführung in XML, Publikationen wie Java ist auch eine Insel [10] und das HTML-Kompendium Selfhtml [9] von Stefan Münz enthalten mittlerweile auch gute Einführungen bzw. Zusammenfassungen. Zu XML etc. gibt es eine umfangreiche Sammlung von Tutorials, die genutzt werden können, z.b. Sie sollten ein XML-File verstehen, aber auch selbst aus einem Datensatz entwickeln können. Folgende Teile sollten Ihnen geläufig sein: der Prolog mit seinen Teilen und Attributen eine einfache DTD Kommentare Elemente und Attribute Processing Instructions Struktur eines Dokuments: Prolog: XMLDeclaration (optional, immer 1.Zeile): <?xml version="1.0" encoding="iso " standalone="yes"?> DocumentTypeDeclaration(optional): <!DOCTYPE Buchladen SYSTEM "_bsp.dtd"> Wurzel-Element: ein Dokument enthält genau ein (Wurzel-)Element, welches wiederum Elemente und/oder Charakterdaten enthält. Ein Element besteht aus einem Starttag (ggf. mit Parametern), Inhalt (Elemente, Charakterdaten) und einem Endetag 7

8 <elementname parm1="wert1"...> Inhalt </elementname> oder aber ist leer und besteht aus einem Anfangs- und Endetag mit Parametern (oder ohne) <elementname parm1="wert1"... /> Ein typisches Beispiel für ein leeres Element ohne Parameter ist <br/>, der Linebreak im XHTML, der entsprechend dem XML-Standard nicht als einzelnes öffnendes Tag <br>, wie oft im HTML genutzt, erscheinen darf. Verschiedenes (Miscellaneous) (an beliebigen Stellen von Prolog oder Element, aber nicht in Tags): Kommentare: <!-- This is a comment --> Processing Instructions: <?target instructions?> oft im Prolog eines XML-Datensheets mit Hinweis auf das entsprechende Stylesheet Mögliche oder notwendige Eigenschaften eines XML-Dokuments: Wohlgeformtheit (Well Formedness): Das Dokument entspricht in der Struktur der W3C-Empfehlung (allen Well Formedness Constraints der Empfehlung), jedes XML-Dokument muss dieser Eigenschaft genügen Gültigkeit (Validity): Die Element- und Attribut-Zusammensetzung entspricht einer Document Type Description (DTD) (siehe 3.1.1) oder einem XML Schema (siehe 3.1.2) (allen Validity Constraints der Empfehlung), ein Dokument kann diese Eigenschaft haben. Namespaces (Namensräume) Die Vereinbarung von Namespaces erfolgt die Angabe eines Attributes xmlns:nsname=" innerhalb eines Elementes, wobei nsname der zu vergebende Namespacename ist Die Nutzung durch die Angabe des Namespacenamens als Präfix nsname:elementname Beispiel: der XSL-Namespace im XSL Stylesheet Beispiele für XML-Dateien Listing 2: zunächst ein einfaches File mit (optionaler) xml-deklaration 1 <?xml version= 1.0 encoding= ISO standalone= yes?> 2 3 <Buchladen 4 Ort="Leipzig" 5 Strasse="Heldenplatz" 6 > 7 <!-- ein Kommentar --> 8

9 8 9 <Buch Genre="Prosa"> 10 <Autor> Peter Traurig </Autor> 11 <Titel> Großes Drama </Titel> 12 <Verlag> Weinheim Heuler </Verlag> 13 </Buch> <Buch Genre="Sachbuch"> 16 <Einband Quelle="c gif"/> 17 <Autor> Hans Hansen </Autor> 18 <Titel> Neue Sichten </Titel> 19 <Verlag> Taschen </Verlag> 20 </Buch> </Buchladen> Document Type Description (DTD) Ein XML-Dokument kann durch die Angabe einer Document Type Description inhaltlichen Zwängen der Elementzusammensetzung und -struktur unterworfen werden. Eine DTD enthält im Wesentlichen ELEMENT-Beschreibungen <!ELEMENT elementname typangabe> wobei es für die Typangabe verschiedene Möglichkeiten gibt: ANY (bedeutet beliebiger Inhalt) die Typangabe kann in Klammern gesetzt werden, z.b. (#PCDATA) (von Parsed Character Data) eine Komma-Liste von Elementen, dann ist die Reihenfolge zwingend, oder eine Auswahl (mit Trenner ), dazu optional die RegExpr-Wiederholungszeichen (*,+,? für 0 bis beliebig oft, 1 bis beliebig oft, optional) Beschreibungen von Attributlisten von Elementen <!ATTLIST elementname attributliste> wobei attributliste eine spaceseparierte Liste aus Attributbeschreibungen mit ist. Attributname, Typ (CDATA Auswahl ID..eindeutiger Schlüssel im Dokument IDREF spaceseparierte IDREFS...), Defaultdeklaration (#REQUIRED #IMPLIED (#FIXED)? Defaultwert) Entity-Definitionen <!ENTITY entityname "ersetzungszeichen"> 9

10 Nutzung im Text mit &entityname; Es gibt eine ganze Reihe vordefinierte Entities: & < > " &apos; für & < > "... und die XML-Datei von oben mit einem Link auf eine externe DTD ( die DTD bzw. ein XML Schema ist zwingend, wenn es sich um gültiges XML handeln soll) Listing 3: XML-File mit Link auf externe DTD 1 <?xml version= 1.0 encoding= ISO ?> 2 3 <!DOCTYPE Buchladen SYSTEM "_bsp.dtd"> 4 5 <Buchladen 6 Ort="Leipzig" 7 Strasse="Heldenplatz" 8 > </Buchladen>... mit der dazugehörigen Document Type Definition (_bsp.dtd)... Listing 4: externe DTD 1 <?xml version= 1.0 encoding= ISO ?> 2 3 <!-- 4 DTD fuer einen Buchladen 5 --> 6 7 <!ELEMENT Buchladen (Buch*)> 8 <!ATTLIST Buchladen 9 Ort CDATA #REQUIRED 10 Strasse CDATA #REQUIRED 11 Besitzer CDATA #IMPLIED 12 > 13 <!ELEMENT Buch (Einband?, Autor, Titel, Verlag)> 14 <!ATTLIST Buch 15 Genre (Prosa Lyrik Sachbuch) #IMPLIED 16 > 17 <!ELEMENT Einband EMPTY> 18 <!ATTLIST Einband 19 Alternative CDATA #IMPLIED 20 Quelle CDATA #REQUIRED 21 Typ CDATA "image/gif" 22 > 23 <!ELEMENT Autor (#PCDATA)> 24 <!ELEMENT Titel (#PCDATA)> 25 <!ELEMENT Verlag (#PCDATA)> 26 <!ENTITY copyright "&#xa9"> 10

11 Die DTD kann auch, quasi inline, im XML-File liegen, hier Auszüge aus einer solchen Version: Listing 5: XML-File mit inline DTD 1 <?xml version= 1.0 encoding= ISO ?> 2 3 <!DOCTYPE Buchladen [ 4 <!ELEMENT Buchladen (Buch*)> <!ELEMENT Titel (#PCDATA)> 8 <!ELEMENT Verlag (#PCDATA)> 9 ]> <Buchladen 12 Ort="Leipzig" 13 Strasse="Heldenplatz" 14 > 15 <!-- ein Kommentar --> </Buchladen> Übung 2 In einem XML-File soll eine Semestergemeinschaft gespeichert werden. Die Semestergemeinschaft hat einen Namen und enthält Studenten, die eine Matrikelnummer, einen Namen, einen Vornamen und ein Geburtsdatum haben. Geben Sie ein entsprechendes XML-File mit min. einem Studenten und einer dazu passenden inline-dtd an XML Schema Im Gegensatz zur DTD bietet XML Schema umfangreiche Möglichkeiten der Festlegung von Datentypen und Restriktionen. Folgende Dokumente beinhalten die Definition von XML Schema: XML Schema Part 0: Primer Second Edition ein Tutorial mit Beispielen und Einführungen XML Schema Part 1: Structures Second Edition XML Schema Part 2: Datatypes Second Edition Es ist selbst in XML formuliert, was die Möglichkeit der Behandlung mittels XML-Tools bietet. Jede XML Schema definition besteht aus einem Wurzelelement schema, der Name des Namespaces ist nicht vorgeschrieben: <xsd:schema xmlns:xsd=" </xsd:schema> Auf diese Schemadefinition wird, bei Arbeit ohne Namespaces im XML-File, folgendermaßen verwiesen: 11

12 <documentroot xmlns:xsi=" xsi:nonamespaceschemalocation= Buchladen.xsd >... </documentroot> Wesentliche Bestandteile einer XML Schema Definition: element Attribute: name ref type Inhalt: anstelle des Attributes type kann auch ein Typ-Element (simpletype, complextype) oder Struktur-Element (sequence,... ) eingebettet sein simpletype Standardtypen (sind bereits definiert): string, int, integer, positiveinteger, nonpositiveinteger, date, oder mit dem XML-Element simpletype eigene Typen definieren! restriction Constraints on Simple Type Definition Schema Components (siehe Part 2) können mit Facetten (facets) realisiert werden: pattern, minlength, minexclusive, mininclusive, max...,... (alles XML-Elemente) complextype charakterisiert eine (komplexe) Datenstruktur, nicht nur einen Einzelwert sequence stellt eine geordnete Reihenfolge von Elementen dar, die im Defaultfall jedes genau einmal vorkommen choice, genau ein Element erscheint Listing 6: XML Schema für den Buchladen 1 <xsd:schema xmlns:xsd=" 2 3 <xsd:annotation> 4 <xsd:documentation xml:lang="de"> 5 XML Schema fuer Buchladen 6 </xsd:documentation> 7 </xsd:annotation> 8 9 <xsd:element name="buchladen" type="buchladentyp"/> <xsd:complextype name="buchladentyp"> 12 <xsd:sequence> 13 <xsd:element name="buch" type="buchtyp" 14 minoccurs="0" maxoccurs="unbounded"/> 15 </xsd:sequence> 16 <xsd:attribute name="ort" type="xsd:string" use="required"/> 17 <xsd:attribute name="strasse" type="xsd:string" use="required"/> 18 <xsd:attribute name="besitzer" type="xsd:string"/> 19 </xsd:complextype> 12

13 20 21 <xsd:complextype name="buchtyp"> 22 <xsd:sequence> 23 <xsd:element name="einband" type="xsd:string" minoccurs="0"> 24 <xsd:attribute name="alternative"/> 25 <xsd:attribute name="quelle" use="required"/> 26 <xsd:attribute name="typ" default="image/gif"/> 27 </xsd:element> 28 <xsd:element name="autor" type="xsd:string"/> 29 <xsd:element name="titel" type="xsd:string"/> 30 <xsd:element name="verlag" type="xsd:string"/> 31 </xsd:sequence> 32 <xsd:attribute name="genre" type="xsd:genrestyp"/> 33 </xsd:complextype> <xsd:simpletype name="genrestyp"> 36 <xsd:restriction base="xsd:string"> 37 <xsd:enumeration value="prosa"/> 38 <xsd:enumeration value="lyrik"/> 39 <xsd:enumeration value="sachbuch"/> 40 </xsd:restriction> 41 </xsd:simpletype> </xsd:schema> Der folgende Schemaausschnitt verdeutlicht am Beispiel der Definition eines einfachen Datentyps für numerische IP-Adressen, wie mit regulären Ausdrücken das Aussehen von Strings gewissen Regeln unterworfen werden kann. Der Name des Datentypes, auf den dann in Element- oder Attributdefinitionen Bezug genommen werden kann, ist IP4Num. Er beruht auf dem Datentyp string und ist einer durch ein pattern-element formulierten Bedingung unterworfen. Listing 7: Datentyp für numerische IP-Adresse 1 <xsd:simpletype name="ip4num"> 2 <xsd:restriction base="xsd:string"> 3 <xsd:pattern value="\d{1,3}(\.\d{1,3}){3}"/> 4 </xsd:restriction> 5 </xsd:simpletype> Und das folgende XML Schema aus dem XML Schema Part 0: Primer Second Edition soll ergänzend einige Bestandteile von XML Schema zeigen: Listing 8: XSD aus Part 0 Primer 1 <xsd:schema xmlns:xsd=" 2 3 <xsd:annotation> 4 <xsd:documentation xml:lang="en"> 5 Purchase order schema for Example.com. 6 Copyright 2000 Example.com. All rights reserved. 7 </xsd:documentation> 8 </xsd:annotation> 9 13

14 10 <xsd:element name="purchaseorder" type="purchaseordertype"/> <xsd:element name="comment" type="xsd:string"/> <xsd:complextype name="purchaseordertype"> 15 <xsd:sequence> 16 <xsd:element name="shipto" type="usaddress"/> 17 <xsd:element name="billto" type="usaddress"/> 18 <xsd:element ref="comment" minoccurs="0"/> 19 <xsd:element name="items" type="items"/> 20 </xsd:sequence> 21 <xsd:attribute name="orderdate" type="xsd:date"/> 22 </xsd:complextype> <xsd:complextype name="usaddress"> 25 <xsd:sequence> 26 <xsd:element name="name" type="xsd:string"/> 27 <xsd:element name="street" type="xsd:string"/> 28 <xsd:element name="city" type="xsd:string"/> 29 <xsd:element name="state" type="xsd:string"/> 30 <xsd:element name="zip" type="xsd:decimal"/> 31 </xsd:sequence> 32 <xsd:attribute name="country" type="xsd:nmtoken" 33 fixed="us"/> 34 </xsd:complextype> <xsd:complextype name="items"> 37 <xsd:sequence> 38 <xsd:element name="item" minoccurs="0" maxoccurs="unbounded"> 39 <xsd:complextype> 40 <xsd:sequence> 41 <xsd:element name="productname" type="xsd:string"/> 42 <xsd:element name="quantity"> 43 <xsd:simpletype> 44 <xsd:restriction base="xsd:positiveinteger"> 45 <xsd:maxexclusive value="100"/> 46 </xsd:restriction> 47 </xsd:simpletype> 48 </xsd:element> 49 <xsd:element name="usprice" type="xsd:decimal"/> 50 <xsd:element ref="comment" minoccurs="0"/> 51 <xsd:element name="shipdate" type="xsd:date" minoccurs="0"/> 52 </xsd:sequence> 53 <xsd:attribute name="partnum" type="sku" use="required"/> 54 </xsd:complextype> 55 </xsd:element> 56 </xsd:sequence> 57 </xsd:complextype> <!-- Stock Keeping Unit, a code for identifying products --> 60 <xsd:simpletype name="sku"> 61 <xsd:restriction base="xsd:string"> 62 <xsd:pattern value="\d{3}-[a-z]{2}"/> 63 </xsd:restriction> 14

15 64 </xsd:simpletype> </xsd:schema> 3.2 XSL/XSLT Software-Voraussetzung: ein XSLT-fähiger Browser (Internetexplorer, Mozilla, Firefox,... )... oder ein XSLT-Prozessor (der ab Java 1.4 bereits in der Standardbibliothek enthalten ist) XSL in der XML-Sprachfamilie Während XML ganz allgemein eine Markup-Sprache zur Speicherung beliebiger Daten/Informationen ist, wurden zur Trennung von Daten und Formatierung weitere Empfehlungen für ebenfalls auf XML beruhenden Sprachen und damit verbundene Spezifikationen wie XSL, XSLT, XPath und viele andere durch das W3C entwickelt: XML (Extensible Markup Language (XML) 1.0 (Second Edition)) die Empfehlung zum Aufbau jedes XML-Dokumentes Extensible Stylesheet Language (XSL) Version beschreibt die Möglichkeit, xml-daten mittels Stylesheet (auch XML) in beliebige Zielformate formatieren zu können XSL Transformations (XSLT) Version beschreibt die Möglichkeit, xml-daten mittels Stylesheet (auch XML) rein textuell transformieren zu können XML Path Language (XPath) Version Ausdruckssprache (expression language) für den Zugriff auf XML-Elemente, die in XSLT genutzt wird, sie enthält XPath-Funktionen (The default prefix for the function namespace is fn, and the URI is Für eine Transformation werden also im Allgemeinen Daten und eine Transformationsanweisung benötigt. Einige XSLT-Tutorials: XSLT-Tutorial I: Grundlagen und erste Beispielanwendung XSLT & XPath Tutorial XSLT Tutorial 15

16 3.2.2 Einfache Transformationen mit Schleifen Listing 9: Einfaches Beispiel eines Datenfiles gw.xml 1 <?xml version="1.0" encoding="iso " standalone="no"?> 2 <?xml-stylesheet href="gw.xsl" type="text/xsl"?> 3 <x> 4 <xy a="1"> <b>1</b> <xyz> A </xyz> </xy> 5 <xy a="1"> <b>1</b> <xyz> B </xyz> </xy> 6 <xy a="2"> <b>2</b> <xyz> D </xyz> <opt> 12 </opt> </xy> 7 <xy a="3"> <b>3</b> <xyz> E </xyz> </xy> 8 <xy a="3"> <b>3</b> <xyz> F </xyz> <opt> 17 </opt> </xy> 9 <xy a="4"> <b>4</b> <xyz> G </xyz> </xy> 10 <xy a="1"> <b>1</b> <xyz> C </xyz> </xy> 11 </x> welches über eine Transformation mittels gw.xsl, wie die Instruktionsanweisung in der 2. Zeile des Datenfiles besagt, transformiert werden soll. Die Einbettung des Namens des Transformationssheets in das xml-file ist nicht unbedingt nötig, sie wird vor allem dort verwendet, wo eine feste Zuordnung gewünscht bzw. notwendig ist, wenn z.b. das xml-file direkt durch den Browser angefordert wird. Durch die folgende Transformation wird ein Teil der Daten (das Attribut a und der Inhalt von b) aller Datensätze ausgegeben: Listing 10: Das XSLT-File gw.xsl zum Datenfiles gw.xml 1 <?xml version="1.0" encoding="iso "?> 2 3 <!-- <xsl:stylesheet xmlns:xsl=" working draft (fuer IE 5.x zu verwenden) 5 --> 6 7 <xsl:stylesheet xmlns:xsl=" 8 version="1.0"> 9 <xsl:template match="/"> 10 Attr_a b 11 <xsl:for-each select="x/xy"> 12 Datensatz <xsl:value-of select="@a" /> <xsl:value-of select="b" /> 13 </xsl:for-each> 14 </xsl:template> 15 </xsl:stylesheet> Das durch die Transformation erzeugte Produkt sieht folgendermaßen aus: Attr_a b Datensatz 1 1 Datensatz 1 1 Datensatz 2 2 Datensatz 3 3 Datensatz 3 3 Datensatz 4 4 Datensatz

17 An diesem Beispiel wird ersichtlich, daß die Transformationsanweisungen des xsl-files innerhalb des template-tags beliebigen Text enthalten kann, wodurch dann auch ein beliebiges Output-Format (z.b. html, oder auch NICHT-XML) entstehen kann Bedingungen Soll es zur Abarbeitung von Teilen des Transformationsskriptes unter bestimmten Bedingungen kommen, kann man den Befehl <xsl:if test="...">... </xsl:if> verwenden. Wollen wir beispielsweise aus der xml-datei des letzten Abschnittes (siehe 3.2.2, S.16) für jedes <xy>-element den Inhalt von <xyz> und, falls vorhanden, von <opt> drucken, machen wir das mittels folgender XSLT-Befehle: <xsl:stylesheet xmlns:xsl=" 3 version="1.0"> 4 <xsl:template match="/"> 5 <xsl:for-each select="x/xy"> 6 <xsl:value-of select="xyz"/> <xsl:if test="opt"> 7 <xsl:value-of select="opt"/> 8 </xsl:if> 9 </xsl:for-each> 10 </xsl:template> 11 </xsl:stylesheet> Gruppierungen An dieser Stelle erscheint es nun interessant, nach übereinstimmenden Werten von Attributen oder Elementen zu gruppieren. Das kann für das Attribut a folgendermaßen geschehen: Listing 11: Realisierung einer Gruppierung 1 <?xml version="1.0" encoding="iso "?> 2 <xsl:stylesheet xmlns:xsl=" 3 version="1.0"> 4 <xsl:template match="/"> 5 ANFANG 6 <xsl:for-each select="x/xy[not(@a=preceding-sibling::xy/@a)]"> 7 Attr_a = <xsl:value-of select="@a" /> 8 b xyz 9 <xsl:for-each select="/x/xy[@a=current()/@a]"> 10 Datensatz <xsl:value-of select="b" /> 11 <xsl:value-of select="xyz" /> 12 </xsl:for-each> 13 </xsl:for-each> 14 ENDE 15 </xsl:template> 16 </xsl:stylesheet> Das Stylesheet enthält zwei geschachtelte for-each-schleifen. Die äußere macht die Trennung der Gruppen, dazu wird eine Bedingung genutzt, daß das Element nur selektiert wird, wenn sein Attribut a (Attribute werden mit dem gekennzeichnet) keinem schon gefundenen a eines vorangegangenen Geschwisterelementes (siehe XPath: preceeding-sibling, das ist eine Achse) gleicht. Die innere for-each-schleife läuft nun innerhalb dieser Gruppe über alle Elemente mit gleichem a. 17

18 Es ergibt sich folgendes Produkt: ANFANG Attr_a = 1 b xyz Datensatz 1 A Datensatz 1 B Datensatz 1 C Attr_a = 2 b xyz Datensatz 2 D Attr_a = 3 b xyz Datensatz 3 E Datensatz 3 F Attr_a = 4 b xyz Datensatz 4 G ENDE Templates Bisher haben wir das xsl-element template nur zum Greifen des Wurzelelements verwendet, die Bearbeitung wurde mit xsl:for-each realisiert, was wir für Konstrukte wie Gruppierungen auch weiterhin verwenden werden! Die gebräuchliche Art, Transformationen zu realisieren, sind aber Templates (für jedes zu transformierende Element wird ein Template angelegt) und der Befehl <xsl:apply-templates... />. xsl:template Der Parameter match (entsprechend XPath) kennzeichnet die Elemente, für die das Template gilt. xsl:apply-templates Der optionale Parameter select (entsprechend XPath) kennzeichnet die Elemente, die getroffen werden sollen. Fehlt er, werden alle Kindelemente des aktuellen Elements rekursiv verarbeitet. Wird für ein Element ein Template gefunden, wird es verarbeitet, ansonsten werden die Inhalte der Elemente ausgegeben (Testen!). Listing 12: XML-Datenfile eines CD- und Buchverzeichnisses 1 <?xml version="1.0" encoding="iso " standalone="no"?> 2 3 <?xml-stylesheet href="shop.xsl" type="text/xsl"?> 4 5 <Shop> 6 <CD> 7 <Title>Cruel</Title> 8 <Artist>The Singer</Artist> 9 <Track Nr="1" Length="24"> Part One </Track> 10 <Track Nr="2" Length="29"> Part Two </Track> 11 </CD> 18

19 <book> Dies ist ein Buch! </book> 16 <book> Dies ist noch ein Buch! <autor> Hillu Hilbert </autor> </book> 17 </Shop> Listing 13: Das entsprechende Transformationsfile 1 <?xml version="1.0" encoding="iso "?> 2 3 <xsl:stylesheet version="1.0" 4 xmlns:xsl=" 5 xmlns=" 6 <xsl:output method="html" /> 7 <xsl:template match="/"> 8 <html> 9 <head><title>shop</title></head> 10 <body> 11 <xsl:apply-templates /> 12 <!-- <xsl:apply-templates select="shop/book" /> --> 13 </body> 14 </html> 15 </xsl:template> <xsl:template match="book"> 18 <br/> Buch: Autor 19 <xsl:value-of select="autor" /> 20 </xsl:template> <xsl:template match="cd"> 23 <br/> CD : <xsl:value-of select="artist" /> : 24 <xsl:value-of select="title" /> 25 Länge: <xsl:value-of select="sum(track/@length)" /> 26 </xsl:template> 27 </xsl:stylesheet> Die Länge der CDs werden durch die Aggregatfunktion sum(...) berechnet, die in XPath beschrieben ist. Listing 14: Transformationsprodukt HTML 1 <html xmlns=" 2 <head> 3 <title>shop</title> 4 </head> 5 <body> 6 <br/> CD : The Singer : 7 Cruel 8 Länge: 53 9 <br/> CD : The Singer : 10 Awesome 11 Länge: <br/> CD : Tim Tom : 13 Lieder 19

20 14 Länge: <br/> Buch: Autor 16 <br/> Buch: Autor 17 Hillu Hilbert 18 </body> 19 </html> Die html-igen Umlautcodierungen entstehen durch das method-attribut mit dem Wert html im output-tag Fremdschlüssel Wie in relationalen Datenbanken kann man im XML Attribute als Fremdschlüssel (IDREF(S)) auf Attribute, die Schlüssel (ID) darstellen, zeigen lassen, wie die Definition der Fremdschlüssel und Sclüsselkandidaten in den RDBMS ist hier die Verwendung der Attributtypen ID und IDREF nicht notwendig für die Referenzen, sondern nur hilfreich für das Gewährleisten der referenziellen Integrität, deren Verletzung im XML zu einem ungültigen Dokument führt. Folgendes Beispiel ist eine Modifikation des obigen Shop-Beispiels, wobei die Artist-Elemente aus den CD-Elementen ausgelagert und durch Referenzen ersetzt wurden: Listing 15: Anlegen von Fremdschlüsseln 1 <?xml version="1.0" encoding="iso " standalone="no"?> 2 3 <?xml-stylesheet href="shop_fk_html.xsl" type="text/xsl"?> 4 <Shop> 5 <CD ArtistID="a01"> <Title>Cruel</Title> </CD> 6 <CD ArtistID="a01"> <Title>Awesome</Title> </CD> 7 <CD ArtistID="a02"> <Title>Lieder</Title> </CD> 8 <Artist ArtistID="a01">The Singer</Artist> 9 <Artist ArtistID="a02">Tim Tom</Artist> 10 </Shop> Im dazugehörigen Stylesheet werden nur die CD-Templates berücksichtigt, die benötigten Artist-Daten jedoch über die Referenz ArtistID geholt: 1... Listing 16: Nutzung der Fremdschlüssel in der Transformation 2 <xsl:apply-templates select="shop/cd" /> <xsl:template match="cd"> 6 <br/> 7 <xsl:value-of select="/shop/artist[@artistid=current()/@artistid]" /> : 8 <xsl:value-of select="title" /> 9 </xsl:template> 10 </xsl:stylesheet> Übung 3 Transformieren Sie mittels XSLT das XML-File von Übung 2 (S.11) in ein XHTML-File, welches die Daten (Matrikelnummer, Name, Vorname, Geburtsdatum) der Studenten in einer Tabelle ausgibt. Erweitern Sie das XML-File um einige Studenten. 20

21 3.2.7 Durchschleifen von XML-Tags Enthält ein Element eines XML-Files XML-Tags, die 1:1 weitergegeben werden sollen (z.b., wenn man HTML-Tags wie <br/>, <ul>, <li>... zur Formatierung benutzen will,) arbeitet man mit Templates. Das Element, welches die Tags enthält, wird mittels <xsl:apply-templates... /> aufgerufen, die entsprechenden Tags müssen ihrerseits über Templates verfügen: <Beschreibung> Listing 17: Die XML-Daten 3 Folgende Teile sind zu berücksichtigen: 4 <ul> 5 <li>der linke Teil</li> 6 <li>der rechte Teil 7 <br/> unter besonderer Beachtung des rechten oberen Teils ;-) 8 </li> 9 </ul> 10 </Beschreibung> Listing 18: Die XSLT-Transformation 2 <xsl:apply-templates select="beschreibung" /> <xsl:tempate match="beschreibung"> <!-- kann auch wegfallen --> 5 <xsl:apply-templates /> 6 </xsl:template> 7 8 <xsl:tempate match="br"> 9 <br/> 10 </xsl:template> <xsl:tempate match="ul"> 13 <ul> 14 <xsl:apply-templates /> 15 </ul> 16 </xsl:template> <xsl:tempate match="li"> Ein komplettes Beispiel Das vorliegende Beispiel soll zeigen, wie ein XML-Datensatz (Listings 19 bzw. 21) mit DTD (Listing 20) bzw. XMLSchema (Listing 22) validiert werden kann. Eine Transformation des Datensatzes in HTML erfolgt durch das in Listing 23 dargestellt Stylesheet. Die Validierungen und Transformationen können mit Targets des in Listing 24 ant-build- Files realisiert werden. Listing 19: Ein XML-Datenfile shop4.xml mit Bezug auf DTD (Listing 20) 1 <?xml version="1.0" encoding="iso " standalone="no"?> 21

22 2 3 <!DOCTYPE Shop SYSTEM "shop4.dtd"> 4 5 <Shop> 6 <CD ArtistID="a01"> 7 <Title>Cult</Title> 8 <Track Nr="01" Length="3.1">Path</Track> 9 <Track Nr="02" Length="3.43">Struggle</Track> 10 <Track Nr="03" Length="3.45">Romance</Track> 11 </CD> <!-- as much CDs you ever want --> <Artist ArtistID="a01">Apocalyptica</Artist> 17 <Artist ArtistID="a02">Manu Chao</Artist> 18 </Shop> Listing 20: Die zugehörige DTD shop4.dtd 1 <?xml version= 1.0 encoding= ISO ?> 2 3 <!ELEMENT Shop (CD*,Artist*)> 4 <!ELEMENT CD (Title,Track+)> 5 <!ATTLIST CD 6 ArtistID IDREF #REQUIRED 7 CDNr CDATA #IMPLIED 8 > 9 <!ELEMENT Title (#PCDATA)> 10 <!ELEMENT Artist (#PCDATA)> 11 <!ATTLIST Artist 12 ArtistID ID #REQUIRED 13 > 14 <!ELEMENT Track (#PCDATA)> 15 <!ATTLIST Track 16 Nr CDATA #REQUIRED 17 Length CDATA #REQUIRED 18 > <!ENTITY copyright " "> Listing 21: XML-Datenfile shop4xsd.xml (Auszug) mit Bezug auf Schema (Listing 22) 1 <?xml version="1.0" encoding="iso " standalone="no"?> 2 3 <Shop 4 xmlns:xsi=" 5 xsi:nonamespaceschemalocation="shop4xsd.xsd" 6 > </Shop> 22

23 Listing 22: Das zugehörige XMLSchema shop4xsd.xsd 1 <?xml version= 1.0 encoding= ISO ?> 2 3 <xsd:schema xmlns:xsd=" 4 5 <xsd:annotation> 6 <xsd:documentation xml:lang="de"> 7 XML Schema fuer einen Shop 8 </xsd:documentation> 9 </xsd:annotation> <xsd:element name="shop" type="shoptyp"/> <xsd:complextype name="shoptyp"> 14 <xsd:sequence> 15 <xsd:element name="cd" type="cdtyp" 16 minoccurs="0" maxoccurs="unbounded"/> 17 <xsd:element name="artist" type="artisttyp" 18 minoccurs="0" maxoccurs="unbounded"/> 19 </xsd:sequence> 20 </xsd:complextype> <xsd:complextype name="cdtyp" > 23 <xsd:sequence> 24 <xsd:element name="title" type="xsd:string"/> 25 <xsd:element name="track" minoccurs="1" maxoccurs="unbounded"> 26 <xsd:complextype> 27 <xsd:simplecontent> 28 <xsd:extension base="xsd:string"> 29 <xsd:attribute name="nr" type="xsd:string" use="required"/> 30 <xsd:attribute name="length" type="xsd:decimal"/> 31 </xsd:extension> 32 </xsd:simplecontent> 33 </xsd:complextype> 34 </xsd:element> 35 </xsd:sequence> 36 <xsd:attribute name="artistid" type="xsd:idref" use="required"/> 37 <xsd:attribute name="cdnr" type="xsd:string"/> 38 </xsd:complextype> <xsd:complextype name="artisttyp" > 41 <xsd:simplecontent> 42 <xsd:extension base="xsd:string"> 43 <xsd:attribute name="artistid" type="xsd:id" use="required"/> 44 </xsd:extension> 45 </xsd:simplecontent> 46 </xsd:complextype> </xsd:schema> Listing 23: Das XSL-Transformationsfile shop4.xsl mit HTML-Output 1 <?xml version="1.0" encoding="iso "?> 23

24 2 3 <xsl:stylesheet version="1.0" 4 xmlns:xsl=" 5 xmlns=" 6 7 <xsl:output method="html" /> 8 9 <xsl:template match="/"> 10 <html> 11 <head><title>shop</title></head> 12 <body> 13 <xsl:for-each select="shop/cd 14 [not(@artistid=preceding-sibling::cd/@artistid)]"> 15 <font color="red" size="+1"> 16 <xsl:value-of select="/shop/artist 17 [@ArtistID=current()/@ArtistID]" /> 18 </font> <br/> 19 <xsl:apply-templates select="/shop/cd 20 [@ArtistID=current()/@ArtistID]" /> 21 </xsl:for-each> 22 </body> 23 </html> 24 </xsl:template> <xsl:template match="cd"> 28 Album: <strong><xsl:value-of select="title" /></strong> 29 (<xsl:value-of 30 select="0.01*round(100.*sum(track/@length))" /> min.) 31 <ol> 32 <xsl:for-each select="track"> 33 <li><xsl:value-of select="." /> 34 (<xsl:value-of select="./@length" /> min.) 35 </li> 36 </xsl:for-each> 37 </ol> 38 </xsl:template> 39 </xsl:stylesheet> Listing 24: ant-build-file für Validierung und Transformation mit den Files aus Listings 19 bis 23 1 <project name="xslttrans" basedir="."> 2 <property name="src" location="."/> 3 <property name="dest" location="./out"/> 4 5 <target name="v"> 6 <xmlvalidate file="${src}/shop4.xml"/> 7 </target> 8 9 <target name="vs"> 10 <schemavalidate file="shop4xsd.xml" /> 11 </target> <target name="t" depends="v"> 24

25 14 <xslt in="${src}/shop4.xml" style="${src}/shop4.xsl" 15 out="${dest}/shop4.html"/> 16 </target> <target name="ts" depends="vs"> 19 <xslt basedir="${src}" includes="shop4xsd.xml" destdir="${dest}" 20 extension=".html" style="${src}/shop4.xsl"/> 21 </target> </project> 25

26 4 XML-API-Programmierung Es existieren eine Reihe von APIs für XML (Java, Perl,... ). Prinzipiell kann man all diese für XML-Handling verwenden, wir wollen uns hier konkret den Java-APIs zuwenden. 2 grundlegende Kategorien: dokumenten-orientiert Java API for XML Processing (JAXP) enthält alles, was benötigt wird, um XML-Files zu parsen (SAX), in einen Objektbaum (DOM) zu wandeln und entsprechend XSLT-Transformationsinstruktionen zu transformieren prozedur-orientiert Java API for XML-based RPC (JAX-RPC) die Java-API zur Entwicklung und Nutzung von Web-Services (sends SOAP method calls to remote parties over the Internet and receives the results) Java API for XML Messaging (JAXM) sends SOAP messages over the Internet in a standard way Java API for XML Registries (JAXR) provides a standard way to access business registries and share information Das Java Enterprise Tutorial liefert eine gute Einführung in XML, als Software ist die Java Standard Edition hinreichend. (Eine recht umfangreiche Einführung in die Probleme um Java und XML wird auch in [8] gegeben.) Folgenden Stoff wollen wir behandeln: Sequentielles Parsen und Verarbeiten von XML-Files mit der Simple API for XML (SAX) das Document Object Model (DOM) als baumartige Objektstruktur zur Haltung und Bearbeitung von XML-Datei-Inhalten XML Stylesheet Language for Transformations (XSLT) Zur XML-XSL-XSLT-Problemetik gibt es auch dasxalan-projekt ( das auch die hier von uns benötigte Java-APIs enthält 4.1 Java API for XML Processing (JAXP) Software-Voraussetzung: Java-Standard-Edition Beispiele zu den unterschiedlichen Teilen der JAXP finden Sie unter anderem im examples- Verzeichnis des Java Web Services Tutorial [5]. Ab JDK1.4.xx sind die JAXP-Klassen bereits in der Standard-rt.jar enthalten Simple API for XML (SAX) Informationen zum SAX-Projekt (auch zu Features and Properties) findet man unter SAX realisiert ein sequentielles Parsen einer XML-Quelle und die Möglichkeit, auf Parser- Ereignisse zu reagieren. Dabei wird ein eventorientiertes, mit dem AWT-Eventhandling vergleichbares System verwendet. Trifft der SAXParser im geparsten XML auf eine bestimmte 26

27 inhaltliche Struktur (ein Element, ein Kommentar, Text,... ), ruft er eine dieser Struktur entsprechende Methode des bei ihm (als Parameter im Ruf der parse(... )-Methode) gemeldeten Handlers auf. Trifft der Parser z.b. auf das öffnende Tag eines Elementes, ruft er die Methode startelement(...). Abb. aus [5] Der Handler kann z.b. von der Klasse org.xml.sax.helpers.defaulthandler (vergleichbar mit so etwas wie MouseAdapter, in der Abb.(aus [5]) ist der Handler aus unerfindlichen Gründen als SAXReader bezeichnet), abgeleitet werden. org.xml.sax.helpers.defaulthandler implementiert die Interfaces ContentHandler, ErrorHandler, DTDHandler, und EntityResolver mit leeren Methodenkörpern. Soll eine Reaktion erfolgen, müssen die entsprechenden Methoden überschrieben werden. Hier sind die Köpfe der Handlermethoden des folgenden Beispiels (Listing 25) zusammengefaßt: - public void startdocument()... - public void enddocument()... - public void startelement(string namespaceuri, String sname, // simple name String qname, // qualified name Attributes attrs )... - public void endelement(string namespaceuri, String sname, // simple name String qname // qualified name )... 27

28 - public void characters(char buf[], int offset, int len)... Die Namen sind sprechend, so daß der Quelltext eigentlich selbsterklärend ist. Für die Behandlung des Elementnamens, der Attribute etc. werden den entsprechenden Methoden Parameter übergeben. Ein Beispiel aus dem Java Web Services Tutorial [5] ist Echo01.java, ein nicht validierender Parser (kann aber umgestellt werden, ein validierender, erweiterter Parser ist Echo10.java) ist im folgenden Listing dargestellt. Die Klasse Echo01 beinhaltet sowohl die main()-methode, die den Ablauf durch das hier oft verwendete Entwurfsmuster mit Einsatz einer Factory realisiert, als auch die benötigten Handler-Methoden (durch Ableitung von der Klasse DefaultHandler und Überschreiben der relevanten Methoden). Im main(...) wird ein Exemplar der Klasse (Zeile 21) zur Verwendung beim Parsen (Zeile 31) instantiiert. Die SAXParserFactory (Zeile 24) schafft einen SAXParser (Zeile 30), welcher mit seiner Methode parse(file f, DefaultHandler h) ein File f parst und dem DefaultHandler h immer dann eine Nachricht sendet (d.h. die entsprechende Handlermethode ruft), wenn im XML-File eine entsprechende XML-Struktur gefunden wurde. In den Zeilen sind die Handlermethoden definiert, die etwas konkretes tun sollen. 1 import java.io.*; Listing 25: Auszug aus Echo01 [5] 2 3 import org.xml.sax.*; 4 import org.xml.sax.helpers.defaulthandler; 5 6 import javax.xml.parsers.saxparserfactory; 7 import javax.xml.parsers.parserconfigurationexception; 8 import javax.xml.parsers.saxparser; 9 10 public class Echo01 extends DefaultHandler 11 { public static void main(string argv[]) 14 { 15 if (argv.length!= 1) { 16 System.err.println("Usage: cmd filename"); 17 System.exit(1); 18 } // Use an instance of ourselves as the SAX event handler 21 DefaultHandler handler = new Echo01(); // Use the default (non-validating) parser 24 SAXParserFactory factory = SAXParserFactory.newInstance(); 25 try { 26 // Set up output stream 27 out = new OutputStreamWriter(System.out, "UTF8"); // Parse the input 30 SAXParser saxparser = factory.newsaxparser(); 31 saxparser.parse( new File(argv[0]), handler); 32 28

29 33 } catch (Throwable t) { 34 t.printstacktrace(); 35 } 36 System.exit(0); 37 } static private Writer out; //=========================================================== 42 // SAX DocumentHandler methods 43 //=========================================================== public void startdocument() 46 throws SAXException 47 { 48 emit("<?xml version= 1.0 encoding= UTF-8?>"); 49 nl(); 50 } public void enddocument() 53 throws SAXException 54 { 55 try { 56 nl(); 57 out.flush(); 58 } catch (IOException e) { 59 throw new SAXException("I/O error", e); 60 } 61 } public void startelement(string namespaceuri, 64 String sname, // simple name 65 String qname, // qualified name 66 Attributes attrs) 67 throws SAXException 68 { 69 String ename = sname; // element name 70 if ("".equals(ename)) ename = qname; // not namespaceaware 71 emit("<"+ename); 72 if (attrs!= null) { 73 for (int i = 0; i < attrs.getlength(); i++) { 74 String aname = attrs.getlocalname(i); // Attr name 75 if ("".equals(aname)) aname = attrs.getqname(i); 76 emit(" "); 77 emit(aname+"=\""+attrs.getvalue(i)+"\""); 78 } 79 } 80 emit(">"); 81 } public void endelement(string namespaceuri, 84 String sname, // simple name 85 String qname // qualified name 86 ) 29

30 87 throws SAXException 88 { 89 String ename = sname; // element name 90 if ("".equals(ename)) ename = qname; // not namespaceaware 91 emit("</"+ename+">"); 92 } public void characters(char buf[], int offset, int len) 95 throws SAXException 96 { 97 String s = new String(buf, offset, len); 98 emit(s); 99 } //=========================================================== 102 // Utility Methods //=========================================================== // Wrap I/O exceptions in SAX exceptions, to 106 // suit handler signature requirements 107 private void emit(string s) 108 throws SAXException 109 { 110 try { 111 out.write(s); 112 out.flush(); 113 } catch (IOException e) { 114 throw new SAXException("I/O error", e); 115 } 116 } // Start a new line 119 private void nl() 120 throws SAXException 121 { 122 String lineend = System.getProperty("line.separator"); 123 try { 124 out.write(lineend); 125 } catch (IOException e) { 126 throw new SAXException("I/O error", e); 127 } 128 } 129 } Das Befähigen des Parsers, mit Namespaces umzugehen, erfolgt durch Umstellen der SAXParserFactory mittels Ruf von setnamespaceaware(true). Übung 4 Parsen Sie ein XML-File mit SAX, geben Sie es als XML wieder aus (Echo01 des JWSDP), lassen Sie validierend parsen! Nutzen Sie das Programm als Ausgangspunkte, um eine Applikation zu programmieren, die ein XML-File (XHTML) parst und alle href- Attribute von a-elementen (<a href=xxxxxx>... </a>) erfasst und ausgibt! 30

31 4.1.2 Document Object Model (DOM) Die DOM-Spezifikationen liegen beim W3C ( Das Interface beschreibt, wie ein Dokument, welches einen XML-Baum abbildet, als Objektbaum aufgebaut werden kann und mit welchen Methoden es manipulierbar sein soll. Dabei spielt die mögliche Implementierung keine Rolle. Abb. aus [5] Das folgende Beispiel (aus dem Java Web Services Tutorial [5]) dokumentiert den Aufbau eines DOM an einem einfachen Beispiel. Es wird entsprechend des allgemeinen Entwurfsmusters zunächst eine DomBuilderFactory instantiiert (Zeile 26), diese produziert durch einen entsprechenden Methodenruf einen neuen DomBuilder (Zeile 31), welcher nun (siehe API- Doc) ein DOM (Klasse Document) durch Parsen eines XML-Files generieren kann (Zeile 32). Es kann aber auch durchaus ein leeres DOM (siehe weiter unten) hergestellt werden, dem dann im weiteren Verlauf Elemente hinzugefügt werden. In Zeile 28 und 29 wird gezeigt, wie die Factory in die Lage versetzt wird, einen validierenden und mit Namespaces umgehen könnenden DomBuilder zu bauen. Listing 26: DomEcho01.java [5] 1 import javax.xml.parsers.documentbuilder; 2 import javax.xml.parsers.documentbuilderfactory; 3 import javax.xml.parsers.factoryconfigurationerror; 4 import javax.xml.parsers.parserconfigurationexception; 5 6 import org.xml.sax.saxexception; 7 import org.xml.sax.saxparseexception; 8 9 import java.io.file; 10 import java.io.ioexception; import org.w3c.dom.document; 13 import org.w3c.dom.domexception; public class DomEcho01{ 16 // Global value so it can be ref d by the tree-adapter 17 static Document document; public static void main(string argv[]) 31

32 20 { 21 if (argv.length!= 1) { 22 System.err.println("Usage: java DomEcho filename"); 23 System.exit(1); 24 } DocumentBuilderFactory factory = 27 DocumentBuilderFactory.newInstance(); 28 //factory.setvalidating(true); 29 //factory.setnamespaceaware(true); 30 try { 31 DocumentBuilder builder = factory.newdocumentbuilder(); 32 document = builder.parse( new File(argv[0]) ); } catch (SAXParseException spe) { 35 // Error generated by the parser 36 System.out.println("\n** Parsing error" 37 + ", line " + spe.getlinenumber() 38 + ", uri " + spe.getsystemid()); 39 System.out.println(" " + spe.getmessage() ); // Use the contained exception, if any 42 Exception x = spe; 43 if (spe.getexception()!= null) 44 x = spe.getexception(); 45 x.printstacktrace(); } catch (SAXException sxe) { 48 // Error generated during parsing) 49 Exception x = sxe; 50 if (sxe.getexception()!= null) 51 x = sxe.getexception(); 52 x.printstacktrace(); } catch (ParserConfigurationException pce) { 55 // Parser with specified options can t be built 56 pce.printstacktrace(); } catch (IOException ioe) { 59 // I/O error 60 ioe.printstacktrace(); 61 } 62 } // main 63 } Der folgende Auszug aus der DOM-Spezifikation soll anhand von zwei Interfaces (node, element) zeigen, wie die Spezifikation Konstanten zur Charakterisierung von Zuständen und Signaturen von Methoden zur Bearbeitung eines Documents vorschreibt. Durch diese Spezifikation wird gewährleistet, das für das Handling mit DOM-Implementationen in verschiedenen Programmiersprachen de facto keine Unterschiede bestehen. 1 interface Node { Listing 27: Auszug aus der DOM-Spezifikation (interface Node) 32

33 2 3 // NodeType 4 const unsigned short ELEMENT_NODE = 1; 5 const unsigned short ATTRIBUTE_NODE = 2; 6 const unsigned short TEXT_NODE = 3; 7 const unsigned short CDATA_SECTION_NODE = 4; 8 const unsigned short ENTITY_REFERENCE_NODE = 5; 9 const unsigned short ENTITY_NODE = 6; 10 const unsigned short PROCESSING_INSTRUCTION_NODE = 7; 11 const unsigned short COMMENT_NODE = 8; 12 const unsigned short DOCUMENT_NODE = 9; 13 const unsigned short DOCUMENT_TYPE_NODE = 10; 14 const unsigned short DOCUMENT_FRAGMENT_NODE = 11; 15 const unsigned short NOTATION_NODE = 12; readonly attribute DOMString nodename; 18 attribute DOMString nodevalue; Node insertbefore(in Node newchild, 23 in Node refchild) 24 raises(domexception); Node replacechild(in Node newchild, 27 in Node oldchild) 28 raises(domexception); Node removechild(in Node oldchild) 31 raises(domexception); Node appendchild(in Node newchild) 34 raises(domexception); boolean haschildnodes(); }; Auf node-ebene werden hier Methoden zum Einfügen, Ersetzen, Löschen von Nodes etc. festgelegt, die dann genau so auch von der speziellen Node-Klasse Element ohne eine Neudefinition genutzt werden können. Methoden zur Manipulation von Attributen finden wir dann in der Beschreibung von Element, welches von Node abgeleitet ist. Listing 28: Auszug aus der DOM-Spezifikation (interface Element) 41 interface Element : Node { void setattribute(in DOMString name, 46 in DOMString value) 47 raises(domexception); 48 33

34 49 void removeattribute(in DOMString name) 50 raises(domexception); Attr getattributenode(in DOMString name); Attr setattributenode(in Attr newattr) 55 raises(domexception); Attr removeattributenode(in Attr oldattr) 58 raises(domexception); NodeList getelementsbytagname(in DOMString name); }; Im folgenden Listing wird wieder ein DOM aufgebaut, hier allerdings ein leeres (Zeile 7). Dieses noch leere Dokument wird benutzt, um ein neues XML-Element mit dem Namen rootelement zu kreieren, welches noch keinen strukturellen Bezug zum Dokument hat. Erst in Zeile 11 wird dieses Element dem Dokument hinzugefügt, es wird zum Rootelement des Dokumentes, da dieses vorher leer war. Ihm wird in Zeile 12 ein Attribut hinzugefügt. An das Rootelement mit Namen rootelement werden TextNodes angehängt (Zeilen 13 bis 15). Es ist zu beachten, daß die Java-Variablennamen (z.b. root auf Zeile 9) NICHTS mit den Namen der XML-Elemente zu tun haben! Listing 29: Aufbau eines Documents 1 public static void builddom() 2 { 3 DocumentBuilderFactory factory = 4 DocumentBuilderFactory.newInstance(); 5 try { 6 DocumentBuilder builder = factory.newdocumentbuilder(); 7 document = builder.newdocument(); // Create from whole cloth 8 9 Element root = 10 (Element) document.createelement("rootelement"); 11 document.appendchild(root); 12 root.setattribute("attr","wert"); 13 root.appendchild( document.createtextnode("some") ); 14 root.appendchild( document.createtextnode(" ") ); 15 root.appendchild( document.createtextnode("text") ); // document.normalize(); } catch (ParserConfigurationException pce) { 21 // Parser with specified options can t be built 22 pce.printstacktrace(); } 25 } // builddom 34

35 Übung 5 Bauen Sie einen Datenbank - XML bzw. DOM - Adapter. Dazu schreiben Sie in Anlehnung an Übung 15 eine Methode public Document gettable(string tabname, Connection c), die alle Datensätze einer Datenbank-Tabelle in einem DOM zurückgibt. Das Root-Element soll den Namen der Tabelle (z.b. Kunden) tragen, bei jedem Datensatz soll der Elementname aus ds und dem Tabellennamen zusammengesetzt sein (z.b. dskunden), jeder Datensatz soll wieder Elemente mit den Spaltennamen haben, deren Inhalt mit getstring(...) erhaltene PCDATA sind. Alternativ geben Sie die Daten als XML-String zurück! Übung 6 Lesen Sie das XML-File von Übung 2 (S.11), nachdem Sie es um einige Studenten erweitert haben, in ein DOM ein. Übung 7 Lesen Sie eine Datenbanktabelle und bauen Sie die Daten in ein Dokument (DOM) ein, stellen Sie dazu eine Konvention für die Namen von Tabelle und einzelnem Datensatz im DOM auf! XSLT Empfehlungen des W3C: Extensible Stylesheet Language (XSL) Version 1.0 ( XSL Transformations (XSLT) ( Abb. aus [5] Für Transformationen gibt es z.b. den XSLT-Transformer-Prozeß des XALAN-Projektes: java org.apache.xalan.xslt.process -IN data.xml -XSL view.xsl [-OUT personen.html] (Java 1.4, in 1.5 ist die Klasse verschoben, und main() heißt _main()), den Prozessor saxon (gibt es auch in Perl) oder man benutzt einfach ant mit der Task Xslt. 35

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

ANT. Kurzvortrag von Manuel Schulze. mschulze@inf.fu-berlin.de

ANT. Kurzvortrag von Manuel Schulze. mschulze@inf.fu-berlin.de ANT Kurzvortrag von Manuel Schulze mschulze@inf.fu-berlin.de ANT Überblick Teilprojekt der Apache Software Foundation [1] ANT ist Opensource Build-Tool ähnlich wie make (?) jedoch voll auf Java zugeschnitten

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 2. 12. 2013 Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 2. 12. 2013 Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 2. 12. 2013 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden nicht

Mehr

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant Laith Raed Ludwig-Maximilians-Universität München Institut für Informatik: Programmierung und Softwaretechnik Prof.Wirsing Inhaltsverzeichnis

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 7. 1. 2014 Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 7. 1. 2014 Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 7. 1. 2014 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden nicht

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 25. 10. 2013 Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 25. 10. 2013 Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 25. 10. 2013 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

XSL Templates. Mit Templates arbeiten. XSL Templates

XSL Templates. Mit Templates arbeiten. XSL Templates XSL Templates Mit Templates arbeiten Innerhalb von XSLT werden Templates verwendet. Ein Template ist eine Vorlage für die Transformation bestimmter Knoten. Diese Knoten können Elemente, Attribute oder

Mehr

Web-Technologien Kick-Start

Web-Technologien Kick-Start Web-Technologien Kick-Start Software-Praktikum im Grundstudium WS 2004/2005 Dipl.-Inform. Michael Kirchhof Dipl.-Inform. Bodo Kraft Prof. Dr.-Ing. Manfred Nagl Department of Computer Science III Software

Mehr

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 181.135 21. 01. 2011 Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 181.135 21. 01. 2011 Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 181.135 21. 01. 2011 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 120 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

Programmieren II. Einführung in XML. Vorlesung 13. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010 XML JAXP SAX DOM

Programmieren II. Einführung in XML. Vorlesung 13. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010 XML JAXP SAX DOM Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 26 XML JAXP SAX DOM 2 / 26 Einführung in XML XML ist eine Auszeichnungssprache zur strukturellen Beschreibung von Dokumenten.

Mehr

Java und XML 2. Java und XML

Java und XML 2. Java und XML Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik Java und XML Hauptseminar Telematik WS 2002/2003

Mehr

Datenaustauschformate. Datenaustauschformate - FLV

Datenaustauschformate. Datenaustauschformate - FLV Datenaustauschformate FLV-Dateien CSV-Dateien XML-Dateien Excel-Dateien Access- Backupdateien Günter M. Goetz 108 Datenaustauschformate - FLV Fixed Length Values Repräsentation einer Tabelle als 'Flat-File'

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

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de Das Build Tool Ant Sebastian Mancke, mancke@mancke-software.de Grundlagen Motivation Bei der Übersetzung und Pflege von Software treten viele, gleich bleibende Arbeitsschritte auf. Übersetzen des Codes

Mehr

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

IT-Zertifikat: Daten- und Metadatenstandards. Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT kurz und knackig. XSLT und die Praxis IT-Zertifikat: Daten- und Metadatenstandards Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT kurz und knackig I. Was ist XSLT? XSL Transformation (XSLT) ist eine Programmiersprache zur Transformation

Mehr

XML-Programmierschnittstellen: SAX, DOM

XML-Programmierschnittstellen: SAX, DOM XML-Programmiershnittstellen: SAX, DOM SAX: The Simple API for XML Event-Based Doument Objet Model (DOM) Baumdarstellung APIs zum Parsen, Bearbeiten und Serialisieren von XML-Dokumenten. (Weitgehend) sprahunabhängig

Mehr

... MathML XHTML RDF

... MathML XHTML RDF RDF in wissenschaftlichen Bibliotheken (LQI KUXQJLQ;0/ Die extensible Markup Language [XML] ist eine Metasprache für die Definition von Markup Sprachen. Sie unterscheidet sich durch ihre Fähigkeit, Markup

Mehr

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5. www.hanser.de

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5. www.hanser.de CARL HANSER VERLAG Dirk Ammelburger XML Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5 www.hanser.de 1 1.1 Einleitung... 2 Über dieses Buch... 3 1.2 Für wen ist das Buch gedacht?...

Mehr

XML und SOAP Einführung und Grundlagen

XML und SOAP Einführung und Grundlagen XML und SOAP Einführung und Grundlagen Matthias Böhmer 16.12.2005 Agenda 1. XML 2. SOAP 3. Seife im Buchladen?! E-Commerce :: XML und SOAP Matthias Böhmer 16.12.2005 2 XML :: Einführung (1) extensible

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

JCoverage. Uni Kassel Projektarbeit Software Engineering 12.11.2003. Markus Pilsl & Marko Medved

JCoverage. Uni Kassel Projektarbeit Software Engineering 12.11.2003. Markus Pilsl & Marko Medved JCoverage Uni Kassel Projektarbeit Software Engineering 12.11.2003 Markus Pilsl & Marko Medved Was ist JCoverage Tool, welches anzeigt, wie oft jede wichtige Zeile des Quellcodes getestet wurde Soll helfen

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Übungsaufgaben zu XML:

Übungsaufgaben zu XML: Übungsaufgaben zu XML: Aufgabe 1 Allgemeine Fragen zu XML: (Benutzen Sie zum Lösen der Aufgaben die Online-Hilfen, welche wir erwähnt haben.) a) Was ist eine DTD? DTD steht für Document Type Definition.

Mehr

Wie konfiguiriert man Eclipse (mit oder ohne Plugin) Erich Ehses

Wie konfiguiriert man Eclipse (mit oder ohne Plugin) Erich Ehses Wie konfiguiriert man Eclipse (mit oder ohne Plugin) Erich Ehses Man kann die nötigen Dateien separat von den angegebenen Quellen beziehen oder das Eclipse- Plugin für java_cup verwenden. Am Ende benötigt

Mehr

HTML5. Wie funktioniert HTML5? Tags: Attribute:

HTML5. Wie funktioniert HTML5? Tags: Attribute: HTML5 HTML bedeutet Hypertext Markup Language und liegt aktuell in der fünften Fassung, also HTML5 vor. HTML5 ist eine Auszeichnungssprache mit der Webseiten geschrieben werden. In HTML5 wird festgelegt,

Mehr

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

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER Dirk Ammelburger XML Grundlagen der Sprache und Anwendungen in der Praxis HANSER r 1 Einleitung 2 1.1 Über dieses Buch 3 1.2 Für wen ist das Buch gedacht? 4 1.3 Wie ist das Buch aufgebaut? 5 1.4 Konventionen

Mehr

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder holger.roeder@informatik.uni-stuttgart.de.

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder holger.roeder@informatik.uni-stuttgart.de. Java: Kapitel 9 Java und XML Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 9 Einführung in XML XML-Verarbeitung in Java Document Object

Mehr

XML Schema vs. Relax NG

XML Schema vs. Relax NG XML Schema vs. Relax NG p. 1/2 XML Schema vs. Relax NG Semistrukturierten Daten 1 Präsentation der Gruppe 2 XML Schema vs. Relax NG p. 2/2 Wozu XML Schema? W3C Empfehlung zur Definition von XML-Dokumentstrukturen

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

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

WEBSEITEN ENTWICKELN MIT ASP.NET

WEBSEITEN ENTWICKELN MIT ASP.NET jamal BAYDAOUI WEBSEITEN ENTWICKELN MIT ASP.NET EINE EINFÜHRUNG MIT UMFANGREICHEM BEISPIELPROJEKT ALLE CODES IN VISUAL BASIC UND C# 3.2 Installation 11 Bild 3.2 Der Webplattform-Installer Bild 3.3 IDE-Startbildschirm

Mehr

Komplexe Transformationen mit XSLT

Komplexe Transformationen mit XSLT XML-Praxis Komplexe Transformationen mit XSLT Jörn Clausen joern@techfak.uni-bielefeld.de Übersicht Sortieren XML erzeugen und weiterverarbeiten modes Daten aus mehreren XML-Dokumenten lesen XML-Praxis

Mehr

Das Einsteigerseminar

Das Einsteigerseminar Michael Seeboerger-Weichselbaum Das Einsteigerseminar XML Inhalt Vorwort Einleitung und Ziel des Buches 1 Was ist XML 1.1 HTML 1.2 XML 1.3 XSLT 1.4 XML und HTML - wo sind die Unterschiede? 1.5 Einsatzgebiete

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Hex Datei mit Atmel Studio 6 erstellen

Hex Datei mit Atmel Studio 6 erstellen Hex Datei mit Atmel Studio 6 erstellen Es werden generell keine Atmel Studio Dateien ins Repository geladen, da jeder seine Dateien an anderen Orten liegen hat und weil nicht jeder das Atmel Studio 6 benutzt.

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Software-Engineering Grundlagen des Software-Engineering

Software-Engineering Grundlagen des Software-Engineering Software-Engineering Grundlagen des Software-Engineering 7.2 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger SWE: 7.2 Programmentwicklung und Debuggen mit IDE

Mehr

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

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 13. 1. 2015 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden nicht

Mehr

Simple API for XML (SAX) Ulrich Hoffmann

Simple API for XML (SAX) Ulrich Hoffmann Simple API for XML (SAX) Ulrich Hoffmann 1 Simple API für XML (SAX) Ereignisbasierte Verarbeitung von XML Programmiersprachunabhängig: Implementierungen in Java, C++, Python,

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

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

Verteilte Systeme: Übung 4

Verteilte Systeme: Übung 4 Verteilte Systeme: Übung 4 WSDL und SOAP Oliver Kleine Institut für Telematik https://www.itm.uni-luebeck.de/people/kleine SOAP Nachrichten Serialisierung in XML Root-Element einer SOAP Nachricht ist

Mehr

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: EMail: Datum: http://ruhr.pm.org/

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: EMail: Datum: http://ruhr.pm.org/ XML-Daten verarbeiten mit XML::LibXML Autor: EMail: Datum: Simon Wilper simon AT ruhr.pm.org http://ruhr.pm.org/ Template Version 0.1 The use of a camel image in association with Perl is a trademark of

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

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

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 24. 10. 2014 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML- und Webservice- Sicherheit 2. XML 2.1 XML 1.0 und XML Schema Gliederung 1. XML 1.0 2. XML Namespaces: URI, URL und URN 3. XML Schema Literatur: A. Tanenbaum, Computer Networks. E. R. Harold and W.

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Klausur zur Vorlesung Einführung in XML

Klausur zur Vorlesung Einführung in XML Nachname: Klausur zur Vorlesung Einführung in XML MUSTERLÖSUNG Vorname: Matr.Nr.: Studiengang: Bearbeiten Sie alle Aufgaben! Hilfsmittel sind nicht zugelassen. Die Bearbeitungszeit ist 90 Minuten. Aufgabe

Mehr

IT-Zertifikat: Daten- und Metadatenstandards

IT-Zertifikat: Daten- und Metadatenstandards IT-Zertifikat: Daten- und Metadatenstandards DTD - Document Type Definition / Dokumenttypdefinition Das (bislang) Wichtigste auf einen Blick Externe DTD einbinden:

Mehr

Praktikum aus Softwareentwicklung 2. Java und XML. Java Praktikum SS 2008 Gerald.Ehmayer@borland.com

Praktikum aus Softwareentwicklung 2. Java und XML. Java Praktikum SS 2008 Gerald.Ehmayer@borland.com Java und XML 1 Java und XML Einführung in XML Merkmale von XML SAX Grundlagen, Verwendung in Java, DOM Grundlagen, Verwendung in Java, Validierung DTD, XML Schema 2 Motivation für XML (1/4) Von HTML zu

Mehr

Workflow, Business Process Management, 4.Teil

Workflow, Business Process Management, 4.Teil Workflow, Business Process Management, 4.Teil 24. Januar 2004 Der vorliegende Text darf für Zwecke der Vorlesung Workflow, Business Process Management des Autors vervielfältigt werden. Eine weitere Nutzung

Mehr

Klaus Schild, XML Clearinghouse 2003. Namensräume

Klaus Schild, XML Clearinghouse 2003. Namensräume Namensräume Lernziele Namenskonflikte Warum lösen im World Wide Web einfache Präfixe dieses Problem nicht? Wie lösen globale Namensräume das Problem? Wie werden sie in XML-Dokumenten benutzt? Was sind

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.NET Code schützen. Projekt.NET. Version 1.0 .NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August 2002. Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August 2002. Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back XML Grundlagen Andreas Rottmann,Sebastian Riedl 27. August 2002 Rottmann, Riedl: XML Grundlagen 1 Überblick Hintergründe und Geschichte Aufbau von XML-Dokumenten DTD Schemata Erweiterungen XML APIs Rottmann,

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Containerformat Spezifikation

Containerformat Spezifikation Containerformat Spezifikation Version 1.0-09.05.2011 Inhaltsverzeichnis 0 Einführung... 4 0.1 Referenzierte Dokumente... 4 0.2 Abkürzungen... 4 1 Containerformat... 5 1.1 Aufbau des Container-Headers...

Mehr

Online-Publishing mit HTML und CSS für Einsteigerinnen

Online-Publishing mit HTML und CSS für Einsteigerinnen mit HTML und CSS für Einsteigerinnen Dipl.-Math. Eva Dyllong Universität Duisburg Dipl.-Math. Maria Oelinger spirito GmbH IF MYT 07-2002 Web-Technologien Überblick HTML und CSS, XML und DTD, JavaScript

Mehr

Start des Programms mit zwei Parametern: 1. XML-Datei mit den zu verarbeitenden Eingabedaten, 2. XML-Datei mit der Programmkonfiguration

Start des Programms mit zwei Parametern: 1. XML-Datei mit den zu verarbeitenden Eingabedaten, 2. XML-Datei mit der Programmkonfiguration Whitepaper 09/2010 Seite 1 Aufgabenstellung Aus einer vorgegebenen XML-Datei sollen Daten in eine AS/400-Tabelle übertragen werden. Bei der Übertragung besteht die Möglichkeit Daten per Mapping zu prüfen,

Mehr

Das Build-Tool ANT ETIS SS05

Das Build-Tool ANT ETIS SS05 Das Build-Tool ANT ETIS SS05 Motivation Build - Datei Allgemeiner Aufbau Project Target Task Properties Zusammenfassung Literatur Gliederung 2 Motivation ANT I open source-projekt (aktuell: Version 1.6.5)

Mehr

Webseite in XML Kurzeinführung

Webseite in XML Kurzeinführung Webseite in XML Kurzeinführung 1. Entwicklung... 1 2. Erste Webpage in XML... 2 2.1 Erstes Beispiel... 2 2.2 Tags definieren... 4 2.3 Kommentare in XML... 5 2.4 XML mittels CSS im Browser ansehen... 5

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Containerformat Spezifikation

Containerformat Spezifikation Containerformat Spezifikation Version 1.1-21.02.2014 Inhaltsverzeichnis 0 Einführung... 4 0.1 Referenzierte Dokumente... 4 0.2 Abkürzungen... 4 1 Containerformat... 5 1.1 Aufbau des Container-Headers...

Mehr

Wiederholung: Beginn

Wiederholung: Beginn B) Webserivces W3C Web Services Architecture Group: "Ein Web Service ist eine durch einen URI eindeutige identifizierte Softwareanwendung, deren Schnittstellen als XML Artefakte definiert, beschrieben

Mehr

Reimo Fachhändlerbereich Import Datei

Reimo Fachhändlerbereich Import Datei Allgemein Der Reimo Fachhändlerbereich im Internet bietet die Funktionalität, eine Datei mit Bestelldaten zu importieren. Dies erspart Ihnen die Arbeit, eine Bestellung, die Sie bereits in Ihrer EDV erfasst

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP) Enterprise Applikation Integration und Service-orientierte Architekturen 09 Simple Object Access Protocol (SOAP) Anwendungsintegration ein Beispiel Messages Warenwirtschaftssystem Auktionssystem thats

Mehr

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014)

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014) Handbuch NAFI Online-Spezial 1. Auflage (Stand: 24.09.2014) Copyright 2016 by NAFI GmbH Unerlaubte Vervielfältigungen sind untersagt! Inhaltsangabe Einleitung... 3 Kundenauswahl... 3 Kunde hinzufügen...

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Connecting Content. User Manual. Version: 1.2

Connecting Content. User Manual. Version: 1.2 Connecting Content User Manual Version: 1.2 09.09.2015 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 3 2 Installation 4 3 Konfiguration 5 3.1 Allgemeine Einstellungen 6 3.2 Jobs anlegen 6 3.3 Tasks

Mehr

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

Klausur zur Vorlesung Einführung in XML

Klausur zur Vorlesung Einführung in XML Klausur zur Vorlesung Einführung in XML MUSTERLÖSUNG Nachname: Vorname: Matr.Nr.: Studiengang: Bearbeiten Sie alle Aufgaben! Hilfsmittel sind nicht zugelassen. Die Bearbeitungszeit ist 120 Minuten. Aufgabe

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Anbindung an easybill.de

Anbindung an easybill.de Anbindung an easybill.de Stand: 14. Dezember 2011 2011 Virthos Systems GmbH www.pixtacy.de Einleitung Pixtacy verfügt ab Version 2.3 über eine Schnittstelle zu dem Online-Fakturierungsprogramm easybill.de.

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Aufgaben zu XPath und XQuery

Aufgaben zu XPath und XQuery Aufgaben zu XPath und XQuery Dr. Arno Schmidhauser Letzte Revision: März 2005 Email: arno.schmidhauser@sws.bfh.ch Webseite: http://www.sws.bfh.ch/db Inhalt 1 XPath... 2 2 XQuery... 2 3 XPath/SQL Umsetzung...

Mehr

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade HACK #76 Hack APIs mit dem Façade-Muster vereinfachen Durch die Verwendung des Façade-Entwurfsmusters können Sie die anderen Programmierern zugängliche API vereinfachen. #76 Dies ist ein Muster, von dem

Mehr

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

XML exemplarisch. nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79 XML exemplarisch nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79 Wohlgeformte XML-Dokumente bestehen aus Prolog genau einem Element Beispiel-Prolog.

Mehr

XML Tutorium mit Oxygen. Oxygen Version 9.3!!

XML Tutorium mit Oxygen. Oxygen Version 9.3!! XML Tutorium mit Oxygen (Version 1.9 vom 4.6.2013) Oxygen Version 9.3!! In den folgenden Lektionen sollen die vermittelten Konzepte zu XML anhand von konkreten Beispielen geübt und vertieft werden. Das

Mehr

XML Extensible Markup Language

XML Extensible Markup Language XML-Praxis XML Extensible Markup Language Jörn Clausen joern@techfak.uni-bielefeld.de Übersicht Woher? Wohin? Warum? Bestandteile von XML XML-Dokumente erstellen und bearbeiten XML-Praxis XML Extensible

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF RDF und RDF Schema Einführung in die Problematik Von HTML über XML zu RDF Kirsten Albrecht Roland Illig Probleme des HTML-basierten

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X SwissMacMeeting #1 26. Juni 2004 Messeturm Basel http://mac.naepflin.com Was ist das Ziel dieses Kurses? Starthilfe Einblick in die Möglichkeiten,

Mehr

PHPNuke Quick & Dirty

PHPNuke Quick & Dirty PHPNuke Quick & Dirty Dieses Tutorial richtet sich an all die, die zum erstenmal an PHPNuke System aufsetzen und wirklich keine Ahnung haben wie es geht. Hier wird sehr flott, ohne grosse Umschweife dargestellt

Mehr

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

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 24. 10. 2014 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden

Mehr

Ferhat Ayaz. XML mit C++

Ferhat Ayaz. XML mit C++ Ferhat Ayaz XML mit C++ Inhaltsverzeichnis Einleitung 11 Teil I XML-Grundlagen 15 i XML im Schnellkurs 17 I.I WasistXML? 18 1.2 Was ist XML nicht? 18 1.3 Der Aufbau eines XML-Dokuments 19 1.4 XML-Deklaration

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr