Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Τεχνολογίες XML. XML και DTD Υποστηρικτικές τεχνολογίες Γλώσσες ερωτήσεων.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Τεχνολογίες XML. XML και DTD Υποστηρικτικές τεχνολογίες Γλώσσες ερωτήσεων."— Μεταγράφημα παρουσίασης:

1 Τεχνολογίες XML

2 XML και DTD Υποστηρικτικές τεχνολογίες Γλώσσες ερωτήσεων

3 HTML Χρησιμοποιεί tags ανάμεσα στο κείμενο......για να περιγράψει το layout της σελίδας Alan, 42 years, Δεν διευκολύνει άλλα προγράμματα να κατανοήσουν την δομή και το περιεχόμενο μιας σελίδας Ο wrapper «σπάει» αν το italic αλλάξει σε teletype Το πρόβλημα είναι οτι σχεδιάστηκε ειδικά για να περιγράψει την παρουσίαση και όχι το περιεχόμενο Καθένας θα ήθελε να υπάρχει «ένα ακόμη tag» στην HTML προκειμένου να βοηθηθεί η δική του εφαρμογή

4 XML Σχεδιάστηκε ειδικά για να περιγράψει το περιεχόμενο (content) και όχι την παρουσίαση μιας σελίδας Βασικές διαφορές από την HTML Μπορεί κανείς να ορίσει νέα tags κατά βούληση Ενα έγγραφο XML μπορεί προαιρετικά να περιέχει μια περιγραφή της γραμματικής του Τα tags δομούν το περιεχόμενο Kostas … Το πως θα εμφανιστούν ορίζεται ξεχωριστά από κάποιο stylesheet (XSL)

5 XML (2) Ο ρόλος της XML Προτάθηκε σαν μια markup γλώσσα περιγραφής εγγράφων Καταγωγή απο την SGML (ψηφιακές βιβλιοθήκες) Εξελίσσεται όμως σε ένα παγκόσμιο πρότυπο για ανταλλαγή πληροφορίας Αυτό τράβηξε το ενδιαφέρον της κοινότητας των ΒΔ Βασικό συστατικό της XML είναι το element Κείμενο που περικλείεται από ένα ζεύγος tags Start-tag και end-tag (markups) Εκτός από την λογική δομή (elements), τα tags περιγράφουν και την φυσική δομή (entities) Alan 42

6 Εlements και tags Τι μπορεί να υπάρχει ανάμεσα στα start-tag και end-tag; Απλό κείμενο Αλλα elements Οποιοδήποτε μίγμα των δύο παραπάνω ! Τα tags στην XML: Ορίζονται από τους χρήστες, δεν υπάρχουν προκαθορισμένα tags όπως στην HTML Ανοίγουν και κλείνουν πάντα με την «σωστή» σειρά (σαν παρενθέσεις) Εξαίρεση: empty tag, πχ. (το / στο τέλος) = Element, element content, και subelement

7 XML attributes Ενα element μπορεί να περιέχει μηδέν ή περισσότερα attributes Δεν σχετίζονται με τα attributes στις σχεσιακές βάσεις Περιγράφουν ιδιότητες (properties) του element trompette no rue Croix-Bosset Οπως και τα elements, τα attributes ορίζονται από τον χρήστη

8 Attributes και elements Διαφορές με elements: Η τιμή του attribute είναι πάντα ένα string σε εισαγωγικά, ενώ το element μπορεί να περιέχει άλλα elements Ενα element μπορεί να έχει το πολύ ένα attribute με ένα όνομα, ενώ μπορεί να έχει πολλά subelements με το ίδιο όνομα Τα attributes: Φανερώνουν την καταγωγή της XML σαν document markup γλώσσας Εισάγουν κάποια δυσκολία στην ανταλλαγή πληροφορίας: αναπαράσταση σαν attribute ή σαν subelement; Alan

