XML-Programmierung mit XDuce

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Einführung in Objective Caml
Definition [1]: Sei S eine endliche Menge und sei p eine Abbildung von S in die positiven reellen Zahlen Für einen Teilmenge ES von S sei p definiert.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Inhalt Saarbrücken,.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Das LCA – Problem in Suffixbäumen
Extensible Markup Language
DTD XML-Technik Dino Azzano. Definition Document Type Definition Beschreibung der Regeln zum Aufbau aller XML-Dokumente, die zu einer Dokumentklasse.
Anmerkungen zu XML Im September 2000 Entwicklung/Anspruch von XML
Suche in Texten (Stringsuche )
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Reduktionen Def: L · L (L ist reduzierbar auf.
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Objektorientierte Programmierung
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
Formale Sprachen – Mächtigkeit von Maschinenmodellen
Java: Grundlagen der Objektorientierung
von Reaktionen und chemischen Suppen
Bäume als Datenmodelle
DOM (Document Object Model)
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
HTML - Eine erste Annäherung
Welcome DTD. Document Type Definition Graphic Services/Everything you already know about presentations Was ist eine DTD? DTD ist eine Schemasprache.
Prof. Dr. rer.nat. Ralph Großmann Fakultät Informatik / Mathematik Sommersemester 2012 Internet-Technologien XML-basierte Techniken Teil Metasprache der.
Modularization of XHTML™
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
XML Standardisierungen und Abfragesprachen
Lexikalisch-Funktionale-Grammatik
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
EXtensible Server Pages von Belrhiti El mostafa. Inhalt Was ist XSP ? Wichtige XSP Tags Erstellungsmöglichkeiten Die Basis der XSP.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
RDF-Schema Seminar: „Semantic Web“ André Rosin,
EDV1 - Komplexe Datentypen
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
6. Zusammengesetzte Daten (Verbund)
1 XML und Datenbanken Kapitel 7: Modellierung, Teil 1 Meike Klettke Universität Rostock Fakultät für Informatik und Elektrotechnik
§8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein weiteres.
Was versteht man unter XML Schema?
Semantik und Pragmatik Übung7 Lambda Spezial Frank Schilder.
Formale Sprachen und Automaten
Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Künstliches Neuronales Netz nach John Hopfield
Wohlgeformtheit und Gültigkeit Grundlagen der Datenmodellierung Anke Jackschina.
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Kongress99-xml.ppt-1 ( ) 1999 © Maximilian Riegel XML Kommunikationsnetz Franken e.V. XML - die zukünftige Sprache des WWW? Max Riegel Daten im.
PHP: Operatoren und Kontrollstrukturen
DD, DTD, DFD SWT-Übung WS 10/11. 2 DD, Syntax SWT-Übung , Gregor Buchholz Data Dictionary, Syntax - = (besteht aus) / ist äquivalent.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
se_10_regulaere_ausdruecke.ppt1 Softwareengineering Reguläre Ausdrücke (regular expressions) Prof. Dr.-Ing. Axel Benz, Berlin School of Economics.
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
1 Polymorphe Konsistenzbedingungen (1) Polymorphe Konsistenzbedingungen legen fest, welche Arten von Zustandsbeschränkungen nach einer Konkretisierung.
Hauptseminar Web-Services und verteilte Datenbanken Thema XML, DTDs und XML-Schema XML, DTDs und XML-Schema - Stefan Kurz, 25. April 2003.
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
XPath Datenmodell und Sequenzen Universität zu Köln – Historisch-Kulturwissenschaftliche Informationsverarbeitung Datenbanktechnologie – Daniel Ebner –
Funktionale Unifikations-Grammatik (FUG)   Hauptmerkmale der FUG.
Funktionale Unifikations-Grammatik (FUG)  Hauptmerkmale der FUG.
Geoinformation3 Geoinformation III XML Grundlagen und Dokumentspezifikation Vorlesung 12b.
XML – Grundlagen und Anwendungen Teil 4: Modellierung von Datenmodellen mit XML-Schema Prof. Dr. Michael Löwe, FHDW Hannover.
Folie 1 §8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Regular Expression Types Moritz Fuchs. Agenda Wiederholung Reguläre Ausdrücke Regular Expression Types Beispiele.
13.Dezember 2006–1Elektronisches Publizieren: Schemasprachen — Relax NG Schemasprachen für XML — Relax NG — Anne Brüggemann-Klein TU München.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
 Präsentation transkript:

XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka

Inhalt Was ist XDuce? Typaspekte Pattern Matching Restriktionen und Probleme Zusammenfassung

Was ist XDuce? Man spricht “Transduce” aus ;) Eine funktionale Programmiersprache Typen sehen der DTD ähnlich aus (Document Type Definition) XML Dokumente sind Werte Statisch typisiert Ähnlich zu ML

