Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdGijs Goossens Laatst gewijzigd meer dan 10 jaar geleden
1
Modelleren van XML element content of Hoe doe je dat? Harrie Passier & Bastiaan Heeren TouW-dag 13 november 2010
2
XML element content XML:theory and applications L. Wiegering H. Pootjes H. Passier Introduction Basics of XML Opdracht: Vind het goede content model
3
Modelleren van content modellen moeilijk? 75% = eenvoudig (book voorbeeld) 20% = lastiger 5% = moeilijk
4
Modelleren van content modellen moeilijk? … … … oXygen Wat als: - b = klant - c = naam - d = nummer
5
Modelleren van content modellen moeilijk? Model van de zetten tijdens een damspel: Probleem: - niet deterministisch - … en niet deterministisch te maken
6
Modelleren van content modellen belangrijk? Ongeveer de helft v.d. XML documenten wijst niet naar een schema Ongeveer 2/3 van de schema’s bevatten fouten en zijn te ruim gedefinieerd Dit leidt tot problemen bij informatie-uitwisseling tussen applicaties
7
Aanleiding Binnen Computer Science is weinig aandacht voor methodisch werken en het gebruik van (formele) methoden [Parnas, Dean, Gries, …] –Vooral aandacht voor wat, nauwelijks hoe “Hoe doe je dat nou?” Gekeken naar de cursus XML; het systematisch modelleren van XML content modellen als voorbeeld uitgewerkt –Methode –Leerproces
8
Het (systematisch) oplossen van problemen Van precieze recepten (7 ×(3 - 8)), heuristieken t/m vuistregels/richtlijnen (Unified process & UML) Nodig: –Beschrijving domein (opbouw getallen, operatoren, expressies) –Regels voor het manipuleren (optellen, aftrekken, …) –Doel (reduceren tot een getal) –Strategie (eerst optellen/aftrekken, dan ….)
9
Beschrijving domein: syntax Een XML content model is te beschouwen als een reguliere expressie –Empty stringEMPTY ( ) –Alfabetelementnamen –SequentieR,S(RS) –KeuzeR|S –Nul of een keerR? –Nul of meer keerR* –Een of meer keerR+ Ons book voorbeeld: (title author+ chapter+)
10
Beschrijving domein: Taal L( )= { } L(a)= {a} L(ST)= L(S)L(T) L(S|T)= L(S) L(T) L(T*)= (L(T))* (T?)= L(T | ) = L(T) { } L(T+)= L(TT*) = L(T)L(T*) XY = {xy | x X, y Y } {a, b}{c, d} = {ac, ad, bc, bd} L((a|b) c) = { L(ST) } L(a|b) L(c) ={ L(S|T) } (L(a) L(b)) L(c) = { distributie } L(a)L(c) L(b)L(c) = { L(a) } {a}{c} {b}{c} = { concatenatie } {ac} {bc} ={ vereniging } {ac, bc}
11
Regels voor het manipuleren R |(S|T)= (R|S) | T R | S= S | R R | R= R R(ST)= (RS)T R = R = R R? = | R R* = | RR* R+= RR* RS | RT= R (S|T) RT | ST= (R|S) T R*R= RR* (RS)*R= R(SR)* R n ≤ R+ (voor n ≥ 0) R n ≤ R* (voor n ≥ 1 ) abc | bc | bac | abcd = { R | S = S | R } bc | bac | abc | abcd = { R S | R T = R ( S | T ) } b(c|ac) | abc | abcd = { R = R = R } b( c|ac) | abc | abcd = b( |a)c | abc | abcd = ba?c | abc | abcd = ba?c | abc | abcd = ba?c | abc( |d) = ba?c | abcd?
12
Doel Deterministisch content model (SGML) ?
13
Doel Deterministisch content model (SGML) Precieze content modellen –Specificeren precies die rijtjes kindelementen die we willen toelaten en geen andere bijvoorbeeld –Bijvoorbeeld: cd?|dc Correcte content modellen –Specificeren minstens die kindelementen die we willen toelaten –Bijvoorbeeld: ( c|d)+ (ook cccddd is nu toegelaten) Ik ga alleen in op de precieze modellen
14
Verwijderen van niet-determinisme Twee situaties: 1.Een content model bevat R|S, en de doorsnede van starters(L(R)) en starters(L(S)) is niet leeg. –Voorbeeld: ab|ac 2.Een content model bevat R?, R* of R+, en de doorsnede van starters(R?) en de set aan namen die kan volgen is niet leeg. –Voorbeelden: a?a en (ab)*ac Ik ga alleen in op de eerste situatie
15
Strategie situatie 1 Gegeven R|S met minstens 1 gelijke starter (zeg a): 1.Herschrijf R en S zodat a het eerste element in de sequentie is –Expandeer cardinaliteiten (bijvoorbeeld R*= | RR* en R+ = RR*) –Verwijder ( R = R = R) –Distribueer sequentie over keuze (RT | ST = (R|S) T) 2.Herschik zo nodig (R | S = S | R ) 3.Factoriseer (RS | RT = R (S|T)) en introduceer hiervoor zo nodig . (ab)+ | bc | abc = ab(ab)* | bc | abc = ab(ab)* | abc | bc = ab((ab)*|c) | bc (a|b)a | a = aa | ba | a = aa | a | ba = aa | a | ba = a(a| ) |ba
16
Strategie voor precieze modellen (I) Startvorm (SF): Schrijf alle sequenties van kindelementen op gescheiden door keuze-tekens. Dit is een eerste precies model … … … c | cd |dc
17
Strategie voor precieze modellen (II) Invoer: Een XML content model in SF Uitvoer: Een deterministisch content model zonder tekens 1.Verwijder redundante keuzen (R|R = R), pas zo nodig de volgorde aan (R|S = S|R) 2.Maak het model deterministisch (zie voorgaande strategie) 3.Verwijder aanwezige tekens (R? = R| ) c | cd | dc = c | cd | dc = c( |d) | dc = cd? | dc ab | | abab | ab = | ab | ab | abab = | ab | abab = | ab | abab = | ab( |ab) = | ab(ab)? = (ab(ab)?)?
18
Samenvatting Niet alle XML content modellen zijn eenvoudig Veel XML schema's zijn incorrect te ruim gedefinieerd Vertrouw niet op tools als XML Spy en oXygen Met pen en papier modelleren blijft noodzakelijk Een formele aanpak werpt zijn vruchten af –Inzicht –Doelen (precieze en correcte modellen) –Goede modellen Voor precieze en correcte modellen hebben we een strategie Een (meer) methodische/formele aanpak zou meer gebruikt moeten worden Literatuur: Passier, H., Heeren, B., Modeling XML Content Explained Passier, H., Notes on modeling XML element content
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.