9 ΧML και ημιδομημένα δεδομένα Η XML είναι κατάλληλη για την αναπαράσταση ημιδομημένων δεδομένων ssd-expression: {person: {name: “Alan”, age: 42, Αντίστοιχο XML: Alan 42 Διαφορές με ημιδομημένα δεδομένα: Μοντέλο XML Graph, XML references, διάταξη (order), μίξη elements με κείμενο, επιπλέον στοιχεία της XML

10 -10- XML Graph Ενα μοντέλο για XML data: XML Graph Οι κόμβοι αντιστοιχούν στα elements Διαφορά με SSD Graph: οι ετικέτες είναι στους κόμβους Εύκολη η μετατροπή, ιδίως αν έχουμε δένδρο Μπορούμε να έχουμε γράφο; - ΝΑΙ

11 -11- XML References H XML έχει έναν μηχανισμό ώστε ένα element να μπορεί να «δείχνεται» από περισσότερους από έναν «πατέρες» Ορίζοντας έτσι γράφο αντί για δένδρο Ο μηχανισμός είναι attributes τύπου ID, IDREF, και IDREFS Τα ID αναθέτουν ταυτότητες στα elements Τα IDREF «δείχνουν» στα ID από άλλα elements, οπουδήποτε Nevada... Carson City Ποιά attributes είναι τύπου ID / IDREF; Πάντως όχι κατ’ ανάγκη αυτά που λέγονται id / idref Αλλά αυτά που ορίζονται από το DTD (στην συνέχεια)

12 -12- Διάταξη Τα δύο SSD είναι ισοδύναμα: {person: {firstname: “John”, lastname: “Smith”}} {person: {lastname: “Smith”, firstname: “John”}} Ενώ τα δύο XML δεν είναι ισοδύναμα: John Smith John Τα XML attributes δεν είναι διατεταγμένα Τα παρακάτω είναι ισοδύναμα: Η απαίτηση για διάταξη δυσκολεύει την αποδοτική διαχείριση των δεδομένων XML Συχνά η διάταξη αγνοείται σε εφαρμογές ανταλλαγής πληροφορίας

13 -13- Μίξη elements και κειμένου Το παρακάτω επιτρέπεται στην XML Λέμε ότι το person έχει mixed content This is my best friend Alan 42 I am not too sure about the following Δείχνει την εγγραφο-κεντρική καταγωγή της XML Κάπως «αφύσικο» από την πλευρά των βάσεων δεδομένων Προτιμούμε το element content

14 -14- Επιπλέον στοιχεία της XML Εγγραφο-κεντρικά στοιχεία που δεν χρειάζονται στην ανταλλαγή δεδομένων Σχόλια Processing Instructions Αρχική γραμμή Προαιρετικό Document Type Definition (DTD) Ορίζει την γραμματική του κειμένου …  root element

15 -15- DTD Document Type Definition (DTD): αναπόσπαστο μέρος της XML Προτάθηκε σαν μια γραμματική για τα XML έγγραφα Σε κάποιο βαθμό μπορεί να θεωρηθεί σαν σχήμα για δεδομένα μορφοποιημένα σε XML Ενα DTD που περιγράφει δυαδικά δένδρα: Τα DTDs μοιάζουν να ορίζουν τύπους δεδομένων

16 -16- Δήλωση attributes στο DTD Σύνδεση των attributes με τα elements στα οποία εμφανίζονται trompette Ορισμός των attributes #REQUIRED υποχρεωτικό, #IMPLIED προαιρετικό Τύπος CDATA = string Τύποι ID, IDREF, IDREFS

17 -17- Well-formed και valid Well-formed XML έγγραφα Τα tags πρέπει να είναι σωστά εμφωλιασμένα Τα attributes ενός element πρέπει να είναι μοναδικά Valid XML έγγραφο Είναι well-formed Εχει κάποιο DTD Συμμορφώνεται με αυτό το DTD Περιορισμοί του DTD σαν σχήμα για δεδομένα XML Δεν υπάρχουν ατομικοί τύποι (πχ. integer) Δεν υπάρχουν περιορισμοί διαστήματος (πχ ) Ο τύπος ενος element είναι global (πχ. ίδιο name και σε person και σε course;) Δεν προσδιορίζει τον τυπο των IDREFs

18 XML και DTD Υποστηρικτικές τεχνολογίες Γλώσσες ερωτήσεων

19 -19- XML Namespaces Πρόβλημα: ο τύπος των element είναι global Το ίδιο έγγραφο πρέπει να μπορεί να χρησιμοποιηθεί από πολλά προγράμματα που καταλαβαίνουν άλλα markups Συγκρούσεις στην ονοματολογία; Λύση: XML Namespaces = συλλογές ονομάτων Welcome to my Health Resource 6ft 155 lbs

20 -20- XML Namespaces Πρόβλημα: ο τύπος των element είναι global Το ίδιο έγγραφο πρέπει να μπορεί να χρησιμοποιηθεί από πολλά προγράμματα που καταλαβαίνουν άλλα markups Συγκρούσεις στην ονοματολογία; Λύση: XML Namespaces = συλλογές ονομάτων Welcome to my Health Resource 6ft 155 lbs > Welcome to my Health Resource 6ft 155 lbs

21 -21- XML Schema Αντιμετωπίζει τις ανεπάρκειες του DTD Ορίζει αυστηρότερα σύνθετους τύπους, με βασικούς τύπους και περιορισμούς Εκφράζεται και το ίδιο σε ΧΜL Ενα απόσπασμα:

22 -22- XSL Αποτελείται από τρια ξεχωριστα τμήματα XSL Formating Objects Ορίζει το format παρουσίασης ενός εγγράφου XML XPath: XML Path Language Επιλέγει τμήματα ενός εγγράφου XML Απλοποιημένη μορφή, επιστρέφει τα βιβλία σε ένα XML (πίσω): database/biblio/book (ονόματα XML tags) Επιστρέφει τους πρώτους συγγραφείς των βιβλίων: root()/descendant::book/child::author[position()=fi rst()] XSLT: XSL Transformation language Μετατρέπει ένα έγγραφο XML σε κάποιο άλλο έγγραφο

23 -23- XSLT: παράδειγμα Roux Combalusier 1976 Database Systems Smith 1999 Database Systems... Book Titles Book Titles Μετατρέπει το XML σε έναν HTML κατάλογο των τίτλων των βιβλίων

24 XML και DTD Υποστηρικτικές τεχνολογίες Γλώσσες ερωτήσεων

25 -25- Γλώσσα XQuery XQuery: γλώσσα επεξεργασίας XML αρχείων W3C: Είναι συναρτησιακή γλώσσα: βασίζεται σε εκφράσεις που επιστρέφουν τιμές. Χρησιμοποιεί το XML μοντέλο δεδομένων. Οι εκφράσεις (expressions) XQuery επιστρέφουν μια (διατεταγμένη) σειρά από κόμβους ή τιμές. Σημαντικό κομμάτι της XQuery είναι οι εκφράσεις μονοπατιών (path expressions). Τα παραδείγματα που θα ακολουθήσουν βασίζονται στην αναφορά D. Chamberlin, XQuery: an XML Query Language. IBM Systems Journal, 41(4), 2002.

26 -26- XML Μοντέλο Δεδομένων 3 Theo toy /5/

27 -27- XML Μοντέλο Δεδομένων 4 George /5/

28 -28- Εκφράσεις Μονοπατιών document(“items.xml”) /items Βρες το root element items (“/”). 3 Theo toy /5/

29 -29- Εκφράσεις Μονοπατιών document(“items.xml”) /items/item Βρες όλα τα elements item που είναι παιδιά (‘/’) του root element items (“/”). 3 Theo toy /5/

30 -30- Εκφράσεις Μονοπατιών document(“items.xml”) //item Βρες όλα τα elements item (‘//’: απόγονος). 3 Theo toy /5/

31 -31- Εκφράσεις Μονοπατιών document(“items.xml”) //item/seller Βρες όλα τα elements seller που είναι παιδιά του item (‘//’: απόγονος). 3 Theo toy /5/

32 -32- Εκφράσεις Μονοπατιών document(“items.xml”) //item/* Βρες όλα τα elements που είναι παιδιά του item. 3 Theo toy /5/

33 -33- Εκφράσεις Μονοπατιών document(“items.xml”) /item/* Βρες όλα τα elements που είναι παιδιά του root element item (NULL!). 3 Theo toy /5/

34 -34- Εκφράσεις Μονοπατιών document(“items.xml”) //* Βρες όλα τα elements. 3 Theo toy /5/

35 -35- Εκφράσεις Μονοπατιών document(“items.xml”) /*/*/seller Βρες όλα τα elements seller που έχουν 2 προγόνους. 3 Theo toy /5/

36 -36- Εκφράσεις Μονοπατιών document(“items.xml”) /items/item[2] Βρες το 2ο item παιδί του element items. 3 Theo toy /5/

37 -37- Εκφράσεις Μονοπατιών document(“items.xml”) Βρες όλα τα item elements που έχουν attribute status. 3 Theo toy /5/

38 -38- Εκφράσεις Μονοπατιών document(“items.xml”) Βρες όλα τα item elements που έχουν attribute status με τιμή ‘new’. 3 Theo toy /5/

39 -39- Εκφράσεις Μονοπατιών document(“items.xml”) //item[reserve-price>=100] Βρες όλα τα item elements που έχουν παιδί το reserve- price element και το οποίο έχει value > Theo toy /5/

40 -40- Εκφράσεις Μονοπατιών document(“items.xml”) //items/item[seller=Theo]/description Βρες όλα τα description elements που έχουν αδέρφια element item (παιδιά του items) τα οποία έχουν παιδί element seller με τιμή Theo (branching XPATH). 3 Theo toy /5/

41 -41- Κατασκευαστές Οι εκφράσεις μονοπατιών έχουν ένα σημαντικό μειονέκτημα: επιστρέφουν κόμβους. Θα θέλαμε να υπάρχει δυνατότητα κατασκευής καινούριων element, value, καθορισμού των σχέσεων μεταξύ elements (δηλαδή το αποτέλεσμα να μην είναι μεμονωμένοι κόμβοι, αλλά δέντρο κομμάτι του μοντέλου XML), κ.λ.π. Για το λόγο αυτό η XQuery παρέχει κατασκευαστές (constructors): {έκφραση XQuery} η έκφραση αποτιμάται και η {...} αντικαθίστανται από το αποτέλεσμα.

42 -42- Κατασκευαστές Παραδείγματα κατασκευαστών: {$i} {max($bids[itemno $i]/bid-amount)}

43 -43- Iterators (For) Παράδειγμα For iterator: FOR $m in (2, 3), $n in (5, 10) RETURN {$m} times {$n} is {$m * $n} Αποτέλεσμα 2 times 5 is 10 2 times 10 is 20 3 times 5 is 15 3 times 10 is 30

44 -44- Iterators (For), Δέσιμο Μεταβλητών Παράδειγμα For iterator με δέσιμο (binding) μεταβλητών: FOR $i in (1 to 3) LET $j := (1 to $i) Αποτέλεσμα $i = 1, $j = 1 $i = 2, $j = (1, 2) $i = 3, $j = (1, 2, 3) Το δέσιμο μεταβλητών σε For και Let δίνει την δυνατότητα στην XQuery να διασχίζει το μοντέλο δεδομένων XML και να ψάχνει για πολλαπλά ταιριάσματα.

45 -45- FLoWeRs! F: FOR L: LET W: WHERE R: RETURN FLWR (προφέρεται flower) expressions

46 -46- Παράδειγμα FLOWER 1 (lily) Βρες αντικείμενα στα οποία έχουν δοθεί δύο προσφορές. Ερώτηση: FOR $i in document(''items.xml'')/*/item … RETURN $i bind

47 -47- Παράδειγμα FLOWER 1 (lily) Βρες αντικείμενα στα οποία έχουν δοθεί δύο προσφορές. Ερώτηση: FOR $i in document(''items.xml'')/*/item LET $b := document(''bids.xml'')/*/bid[itemno = $i/itemno] … RETURN $i bind

48 -48- Παράδειγμα FLOWER 1 (lily) Βρες αντικείμενα στα οποία έχουν δοθεί δύο προσφορές. Ερώτηση: FOR $i in document(''items.xml'')/*/item LET $b := document(''bids.xml'')/*/bid[itemno = $i/itemno] WHERE count ($b) = 2 RETURN $i bind

49 -49- Παράδειγμα FLOWER 1 (lily) 1 George... 1 Theo... 2 George

50 -50- Παράδειγμα FLOWER 2 (dahlia) Για κάθε αντικείμενο στο οποίο έχουν δοθεί παραπάνω από δέκα προσφορές, φτιάξε ένα element popular-item που να περιέχει τον κωδικό του αντικειμένου, την περιγραφή και τον αριθμό των προσφορών.

51 -51- Παράδειγμα FLOWER 2 (dahlia) Για κάθε αντικείμενο στο οποίο έχουν δοθεί παραπάνω από δέκα προσφορές, φτιάξε ένα element popular-item που να περιέχει τον κωδικό του αντικειμένου, την περιγραφή και τον αριθμό των προσφορών. Ερώτηση: FOR $i in document(''items.xml'')/*/item LET $b := document(''bids.xml'')/*/bid[itemno = $i/itemno] WHERE count ($b) > 10 ….

52 -52- Παράδειγμα FLOWER 2 (dahlia) Για κάθε αντικείμενο στο οποίο έχουν δοθεί παραπάνω από δέκα προσφορές, φτιάξε ένα element popular-item που να περιέχει τον κωδικό του αντικειμένου, την περιγραφή και τον αριθμό των προσφορών. Ερώτηση: FOR $i in document(''items.xml'')/*/item LET $b := document(''bids.xml'')/*/bid[itemno = $i/itemno] WHERE count ($b) > 10 RETURN { $i/itemno, $i/description, {count ($b)} }

53 -53- Παράδειγμα FLOWER 3 (Chrysanthemum) Έχοντας μια σειρά από elements emp, αντικατέστησε τον μισθό, την προμήθεια και τα bonus με ένα καινoύριο element pay που να περιέχει το άθροισμα των values των αρχικών elements, και βάλε σε αύξουσα σειρά το αποτέλεσμα με βάση το άθροισμα αυτό. …

54 -54- Παράδειγμα FLOWER 3 (Chrysanthemum) Έχοντας μια σειρά από elements emp, αντικατέστησε τον μισθό, την προμήθεια και τα bonus με ένα καινoύριο element pay που να περιέχει το άθροισμα των values των αρχικών elements, και βάλε σε αύξουσα σειρά το αποτέλεσμα με βάση το άθροισμα αυτό. Ερώτηση: FOR $e in $emps …

55 -55- Παράδειγμα FLOWER 3 (Chrysanthemum) Έχοντας μια σειρά από elements emp, αντικατέστησε τον μισθό, την προμήθεια και τα bonus με ένα καινoύριο element pay που να περιέχει το άθροισμα των values των αρχικών elements, και βάλε σε αύξουσα σειρά το αποτέλεσμα με βάση το άθροισμα αυτό. Ερώτηση: FOR $e in $emps RETURN { $e/name, {$e/salary + $e/commission + $e/bonus} } …

56 -56- Παράδειγμα FLOWER 3 (Chrysanthemum) Έχοντας μια σειρά από elements emp, αντικατέστησε τον μισθό, την προμήθεια και τα bonus με ένα καινoύριο element pay που να περιέχει το άθροισμα των values των αρχικών elements, και βάλε σε αύξουσα σειρά το αποτέλεσμα με βάση το άθροισμα αυτό. Ερώτηση: FOR $e in $emps RETURN { $e/name, {$e/salary + $e/commission + $e/bonus} } sortby (pay)

57 -57- Παράδειγμα FLOWER 4 (Blue Pansy) Φτιάξε ένα νέο element με όνομα recent-large-bids που να περιέχει όλα τα elements bid στο κείμενο bids.xml που έχουν αριθμό προσφορών πάνω από 1000 και ημερομηνία τελευταίας προσφοράς μετά την 1/1/2002. Ερώτηση: document(''bids.xml'')/*/bid[bid-amount > ] intersect document(''bids.xml'')/*/bid[bid-date > date('' '')]

58 -58- Παράδειγμα FLOWER 5 (Cream Pansy) Φτιάξε ένα νέο element με όνομα recent-large-bids που να περιέχει όλα τα elements bid στο κείμενο bids.xml που έχουν αριθμό προσφορών πάνω από 1000 και ημερομηνία τελευταίας προσφοράς μετά την 1/1/2002. Ερώτηση (με άλλον τρόπο): document(''bids.xml'')/*/bid[bid-amount > and bid-date > date('' '')]

59 -59- Παράδειγμα FLOWER 6 (Shasta Daisies) Βρες τα αντικείμενα στο αρχείο items.xml για τα οποία όλες οι προσφορές ήταν διπλάσιες από την τιμή εκκίνησης, και τοποθέτησέ τα μέσα σε ένα νέο element με όνομα underpriced-items. Ερώτηση: FOR $i in document(''items.xml'') WHERE every $b in document(''bids.xml'')/*/bid[itemno = $i/itemno] satisfies $b/bid-amount > 2 * $i/reserve-price RETURN $i

60 -60- Παράδειγμα FLOWER 7 (Hemerocallis) Όρισε μια συνάρτηση που να δέχεται ως παράμετρο ένα element item και μετά να βρίσκει το μεγαλύτερο ποσό προσφοράς που έχει καταγραφεί για το συγκεκριμένο αντικείμενο. Ορισμός συνάρτησης: define function highbid(element $item) returns decimal { max(document(''bids.xml'')//bid[itemno = $item/itemno]/bid- amount) } Χρήση: highbid(document(''items.xml'')//item[itemno = ''1234''])

61 άλλες δυνατότητες Συνθήκες τύπων $i instance of xs:integer το xs:integer έρχεται από το XML schema $k instance of element item $l instance of element* Switch εντολή typeswitch (expression) as $a case element of type A return $a/state... If εντολή... και πάρα πολλά άλλα.


Κατέβασμα ppt "Τεχνολογίες XML. XML και DTD Υποστηρικτικές τεχνολογίες Γλώσσες ερωτήσεων."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google