SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
XML – based technologies




Αναγνωστόπουλος Ιωάννης - Λυκουρέντζου Ιωάννα
Περιεχόµενα
 XML
 Έλεγχος εγκυρότητας XML
    DTD
    Schema
 XML DOM
 Περαιτέρω δυνατότητες και τεχνολογίες της XML
    XPath
    XSLT
    XPointer
    XLink
    XQuery
 Web services µε τη βοήθεια των τεχνολογιών XML
    Web services
    WSDL
    SOAP
    RDF και OWL
    RSS
    WAP και WML
XML
Extensible Markup Language – Μία απλή έκδοση της sgml
Σχεδιασµένη για να εισάγει την sgml στο διαδίκτυο
Μια µετα-γλώσσα (meta-language)
  Μια γλώσσα που παράγει γλώσσες
     XHTML – η πιο πρόσφατη έκδοση της HTML
     VoiceXML – Για διαδραστική φωνητική επικοινωνία ανθρώπου –
     υπολογιστή µέσω τηλεφώνου, PDA ή υπολογιστή
     WSDL – για την περιγραφή των web services
     WAP και WML – γλώσσες σήµανσης (markup) για φορητές
     συσκευές
     RSS γλώσσες για τροφοδότες νεων (news feeds)
     RDF/OWL – για περιγραφή πόρων και οντολογιών
     SMIL – για περιγραφή πολυµέσων στον Ιστό
Αναµενόµενα κέρδη
 Αποθήκευση µια φορά και µορφοποίηση πολλές φορές
 Ανεξαρτησία από υλικό – λογισµικό
   Αποθήκευση σε µορφή απλού κειµένου (plain text format)
   ∆ιευκόλυνση της µεταφοράς/ανταλλαγής δεδοµένων ανάµεσα σε
   ασύµβατες κατά τα άλλα εφαρµογές
   ∆ιαθεσιµότητα των δεδοµένων σε µεγαλυτερο έυρος εφαρµογών
   αλλά και µέσων (PDAs, news feeds, voice machines)
 Συγκέντρωση δεδοµένων µια φορά και ανταλλαγή πολλές φορές
 Ταχύτερη εστιασµένη αναζήτηση
 Μικρότερη συµφόρηση του δικτύου
 Οι µηχανές αναζήτησης αναζητούν συγκεκριµένες ετικέτες (tags)
 στον κώδικα XML
   Ταχύτερα
   Με µεγαλύτερη ακρίβεια
XML
HTML
  Χρησιµοποιεί tags ανάµεσα στο κείµενο...
  ...για να περιγράψει το layout της σελίδας
  <p> <b>Alan</b>, 42 years, <i>agb@abc.com</i>
  Σχεδιάστηκε ειδικά για να περιγράψει την παρουσίαση και όχι το
  περιεχόµενο
XML
  Σχεδιάστηκε ειδικά για να περιγράψει το περιεχόµενο (content) και όχι την
  παρουσίαση µιας σελίδας
  Βασικές διαφορές από την HTML
      Μπορεί κανείς να ορίσει νέα tags κατά βούληση
      Nested tags σε οποιοδήποτε βάθος
      Ενα έγγραφο XML µπορεί προαιρετικά να περιέχει µια περιγραφή της
      γραµµατικής του
  Τα tags δοµούν το περιεχόµενο
      <person><name>Kostas</name>…</person>
      Το πως θα εµφανιστούν ορίζεται ξεχωριστά από κάποιο stylesheet (XSL)
XML
  Ο ρόλος της XML
     Προτάθηκε σαν µια markup γλώσσα περιγραφής εγγράφων
     Καταγωγή απο την SGML (ψηφιακές βιβλιοθήκες)
     Εξελίσσεται όµως σε ένα παγκόσµιο πρότυπο για ανταλλαγή πληροφορίας
   Βασικό συστατικό της XML είναι το element
     Τιµή του element    Κείµενο που περικλείεται από ένα ζεύγος tags
     Εκτός από την λογική δοµή (elements), τα tags περιγράφουν και την φυσική
     δοµή (entities)

<person>
   <name>Alan</name>
   <age>42</age>
   <email>alan@abc.com</email>
   <email>abrown@mail.com</email>
</person>
XML – Elements/Attributes




Elements                      Οι ιδιότητες δεν µπορούν να περιέχουν πολλαπλές
Person, firstname, lastname   τιµές (τα child elements µπορούν)
Attributes
sex (value=“female”)          Οι ιδιότητες δεν πρέπει να αλλάζουν συχνά

                              Οι ιδιότητες δεν µπορούν να περιγράψουν δοµή (τα
                              child elements µπορούν)
Βασικά συνθετικά του
    συντακτικού της XML
                     opening tag
entity                                   attributes
    <animal>
      <name language = “English”> Tiger </name>
      <name language = “Latin”> Panthera tigris
      </name>
      <weight> 500 pounds </weight>
    </animal>                          values
                                               content
                           closing tag
elements


    <picture filename = “tiger.jpg” />

           empty element, just an attribute
XML attributes
  Ένα element µπορεί να έχει κανένα, ένα ή πολλά attributes
    Περιγράφουν ιδιότητες (properties) του element

<product>
   <name language=“French”>trompette no 6</name>
   <price currency=“Euro”> 420.12 </price>
   <address format=“XL1245” language=“French”>
        <street>31 rue Croix-Bosset</street>
        <zip>92874</zip>
   </address>
</product>

  Όπως και τα elements, τα attributes ορίζονται από τον χρήστη
XML - Παράδειγµα
<a>
   <b id="x1">                              a                                 a
         <c>Κώστας</c>    id = x1                      id = x2
         <c>Γιάννης</c>
</b>                                b       d     b                           *
<d/> <d/>
   <b id="x2">
         <c>Ηλίας</c>                                            id       b        d
                              c         c              c
   </b>
</a>
                                                                          *
                          Κώστας        Γιάννης       Ηλίας
                                                                          c

      File Format              Tree Structure                              Schema
       (Instance)                (instance)                            (Document Type
                                                                      Definition, DTD)
Παράδειγµα – XML ∆ένδρου
                       Root element
                       <bookstore>


                   Parent              Child

   Attribute:               Element:            Attribute:
     “lang”                  <book>             “category”



   Element:         Element:                   Element:      Element:
    <title>         <author>                    <year>        <price>



     Text:            Text:                    Text:          Text:
Everyday Italian    Giada De                   2005           30.00
                    Laurentis
Επιπλέον στοιχεία της XML
 Στοιχεία που δεν χρειάζονται στην ανταλλαγή
 δεδοµένων
 Σχόλια
   <!– this is a comment -->
 Αρχική γραµµή
   <?xml version=“1.0”?>
 Προαιρετικό: Document Type Definition (DTD)
   Ορίζει την γραµµατική του κειµένου
   <?xml version=“1.0”?>
   <!DOCTYPE name [markupdeclarations]>
   <name>…</name>
XML – Name conflicts
 Εφόσον τα ονόµατα των element στην XML δεν είναι
 προκαθορισµένα (δεσµευµένα), ενδέχεται δύο διαφορετικά XML
 documents να χρησιµοποιούν το ίδιο element name


<table>                     <table>
  <tr>                        <name>African Coffee Table</name>
    <td>Apples</td>           <width>80</width>
    <td>Bananas</td>          <length>120</length>
  </tr>                     </table>
</table>

   ΗΤΜL κώδικας                             XML κώδικας
 Το <table> δηλώνει               Το <table> περιέχει πληροφορία
  πίνακα της HTML                          για ένα τραπέζι
XML Namespaces
 Λύση… τα XML Namespaces
 Τα ονόµατα των elements ενός αρχείου χαρακτηρίζονται από µια ετικέτα
 (super label)
 Έτσι, δύο conflicting elements πλέον έχουν διαφορετική ετικέτα και
 εποµένως δεν υπάρχει περίπτωση σύγχυσης
 Το label αυτό ονοµάζεται namespace και αποτελεί το όνοµα της συλλογής
 των ονοµάτων του αρχείου
 Το XML namespace attribute τοποθετείται στο αρχικό tag ενός element και έχει
 την παρακάτω σύνταξη:
      xmlns:namespace-prefix="namespaceURI"
 Ή
      xmlns=namespaceURI“ (obsolete)

 Όταν ένα namespace καθορίζεται στο αρχικό tag ενός element, όλα τα child
 elements µε το ίδιο namespace-prefix συνδέονται µε το ίδιο namespace
 Το URI στο όνοµα ενός namespace δεν έχει link πουθενά! Χρησιµοποιείται
 αυτή η αναπαράσταση γιατί είναι µοναδική
 http://www.domain.com/ns/rivers/1.1
XML Namespaces -
Παράδειγµα
<root>
   <h:table xmlns:h="http://www.w3.org/TR/html4/">
        <h:tr>
          <h:td>Apples</h:td>                               Namespace για τo
          <h:td>Bananas</h:td>                                 ΗΤΜL Tag
        </h:tr>
      </h:table>
   <f:table xmlns:f="http://www.w3schools.com/furniture">
        <f:name>African Coffee Table</f:name>                  Namespace για
        <f:width>80</f:width>
        <f:length>120</f:length>                                τo ΧΜL Tag
   </f:table>
</root>
Παράδειγµα
<table>                       <table>
   <tr>                          <name>African Coffee Table</name>
           <td>Apples</td>       <width>80</width>
           <td>Bananas</td>      <length>120</length>
   </tr>                      </table>
</table>
Έλεγχος εγκυρότητας
               XML
             XML DTD
           XML Schema
