Protocol Engineering: Beschreibung und Entwicklung von Kommunikationsprotokollen
Sichere templategestützte Verarbeitung von XML-Dokumenten
1. Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie
Sichere templategestützte
Verarbeitung von XML-Dokumenten
Falk Hartmann
Verteidigung der Dissertation
Dresden, 1. Juli 2011
5. Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-Verarbeitung
Entwurf einer generischen Slot Markup-Sprache
Unterstützung der sicheren Template-Erstellung
Flexible, effiziente und sichere Template-Ausprägung
Validierung
▪ Beiträge der Arbeit und Fazit
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 5
6. Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-Verarbeitung
Entwurf einer generischen Slot Markup-Sprache
Unterstützung der sicheren Template-Erstellung
Flexible, effiziente und sichere Template-Ausprägung
Validierung
▪ Beiträge der Arbeit und Fazit
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 6
7. Ziele
Sichere Erstellung
Rückmeldung an den Autor über die Richtigkeit des
Ausprägungsergebnisses in Bezug auf die Zielsprache
Sichere template-
gestützte Verarbeitung
Sichere Ausprägung
Klare und ausreichende Rückmeldung von bei der
Ausprägung auftretenden Problemen
Trennung der Belange
Möglichkeit arbeitsteiliger Entwicklung
Breite Anwendbarkeit
Vermeidung von Einschränkungen in Bezug auf Ziel- und Anfragesprachen
sowie Anwendungsgebiete
Nutzung existierender Standards
Wiederverwendung bestehender Sprachen, Werkzeuge und Prozesse
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 7
8. Anforderungen
Erhaltung der Einschränkungen der Zielsprache
Übernehmen von Verboten der Zielsprache in die Templatesprache
Abdeckung der Zielsprache
Ermöglichen der Erzeugung aller Sätze der Zielsprache
Ableitbarkeit
Automatisches Ableiten der Grammatik der Templatesprache aus der
Grammatik der Zielsprache
Steueranweisungen
Erlauben bedingter und wiederholter Ausprägung von Teilen der Templates
Typsicherheit der Ausprägungsdaten
Erzwingen oder Überprüfen der korrekten Typen der Ausprägungsdaten
Unabhängigkeit von der Anfragesprache
Vermeiden von Annahmen über die Anfragesprache
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 8
9. Ziele → Anforderungen
Beispiel:
Trennung der Belange → Steueranweisungen:
Fehlende Steueranweisungen resultieren i.d.R. in mangelnder Trennung
der Belange
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 9
11. Anforderungen → Lösungsarchitektur
Beispiel:
Unabhängigkeit von der Anfragesprache → Bestimmung der
Ausprägungsdaten:
Spezielle Lösungsarchitekturkomponente zur Bestimmung der
Ausprägungsdaten erleichtert Anpassung an Anfragesprachen
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 11
12. Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-Verarbeitung
Entwurf einer generischen Slot Markup-Sprache
Unterstützung der sicheren Template-Erstellung
Flexible, effiziente und sichere Template-Ausprägung
Validierung
▪ Beiträge der Arbeit und Fazit
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 12
13. Entwurf einer generischen Slot Markup-Sprache
XTL – XML Template Language
Universell, syntax- und semantik-erhaltend
Adressiert Fehlertyp
Sprachumfang
• Erzeugung von Attributwerten, Text (xtl:attribute, xtl:text)
• Bedingte und wiederholte Ausführung (xtl:if, xtl:for-each)
• Makros
• Einbettung kompletter XML-Fragmente
• Unterstützung für multiple Ausprägungsdatenquellen
• Unterstützung für mehrschrittige Ausprägung
Syntax
• XML Schema
Semantik
• Denotationell formuliert in Haskell
• Zusätzlich translationale und operationelle Beschreibung
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 13
14. Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-Verarbeitung
Entwurf einer generischen Slot Markup-Sprache
Unterstützung der sicheren Template-Erstellung
Flexible, effiziente und sichere Template-Ausprägung
Validierung
▪ Beiträge der Arbeit und Fazit
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 14
15. Grundidee der sicheren Erstellung
Adressiert Fehlertypen und
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 15
16. Aufteilung der Einschränkungen
XML Schema ist nicht ausdrucksstark genug zur
Beschreibung der Templatesprache → CXSD!
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 16
17. Aufteilung der Einschränkungen
Zielsprachengrammatik
Erforderliche oder optionale Attribute
Templatesprachengrammatik Einschränkung der Ausprägungsdaten
• Umwandlung in optionale Attribute • Typüberprüfung entsprechend Typ des
• Erlauben von xtl:attribute im Attributes
Inhaltsmodell des Elternknotens
• Einschränkung der erzeugbaren Attribute
(Namen)
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 17
18. Aufteilung der Einschränkungen
Zielsprachengrammatik
Simple Content (durch “einfache” Inhaltstypen eingeschränkter Elementinhalt)
Templatesprachengrammatik Einschränkung der Ausprägungsdaten
• Umwandeln in Mixed Content • Typüberprüfung entsprechend
• Erlauben von xtl:text im Inhaltstyp
Inhaltsmodell
• Einschränkung des Textinhalts
entsprechend Inhaltstyp
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 18
19. Aufteilung der Einschränkungen
Zielsprachengrammatik
Elemente mit Kardinalität {0,1} oder {n,m}
Templatesprachengrammatik Einschränkung der Ausprägungsdaten
• Ersetzen durch Alternative zwischen • Überprüfung der Anzahl der
Ursprungselement und xtl:if oder Wiederholungen
xtl:for-each
• Einschränkung des Inhalts von xtl:if
bzw. xtl:for-each auf
Ursprungselement
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 19
20. Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-Verarbeitung
Entwurf einer generischen Slot Markup-Sprache
Unterstützung der sicheren Template-Erstellung
Flexible, effiziente und sichere Template-Ausprägung
Validierung
▪ Beiträge der Arbeit und Fazit
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 20
21. Eigenschaften der Template-Ausprägung
Flexibel
• Plug in-Mechanismus für Anfragesprachen
• Implementierungen für XPath, SPARQL, OCL
Effizient
• Implementierung mit StAX (JSR-173)
• Speicherbedarf wächst linear mit Anzahl der Knoten in größter zu
wiederholender Einheit im Template
• Zeit wächst linear mit Größe des Ausprägungsergebnisses
Sicher
• Ausprägungsdaten werden auf Typ und Multiplizität geprüft
• Alternativer Ansatz: Generierung einer Template-Schnittstelle
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 21
22. Generierung einer Template-Schnittstelle
Grundidee
• Nutzung der Ausdrücke der Anfragesprache zur Erzeugung eines Modells
der Ausprägungsdaten
• Gewährleistung der Richtigkeit der Ausprägungsdaten durch Transfer der
Datentypen aus dem XML- in das Java-Typsystem
• Analog zur XML binding-Technologien (z.B. JAXB), aber neu für
Templates
Konsequenzen
• Einschränkung der Abfragesprache XPath auf umkehrbare Ausdrücke
• Beispiel:
XPath-Ausdruck //a -> nicht anwendbar auf Java-Objekt-Modell
• Umkehrung der Datenbezugsrichtung
push statt pull-Strategie
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 22
23. Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-Verarbeitung
Entwurf einer generischen Slot Markup-Sprache
Unterstützung der sicheren Template-Erstellung
Flexible, effiziente und sichere Template-Ausprägung
Validierung
▪ Beiträge der Arbeit und Fazit
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 23
24. Validierungsmittel
Implementierung eines Prototyps
Aufteilung der Einschränkungen, Template-Validierung und -Ausprägung,
Template Schnittstellen-Generierung
Testsuite
entsprechend Implementierung
Übereinstimmung Template-Ausprägung mit denotationeller und
translationaler Semantik
Anwendung der Implementierung
Einsatz in den Projekten SNOW, FeasiPLe und EMODE
Beweis der Erhaltung der Einschränkungen der Zielsprache
Induktionsbeweis ausgehend von Algorithmus zur Aufteilung der
Einschränkungen
Performance-Messungen
Laufzeit der Template-Validierung, Laufzeit und Speicherbedarf der Template-
Ausprägung, Vergleichsmessung mit JSP und XSL-T
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 24
25. Validierungsmittel → Ziele
Beispiel:
Performance-Messungen → Breite Anwendbarkeit:
Ist der Einsatz des Ansatzes praktisch vertretbar?
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 25
26. Testsuite
Überprüfung der Implementierung
im Hinblick auf die Ziele Sichere Erstellung und Sichere Ausprägung
• Vergleich der Ergebnisse der verschiedenen Komponenten mit hinterlegten,
geprüften Ergebnissen
• Prüfung der Aufteilung der Einschränkungen, Validierung, Ausprägung,
Generierung von Template-Schnittstellen und Round-Trip-Test
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 26
27. Beweis der Erhaltung der Einschränkungen
Voraussetzung
Template, welches der Template-Grammatik genügt
Ausprägungsdaten, welche den entsprechenden Einschränkungen genügen
Behauptung
Ausprägungsergebnis genügt der Zielsprachengrammatik
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 27
28. Performance-Messungen
Laufzeit der Templatevalidierung
Basis: Template mit 2n Kindknoten mit erforderlichem Attribut,
• n Attribute direkt spezifiziert
• n-1 Attribute mittels xtl:attribute erzeugt
• 1 Attribute fehlt und wird nicht erzeugt
(Messung auf Intel 2 Duo 2.8 GHz, 4 MB RAM, MacOS 10.6.7, JDK 1.6.0_24)
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 28
29. Agenda
▪ Motivierendes Beispiel und Begrifflichkeiten
Sichere Template-Verarbeitung
Entwurf einer generischen Slot Markup-Sprache
Unterstützung der sicheren Template-Erstellung
Flexible, effiziente und sichere Template-Ausprägung
Validierung
▪ Beiträge der Arbeit und Fazit
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 29
30. Beiträge
Weitere Beiträge
• Definition des Begriffes Template
• Klassifikation existierender Template-Ansätze
Entwurf einer universellen Slot Markup-Sprache
• Syntax- und semantik-erhaltend
• Unabhängig von konkreter XML-Zielsprache
• Unabhängig von Anfragesprache
• Denotationell definierte Semantik
Sichere Erstellung und Ausprägung
• Überprüfung der Ausprägungsergebnisse soweit als möglich zur
Erstellungszeit
• Direkte Überprüfung der Ausprägungsdaten zur Ausprägungszeit
• Alternative: Generierung einer Template-Schnittstelle
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 30
31. Fazit
Sichere Erstellung und Ausprägung sind
mit dem gezeigten Ansatz möglich!
- Trennung der Belange, Breite Anwendbarkeit gegeben
- Nutzung existierender Standards eingeschränkt erreicht
- Fehlerklasse adressiert durch Sprachentwurf der XTL
- Fehlerklassen und adressiert durch Aufteilung der Einschränkungen
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 31
32. Vielen Dank für Ihre
Aufmerksamkeit!
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 32
33. Verwandte Arbeiten
Templates: Mittel zur Erzeugung konkreter Syntax
- Modell-zu-Text Transformationen
- Anwendungsgebiete: Webapplikationen, Codegenerierung
- Einfache Nutzung existierender Fragmente der konkreten Syntax
Verwandte Ansätze
- Aspekt-orientierte Programmierung (XUpdate)
- Sicherheit ist Forschungsthema
- Transformationstechniken (XSL-T)
- Erhalten die Syntax der Zielsprache nicht
- Hoher Lernaufwand
- Binding-Techniken (JAXB)
- Sicher per Definition
- Fragmente konkreter Syntax müssen in anderen technologischen
Raum übersetzt werden
- Verletzung der Trennung der Belange
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 33
34. Verwandte Arbeiten (Vergleich)
Quelle 1 + Quelle 2
JSP
XML Java any XML
Ziel
XUpdate
XML XML
XUpdate XML
(core) (advice)
XSL-T
XSL-T + XML XPath XML’ XML
JAXB
Java Java any XML
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 34
36. Klassifikation Template-Ansätze (1)
1. Target Language Awareness of Slot Markup
- Syntax preserving
- Semantic preserving (TAL)
- Semantic abusing (XMLC)
- Syntax destructing (Perl)
2. Generality of Slot Markup
- Specific for a particular target language
- Generic
3. Entanglement Index [Parr, 2006]
- No modification of the model
- No computations
- No comparisons
- No type assumptions
- Separation of concerns
4. Instantiation Data Access Strategy
- Push
- Pull
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 36
37. Klassifikation Template-Ansätze (2)
5. Query Language
- Opaque vs. significant
- Declarative vs. imperative
- Domain specific vs. general purpose
6. Instantiatian Technique
- Compiler
- Interpreter
7. Reuse
- Macros
- Group inheritance
8. Further Features
- Group interfaces
- Newline handling
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 37
39. Anwendung der Implementierung
SNOW
- Benutzung der XTL als einfache Sprache für Dokumentationsautoren bei
EADS
- Zwei Hauptkomponenten basierend auf der XTLEngine (Datenschicht,
Controller)
- EADS Ingenieure schätzen Einfachheit der XTL
EMODE
- Komplexe Transformationen auf Basis der XTLEngine
- Nutzung der XTL zur Erzeugung von MXML (Flex) Applikationen
FeasiPLe
- Codegenerierung aus Ontologien mittels SPARQL-Abfragen
- Emulation der transitiven Hülle innerhalb eines PHP → Erweiterung von
SPARQL um die Fähigkeit zur Hüllenbildung
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 39
47. Klassifikation von Schemasprachen
1. Regular Tree Grammars (Relax NG)
2. Restrained-Competition Tree Grammars
3. Single-Type Tree Grammars (XML Schema)
4. Local Tree Grammars (DTD)
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 47
48. Vertikale und horizontale XML-Pipeline
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 48
49. Pull parser vs. Push parser
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 49
50. Push strategy vs. Pull strategy
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 50
57. OCL Constraint für erforderliche Attribute
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 57
58. OCL Constraint für Textinhalte
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 58
59. Unique Particle Attribution
XML Schema Part 1: Structures
A content model must be formed such that during validation of an element
information item sequence, the particle component content contained directly,
indirectly or implicitly therein with which to attempt to validate each item in
the sequence in turn can be uniquely determined without examining the
content or attributes of that item, and without any information about the
items in the remainder of the sequence.
Sichere templategestützte Verarbeitung von XML-Dokumenten Folie 59
Notas do Editor
Adaptation may be on template technique and/or template level (template level: use JSP means to simplify generation of non-HTML target language)Validation is not always presentDifferent roles act in the life cycle phases