Typaspekte Beispiel Typdefinition für ein Adressbuch : type Addrbook = addrbook[(Name, Addr, Tel?)*] type Name = name[String] type Addr = addr[String] type Tel = tel[String] Entsprechendes DTD: <!ELEMENT addrbook (name, addr, tel?)*> <!ELEMENT name #PCDATA> <!ELEMENT addr #PCDATA> <!ELEMENT tel #PCDATA>

Typen Mächtiges Typsystem: Typen werden als reguläre Ausdrücke angegeben (DTD) Typsystem entspricht den regulären Baumautomaten Strukturelles Subtyping Statisches Typechecking Typen als Menge von Werten Später mehr zur Grammatik

Typdefinition T ::= X Variable B Basistyp () leere Sequenz l[T] Label T,T Konkatenation T|T Vereinigung KFG Daniel Restriktionen

Was ist mit *, + und ? Kleenesche Stern wird rekursiv definiert: T* = T,T* | () + und ? sind Abkürzungen für: T+ = T,T* T? = T|()

Typen als Menge von Werten Funktion [[.]]: nimmt einen Typ und eine Umgebung ρ, die Typvariablen auf Mengen von Werten bildet gibt eine Menge von Werte zurück

Subtyping-Relation Es gibt Typen, die in andere „enthalten“ sind (Teilmenge- Relation): a <: a+ a „ist Teilmenge von“ a+ Ein Typ ist ein Subtyp von einem anderen, wenn der erste eine Teilmenge vom letzten beschreibt Die Werte die links enthalten sind, sind auch rechts enthalten Noch umaendern … Menge reinbringen !

Subtyping-Relation Addressbuch-Beispiel (1) Beispiel: Der Wert „mybook“ val mybook = addrbook[ name[“Peter”], addr[“Berlin”], name[“Hans”], addr[“Bonn”], tel[“123-34-2312”]] Zur Erinnerung: Definition vom Typ Addressbuch: type Addrbook = addrbook[(Name, Addr, Tel?)*] type Name = name[String] type Addr = addr[String] type Tel = tel[String]

Subtyping-Relation Addressbuch-Beispiel (3) Kann man dem Wert „mybook“ den Typ „Addrbook“ zuweisen? val mybook = addrbook[ name[“Peter”], addr[“Berlin”], name[“Hans”], addr[“Bonn”], tel[“123-34-2312”]] „mybook“ hat den Typ: addrbook[Name,Addr,Name,Addr,Tel] Und: <: addrbook[(Name,Addr,Tel?)*] := Addrbook Warum klappt die Zuweisung daoben

Typrekursion Bis jetzt wurde das Typsystem als kontextfreie Sprache definiert Aber: Subtyping wäre dann nicht entscheidbar Deswegen: Restriktion auf Rechts- Rekursion Jetzt: gleich mächtig mit den regulären Baumautomaten Beispiel type X = Int, X, String | () warum???

