Upload
bathildis-stuber
View
112
Download
0
Embed Size (px)
Citation preview
1
XML Schema
Andreas Freier &Tobias Maurer
10. Oktober 2003
Seminar “Logische Aspekte von XML” - SS 2003Gert Smolka
PS-Lab, Uni Saarland
2
Vorschau
• XML Schema: praktische Sicht• Die Essenz von XML• Werte und Typen• Gültigkeitstheorem• Abschluss
3
2x(Descartes, 1637)
λx.2x (Church, 1935)
(LAMBDA (X) (* 2 X))(McCarthy, 1955)
Die Evolution der Sprache
4
<?xml version="1.0"?>
<LAMBDA-TERM>
<VAR-LIST>
<VAR>X</VAR>
</VAR-LIST>
<EXPR>
<APPLICATION>
<EXPR><CONST>*</CONST></EXPR>
<ARGUMENT-LIST>
<EXPR><CONST>2</CONST></EXPR>
<EXPR><VAR>X</VAR></EXPR>
</ARGUMENT-LIST>
</APPLICATION>
</EXPR>
</LAMBDA-TERM>
(W3C, 1998)
5
<?xml version="1.0"?>
<LAMBDA-TERM>
<VAR-LIST>
<VAR>X</VAR>
</VAR-LIST>
<EXPR>
<APPLICATION>
<EXPR><CONST>*</CONST></EXPR>
<ARGUMENT-LIST>
<EXPR><CONST>2</CONST></EXPR>
<EXPR><VAR>X</VAR></EXPR>
</ARGUMENT-LIST>
</APPLICATION>
</EXPR>
</LAMBDA-TERM>
(LAMBDA-TERM
(VAR-LIST (VAR X))
(EXPR
(APPLICATION
(EXPR (CONST *))
(ARGUMENT-LIST
(EXPR (CONST 2))
(EXPR (VAR X))))))
XML- vs. LISP-Syntax
6
XML Schema: praktische Sicht
• eine Spezifikationssprache für XML-Dokumente
• Verbesserung zu DTD:• unterschiedliche Typen• XML-Syntax
7
Beispiel aus der Praxis
Firma X stellt Dokumente zur Verfügung
• es gibt mehrere Arten von Dokumenten• Dokumente sind untereinander verlinkt• Dokumente sind verfügbar:
• online über einen Browser• offline von einer CD• als gedruckter Text
8
Mögliche Lösung
Dokumente werden intern in einer XML-Datenbank gespeichert
• für jeden Typ von Dokumenten gibt es ein XML Schema
• beim Schreiben werden Dokumente von der Datenbank validiert
• es können somit nur gültige Dokumente geschrieben und gelesen werden
Weiterer Vorteil:• eine eindeutige Spezifikation für jeden Dokumenttyp
9
XML Schema: theoretische Sicht
"The Essence of XML" von Jerome Simeon und Philip Wadler:
eine der ersten Anwendungen formaler Methoden auf einen Industrie-Standard
erste wissenschaftliche Untersuchung• der Beziehung zwischen benannten Typen
und strukturellen Typen• der Beziehung zwischen Validierung und
Typzugehörigkeit
10
XML als externes Format zur Darstellung von Daten
• nicht schwer• benötigte Eigenschaften:
• self-describing:man muß aus der externen Darstellung die interne Darstellung ableiten können
• round-tripping:beim Konvertieren aus der internen Darstellung in die externe und wieder zurück muß die neue interne Darstellung mit der alten identisch sein
11
XML besitzt keine der beiden Eigenschaften• nicht selbstbeschreibend ohne XML Schema, da z.B.
keine Unterscheidung zwischen Strings und Integers
Beispiel: Überführung in die LISP-Syntax
<foo>1 2 3</foo> =>(foo "1 2 3") oder (foo 1 2 3)?
<bar>1 two 3</bar> => (bar 1 "two" 3) oder (bar 1 "two" "3")?
• kein round-tripping wegen Beschränkungen des XML Schema, z.B. bei Vereinigungen von Integers und Strings
12
Autoren: Die Essenz von XML
• die Aufgabe von XML ist nicht schwer• XML erfüllt diese nicht sehr gut
Dennoch: Da XML eine weit verbreitete Technologie ist, lohnt es sich, sie durch Modelle zu formalisieren
13
Besonderheiten des Modells
• XML Schema stark vereinfacht, z.B. von 19 primitiven Datentypen nur integer und string
• vereinfachte Syntax:
<xs:simpleType name="feet"> <xs:restriction base="xs:integer"/></xs:simpleType><xs:element name="height" type="feet"/>
define type feet restricts integerdefine element height of type feet
unsere Schreibweise:
14
Benannte und strukturelle Typen
Benannte Typen
type Feet = Integertype Miles = Integer
unterschiedliche Typen, weil unterschiedliche Namen
Strukturelle Typen
type Feet = Integertype Miles = Integer
Synonyme für den Typ Integer,
gleiche Typen, weil gleiche Struktur
15
Typzugehörigkeit und Validierung
Programmiersprachen:Wert v ist entweder vom Typ t oder
nicht
XML: • Validierung annotiert ungetypte Werte mit
Typen• Nur bei validierten Werten ist die Prüfung auf
Typzugehörigkeit möglich
16
define type feet restricts integerdefine element height of type feet
<height>10023</height>=>
element height { "10023" }
validate as element height { "10023" }=>
element height of type feet { 10023 }
Ungetypter Wert wurde mit einem Typ annotiert
Validierung
17
Gilt: getypter Wert
element height of type feet { 10023 }matches
element height
Gilt nicht: ungetypter Wert
element height { "10023" }matches
element height
Prüfung auf Typzugehörigkeit
18
ungetypte WerteUntypedValue ::= ()
| UntypedItem(, UntypedItem)*
UntypedItem ::= element ElementName { UntypedValue }| String
element paper {element title { "Data on the Web" },element author { "Serge Abiteboul" }
}
19
getypte WerteValue ::= ()
| Item(, Item)*
Item ::= Element| String | Integer
Element ::= element ElementName OfType? { Value }
OfType ::= of type TypeName
element paper of type paperType {element title of type string { "Data on the Web" },element author of type string { "Serge Abiteboul" }
}
20
TypenType ::= ()
| ItemType| Type, Type| Type | Type| Type ?| Type +| Type *
ItemType ::= ( integer | string ) | ElementType
ElementType ::= element ElementName? OfType?
Listen:define element ints of type intListdefine type intList { integer+ }
Vereinigungen:define element fact of type intOrStrListdefine type intOrStrList { ( integer | string )* }
21
TypenDefinition ::= define element ElementName OfType | define type TypeName TypeDerivation
define element title of type stringdefine element author of type stringdefine element year of type stringdefine element abstract of type string
define type publicationType {
element title ?,
element author *, element abstract ?,
element year}
define element paper of type publicationType
22
Typen
TypeDerivation ::= restricts AtomicTypeName | restricts TypeName { Type } | extends TypeName { Type }
define type publicationType { element title ?, element author *, element abstract ?, element year}
define type bookType restricts publicationType { element author +, element title, element year}
define type ISBNbookType extends bookType { element ISBN of type integer}
define element book of type bookType
23
Typen
anyType ist die Wurzel der Typhierarchie von XML Schemaund wie folgt definiert:
define type anyType restricts anyType {( integer | string | element )*
}
24
Worauf wollen wir hinaus?
Type
UntypedValue
Value
interne Repräsentationexterne Repräsentation
25
Und so sieht's aus:
validate as Type { UntypedValue } Value
• partielle Funktion
26
THEOREM: Gültigkeitstheorem
validate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
Beweis durch strukturelle Induktion .
27
validate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
Value matches Type
element author of type string { "Robert Harper" },element author of type string { "John Mitchell" }
matches
element author of type string +
28
element configuration of type configuration.type {element shuttle of type miles { 120 },element laser of type miles { 10023 }
}matches
element configuration of type configuration.type
Value matches Type
•configuration erwartet: element laser of type feet
29
Value matches Type
element configuration {element shuttle { ”120” },element laser { ”10023” }
}matches
element configuration of type configurationType
• configuration ist ungetypt
30
validate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
Value erases to UntypedValue
element fact of type intOrStr { "I", "saw", 8, "cats" }
erases to
element fact { "I saw 8 cats" }
31
validate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
Value erases to UntypedValue
element mixed of type anyType {"I saw", "eight ", element em of type string { "cats" }
}erases to
element mixed { "I saw eight ", element em { "cats" } }
form
al
<mixed>I saw eight <em>cats</em></mixed>
XM
L
32
Zur Erinnerung
validate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
33
matchesvalidate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
( ) matches ( )
Value matches Type1
Value matches Type1 | Type2
Value matches Type1
Value matches Type2 | Type1
Value matches ( ) | Type
Value matches Type?
34
für Elemente
ElementType yields ElementName of type BaseTypeName
BaseTypeName resolves to Type
TypeName derives from BaseTypeName
Value matches Type
element ElementName of type TypeName { Value } matches ElementType
Wert Typ
35
erases tovalidate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
Value erases to UntypedValue
element ElementName of type TypeName { Value }erases to
element ElementName { UntypedValue }
36
erases tovalidate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
Value1 erases to UntypedValue1 , String1
Value2 erases to String2 , UntypedValue2
String3 = concat (String1, " ", String2)
Value1, Value2 erases to UntypedValue1, String3, UntypedValue2
37
erases tovalidate as Type { UntypedValue } Value
genau dann wenn
Value matches Type,Value erases to UntypedValue
String erases to String
Integer-of-string( String ) erases to String
8 of type ( integer | string ) "8"
Beispiel:
38
Roundtripping
Korrolar: Roundtripping
Falls
dann gilt:
Value = Value'
Value matches TypeValue erases to UntypedValue
validate as Type { UntypedValue } Value'Type ist eindeutig (i.S.d. Validierung)
39
Eindeutigkeit
Definition: Eindeutigkeit
Ein Typ (Type) heißt eindeutig (im Sinne der Validierung), wenn es für jeden ungetypten Wert (UntypedValue) höchstens einen Wert(Value) gibt so dass gilt:
validate as Type { UntypedValue } Value
40
Sinnvolle Werte
• enthalten Werte Elemente mit Typannotation,=> der Wert des Elementes passt zum Typ in der Annotation
• ein durch Validierung erzeugter Wert ist immer sinnvoll
• matching optimieren
41
Optimiertes Matching
•Validierung führt immer zu einem sensiblen Wert:
validate as Type { UntypedValue } ValueValue is sensible
ElementType yields ElementName of type BaseTypeName
BaseTypeName resolves to Type
TypeName derives from BaseTypeName
Value matches Type
element ElementName of type TypeName { Value } matches ElementType
42
Abschlussbemerkung
•Andere Typsysteme für XML:benötigen Subtyping Algorithmen,die auf Regulären Baumausdrücken und Endlichen Baumautomaten basieren.
•Hier:gewöhnliche Reguläre Ausdrücke undEndliche Automaten genügen.
43
Philip Wadler:• A formal semantics of patterns in XSLT (1999)• Two semantics of XPath (2000)• MSL: A model for W3C XML Schema (2001)
Philip Wadler und Jerome Simeon:• An Algebra for XML Query (2000)
Jerome Simeon:• YATL: a Functional and Declarative Language for XML
(2000) • Integrity Constraints for XML (2000)• A Unified Constraint Model for XML (2001)
Related Work
44
The Essence of XML, Jérôme Siméon & Philip Wadler [POPL`03]
Data on the Web,Serge Abiteboul, Peter Buneman, Dan
Suciu
Quellen