DTD – Document Type
Definition
 Προτάθηκε σαν µια γραµµατική για τα XML έγγραφα –
 Χρησιµοποιείται για τον έλεγχο της εγκυρότητάς τους
 Αν κάποιο έγγραφο XML αναφέρεται σε ένα DTD αλλά δεν το
 ακολουθεί, τότε το έγγραφο XML δεν γίνεται δεκτό ως έγκυρο
 Σε κάποιο βαθµό µπορεί να θεωρηθεί ως σχήµα για δεδοµένα
 µορφοποιηµένα σε XML
 Επιτρέπει
   Σε κάθε έγγραφο XML να έχει περιγραφή της δοµής του
   Σε ανεξάρτητες οµάδες χρηστών να συµφωνήσουν στη χρήση µίας
   κοινής δοµής για την ανταλλαγή δεδοµένων
   Σε µία εφαρµογή διαδικτύου να επικυρώσει τα δεδοµένα τα οποία
   δέχεται
 Πολλοί οργανισµοί δηµιουργούν DTDs για µία ευρεία γκάµα
 εφαρµογών (οικονοµικές/ιατρικές συναλλαγές κ.τ.λ)
∆ηλώσεις DTD
 Εσωτερικές
   Internal DOCTYPE declaration
 <!DOCTYPE root-element [element declarations]>
 Εξωτερικές
   External DOCTYPE declaration
 <!DOCTYPE root-element SYSTEM "filename">
XML -Internal Doctype
Declaration
               Internal DOCTYPE declaration
      <!DOCTYPE root-element [element-declarations]>