Pattern Matching Sehr ähnlich zu dem aus ML, aber durch reguläre Ausdrücke mächtiger Beispiel: erstes Tripel finden fun firstTriple: (Name,Addr,Tel?)* -> (Name,Addr,Tel)? = ps:(Name,Addr)* , t:(Name,Addr,Tel), rest:(Name,Addr,Tel?)* -> t | whole:(Name,Addr,Tel?)* -> () Pattern Matching besteht aus 2 Fälle: (Name ,Addr)* werden übersprungen, t wird das erste Tripel zugewiesen Sonst gibt der zweite Fall () zurück.

Pattern Matching Regeln „first matching policy“: Ambiguität: ps:(Name,Addr)* -> ps | t: (Name,Addr) -> t Mehrere Patterns "matchen" dieselbe Eingabe Lösung: Nimm erstes passendes Pattern

Pattern Matching Regeln „longest match“: Ambiguität: ps:(Name,Addr,Tel?)*, t:(Name,Addr,Tel), rest:(Name,Addr,Tel?)* Ein Pattern kann eine Eingabe unterschiedlich „matchen“ Welcher Tripel ist nun mit t gemeint? Lösung: Das früher auftretende Pattern hat höhere Priorität Jedes Pattern darf so viel wie möglich „matchen“ Deswegen „matcht“ t das letzte Tripel in der Eingabe ??

Pattern Matching Exhaustiveness Mit Subtyping wird geprüft, ob ein Pattern erschöpfend („exhaustive”) ist Im Beispiel der Tripelsuche: fun firstTriple: (Name,Addr,Tel?)* -> (Name,Addr,Tel)? = ps:(Name,Addr)* , t:(Name,Addr,Tel), rest:(Name,Addr,Tel?)* -> t | whole:(Name,Addr,Tel?)* -> () Muss folgendes gelten: (Name,Addr,Tel?)* <: ((Name,Addr)*,(Name,Addr,Tel),(Name,Addr,Tel?)*) | (Name,Addr,Tel?)*

Restriktionen der Sprache XDuce wird weiter entwickelt. Zur Zeit fehlen wichtige Features: Funktionen höherer Ordnung Polymorphismus Parametrisierte Typen (Typkonstruktoren) … : Funktionen dessen Argumente auch Funktionen sein können (wie in ML) Fn (String,a) -> a*

Probleme der Sprache Pattern- und Typsystem gleich mächtig wie Baumautomaten Operationen sind sehr teuer (Typechecking: EXPTIME)

Zusammenfassung Funktionale und typisierte Sprache mit XML- Dokumenten als primitive Werte Schwerpunkte: Strukturelle Typen mit regulären Ausdrücken Pattern Matching mit regulären Ausdrücken Was noch fehlt: (geplant) Funktionen hoeherer Ordnung (Parametrischer) Polymorphismus Object-Orientierte Features (wie in den XML Spezifikationen vom W3C) Effizienz?

Anwendungen Beispiele von Progammen, die in XDuce geschrieben sind: HTML2Latex : Ein Konverter (264 Zeilen) Diff: zeigt an ob sich eine XML Datei verändert hat (300 Zeilen)

Alternativen zu XDuce CDuce YAT XMLambda Basiert auf XDuce First-class Funktionen Noch besseres Pattern Matching Subtyping-Algorithmus ohne Backtracking Man kann auch Typen unter Schnitt, und Komplement bilden YAT vom Prinzip her XDuce sehr nah XMLambda Funktionen höherer Ordnung Parametrisches Polymorphismus Subtyping-Algorithmus ohne Backtracking gucken

Referenzen Haruo Hosoya and Benjamin C. Pierce: Regular expression pattern matching for XML. A typed XML processing language (preliminary report). Unter : http://xduce.sourceforge.net/papers.html Uwe Schöning, Theoretische Informatik – kurzgefasst. Um mehr über XDuce zu wissen: xduce.sourceforge.net/ XMLambda www.cse.ogi.edu/~mbs/pub/xmlambda/