<?xml version="1.0"?>          root-element
<!DOCTYPE note [
   <!ELEMENT note (to,from,heading,body)>
   <!ELEMENT to (#PCDATA)>
   <!ELEMENT from (#PCDATA)>                    element
   <!ELEMENT heading (#PCDATA)>                declarations
   <!ELEMENT body (#PCDATA)>]>
<note>
   <to>Tove</to>
   <from>Jani</from>
   <heading>Reminder</heading>
   <body>Don't forget me this weekend</body>
</note>
XML - External Doctype
Declaration
                  External DOCTYPE declaration
            <!DOCTYPE root-element SYSTEM "filename">
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM “note.dtd">
<note>
   <to>Tove</to>
   <from>Jani</from>
   <heading>Reminder</heading>
   <body>Don't forget me this weekend!</body>
</note>


                                    note.dtd
<!ELEMENT   note (to,from,heading,body)>
<!ELEMENT   to (#PCDATA)>
<!ELEMENT   from (#PCDATA)>
<!ELEMENT   heading (#PCDATA)>
<!ELEMENT   body (#PCDATA)>
∆οµικά στοιχεία DTD
 Elements
    Μπορούν να περιέχουν κείµενο, άλλα elements ή να είναι άδεια
    HTML element: <body>some text</body>
    XML element:<message>some text</message>
    Empty element: <br/>
 Attributes
    Παρέχουν επιπλέον πληροφορία σχετικά µε τα elements
    Τοποθετούνται πάντοτε εσωτερικά ενός element
    Συντάσσονται σε ζεύγη (name/value)
    Παράδειγµα: <img src="computer.gif" />
 PCDATA
    Parsed character data
    Εξετάζεται από τον parser
    ∆εν πρέπει να περιέχει χαρακτήρες: &, <, or >. Πρέπει να αντικαθίστανται µε &amp; &lt;
    and &gt;
 CDDATA
    Character data
    ∆εν εξετάζεται από τον parser
∆ήλωση elements
 ∆ήλωση
    <!ELEMENT element-name category>
    ή
    <!ELEMENT element-name (element-content)>
 Empty element
    <!ELEMENT element-name EMPTY>
 Element µε PCDATA
    <!ELEMENT element-name (#PCDATA)>
    Παράδειγµα: <!ELEMENT from (#PCDATA)>
 Element µε οποιοδήποτε περιεχόµενο
    <!ELEMENT element-name ANY>
    <!ELEMENT note ANY>
 Elements µε elements-παιδιά
    <!ELEMENT element-name (child1)>
    ή
    <!ELEMENT element-name (child1,child2,...)>
    Παράδειγµα: <!ELEMENT note (to,from,heading,body)>
    Τα elements-παιδιά πρέπεινα δηλώνονται µε την ακριβή σειρά εµφάνισής τους
∆ήλωση elements
 Ακριβώς µία εµφάνιση element
    <!ELEMENT element-name (child-name)>
    Παράδειγµα: <!ELEMENT note (message)>
    Το element message πρέπει να υπάρχει ακριβώς µία φορά εντός του element note
 Τουλάχιστον µία εµφάνιση
    <!ELEMENT element-name (child-name+)>
    Παράδειγµα: <!ELEMENT note (message+)>
 Προαιρετική εµφάνιση-όσες φορές χρειαστεί
    <!ELEMENT element-name (child-name*)>
    Παράδειγµα: <!ELEMENT student ( course_left*)>
 Προαιρετική εµφάνιση-µονάχα µία φορά
    <!ELEMENT element-name (child-name?)>
    <!ELEMENT student (diploma_thesis?)>
 Είτε/είτε περιεχόµενο
    Παράδειγµα: <!ELEMENT note (to,from,header,(message|body))>
 Ποικίλλο περιεχόµενο
    <!ELEMENT note (#PCDATA|to|from|header|message)*>
    Μηδέν ή περισσότερες εµφανίσεις από τα elements to, from, header, message
∆ήλωση attributes
      <!ATTLIST element-name attribute-name attribute-type default-value>
      Παράδειγµα:
           XML κώδικας: <payment type="check" />
           DTD: <!ATTLIST payment type CDATA "check">
      Attribute type (παραδείγµατα)
                                                                    DTD:
           CDATA       Character data                               <!ATTLIST person number
           (en1|en2|..)    Τιµή από µία αριθµηµένη λίστα            CDATA #REQUIRED>
           ID    Μοναδικό id                                        Έγκυρο XML:
           IDREF      To id ενός άλλου element                                 <person number="5677" />
           IDREFS       Μία λίστα άλλων ids                         Άκυρο XML:
      Attribute value                                                          <person />
           Value     Η προκαθορισµένη τιµή του attribute
           C To attribute περιλαµβάνεται υποχρεωτικά
           #IMPLIED       Το attribute δεν περιλαµβάνεται υποχρεωτικά
           #FIXED value      Η τιµη του attribute είναι προκαθορισµένη και σταθερή
                                                 DTD:
DTD:                                             <!ATTLIST sender company CDATA #FIXED "Microsoft">
<!ATTLIST contact fax CDATA #IMPLIED>            Έγκυρο XML:
Έγκυρα XML:                                      <sender company="Microsoft" />
          1. <contact fax="555-667788" />        Άκυρο XML:
          2.<contact />                          <sender company="W3Schools" />

         Απαρίθµηση τιµών attributes
             <!ATTLIST element-name attribute-name (en1|en2|..) default-value>
             <!ATTLIST payment type (check|cash) "cash">
Χρήση attributes/elements
 Η XML δεν ορίζει ξεκάθαρους κανόνες σχετικά µε το
 πότε πρέπει να χρησιµοποιούνται attributes και πότε
 elements
   στόσο τα attributes
   ∆εν λαµβάνουν πολλαπλές τιµές
   ∆εν επεκτείνονται εύκολα
   ∆εν µπορούν να περιγράψουν δοµές
 Σαν γενικό κανόνα:
   Τα metadata αποθηκεύονται σαν attributes (π.χ element id)
   Τα δεδοµένα αποθηκεύονται ως elements
Validation errors - DTD
<?xml version="1.0" ?>
<!DOCTYPE note [
   <!ELEMENT note (to,from,heading,body)>
   <!ELEMENT to (#PCDATA)>
   <!ELEMENT from (#PCDATA)>
   <!ELEMENT heading (#PCDATA)>
   <!ELEMENT body (#PCDATA)>
]>
<note>
   <date>1/12/2008</date>
   <to>Tove/to>
   <from>Jani</from>
   <heading>Reminder</heading>
   <body>Don't forget our meeting this weekend!</body>
</note>
Παράδειγµα
<!ELEMENT product ((name, price, address))>   trompette.dtd
 <!ELEMENT name (#PCDATA)>
 <!ATTLIST name
       language CDATA #FIXED "French">
 <!ELEMENT price (#PCDATA)>
 <!ATTLIST price
       currency CDATA #FIXED "Euro">
 <!ELEMENT address ((street, zip))>
 <!ATTLIST address
       format CDATA #FIXED "XL1245"
       language CDATA #FIXED "French">
 <!ELEMENT street (#PCDATA)>
 <!ELEMENT zip (#PCDATA)>
O κώδικας
                                                   trompette
<product>
   <name language=“French”>trompette no 6</name>
   <price currency=“Euro”> 420.12 </price>
    <address format=“XL1245” language=“French”>
       <street>31 rue Croix-Bosset</street>
       <zip>92874</zip>
    </address>
</product>
XML Schema
 Περιγράφει τη δοµή ενός εγγράφου XML
 Περισσότερες δυνατότητες από ότι το DTD
    Γραµµένα σε γλώσσα XML-επεκτάσιµα (επαναχρησιµοποίηση
    ενός schema σε άλλα)
    Πιο επεκτάσιµα
    Υποστηρίζουν namespaces
    Υποστηρίζουν τύπους δεδοµένων
 Ιδιαίτερα η υποστήριξη τύπων δεδοµένων
    Καθιστά ευκολότερη την επικύρωση της ορθότητας των
    δεδοµένων
    Καθιστά ευκολότερη τη διατύπωση περιορισµών πάνω στα
    δεδοµένα
    Καθιστά ευκολότερη τη µετατροπή ανάµεσα σε τύπους
    δεδοµένων
 H γλώσσα του XML Schema ονοµάζεται XML Schema Definition
 (XSD)
Παράδειγµα XML Schema

<?xml version="1.0"?>
     <note>
             <to>Tove</to>                                Κώδικας XML
             <from>Jani</from>
             <heading>Reminder</heading>
             <body>Don't forget me this weekend!</body>
</note>
Παράδειγµα XML Schema                                                 XML Schema
 Στοιχείο - ρίζα     Τα στοιχεία που χρησιµοποιεί
                     το schema προέρχονται από αυτό το namespace
                                                                   Τα στοιχεία που δηµιουργεί
<?xml version="1.0"?>                                              Το schema προέρχονται από
   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"          αυτό το namespace
   targetNamespace="http://www.mySite.com"
   xmlns="http://www.mySite.com"                                      complexType:
   elementFormDefault="qualified">                                    Περιέχει και άλλα
                                                                      elements
   <xs:element name="note">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="to" type="xs:string"/>                      simpleType:
         <xs:element name="from" type="xs:string"/>                    ∆εν περιέχει
         <xs:element name="heading" type="xs:string"/>
         <xs:element name="body" type="xs:string"/>                    άλλα elements
       </xs:sequence>
     </xs:complexType>
   </xs:element>                                                     Default namespace

   </xs:schema>
XSD Simple Types - Elements
         Περιέχουν µόνο κείµενο ή απλούς τύπους (boolean, string, date,
         κ.α)
         ∆εν µπορούν να περιέχουν άλλα elements ή attributes
         Μπορεί να περιοριστεί το περιεχόµενο σε συγκεκριµένο τύπο ή
         να οριστεί έτσι ώστε να ακολουθεί συγκεκριµένο µοτίβο (pattern)

    Υπάρχουν πολλοί built-in τύποι     <lastname>Smith</lastname>
    Παραδείγµατα:                      <age>40</age>
       xs:string                       <id>12532</id>
       xs:decimal
       xs:integer
       xs:boolean
       xs:date                <xs:element name="lastname" type="xs:string"/>
       xs: time               <xs:element name="age" type="xs:integer"/>
                                 <xs:element name= "id" type= “xs:integer" fixed=“12532"

Επίσης default και fixed τιµές
XSD Simple Types - Attributes
    Κάθε attribute δηλώνεται σαν simple type
    Tα simple elements δεν µπορούν να έχουν attributes. Τα elements ου έχουν
    attributes θεωρούνται complex types


 <lastname lang="EN">Smith</lastname>



<xs:attribute   name="lang"   type="xs:string"/>
<xs:attribute   name="lang"   type="xs:string" default="EN"/>
<xs:attribute   name="lang"   type="xs:string" fixed="EN"/>
<xs:attribute   name="lang"   type="xs:string" use="required"/>


                                                              Παραδείγµατα built-in τύπων:
default     fixed     Optional/required attributes
                                                                 xs:string
                      (+use)
                                                                 xs:decimal
                                                                 xs:integer
                                                                 xs:boolean
                                                                 xs:date
                                                                 xs:time
XSD Simple Types – Restrictions
       Οι περιορισµοί χρησιµοποιούνται για να οριστούν οι αποδεκτές τιµές των
       attributes/elements

        Περιορισµός τιµής                                Περιορισµός οµάδας τιµών
<xs:element name=«weekday">                 <xs:element name="course">
     <xs:simpleType>                             <xs:simpleType>
       <xs:restriction base="xs:integer">          <xs:restriction base="xs:string">
        <xs:minInclusive value=“1"/>                <xs:enumeration value=“Internet Programming"/>
        <xs:maxInclusive value=«7"/>                <xs:enumeration value=“Databases"/>
       </xs:restriction>                            <xs:enumeration value=“Information Visualization"/>
     </xs:simpleType>                              </xs:restriction>
    </xs:element>                                </xs:simpleType>
                                                </xs:element>


                                             Περιορισµός κενών χαρακτήρων
     Περιορισµός µοτίβου
 <xs:element name="letter">                 <xs:element name="address">
                                             <xs:simpleType>
                                                                                          Επίσης
   <xs:simpleType>
                                               <xs:restriction base="xs:string">          replace και
     <xs:restriction base="xs:string">
     <xs:pattern value="[a-z]"/>                <xs:whiteSpace value="collapse"/>         preserve
     </xs:restriction>                         </xs:restriction>
   </xs:simpleType>                          </xs:simpleType>
 </xs:element>                              </xs:element>
XSD Simple Types – Restrictions

Περιορισµός      Περιγραφή
enumeration      Λίστα αποδεκτών τιµών
fractionDigits   Μέγιστος αριθµός επιτρεπτών δεκαδικών. Πρέπει να είναι µεγαλύτερο ή ίσο µε 0.
length           Ακριβής αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι
                 µεγαλύτερο ή ίσο µε 0.
maxExclusive     Άνω όριο αριθµητικής τιµής
maxInclusive     Άνω όριο αριθµητικής τιµής (περιλαµβανοµένης αυτής της τιµής)
maxLength        Μέγιστος αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι
                 µεγαλύτερο ή ίσο µε 0.
minExclusive     Κάτω όριο αριθµητικής τιµής
minInclusive     Κάτω όριο αριθµητικής τιµής (περιλαµβανοµένης αυτής της τιµής)
minLength        Ελάχιστος αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι
                 µεγαλύτερο ή ίσο µε 0.
pattern          Καθορίζει την ακριβή σειρά χαρακτήρων που επιτρέπονται.
totalDigits      Καθορίζει τον ακριβή αριθµό ψηφίων που επιτρέπονται. Πρέπει να είναι µεγαλύτερο ή
                 ίσο µε το 0
whiteSpace       Καθορίζει το χειρισµό του κενού χώρου (tabs, κενά, αλλαγές γραµµών) is handled
XSD-Complex Types
     Ένα complex element µπορεί να περιέχει άλλα elements ή attributes
     4 είδη complex elements
        Άδεια elements
        Elements που περιέχουν µόνο άλλα elements
        Elements που περιέχουν µόνο κείµενο
        Elements που περιέχουν κείµενο και άλλα elements
        Όλοι οι προηγούµενοι τύποι µπορεί να περιέχουν και attributes

                            Παραδείγµατα


<person id=“Z8746"/>                     <food type="dessert">Ice cream</food>


<person>                                <description>
     <firstname>John</firstname>           It happened on
     <lastname>Smith</lastname>            <date lang=«english">04.10.09</date>
</person>                               </description>
XSD Complex Types – Τρόποι ορισµού
                     <person>
                          <firstname>John</firstname>
                          <lastname>Smith</lastname>
                     </person>

<xs:element name=“person">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="firstname" type="xs:string"/>
         <xs:element name="lastname" type="xs:string"/>           Απ’ευθείας
       </xs:sequence>
     </xs:complexType>
</xs:element>

<xs:element name=“person" type="personinfo"/>
                                                                Με αναφορά
<xs:complexType name="personinfo">
                                                            (επιτρέπει τη χρήση
     <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>   του ίδιου complex type από
      <xs:element name="lastname" type="xs:string"/>          πολλά elements)
     </xs:sequence>
</xs:complexType>
XSD Complex Types – Τρόποι ορισµού
                        <person>
                             <firstname>John</firstname>
                             <lastname>Smith</lastname>
                        </person>
<xs:element name=“person" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
 <xs:sequence>
   <xs:element name="firstname" type="xs:string"/>
   <xs:element name="lastname" type="xs:string"/>
 </xs:sequence>
</xs:complexType>                                     Επέκταση complex type
                                                      και προσθήκη επιπλέον
<xs:complexType name="fullpersoninfo">
 <xs:complexContent>                                         elements
   <xs:extension base="personinfo">
    <xs:sequence>
      <xs:element name="address" type="xs:string"/>
      <xs:element name="city" type="xs:string"/>
      <xs:element name="country" type="xs:string"/>
    </xs:sequence>
   </xs:extension>
 </xs:complexContent>
</xs:complexType>
XSD Complex Types-Empty
  Elements
     Ένα κενό element δεν περιέχει κείµενο, µόνο
     attributes
                  <product prodid="123" />


  <xs:element name="product">
       <xs:complexType>
         <xs:attribute name="prodid" type="xs:positiveInteger"/>
       </xs:complexType>
  </xs:element>
                                                                   Ή
<xs:element name="product" type="prodtype"/>                   Επιτρέπει τη χρήση
                                                               του ίδιου complex
   <xs:complexType name="prodtype">
     <xs:attribute name="prodid" type="xs:positiveInteger"/>   type από πολλά
</xs:complexType>                                              elements
XSD Complex Types-Μόνο Elements
                      <person>
                           <firstname>John</firstname>
                           <lastname>Smith</lastname>
                      </person>

<xs:element name="person">
     <xs:complexType>
       <xs:sequence>                                       Τα elements
         <xs:element name="firstname" type="xs:string"/>   πρέπει να εµφανιστούν
         <xs:element name="lastname" type="xs:string"/>    Με τη συγκεκριµένη σειρά
       </xs:sequence>                                      που ορίστηκαν
     </xs:complexType>
</xs:element>

<xs:element name="person" type="persontype"/>

   <xs:complexType name="persontype">
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
   </xs:complexType>
XSD Complex Types - Μόνο Κείµενο
               <person country=“UK">John Smith</person>

     Προσθήκη τύπου simpleContent
<xs:element name=“person">
     <xs:complexType>
       <xs:simpleContent>
         <xs:extension base="xs:integer">
           <xs:attribute name="country" type="xs:string" />
         </xs:extension>
       </xs:simpleContent>
     </xs:complexType>
</xs:element>
                                                              Ή
<xs:element name="shoesize" type=“person"/>

   <xs:complexType name="person">
     <xs:simpleContent>
       <xs:extension base="xs:integer">
         <xs:attribute name="country" type="xs:string" />
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
XSD Complex Types – Mixed
 περιεχόµενο
<letter>
     Dear Mr.<name>John Smith</name>.
     Your order <orderid>1032</orderid>                     Κείµενο, attributes
     will be shipped on <shipdate>2001-07-13</shipdate>.       και elements
</letter>




<xs:element name="letter">
     <xs:complexType mixed="true">
       <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:element name="orderid" type="xs:positiveInteger"/>
         <xs:element name="shipdate" type="xs:date"/>
       </xs:sequence>
     </xs:complexType>
</xs:element>
XSD Complex Types – Indicators
 Επιτρέπουν τον έλεγχο του πως εµφανίζονται τα
 elements σε έναν complex type
   Ενδείκτες σειράς:
     All    Εµφάνιση των elements σε οποιαδήποτε σειρά. Κάθε
     element εµφανίζεται µόνο µία φορά.
     Choice     Μπορεί να εµφανιστεί µόνο ένα από τα elements
     Sequence     Εµφάνιση των elements µε τη σειρά ορισµού
   Ενδείκτες µέγιστου/ελάχιστου αριθµού εµφάνισης:
     maxOccurs      Μέγιστες εµφανίσεις του element
     minOccurs     Ελάχιστες εµφανίσεις του element
   Ενδείκτες οµάδας:
     Group name      Ορισµός οµάδας από element
     attributeGroup name    Ορισµός οµάδας από attributes
XSD Complex Types – Indicators -
   Παραδείγµατα
<xs:element name="person">
     <xs:complexType>
       <xs:all>
         <xs:element name="firstname" type="xs:string"/>
         <xs:element name="lastname" type="xs:string"/>
       </xs:all>
     </xs:complexType>
</xs:element>

<xs:element name="person">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="full_name" type="xs:string"/>
         <xs:element name="child_name" type="xs:string" maxOccurs="10"/>
       </xs:sequence>
     </xs:complexType>
</xs:element>

<xs:group name="persongroup">
     <xs:sequence>
       <xs:element name="firstname" type="xs:string"/>
       <xs:element name="lastname" type="xs:string"/>
       <xs:element name="birthday" type="xs:date"/>
     </xs:sequence>
</xs:group>
XSD Complex Types – Επέκταση µε µη
 καθορισµένα elements
   Τα στοιχεία <any> και anyAttribute επιτρέπουν την επέκταση του XML
   εγγράφου µε elements και attributes που δεν ορίζονται από το σχήµα του

<xs:element name="person">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="firstname" type="xs:string"/>
         <xs:element name="lastname" type="xs:string"/>
         <xs:any minOccurs="0"/>
       </xs:sequence>
     </xs:complexType>
</xs:element>

<xs:element name="person">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="firstname" type="xs:string"/>
         <xs:element name="lastname" type="xs:string"/>
       </xs:sequence>
       <xs:anyAttribute/>
     </xs:complexType>
</xs:element>
XSD – Παράδειγµα (1/3)
<?xml version="1.0" encoding="ISO-8859-1"?>

    <shiporder orderid="889923"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="shiporder.xsd">
      <orderperson>John Smith</orderperson>
      <shipto>
            <name>Ola Nordmann</name>
            <address>Langgt 23</address>                    Έστω ότι θέλουµε
            <city>4000 Stavanger</city>
            <country>Norway</country>                       να δηµιουργήσουµε
      </shipto>
      <item>                                                το XSD για αυτό
            <title>Empire Burlesque</title>
            <note>Special Edition</note>
                                                            το xml
            <quantity>1</quantity>
            <price>10.90</price>
      </item>
      <item>
            <title>Hide your heart</title>
            <quantity>1</quantity>
            <price>9.90</price>
      </item>
</shiporder>
XSD – Παράδειγµα (2/3)
<?xml version="1.0" encoding="ISO-8859-1" ?>
   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <xs:element name="shiporder">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="orderperson" type="xs:string"/>
         <xs:element name="shipto">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="name" type="xs:string"/>
               <xs:element name="address" type="xs:string"/>
               <xs:element name="city" type="xs:string"/>
               <xs:element name="country" type="xs:string"/>
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         </xs:schema>
XSD – Παράδειγµα (3/3)
<xs:element name="item" maxOccurs="unbounded">
         <xs:complexType>
           <xs:sequence>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="note" type="xs:string" minOccurs="0"/>
            <xs:element name="quantity" type="xs:positiveInteger"/>
            <xs:element name="price" type="xs:decimal"/>
           </xs:sequence>
         </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="orderid" type="xs:string" use="required"/>
     </xs:complexType>
   </xs:element>
Επικοινωνία µε εξυπηρετητή
                 XML DOM
ΧΜL Http Request
 Αντικείµενο XMLHttpRequest
 Επικοινωνία µε τον εξυπηρετητή µέσω της
 ιστοσελίδας
 Παραδείγµατα:
  Ανανέωση σελίδας µε νέα δεδοµένα χωρίς
  επαναφόρτωση (reloading) της σελίδας
  Αίτηση και παραλαβή νέων δεδοµένων από τον
  εξυπηρετητή µετά τη φόρτωση της σελίδας
  Επικοινωνία µε τον εξυπηρετητή στο παρασκήνιο
Το αντικείµενο
XMLHttpRequest
 Με χρήση Javascript
 Στους σύγχρονους φυλλοµετρητές
  var xmlhttp=new XMLHttpRequest()

 Σε παλαιότερους φυλλοµετρητές Microsoft
 (IE 5/6)
  var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
XML Parser
 Οι περισσότεροι φυλλοµετρητές έχουν ενσωµατωµένο XML-
 parser για την ανάγνωση και το χειρισµό της XML
 O parser µετατρέπει την XML σε προσβάσιµο µέσω Javascript
 αντικείµενο (XML DOM)
 To XML DOM
    Document Object Model
    Αντιλαµβάνεται το έγγραφο ως δένδρο
    Τρόπος πρόσβασης και χειρισµού εγγράφων XML :Περιέχει
    µεθόδους για τη διάσχιση ΧΜL δένδρων, για την πρόσθεση ή τη
    διαγραφή κόµβων κ.τ.λ.
  στόσο, πριν µπορέσουµε να επεξεργαστούµε ένα έγγραφο
 XML αυτό πρέπει να φορτωθεί σε ένα αντικείµενο XML DOM
 αυτό το οποίο κάνει ο parser
Φόρτωση XML αρχείου
if (window.XMLHttpRequest)
      {                                                   ∆ηµιουργία αντικειµένου
      xhttp=new XMLHttpRequest();                         επικοινωνίας µε εξυπηρετητή
      }                                                   Άνοιγµα του αντικειµένου XMLHTTP
     else // Internet Explorer 5/6                        και φόρτωση του books.xml
      {                                                   Αποστολή αίτησης XML HTTP στον
      xhttp=new ActiveXObject("Microsoft.XMLHTTP");   εξυπηρετητή
      }                                                   Η απάντηση ως αντικείµενο XML
xhttp.open("GET","books.xml",false);                  DOM
xhttp.send("");
xmlDoc=xhttp.responseXML;
XML DOM-Παράδειγµα
     Αποστολή στοιχείων XML από τον
                                           <note>
     εξυπηρετητή και
                                              <to>Nick</to>
  απεικόνισή τους στον φυλλοµετρητή           <from>John</from>
                                              <heading>Reminder</heading>
                                              <body>Don't forget me this weekend!</body>
<html>                                     </note>
   <body>
   <h1>Internal Note</h1>
   <p><b>To:</b> <span id="to"></span><br />
   <b>From:</b> <span id="from"></span><br />
   <b>Message:</b> <span id="message"></span>

   <script type="text/javascript">
   if (window.XMLHttpRequest)
     {
     xhttp=new XMLHttpRequest()
                                                           Επικοινωνία µε server –
     }
   else                                                    φόρτωση του XML DOM
     {                                                     object
     xhttp=new ActiveXObject("Microsoft.XMLHTTP")
     }
   xhttp.open("GET","note.xml",false);
   xhttp.send("");
   xmlDoc=xhttp.responseXML;
XML DOM-Παράδειγµα
     document.getElementById("to").innerHTML=
     xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
     document.getElementById("from").innerHTML=
     xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
     document.getElementById("message").innerHTML=
     xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
     </script>

     </body>
     </html>

                                                                ∆ιάσχιση του XML DOM
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;   αντικειµένου.
                                                                Εξαγωγή τιµής του content
                                                                του πρώτου tag <to>    Nick

                                                                ∆ιάσχιση του HTML DOM
document.getElementById("to").innerHTML                         αντικειµένου.
                                                                Απόδοση τιµής στο content
                                                                του πρώτου tag <to>    Nick
Περαιτέρω δυνατότητες
και τεχνολογίες της XML
Περαιτέρω τεχνολογίες
 Με βάση τη γλώσσα XML
 δηµιουργήθηκαν διάφορες
 τεχνολογίες οι οποίες µας
 επιτρέπουν τη µορφοποίηση και
 επεξεργασία των εγγράφων XML
   XPath
   XSLT
   XPointer
   XLink
   XQuery
XPath
 Πλοήγηση στα elements και τα attributes της
 XML
 Χρησιµοποιεί εκφράσεις (path expressions)
 για αυτή την πλοήγηση
   Οµοιότητα αυτών των εκφράσεων µε τις
   εκφράσεις πλοήγησης στο filesystem ενός
   υπολογιστή
 Περιέχει βιβλιοθήκες από standard functions
XSLT
 EXtensible Stylesheet Language
 Γλώσσα µορφοποίησης εγγράφων XML
 ∆υνατότητες
  Προσθήκης/αφαίρεσης, αναδιάταξης/ταξινόµησης,
  απεικόνισης/απόκρυψης elements και attributes
  στο αρχείο εξόδου (output file)
XLink
 XML Linking Language
 Χρησιµοποιείται για τη δηµιουργία συνδέσµων στα
 έγγραφα XML
 Κάθε element ενός XML εγγράφου µπορεί να γίνει
 σύνδεσµος
 Υποστήριξη
   Απλών συνδέσµων (παρόµοιοι µε συνδέσµους HTML)
   Εκτεταµένων συνδέσµων (σύνδεση πολλών πόρων
   ταυτόχρονα)
 ∆υνατότητα ορισµού των συνδέσµων έξω από τα
 αρχεία που θα συνδεθούν
XPointer
 XML Pointer Language
 Με την XLink µπορούµε να δηµιουργήσουµε
 συνδέσµους στο έγγραφο XML
 Το XPointer επιτρέπει στους συνδέσµους να
 «δείχνουν» σε συγκεκριµένα τµήµατα ενός
 εγγράφου XML
 Χρησιµοποιεί εκφράσεις XPath για την
 πλοήγηση µέσα σε ένα έγγραφο
XQuery
 Η XQuery συνιστά για την XML ότι η SQL για
 τις βάσεις δεδοµένων
 Γλώσσα αναζήτησης σε XML δεδοµένα
 Μπορεί να χρησιµοποιηθεί:
  Για την εξαγωγή πληροφορίας για χρήση σε ένα
  web service
  Για την αναζήτηση σε έγγραφα Ιστού
  Για τη δηµιουργία συνοπτικών αναφορών
  (summary reports) σχετικά µε δεδοµένα τα οποία
  βρίσκονται αποθηκευµένα σε µία βάση XML

Contenu connexe

Similaire à Ws13 2(2010-11)

Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματαΔιαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματαNikolaos Konstantinou
 
HTML [from web] epilogis a kai b lyceiou - bmichal version 1
HTML [from web]   epilogis a kai b lyceiou - bmichal version 1HTML [from web]   epilogis a kai b lyceiou - bmichal version 1
HTML [from web] epilogis a kai b lyceiou - bmichal version 1Vassilis Michalopoulos
 
σύστημα αρχείων
σύστημα αρχείωνσύστημα αρχείων
σύστημα αρχείωνAgelos Titis
 
Interoperability and modern ICT systems
Interoperability and modern ICT systemsInteroperability and modern ICT systems
Interoperability and modern ICT systemsDr. Fotios Fitsilis
 
01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις ΔεδομένωνFotis Kokkoras
 
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetupΠαρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetupIoannis Konstantinou
 
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingΜοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingKostas Diamantaras
 

Similaire à Ws13 2(2010-11) (13)

Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματαΔιαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
 
Σωληνώσεις cat sort tee
Σωληνώσεις cat sort teeΣωληνώσεις cat sort tee
Σωληνώσεις cat sort tee
 
HTML [from web] epilogis a kai b lyceiou - bmichal version 1
HTML [from web]   epilogis a kai b lyceiou - bmichal version 1HTML [from web]   epilogis a kai b lyceiou - bmichal version 1
HTML [from web] epilogis a kai b lyceiou - bmichal version 1
 
Html
HtmlHtml
Html
 
σύστημα αρχείων
σύστημα αρχείωνσύστημα αρχείων
σύστημα αρχείων
 
Interoperability and modern ICT systems
Interoperability and modern ICT systemsInteroperability and modern ICT systems
Interoperability and modern ICT systems
 
Kef4 parousiash
Kef4 parousiashKef4 parousiash
Kef4 parousiash
 
01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων
 
Html ekplog
Html ekplogHtml ekplog
Html ekplog
 
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetupΠαρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
 
Vb
VbVb
Vb
 
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingΜοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
 
eSubmission | eAF
eSubmission | eAFeSubmission | eAF
eSubmission | eAF
 

Plus de vafopoulos

2010 06-08 chania stochastic web modelling - copy
2010 06-08 chania stochastic web modelling - copy2010 06-08 chania stochastic web modelling - copy
2010 06-08 chania stochastic web modelling - copyvafopoulos
 
Amaxus con webdoc_10773
Amaxus con webdoc_10773Amaxus con webdoc_10773
Amaxus con webdoc_10773vafopoulos
 
Ws 13-4(2010-11)
Ws 13-4(2010-11)Ws 13-4(2010-11)
Ws 13-4(2010-11)vafopoulos
 
Presentation gr
Presentation grPresentation gr
Presentation grvafopoulos
 
Vafopoulos is the 2faces of janus
Vafopoulos is the 2faces of janusVafopoulos is the 2faces of janus
Vafopoulos is the 2faces of janusvafopoulos
 
2010 3-24 cryptography stamatiou
2010 3-24 cryptography stamatiou2010 3-24 cryptography stamatiou
2010 3-24 cryptography stamatiouvafopoulos
 
κοινωνια της πληροφοριας ευκαιριες και απειλες
κοινωνια της πληροφοριας ευκαιριες και απειλεςκοινωνια της πληροφοριας ευκαιριες και απειλες
κοινωνια της πληροφοριας ευκαιριες και απειλεςvafopoulos
 
2010 02-24 ws gm logic
2010 02-24 ws gm logic2010 02-24 ws gm logic
2010 02-24 ws gm logicvafopoulos
 
Wiki technologies nov_2008_ye
Wiki technologies nov_2008_yeWiki technologies nov_2008_ye
Wiki technologies nov_2008_yevafopoulos
 
Issue 11834$pdf
Issue 11834$pdfIssue 11834$pdf
Issue 11834$pdfvafopoulos
 
Gget 30 webscience
Gget 30 webscienceGget 30 webscience
Gget 30 websciencevafopoulos
 
Mit csail-tr-2007-034
Mit csail-tr-2007-034Mit csail-tr-2007-034
Mit csail-tr-2007-034vafopoulos
 
Riseptis report 1
Riseptis report 1Riseptis report 1
Riseptis report 1vafopoulos
 
Trust and the web veria 11 12- 09
Trust and  the web  veria  11 12- 09Trust and  the web  veria  11 12- 09
Trust and the web veria 11 12- 09vafopoulos
 
Το πλαίσιο της επιστήμης του Web
Το πλαίσιο της επιστήμης του WebΤο πλαίσιο της επιστήμης του Web
Το πλαίσιο της επιστήμης του Webvafopoulos
 
A framework of Web Science
A framework of Web Science A framework of Web Science
A framework of Web Science vafopoulos
 

Plus de vafopoulos (17)

D bpedia
D bpediaD bpedia
D bpedia
 
2010 06-08 chania stochastic web modelling - copy
2010 06-08 chania stochastic web modelling - copy2010 06-08 chania stochastic web modelling - copy
2010 06-08 chania stochastic web modelling - copy
 
Amaxus con webdoc_10773
Amaxus con webdoc_10773Amaxus con webdoc_10773
Amaxus con webdoc_10773
 
Ws 13-4(2010-11)
Ws 13-4(2010-11)Ws 13-4(2010-11)
Ws 13-4(2010-11)
 
Presentation gr
Presentation grPresentation gr
Presentation gr
 
Vafopoulos is the 2faces of janus
Vafopoulos is the 2faces of janusVafopoulos is the 2faces of janus
Vafopoulos is the 2faces of janus
 
2010 3-24 cryptography stamatiou
2010 3-24 cryptography stamatiou2010 3-24 cryptography stamatiou
2010 3-24 cryptography stamatiou
 
κοινωνια της πληροφοριας ευκαιριες και απειλες
κοινωνια της πληροφοριας ευκαιριες και απειλεςκοινωνια της πληροφοριας ευκαιριες και απειλες
κοινωνια της πληροφοριας ευκαιριες και απειλες
 
2010 02-24 ws gm logic
2010 02-24 ws gm logic2010 02-24 ws gm logic
2010 02-24 ws gm logic
 
Wiki technologies nov_2008_ye
Wiki technologies nov_2008_yeWiki technologies nov_2008_ye
Wiki technologies nov_2008_ye
 
Issue 11834$pdf
Issue 11834$pdfIssue 11834$pdf
Issue 11834$pdf
 
Gget 30 webscience
Gget 30 webscienceGget 30 webscience
Gget 30 webscience
 
Mit csail-tr-2007-034
Mit csail-tr-2007-034Mit csail-tr-2007-034
Mit csail-tr-2007-034
 
Riseptis report 1
Riseptis report 1Riseptis report 1
Riseptis report 1
 
Trust and the web veria 11 12- 09
Trust and  the web  veria  11 12- 09Trust and  the web  veria  11 12- 09
Trust and the web veria 11 12- 09
 
Το πλαίσιο της επιστήμης του Web
Το πλαίσιο της επιστήμης του WebΤο πλαίσιο της επιστήμης του Web
Το πλαίσιο της επιστήμης του Web
 
A framework of Web Science
A framework of Web Science A framework of Web Science
A framework of Web Science
 

Ws13 2(2010-11)

  • 1. XML – based technologies Αναγνωστόπουλος Ιωάννης - Λυκουρέντζου Ιωάννα
  • 2. Περιεχόµενα XML Έλεγχος εγκυρότητας XML DTD Schema XML DOM Περαιτέρω δυνατότητες και τεχνολογίες της XML XPath XSLT XPointer XLink XQuery Web services µε τη βοήθεια των τεχνολογιών XML Web services WSDL SOAP RDF και OWL RSS WAP και WML
  • 3. XML Extensible Markup Language – Μία απλή έκδοση της sgml Σχεδιασµένη για να εισάγει την sgml στο διαδίκτυο Μια µετα-γλώσσα (meta-language) Μια γλώσσα που παράγει γλώσσες XHTML – η πιο πρόσφατη έκδοση της HTML VoiceXML – Για διαδραστική φωνητική επικοινωνία ανθρώπου – υπολογιστή µέσω τηλεφώνου, PDA ή υπολογιστή WSDL – για την περιγραφή των web services WAP και WML – γλώσσες σήµανσης (markup) για φορητές συσκευές RSS γλώσσες για τροφοδότες νεων (news feeds) RDF/OWL – για περιγραφή πόρων και οντολογιών SMIL – για περιγραφή πολυµέσων στον Ιστό
  • 4. Αναµενόµενα κέρδη Αποθήκευση µια φορά και µορφοποίηση πολλές φορές Ανεξαρτησία από υλικό – λογισµικό Αποθήκευση σε µορφή απλού κειµένου (plain text format) ∆ιευκόλυνση της µεταφοράς/ανταλλαγής δεδοµένων ανάµεσα σε ασύµβατες κατά τα άλλα εφαρµογές ∆ιαθεσιµότητα των δεδοµένων σε µεγαλυτερο έυρος εφαρµογών αλλά και µέσων (PDAs, news feeds, voice machines) Συγκέντρωση δεδοµένων µια φορά και ανταλλαγή πολλές φορές Ταχύτερη εστιασµένη αναζήτηση Μικρότερη συµφόρηση του δικτύου Οι µηχανές αναζήτησης αναζητούν συγκεκριµένες ετικέτες (tags) στον κώδικα XML Ταχύτερα Με µεγαλύτερη ακρίβεια
  • 5. XML HTML Χρησιµοποιεί tags ανάµεσα στο κείµενο... ...για να περιγράψει το layout της σελίδας <p> <b>Alan</b>, 42 years, <i>agb@abc.com</i> Σχεδιάστηκε ειδικά για να περιγράψει την παρουσίαση και όχι το περιεχόµενο XML Σχεδιάστηκε ειδικά για να περιγράψει το περιεχόµενο (content) και όχι την παρουσίαση µιας σελίδας Βασικές διαφορές από την HTML Μπορεί κανείς να ορίσει νέα tags κατά βούληση Nested tags σε οποιοδήποτε βάθος Ενα έγγραφο XML µπορεί προαιρετικά να περιέχει µια περιγραφή της γραµµατικής του Τα tags δοµούν το περιεχόµενο <person><name>Kostas</name>…</person> Το πως θα εµφανιστούν ορίζεται ξεχωριστά από κάποιο stylesheet (XSL)
  • 6. XML Ο ρόλος της XML Προτάθηκε σαν µια markup γλώσσα περιγραφής εγγράφων Καταγωγή απο την SGML (ψηφιακές βιβλιοθήκες) Εξελίσσεται όµως σε ένα παγκόσµιο πρότυπο για ανταλλαγή πληροφορίας Βασικό συστατικό της XML είναι το element Τιµή του element Κείµενο που περικλείεται από ένα ζεύγος tags Εκτός από την λογική δοµή (elements), τα tags περιγράφουν και την φυσική δοµή (entities) <person> <name>Alan</name> <age>42</age> <email>alan@abc.com</email> <email>abrown@mail.com</email> </person>
  • 7. XML – Elements/Attributes Elements Οι ιδιότητες δεν µπορούν να περιέχουν πολλαπλές Person, firstname, lastname τιµές (τα child elements µπορούν) Attributes sex (value=“female”) Οι ιδιότητες δεν πρέπει να αλλάζουν συχνά Οι ιδιότητες δεν µπορούν να περιγράψουν δοµή (τα child elements µπορούν)
  • 8. Βασικά συνθετικά του συντακτικού της XML opening tag entity attributes <animal> <name language = “English”> Tiger </name> <name language = “Latin”> Panthera tigris </name> <weight> 500 pounds </weight> </animal> values content closing tag elements <picture filename = “tiger.jpg” /> empty element, just an attribute
  • 9. XML attributes Ένα element µπορεί να έχει κανένα, ένα ή πολλά attributes Περιγράφουν ιδιότητες (properties) του element <product> <name language=“French”>trompette no 6</name> <price currency=“Euro”> 420.12 </price> <address format=“XL1245” language=“French”> <street>31 rue Croix-Bosset</street> <zip>92874</zip> </address> </product> Όπως και τα elements, τα attributes ορίζονται από τον χρήστη
  • 10. XML - Παράδειγµα <a> <b id="x1"> a a <c>Κώστας</c> id = x1 id = x2 <c>Γιάννης</c> </b> b d b * <d/> <d/> <b id="x2"> <c>Ηλίας</c> id b d c c c </b> </a> * Κώστας Γιάννης Ηλίας c File Format Tree Structure Schema (Instance) (instance) (Document Type Definition, DTD)
  • 11. Παράδειγµα – XML ∆ένδρου Root element <bookstore> Parent Child Attribute: Element: Attribute: “lang” <book> “category” Element: Element: Element: Element: <title> <author> <year> <price> Text: Text: Text: Text: Everyday Italian Giada De 2005 30.00 Laurentis
  • 12. Επιπλέον στοιχεία της XML Στοιχεία που δεν χρειάζονται στην ανταλλαγή δεδοµένων Σχόλια <!– this is a comment --> Αρχική γραµµή <?xml version=“1.0”?> Προαιρετικό: Document Type Definition (DTD) Ορίζει την γραµµατική του κειµένου <?xml version=“1.0”?> <!DOCTYPE name [markupdeclarations]> <name>…</name>
  • 13. XML – Name conflicts Εφόσον τα ονόµατα των element στην XML δεν είναι προκαθορισµένα (δεσµευµένα), ενδέχεται δύο διαφορετικά XML documents να χρησιµοποιούν το ίδιο element name <table> <table> <tr> <name>African Coffee Table</name> <td>Apples</td> <width>80</width> <td>Bananas</td> <length>120</length> </tr> </table> </table> ΗΤΜL κώδικας XML κώδικας Το <table> δηλώνει Το <table> περιέχει πληροφορία πίνακα της HTML για ένα τραπέζι
  • 14. XML Namespaces Λύση… τα XML Namespaces Τα ονόµατα των elements ενός αρχείου χαρακτηρίζονται από µια ετικέτα (super label) Έτσι, δύο conflicting elements πλέον έχουν διαφορετική ετικέτα και εποµένως δεν υπάρχει περίπτωση σύγχυσης Το label αυτό ονοµάζεται namespace και αποτελεί το όνοµα της συλλογής των ονοµάτων του αρχείου Το XML namespace attribute τοποθετείται στο αρχικό tag ενός element και έχει την παρακάτω σύνταξη: xmlns:namespace-prefix="namespaceURI" Ή xmlns=namespaceURI“ (obsolete) Όταν ένα namespace καθορίζεται στο αρχικό tag ενός element, όλα τα child elements µε το ίδιο namespace-prefix συνδέονται µε το ίδιο namespace Το URI στο όνοµα ενός namespace δεν έχει link πουθενά! Χρησιµοποιείται αυτή η αναπαράσταση γιατί είναι µοναδική http://www.domain.com/ns/rivers/1.1
  • 15. XML Namespaces - Παράδειγµα <root> <h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>Apples</h:td> Namespace για τo <h:td>Bananas</h:td> ΗΤΜL Tag </h:tr> </h:table> <f:table xmlns:f="http://www.w3schools.com/furniture"> <f:name>African Coffee Table</f:name> Namespace για <f:width>80</f:width> <f:length>120</f:length> τo ΧΜL Tag </f:table> </root>
  • 16. Παράδειγµα <table> <table> <tr> <name>African Coffee Table</name> <td>Apples</td> <width>80</width> <td>Bananas</td> <length>120</length> </tr> </table> </table>
  • 17. Έλεγχος εγκυρότητας XML XML DTD XML Schema
  • 18. DTD – Document Type Definition Προτάθηκε σαν µια γραµµατική για τα XML έγγραφα – Χρησιµοποιείται για τον έλεγχο της εγκυρότητάς τους Αν κάποιο έγγραφο XML αναφέρεται σε ένα DTD αλλά δεν το ακολουθεί, τότε το έγγραφο XML δεν γίνεται δεκτό ως έγκυρο Σε κάποιο βαθµό µπορεί να θεωρηθεί ως σχήµα για δεδοµένα µορφοποιηµένα σε XML Επιτρέπει Σε κάθε έγγραφο XML να έχει περιγραφή της δοµής του Σε ανεξάρτητες οµάδες χρηστών να συµφωνήσουν στη χρήση µίας κοινής δοµής για την ανταλλαγή δεδοµένων Σε µία εφαρµογή διαδικτύου να επικυρώσει τα δεδοµένα τα οποία δέχεται Πολλοί οργανισµοί δηµιουργούν DTDs για µία ευρεία γκάµα εφαρµογών (οικονοµικές/ιατρικές συναλλαγές κ.τ.λ)
  • 19. ∆ηλώσεις DTD Εσωτερικές Internal DOCTYPE declaration <!DOCTYPE root-element [element declarations]> Εξωτερικές External DOCTYPE declaration <!DOCTYPE root-element SYSTEM "filename">
  • 20. XML -Internal Doctype Declaration Internal DOCTYPE declaration <!DOCTYPE root-element [element-declarations]> <?xml version="1.0"?> root-element <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> element <!ELEMENT heading (#PCDATA)> declarations <!ELEMENT body (#PCDATA)>]> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend</body> </note>
  • 21. XML - External Doctype Declaration External DOCTYPE declaration <!DOCTYPE root-element SYSTEM "filename"> <?xml version="1.0"?> <!DOCTYPE note SYSTEM “note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> note.dtd <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
  • 22. ∆οµικά στοιχεία DTD Elements Μπορούν να περιέχουν κείµενο, άλλα elements ή να είναι άδεια HTML element: <body>some text</body> XML element:<message>some text</message> Empty element: <br/> Attributes Παρέχουν επιπλέον πληροφορία σχετικά µε τα elements Τοποθετούνται πάντοτε εσωτερικά ενός element Συντάσσονται σε ζεύγη (name/value) Παράδειγµα: <img src="computer.gif" /> PCDATA Parsed character data Εξετάζεται από τον parser ∆εν πρέπει να περιέχει χαρακτήρες: &, <, or >. Πρέπει να αντικαθίστανται µε &amp; &lt; and &gt; CDDATA Character data ∆εν εξετάζεται από τον parser
  • 23. ∆ήλωση elements ∆ήλωση <!ELEMENT element-name category> ή <!ELEMENT element-name (element-content)> Empty element <!ELEMENT element-name EMPTY> Element µε PCDATA <!ELEMENT element-name (#PCDATA)> Παράδειγµα: <!ELEMENT from (#PCDATA)> Element µε οποιοδήποτε περιεχόµενο <!ELEMENT element-name ANY> <!ELEMENT note ANY> Elements µε elements-παιδιά <!ELEMENT element-name (child1)> ή <!ELEMENT element-name (child1,child2,...)> Παράδειγµα: <!ELEMENT note (to,from,heading,body)> Τα elements-παιδιά πρέπεινα δηλώνονται µε την ακριβή σειρά εµφάνισής τους
  • 24. ∆ήλωση elements Ακριβώς µία εµφάνιση element <!ELEMENT element-name (child-name)> Παράδειγµα: <!ELEMENT note (message)> Το element message πρέπει να υπάρχει ακριβώς µία φορά εντός του element note Τουλάχιστον µία εµφάνιση <!ELEMENT element-name (child-name+)> Παράδειγµα: <!ELEMENT note (message+)> Προαιρετική εµφάνιση-όσες φορές χρειαστεί <!ELEMENT element-name (child-name*)> Παράδειγµα: <!ELEMENT student ( course_left*)> Προαιρετική εµφάνιση-µονάχα µία φορά <!ELEMENT element-name (child-name?)> <!ELEMENT student (diploma_thesis?)> Είτε/είτε περιεχόµενο Παράδειγµα: <!ELEMENT note (to,from,header,(message|body))> Ποικίλλο περιεχόµενο <!ELEMENT note (#PCDATA|to|from|header|message)*> Μηδέν ή περισσότερες εµφανίσεις από τα elements to, from, header, message
  • 25. ∆ήλωση attributes <!ATTLIST element-name attribute-name attribute-type default-value> Παράδειγµα: XML κώδικας: <payment type="check" /> DTD: <!ATTLIST payment type CDATA "check"> Attribute type (παραδείγµατα) DTD: CDATA Character data <!ATTLIST person number (en1|en2|..) Τιµή από µία αριθµηµένη λίστα CDATA #REQUIRED> ID Μοναδικό id Έγκυρο XML: IDREF To id ενός άλλου element <person number="5677" /> IDREFS Μία λίστα άλλων ids Άκυρο XML: Attribute value <person /> Value Η προκαθορισµένη τιµή του attribute C To attribute περιλαµβάνεται υποχρεωτικά #IMPLIED Το attribute δεν περιλαµβάνεται υποχρεωτικά #FIXED value Η τιµη του attribute είναι προκαθορισµένη και σταθερή DTD: DTD: <!ATTLIST sender company CDATA #FIXED "Microsoft"> <!ATTLIST contact fax CDATA #IMPLIED> Έγκυρο XML: Έγκυρα XML: <sender company="Microsoft" /> 1. <contact fax="555-667788" /> Άκυρο XML: 2.<contact /> <sender company="W3Schools" /> Απαρίθµηση τιµών attributes <!ATTLIST element-name attribute-name (en1|en2|..) default-value> <!ATTLIST payment type (check|cash) "cash">
  • 26. Χρήση attributes/elements Η XML δεν ορίζει ξεκάθαρους κανόνες σχετικά µε το πότε πρέπει να χρησιµοποιούνται attributes και πότε elements στόσο τα attributes ∆εν λαµβάνουν πολλαπλές τιµές ∆εν επεκτείνονται εύκολα ∆εν µπορούν να περιγράψουν δοµές Σαν γενικό κανόνα: Τα metadata αποθηκεύονται σαν attributes (π.χ element id) Τα δεδοµένα αποθηκεύονται ως elements
  • 27. Validation errors - DTD <?xml version="1.0" ?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <date>1/12/2008</date> <to>Tove/to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget our meeting this weekend!</body> </note>
  • 28. Παράδειγµα <!ELEMENT product ((name, price, address))> trompette.dtd <!ELEMENT name (#PCDATA)> <!ATTLIST name language CDATA #FIXED "French"> <!ELEMENT price (#PCDATA)> <!ATTLIST price currency CDATA #FIXED "Euro"> <!ELEMENT address ((street, zip))> <!ATTLIST address format CDATA #FIXED "XL1245" language CDATA #FIXED "French"> <!ELEMENT street (#PCDATA)> <!ELEMENT zip (#PCDATA)>
  • 29. O κώδικας trompette <product> <name language=“French”>trompette no 6</name> <price currency=“Euro”> 420.12 </price> <address format=“XL1245” language=“French”> <street>31 rue Croix-Bosset</street> <zip>92874</zip> </address> </product>
  • 30. XML Schema Περιγράφει τη δοµή ενός εγγράφου XML Περισσότερες δυνατότητες από ότι το DTD Γραµµένα σε γλώσσα XML-επεκτάσιµα (επαναχρησιµοποίηση ενός schema σε άλλα) Πιο επεκτάσιµα Υποστηρίζουν namespaces Υποστηρίζουν τύπους δεδοµένων Ιδιαίτερα η υποστήριξη τύπων δεδοµένων Καθιστά ευκολότερη την επικύρωση της ορθότητας των δεδοµένων Καθιστά ευκολότερη τη διατύπωση περιορισµών πάνω στα δεδοµένα Καθιστά ευκολότερη τη µετατροπή ανάµεσα σε τύπους δεδοµένων H γλώσσα του XML Schema ονοµάζεται XML Schema Definition (XSD)
  • 31. Παράδειγµα XML Schema <?xml version="1.0"?> <note> <to>Tove</to> Κώδικας XML <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
  • 32. Παράδειγµα XML Schema XML Schema Στοιχείο - ρίζα Τα στοιχεία που χρησιµοποιεί το schema προέρχονται από αυτό το namespace Τα στοιχεία που δηµιουργεί <?xml version="1.0"?> Το schema προέρχονται από <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" αυτό το namespace targetNamespace="http://www.mySite.com" xmlns="http://www.mySite.com" complexType: elementFormDefault="qualified"> Περιέχει και άλλα elements <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> simpleType: <xs:element name="from" type="xs:string"/> ∆εν περιέχει <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> άλλα elements </xs:sequence> </xs:complexType> </xs:element> Default namespace </xs:schema>
  • 33. XSD Simple Types - Elements Περιέχουν µόνο κείµενο ή απλούς τύπους (boolean, string, date, κ.α) ∆εν µπορούν να περιέχουν άλλα elements ή attributes Μπορεί να περιοριστεί το περιεχόµενο σε συγκεκριµένο τύπο ή να οριστεί έτσι ώστε να ακολουθεί συγκεκριµένο µοτίβο (pattern) Υπάρχουν πολλοί built-in τύποι <lastname>Smith</lastname> Παραδείγµατα: <age>40</age> xs:string <id>12532</id> xs:decimal xs:integer xs:boolean xs:date <xs:element name="lastname" type="xs:string"/> xs: time <xs:element name="age" type="xs:integer"/> <xs:element name= "id" type= “xs:integer" fixed=“12532" Επίσης default και fixed τιµές
  • 34. XSD Simple Types - Attributes Κάθε attribute δηλώνεται σαν simple type Tα simple elements δεν µπορούν να έχουν attributes. Τα elements ου έχουν attributes θεωρούνται complex types <lastname lang="EN">Smith</lastname> <xs:attribute name="lang" type="xs:string"/> <xs:attribute name="lang" type="xs:string" default="EN"/> <xs:attribute name="lang" type="xs:string" fixed="EN"/> <xs:attribute name="lang" type="xs:string" use="required"/> Παραδείγµατα built-in τύπων: default fixed Optional/required attributes xs:string (+use) xs:decimal xs:integer xs:boolean xs:date xs:time
  • 35. XSD Simple Types – Restrictions Οι περιορισµοί χρησιµοποιούνται για να οριστούν οι αποδεκτές τιµές των attributes/elements Περιορισµός τιµής Περιορισµός οµάδας τιµών <xs:element name=«weekday"> <xs:element name="course"> <xs:simpleType> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:restriction base="xs:string"> <xs:minInclusive value=“1"/> <xs:enumeration value=“Internet Programming"/> <xs:maxInclusive value=«7"/> <xs:enumeration value=“Databases"/> </xs:restriction> <xs:enumeration value=“Information Visualization"/> </xs:simpleType> </xs:restriction> </xs:element> </xs:simpleType> </xs:element> Περιορισµός κενών χαρακτήρων Περιορισµός µοτίβου <xs:element name="letter"> <xs:element name="address"> <xs:simpleType> Επίσης <xs:simpleType> <xs:restriction base="xs:string"> replace και <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> <xs:whiteSpace value="collapse"/> preserve </xs:restriction> </xs:restriction> </xs:simpleType> </xs:simpleType> </xs:element> </xs:element>
  • 36. XSD Simple Types – Restrictions Περιορισµός Περιγραφή enumeration Λίστα αποδεκτών τιµών fractionDigits Μέγιστος αριθµός επιτρεπτών δεκαδικών. Πρέπει να είναι µεγαλύτερο ή ίσο µε 0. length Ακριβής αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι µεγαλύτερο ή ίσο µε 0. maxExclusive Άνω όριο αριθµητικής τιµής maxInclusive Άνω όριο αριθµητικής τιµής (περιλαµβανοµένης αυτής της τιµής) maxLength Μέγιστος αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι µεγαλύτερο ή ίσο µε 0. minExclusive Κάτω όριο αριθµητικής τιµής minInclusive Κάτω όριο αριθµητικής τιµής (περιλαµβανοµένης αυτής της τιµής) minLength Ελάχιστος αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι µεγαλύτερο ή ίσο µε 0. pattern Καθορίζει την ακριβή σειρά χαρακτήρων που επιτρέπονται. totalDigits Καθορίζει τον ακριβή αριθµό ψηφίων που επιτρέπονται. Πρέπει να είναι µεγαλύτερο ή ίσο µε το 0 whiteSpace Καθορίζει το χειρισµό του κενού χώρου (tabs, κενά, αλλαγές γραµµών) is handled
  • 37. XSD-Complex Types Ένα complex element µπορεί να περιέχει άλλα elements ή attributes 4 είδη complex elements Άδεια elements Elements που περιέχουν µόνο άλλα elements Elements που περιέχουν µόνο κείµενο Elements που περιέχουν κείµενο και άλλα elements Όλοι οι προηγούµενοι τύποι µπορεί να περιέχουν και attributes Παραδείγµατα <person id=“Z8746"/> <food type="dessert">Ice cream</food> <person> <description> <firstname>John</firstname> It happened on <lastname>Smith</lastname> <date lang=«english">04.10.09</date> </person> </description>
  • 38. XSD Complex Types – Τρόποι ορισµού <person> <firstname>John</firstname> <lastname>Smith</lastname> </person> <xs:element name=“person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> Απ’ευθείας </xs:sequence> </xs:complexType> </xs:element> <xs:element name=“person" type="personinfo"/> Με αναφορά <xs:complexType name="personinfo"> (επιτρέπει τη χρήση <xs:sequence> <xs:element name="firstname" type="xs:string"/> του ίδιου complex type από <xs:element name="lastname" type="xs:string"/> πολλά elements) </xs:sequence> </xs:complexType>
  • 39. XSD Complex Types – Τρόποι ορισµού <person> <firstname>John</firstname> <lastname>Smith</lastname> </person> <xs:element name=“person" type="fullpersoninfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> Επέκταση complex type και προσθήκη επιπλέον <xs:complexType name="fullpersoninfo"> <xs:complexContent> elements <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
  • 40. XSD Complex Types-Empty Elements Ένα κενό element δεν περιέχει κείµενο, µόνο attributes <product prodid="123" /> <xs:element name="product"> <xs:complexType> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:complexType> </xs:element> Ή <xs:element name="product" type="prodtype"/> Επιτρέπει τη χρήση του ίδιου complex <xs:complexType name="prodtype"> <xs:attribute name="prodid" type="xs:positiveInteger"/> type από πολλά </xs:complexType> elements
  • 41. XSD Complex Types-Μόνο Elements <person> <firstname>John</firstname> <lastname>Smith</lastname> </person> <xs:element name="person"> <xs:complexType> <xs:sequence> Τα elements <xs:element name="firstname" type="xs:string"/> πρέπει να εµφανιστούν <xs:element name="lastname" type="xs:string"/> Με τη συγκεκριµένη σειρά </xs:sequence> που ορίστηκαν </xs:complexType> </xs:element> <xs:element name="person" type="persontype"/> <xs:complexType name="persontype"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>
  • 42. XSD Complex Types - Μόνο Κείµενο <person country=“UK">John Smith</person> Προσθήκη τύπου simpleContent <xs:element name=“person"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> Ή <xs:element name="shoesize" type=“person"/> <xs:complexType name="person"> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType>
  • 43. XSD Complex Types – Mixed περιεχόµενο <letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> Κείµενο, attributes will be shipped on <shipdate>2001-07-13</shipdate>. και elements </letter> <xs:element name="letter"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>
  • 44. XSD Complex Types – Indicators Επιτρέπουν τον έλεγχο του πως εµφανίζονται τα elements σε έναν complex type Ενδείκτες σειράς: All Εµφάνιση των elements σε οποιαδήποτε σειρά. Κάθε element εµφανίζεται µόνο µία φορά. Choice Μπορεί να εµφανιστεί µόνο ένα από τα elements Sequence Εµφάνιση των elements µε τη σειρά ορισµού Ενδείκτες µέγιστου/ελάχιστου αριθµού εµφάνισης: maxOccurs Μέγιστες εµφανίσεις του element minOccurs Ελάχιστες εµφανίσεις του element Ενδείκτες οµάδας: Group name Ορισµός οµάδας από element attributeGroup name Ορισµός οµάδας από attributes
  • 45. XSD Complex Types – Indicators - Παραδείγµατα <xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element> <xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group>
  • 46. XSD Complex Types – Επέκταση µε µη καθορισµένα elements Τα στοιχεία <any> και anyAttribute επιτρέπουν την επέκταση του XML εγγράφου µε elements και attributes που δεν ορίζονται από το σχήµα του <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:any minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:anyAttribute/> </xs:complexType> </xs:element>
  • 47. XSD – Παράδειγµα (1/3) <?xml version="1.0" encoding="ISO-8859-1"?> <shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="shiporder.xsd"> <orderperson>John Smith</orderperson> <shipto> <name>Ola Nordmann</name> <address>Langgt 23</address> Έστω ότι θέλουµε <city>4000 Stavanger</city> <country>Norway</country> να δηµιουργήσουµε </shipto> <item> το XSD για αυτό <title>Empire Burlesque</title> <note>Special Edition</note> το xml <quantity>1</quantity> <price>10.90</price> </item> <item> <title>Hide your heart</title> <quantity>1</quantity> <price>9.90</price> </item> </shiporder>
  • 48. XSD – Παράδειγµα (2/3) <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> <xs:element name="shipto"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
  • 49. XSD – Παράδειγµα (3/3) <xs:element name="item" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string" minOccurs="0"/> <xs:element name="quantity" type="xs:positiveInteger"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="orderid" type="xs:string" use="required"/> </xs:complexType> </xs:element>
  • 51. ΧΜL Http Request Αντικείµενο XMLHttpRequest Επικοινωνία µε τον εξυπηρετητή µέσω της ιστοσελίδας Παραδείγµατα: Ανανέωση σελίδας µε νέα δεδοµένα χωρίς επαναφόρτωση (reloading) της σελίδας Αίτηση και παραλαβή νέων δεδοµένων από τον εξυπηρετητή µετά τη φόρτωση της σελίδας Επικοινωνία µε τον εξυπηρετητή στο παρασκήνιο
  • 52. Το αντικείµενο XMLHttpRequest Με χρήση Javascript Στους σύγχρονους φυλλοµετρητές var xmlhttp=new XMLHttpRequest() Σε παλαιότερους φυλλοµετρητές Microsoft (IE 5/6) var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
  • 53. XML Parser Οι περισσότεροι φυλλοµετρητές έχουν ενσωµατωµένο XML- parser για την ανάγνωση και το χειρισµό της XML O parser µετατρέπει την XML σε προσβάσιµο µέσω Javascript αντικείµενο (XML DOM) To XML DOM Document Object Model Αντιλαµβάνεται το έγγραφο ως δένδρο Τρόπος πρόσβασης και χειρισµού εγγράφων XML :Περιέχει µεθόδους για τη διάσχιση ΧΜL δένδρων, για την πρόσθεση ή τη διαγραφή κόµβων κ.τ.λ. στόσο, πριν µπορέσουµε να επεξεργαστούµε ένα έγγραφο XML αυτό πρέπει να φορτωθεί σε ένα αντικείµενο XML DOM αυτό το οποίο κάνει ο parser
  • 54. Φόρτωση XML αρχείου if (window.XMLHttpRequest) { ∆ηµιουργία αντικειµένου xhttp=new XMLHttpRequest(); επικοινωνίας µε εξυπηρετητή } Άνοιγµα του αντικειµένου XMLHTTP else // Internet Explorer 5/6 και φόρτωση του books.xml { Αποστολή αίτησης XML HTTP στον xhttp=new ActiveXObject("Microsoft.XMLHTTP"); εξυπηρετητή } Η απάντηση ως αντικείµενο XML xhttp.open("GET","books.xml",false); DOM xhttp.send(""); xmlDoc=xhttp.responseXML;
  • 55. XML DOM-Παράδειγµα Αποστολή στοιχείων XML από τον <note> εξυπηρετητή και <to>Nick</to> απεικόνισή τους στον φυλλοµετρητή <from>John</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> <html> </note> <body> <h1>Internal Note</h1> <p><b>To:</b> <span id="to"></span><br /> <b>From:</b> <span id="from"></span><br /> <b>Message:</b> <span id="message"></span> <script type="text/javascript"> if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest() Επικοινωνία µε server – } else φόρτωση του XML DOM { object xhttp=new ActiveXObject("Microsoft.XMLHTTP") } xhttp.open("GET","note.xml",false); xhttp.send(""); xmlDoc=xhttp.responseXML;
  • 56. XML DOM-Παράδειγµα document.getElementById("to").innerHTML= xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; document.getElementById("from").innerHTML= xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue; document.getElementById("message").innerHTML= xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue; </script> </body> </html> ∆ιάσχιση του XML DOM xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; αντικειµένου. Εξαγωγή τιµής του content του πρώτου tag <to> Nick ∆ιάσχιση του HTML DOM document.getElementById("to").innerHTML αντικειµένου. Απόδοση τιµής στο content του πρώτου tag <to> Nick
  • 58. Περαιτέρω τεχνολογίες Με βάση τη γλώσσα XML δηµιουργήθηκαν διάφορες τεχνολογίες οι οποίες µας επιτρέπουν τη µορφοποίηση και επεξεργασία των εγγράφων XML XPath XSLT XPointer XLink XQuery
  • 59. XPath Πλοήγηση στα elements και τα attributes της XML Χρησιµοποιεί εκφράσεις (path expressions) για αυτή την πλοήγηση Οµοιότητα αυτών των εκφράσεων µε τις εκφράσεις πλοήγησης στο filesystem ενός υπολογιστή Περιέχει βιβλιοθήκες από standard functions
  • 60. XSLT EXtensible Stylesheet Language Γλώσσα µορφοποίησης εγγράφων XML ∆υνατότητες Προσθήκης/αφαίρεσης, αναδιάταξης/ταξινόµησης, απεικόνισης/απόκρυψης elements και attributes στο αρχείο εξόδου (output file)
  • 61. XLink XML Linking Language Χρησιµοποιείται για τη δηµιουργία συνδέσµων στα έγγραφα XML Κάθε element ενός XML εγγράφου µπορεί να γίνει σύνδεσµος Υποστήριξη Απλών συνδέσµων (παρόµοιοι µε συνδέσµους HTML) Εκτεταµένων συνδέσµων (σύνδεση πολλών πόρων ταυτόχρονα) ∆υνατότητα ορισµού των συνδέσµων έξω από τα αρχεία που θα συνδεθούν
  • 62. XPointer XML Pointer Language Με την XLink µπορούµε να δηµιουργήσουµε συνδέσµους στο έγγραφο XML Το XPointer επιτρέπει στους συνδέσµους να «δείχνουν» σε συγκεκριµένα τµήµατα ενός εγγράφου XML Χρησιµοποιεί εκφράσεις XPath για την πλοήγηση µέσα σε ένα έγγραφο
  • 63. XQuery Η XQuery συνιστά για την XML ότι η SQL για τις βάσεις δεδοµένων Γλώσσα αναζήτησης σε XML δεδοµένα Μπορεί να χρησιµοποιηθεί: Για την εξαγωγή πληροφορίας για χρήση σε ένα web service Για την αναζήτηση σε έγγραφα Ιστού Για τη δηµιουργία συνοπτικών αναφορών (summary reports) σχετικά µε δεδοµένα τα οποία βρίσκονται αποθηκευµένα σε µία βάση XML