Δηζαγσγή ζηελ XML (κέξνο 2 ν ) Φξήζηνο Ηιηνύδεο
Γηθηπαθνί ηόπνη γηα XML http://www.w3schools.com: site κε tutorials γηα XML, XSL θιπ. http://www.w3c.com: όια ηα (official) specifications θαη recommendations γηα XML, HTML, XSL θιπ. http://java.sun.com/xml/index.html: packages ηεο SUN γηα XML, API documentation, tutorials θιπ. http://xml.apache.org: ν δηθηπαθόο ηόπνο ηνπ Apache group ζρεηηθά κε ηελ XML. http://www-106.ibm.com/developerworks/xml/: ν αληίζηνηρνο δηθηπαθόο ηόπνο ηεο IBM http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=2 8000438: ν δηθηπαθόο ηόπνο ηνπ Microsoft MSDN (Microsoft Developer Network) γηα όζνπο ελδηαθέξνληαη γηα επεμεξγαζία XML ζε πιαηθόξκα Microsoft Ειςαγωγή ςσην XML 2
XSL extensible Stylesheet Language Τερλνινγία αληίζηνηρε ησλ HTML CSS γηα ηελ XML Δίλαη ζαθώο πνιππινθόηεξε από ηελ CSS Παξέρεη πνιύ κεγαιύηεξε ιεηηνπξγηθόηεηα από ηε CSS Ειςαγωγή ςσην XML 3
XSL Τη ιεηηνπξγηθόηεηα παξέρεη; Μνξθνπνίεζε ηεο XML Παξάδεηγκα: κνξθνπνίεζε αλάινγα κε ηηο ηηκέο ησλ δεδνκέλσλ ελόο εγγξάθνπ XML Μεηαζρεκαηηζκό ηεο XML Παξάδεηγκα: κεηαζρεκαηηζκόο ελόο εγγξάθνπ XML ζε HTML γηα παξνπζίαζε ζε browser ή ζε WML γηα παξνπζίαζε ζε θηλεηό ηειέθσλν Καηαθεξκαηηζκό εγγξάθσλ XML, αλάινγα κε ην πεξηερόκελν ηνπο, δπλαηόηεηα επεμεξγαζίαο ηνπο αλάινγα κε κνξθώκαηα πνπ νξίδεη ν ζπγγξαθέαο Παξάδεηγκα: επεμεξγαζία κεκνλσκέλσλ πεξηνρώλ ελόο XML εγγξάθνπ Ειςαγωγή ςσην XML 4
Η XSL είλαη ηξεηο δηαθνξεηηθέο γιώζζεο XSLT: ε γιώζζα γηα ηνλ κεηαζρεκαηηζκό ηεο XML ζε άιινπ ηύπνπ έγγξαθα ή ζε άιια έγγξαθα XML XPath: ε γιώζζα γηα ηνλ νξηζκό ηκεκάησλ ελόο εγγξάθνπ XML θαη γηα ηνλ θαζνξηζκό κνξθσκάησλ ζε απηά. Σρεδηάζηεθε γηα λα ρξεζηκνπνηείηαη από ηελ XSLT XSL Formatting Objects: ε γιώζζα γηα ηνλ θαζνξηζκό ηνπ ηξόπνπ εκθάληζεο εγγξάθσλ XML Ειςαγωγή ςσην XML 5
XSLT Τη ιεηηνπξγηθόηεηα παξέρεη; Δίλαη ε ζεκαληηθόηεξε ηερλνινγία ηεο XSL Μπνξεί λα πξνζζέζεη, λα αθαηξέζεη, λα αιιάμεη ηελ ζεηξά εκθάληζεο θαη λα βάιεη ζε ζεηξά ηα elements ζην αξρείν εμόδνπ. Μπνξεί λα ρξεζηκνπνηήζεη ινγηθή δηαθιάδσζεο γηα λα πάξεη απνθάζεηο γηα ηνλ κεηαζρεκαηηζκό ηνπ εγγξάθνπ εηζόδνπ XML Ειςαγωγή ςσην XML 6
XSLT (XML Transformation) Μεηαζπεμαηηζμόξ XSL Πηγαίο Έγγπαυο XML XSL Επεξεπγαστήρ Τελικό Έγγπαυο (HTML, XHTML) XSLT Φύλλο Στςλ Ειςαγωγή ςσην XML 7
XSLT (XML Transformation) - Χνήζεηξ ημο XSLT To XSLT μπμνεί κα πνεζημμπμηεζεί γηα κα: -- Πνμζηεζμύκ ζοζηαηηθά εηδηθά γηα ηεκ εμθάκηζε, όπςξ ε πνμζζήθε ημο ιμγόηοπμο ή ηεξ δηεύζοκζεξ ημο απμζημιέα ζε έκα ηημμιόγημ XML -- Δεμημονγεζεί κέμ πενηεπόμεκμ από έκα ήδε οπάνπμκ, όπςξ ε δεμημονγία πίκαθα πενηεπμμέκςκ -- Πανμοζηαζζεί πιενμθμνία με ημ θαηάιιειμ γηα ημκ ακαγκώζηε επίπεδμ ιεπημμένεηαξ, όπςξ ε πνήζε θύιιμο ζηοι γηα ηεκ πανμοζίαζε πιενμθμνηώκ ορειμύ επηπέδμο ζε θάπμημ πνόζςπμ ηεξ δημίθεζεξ εκώ πανάιιεια πνεζημμπμηείηαη άιιμ θύιιμ ζηοι γηα ηεκ πανμοζίαζε ιεπημμενέζηενςκ ηεπκηθώκ πιενμθμνηώκ ζημ οπόιμηπμ πνμζςπηθό -- Μεηαζπεμαηίζεη έγγναθα XML ζε HTML γηα πνμξ ηα πίζς ζομβαηόηεηα με οπάνπμκηεξ browsers Ειςαγωγή ςσην XML 8
XSLT Πσο ιεηηνπξγεί; Φξεζηκνπνηεί ηελ ηερλνινγία XPath γηα ηνλ θαζνξηζκό κεξώλ ηνπ εγγξάθνπ εηζόδνπ πνπ ηαηξηάδνπλ κε πξνδηαγεγξακκέλα templates Όηαλ βξεζεί θάπνην κόξθσκα πνπ ηαηξηάδεη, ηα ζπγθεθξηκέλα elements κεηαζρεκαηίδνληαη ζε άιια, ζύκθσλα κε ηνπο θαλόλεο πνπ έρεη ζέζεη ν ζπγγξαθέαο Τα ππόινηπα elements παξακέλνπλ απηνύζηα ζην έγγξαθν εμόδνπ Ειςαγωγή ςσην XML 9
Παξάδεηγκα κεηαζρεκαηηζκνύ κε XSL Τν XML αξρείν <?xml version="1.0" standalone="no"?> <?xml-stylesheet type="text/xsl" href="cd_db_in_xml.xsl"?> <artists> <artist id="1231"> <name>tuxedomoon</name> <picture>http://blahg.tux.mus/band/tuxedomoon/band.jpg</picture> <album id="763"> <title>a ghost sonata</title> <medium>cd</medium> <release_year>1985</release_year> </album> <album id="244"> <title>desire</title> <medium>lp</medium> <release_year>1980</release_year> <cov_pic>http://fake.com/desire/desire.jpg</cov_pic> </album> </artist> </artists> Ειςαγωγή ςσην XML 10
Παξάδεηγκα κεηαζρεκαηηζκνύ κε XSL Τν XSL αξρείν <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/tr/wd-xsl"> <xsl:template match="/"> <html><body> <table border="2" bgcolor="yellow"> <tr><th>artist</th><th>album</th><th>medium</th><th>release year</th></tr> <xsl:for-each select="artists/artist" order-by="+name"> <tr> <td><i><b><xsl:value-of select="name"/></b></i></td> <xsl:for-each select="album" order-by="+release_year"> <td><xsl:value-of select="title"/></td> <tr></tr><td></td> </xsl:for-each> </tr> </xsl:for-each> </table> </body></html> </xsl:template> </xsl:stylesheet> 11 Ειςαγωγή ςσην XML
Παξάδεηγκα κεηαζρεκαηηζκνύ κε XSL Τν απνηέιεζκα! Ειςαγωγή ςσην XML 12
Τα elements ηνπ XSL - <xsl:stylesheet> Πξόθεηηαη γηα ην element εθείλν πνπ δειώλεη νηη ην έγγξαθν ζην νπνίν πεξηέρεηαη είλαη έλα XSL Παξαηεξήζηε νηη πξόθεηηαη νπζηαζηηθά γηα δήισζε ελόο XML namespace κε πξνηππνπνηεκέλν ηξόπν. Παξάδεηγκα <xsl:stylesheet xmlns:xsl="http://www.w3.org/tr/wd-xsl"> </xsl:stylesheet> Ειςαγωγή ςσην XML 13
Τα elements ηνπ XSL - <xsl:template> Η XSL ρξεζηκνπνηεί templates. Τν attribute match δειώλεη δηαθιαδώζεηο ηνπ εγγξάθνπ XML νη νπνίεο ζα αληηζηνηρηζηνύλ κε elements πνπ πεξηέρνληαη ζην XSL Παξάδεηγκα <xsl:template match="/"> Τν template ζα εθαξκνζηεί ζην έγγξαθν XML μεθηλώληαο από ην ηνπ εγγξάθνπ root element Παξάδεηγκα <xsl:template match= artists/artist/album"> To template ζα εθαξκνζηεί από όπνπ ππάξρεη element κε όλνκα έγγξαθν θαη γηα όια ηα παηδία ηνπ element απηνύ album ζην Ειςαγωγή ςσην XML 14
Τα elements ηνπ XSL - <xsl:for-each> Πξόθεηηαη γηα κία δνκή βξόγρνπ πνπ εθηειείηαη γηα θάζε element πνπ ππάξρεη θάησ από ην path πνπ θαζνξίδεη ν ζπγγξαθέαο ζην attribute select Παξάδεηγκα <xsl:for-each select="artists/artist > <xsl:for-each select="album"> </xsl:for-each> </xsl:for-each> Ειςαγωγή ςσην XML 15
Τα elements ηνπ XSL - <xsl:value-of> Τν element απηό ρξεζηκνπνηείηαη γηα ηελ εμαγσγή ηεο ηηκήο ελόο element ηνπ εγγξάθνπ εηζόδνπ XML Παξάδεηγκα <xsl:value-of select="release_year"></xsl:value-of> Ο parser ζα αλαγθαζηεί λα αμηνινγήζεη ηελ ηηκή ηνπ element release_year Ειςαγωγή ςσην XML 16
Ταμηλόκεζε ησλ δεδνκέλσλ Η ηαμηλόκεζε ησλ δεδνκέλσλ ηνπ εγγξάθνπ XML γίλεηαη κε ηελ ρξήζε ηνπ attribute order-by ζε έλα element <xsl:for-each> Τα νξίζκαηα ηνπ attribute είλαη ηα εμήο: Πξόζεκν: + ή -, αλάινγα κε ην αλ ζέινπκε ε ηαμηλόκεζε λα γίλεη κε αύμνληα ή θζίλνληα ηξόπν Τν όλνκα ηνπ element πνπ ζέινπκε λα ηαμηλνκήζνπκε Παξάδεηγκα <xsl:for-each select="artists/artist" order-by="+name"> </xsl:for-each> Ταμηλνκνύκε ηα δεδνκέλα ηνπ element artist θαηά θζίλνληα ηξόπν Ειςαγωγή ςσην XML 17
Φηιηξάξηζκα ησλ δεδνκέλσλ Τν θηιηξάξηζκα ησλ δεδνκέλσλ ηνπ εγγξάθνπ XML γίλεηαη κε ηελ πξνζζήθε ελόο δεύγνπο θιεηδί-ηηκή ζην attribute select ελόο element <xsl:for-each> Οη ηειεζηέο πνπ κπνξνύλ λα ρξεζηκνπνηεζνύλ κε ην select είλαη ηα εμεο: Ιζόηεηα: = Αληζόηεηα:!= Μηθξόηεξν από: < Μεγαιύηεξν από: > Παξάδεηγκα <xsl:for-each select="artists/artist[name= Tuxedomoon ]"> </xsl:for-each> Γηαιέγνπκε κόλν εθείλα ηα elements ηνπ εγγξάθνπ όπνπ ην element name ηνπ element artist είλαη ίζν κε Tuxedomoon Ειςαγωγή ςσην XML 18
Υινπνίεζε ινγηθήο ηύπνπ if... Η XSL επηηξέπεη ηελ ύπαξμε ινγηθήο if... γηα ηελ ιήςε απνθάζεσλ ζε ζεκεία ηνπ XML εγγξάθνπ Παξάδεηγκα <xsl:if match=".[medium='lp']"> <td><font color="blue"> <xsl:value-of select="medium"></xsl:value-of> </font></td> </xsl:if> Αλ ε ηηκή ηνπ element medium είλαη LP ηόηε ην ρξώκα εκθάληζεο ζα πξέπεη λα είλαη κπιε Ειςαγωγή ςσην XML 19
Υινπνίεζε conditional choose Η XSL επηηξέπεη ηελ πινπνίεζε ινγηθήο if else ζηελ επεμεξγαζία ελνο εγγξάθνπ XML Παξάδεηγκα <xsl:choose> <xsl:when test=".[release_year>'1990']"> <td bgcolor="#00ff00"> <xsl:value-of select="release_year"></xsl:value-of> </td> </xsl:when> <xsl:otherwise> <td bgcolor="#99ccff"> <xsl:value-of select="release_year"></xsl:value-of> </td> </xsl:otherwise> </xsl:choose> Αλ ε ηηκή ηνπ element release_year είλαη κεγαιύηεξε από 1990 ηόηε ρξσκάηηζε πξάζηλν ην background ηνπ αληίζηνηρνπ θειηνύ, αιιηώο ρξσκάηηζέ ην γαιάδην Ειςαγωγή ςσην XML 20
Σύκηαλε XSLT Μεηαζπεμαηηζμόξ XML ζε HTML Άνζνμ ζε XML <?xml version="1.0" encoding="iso-8859-1"?> <article fname="19990101_xsl"> <title>xml Style Sheets</title> <date>january 1999</date> <copyright>1999, Benoit Marchal</copyright> <abstract>style sheets add flexibility to document viewing.</abstract> <keywords>xml, XSL, style sheet, publishing, web</keywords> <section> <p>send comments and suggestions to <url protocol="mailto">bmarchal@.pineapplesoft.com</url>.</p> </section> <section> <title>styling</title> <p>style sheets are inherited from SGML, an XML ancestor </url>.</p> </section> <section> <title>how XSL Works</title> <p>an XSL style sheet is </p> <p>with XSL, these rules </p> </section> <section> <title>the Added Flexibility of Style Sheets</title> <p>style sheets are separated from documents </p> <p>this means that </p> </section> </article> Ειςαγωγή ςσην XML 21
Σύκηαλε XSLT Μεηαζπεμαηηζμόξ XML ζε HTML XSLT γηα ηεκ μεηαηνμπή <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns="http://www.w3.org/tr/rec-html40"> <xsl:output method="html"/> <xsl:template match="/"> <HTML> <HEAD> <TITLE>Pineapplesoft Link</TITLE> </HEAD> <BODY> <xsl:apply-templates/> </BODY> </HTML> </xsl:template> <xsl:template match="section/title"> <P><I><xsl:apply-templates/></I></P> </xsl:template> <xsl:template match="article/title"> <P><B><xsl:apply-templates/></B></P> </xsl:template> <xsl:template match="url"> <A TARGET="_blank"> <xsl:attribute name="href"> <xsl:apply-templates/> </xsl:attribute> <xsl:apply-templates/> </A> Σοκέπεηα </xsl:template> <xsl:template match="url[@protocol='mailto']"> <A> <xsl:attribute name="href">mailto: <xsl:apply-templates/> </xsl:attribute> <xsl:apply-templates/> </A> </xsl:template> <xsl:template match="p"> <P><xsl:apply-templates/></P> </xsl:template> <xsl:template match="abstract date keywords copyright"/> </xsl:stylesheet> Ειςαγωγή ςσην XML 22
Σύκηαλε XSLT Φύιιμ XSLT γηα ηεκ μεηαηνμπή <?xml version= 1.0 encoding= ISO-8859-1?> <xsl:stylesheet version= 1.0 Φύιιμ Σηοι xmlns:xsl= http://www.w3.org/1999/xsl/transform Χώνμη Οκμμαημδμζίαξ xmlns= http://www.w3.org/tr/rec-html40 > <xsl:output method= html /> Έλμδμξ:HTML Ειςαγωγή ςσην XML 23
Σύκηαλε XSLT - Φύιιμ XSLT γηα ηεκ μεηαηνμπή <xsl template match= / > <HTML> <HEAD> <TITLE>Pineapplesoft Link</TITLE> </HEAD> <BODY> <xsl:apply templates/> </BODY> </HTML> </xsl:template> Πνόηοπμ (template) Δηαδνμμή: νίδα εγγνάθμο Πενηεπόμεκα πνμηύπμο πμο ζα εηζαπζμύκ ζημ παναγόμεκμ δέκηνμ Ειςαγωγή ςσην XML 24
Σύκηαλε XSLT - Φύιιμ XSLT γηα ηεκ μεηαηνμπή <xsl template match= section/title > <P><I><xsl:apply-templates/></I></P> </xsl:template> <P><I>Styling</I></P> Ειςαγωγή ςσην XML 25
Σύκηαλε XSLT - Φύιιμ XSLT γηα ηεκ μεηαηνμπή <xsl:template match= url[@protocol= mailto ] > <A> <xsl:attribute name= HREF >mailto:<xsl:apply-templates/> </xsl:attribute> <xsl:apply-templates/> </A> </xsl:template> <A href= mailto:bmarchal@pineapplesoft.com > bmarchal@pineapplesoft.com</a> Ειςαγωγή ςσην XML 26
Document Object Model - DOM Πξόθεηηαη γηα ηελ πξνγξακκαηηζηηθή δηεπαθή γηα ηελ επεμεξγαζία εγγξάθσλ XML Θέηεη ηηο πξνδηαγξαθέο γηα ην πσο πξέπεη θαλείο λα επεμεξγάδεηαη θαη λα πξνζπειαύλεη έλα έγγξαθν XML Δίλαη απνδεζκεπκέλν από γιώζζα πξνγξακκαηηζκνύ ή ιεηηνπξγηθό ζύζηεκα Με βάζε ην DOM, ν πξνγξακκαηηζηήο κπνξεί λα δηαβάζεη έλα XML αξρείν, λα πινεγεζεί ζηελ δνκή ηνπ, θαη λα πξνζζέζεη, αθαηξέζεη ή κεηαβάιεη ηα elements ηνπ εγγξάθνπ Ειςαγωγή ςσην XML 27
Τπόπορ επεξεπγαςίαρ ενόρ XML εγγπάυοτ με βάςη σο DOM Ο parser θνξηώλεη ζηελ κλήκε ηνπ ππνινγηζηή ην πξνο επεμεξγαζία αξρείν Τν DOM παξέρεη ηελ αλαπαξάζηαζε ηεο πιεξνθνξίαο πνπ πεξηέρεηαη ζην έγγξαθν XML κε ηελ κνξθή ελόο δέληξνπ Ο πξνγξακκαηηζηήο έρεη πξόζβαζε ζε ζεκειηώδεηο δνκέο πνπ θαζνξίδεη ην DOM Ειςαγωγή ςσην XML 28
Αλαπαξάζηαζε ηνπ XML κέζσ ηνπ DOM Η νίδα ημο XML δέκηνμο είκαη ημ ζημηπείμ Document. Ακηηζημηπίδεηαη με ημ root element ημο εγγνάθμο XML Κάζε άιιμ element πμο πενηέπεηαη ζημ έγγναθμ ζεςνείηαη απόγμκμξ ημο ζημηπείμο Document Όια ηα elements εκόξ εγγνάθμο XML έπμοκ ζπέζεηξ παηέναπαηδημύ μεηαλύ ημοξ Κάζε XML element είκαη πνμζπειάζημμ μέζς ηεξ Node DOM δηεπαθήξ Ειςαγωγή ςσην XML 29
Παξάδεηγκα - Τν XML έγγξαθν <?xml version="1.0" standalone="no"?> <artists> <artist id="1231"> <name>tuxedomoon</name> <picture>http://blahg.tux.mus/band/tuxedomoon/band.jpg</picture> <album id="763"> <title>a ghost sonata</title> <medium>cd</medium> <release_year>1985</release_year> </album> <album id="244"> <title>desire</title> <medium>lp</medium> <release_year>1980</release_year> <cov_pic>http://fake.com/desire/desire.jpg</cov_pic> </album> </artist> </artists> Ειςαγωγή ςσην XML 30
... θαη ε DOM αλαπαξάζηαζή ηνπ artists artist id 1231 Tuxedomoon name picture http://blahg.tux album id 763 244 id album title medium release_year title medium release_year cov_pic A ghost sonata CD 1985 Desire LP 1980 http://fake.c Ειςαγωγή ςσην XML 31
DOM θαη Java JAXP Ειςαγωγή ςσην XML 32
JAXP Βαζηθέο αξρέο ιεηηνπξγίαο Ι 1) Φξεζηκνπνηνύκε ηελ θιάζε javax.xml.parsers.documentbuilderfactory, ρξεζηκνπνηώληαο ηελ κέζνδν newdocumentbuilder(), γηα λα πάξνπκε έλα αληηθείκελν θιάζεο 2) javax.xml.parsers.documentbuilder θαη ρξεζηκνπνηνύκε απηό ην αληηθείκελν, θαιώληαο ηελ κέζνδν parse(...), γηα λα πάξνπκε έλα 3) Org.w3c.dom.Document αληηθείκελν, ζύκθσλα κε ηηο πξνδηαγξαθέο ηνπ DOM Ειςαγωγή ςσην XML 33
JAXP Βαζηθέο αξρέο ιεηηνπξγίαο ΙΙ Τμ παθέημ org.w3c.dom πανέπεη μηα ζεηνά από Java ακηηθείμεκα με ηα μπμία μπμνεί θακείξ κα πνμζπειάζεη όια ηα μένε ημο DOM tree Document: ημ root element ημο DOM δέκηνμο. Ακηηπνμζςπεύεη όιμ ημ έγγναθμ XML Node: έκαξ θόμβμξ ημο DOM δέκηνμο Element: έκα XML element Attr: έκα attribute εκόξ element Entity: έκα XML entity EntityReference: μία ακαθμνά ζε έκα XML entity CharacterData: πνόζβαζε ζε δεδμμέκα ηύπμο character μέζα ζημ έγγναθμ XML Ειςαγωγή ςσην XML 34
Τι είναι XML Schema Απάκηεζε: Έκα ιεληιόγημ XML γηα ηεκ έθθναζε ηςκ θακόκςκ ηςκ επηπεηνεζηαθώκ δεδμμέκςκ ζαξ Ειςαγωγή ςσην XML 35
Παπάδειγμα Περιγράθει ηην γεωγραθική θέζη ενός ζημείοσ Γεωγραθικό πλάηος, μήκος <location> <latitude>32.904237</latitude> <longitude>73.620290</longitude> </location> Είκαη αοηά ηα δεδμμέκα έγθονα; Θα πνέπεη κα ηθακμπμημύκ ημοξ πενημνηζμμύξ πμο ζέημοκ ηα επηπεηνεζηαθά δεδμμέκα: 1. Η ζέζε «location» πνέπεη κα απμηειείηαη από ημ γεςγναθηθό πιάημξ «latitude», αθμιμοζμύμεκμ από έκα γεςγναθηθό μήθμξ «longitude». 2. Τμ γεςγναθηθό πιάημξ «latitude» πνέπεη κα είκαη έκαξ δεθαδηθόξ μεηαλύ -90 θαη +90 3. Τμ γεςγναθηθό μήθμξ «longitude» πνέπεη κα είκαη έκαξ δεθαδηθόξ μεηαλύ - 180 θαη +180 4. Καη γηα ηα δύμ μ ανηζμόξ ηςκ δεθαδηθώκ πνέπεη κα είκαη αθνηβώξ 6 ρεθία. Μπμνμύμε κα εθθνάζμομε όιμοξ αοημύξ ημοξ πενημνηζμμύξ με ημ XML SCHEMA Ειςαγωγή ςσην XML 36
Επικτπώνονσαρ σα δεδομένα ςαρ <location> <latitude>32.904237</latitude> <longitude>73.620290</longitude> </location> XML Schema validator Γεδνκέλα ΟΚ -check that the latitude is between -90 and +90 -check that the longitude is between -180 and +180 - check that the fraction digits is 6 for lat and lon... XML Schema Ειςαγωγή ςσην XML 37
Σκοπόρ σοτ XML Schema (και σοτ DTD) Πενηγνάθεη: Τεκ δμμή ηςκ ΧML ζηηγμημηύπςκ «ασηό ηο element περιέτει ηο άλλο element, ηο οποιο περιέτει ηο άλλο elements, κοκ" Τμκ Τύπμ Δεδμμέκςκ θάζε element/attribute «Ασηό ηο element θα περιέτει ένα ακέραιο με εύρος 0 έως 12,000» (DTD δεν ηα καηαθέρνοσν πολύ καλά με ηοσς ηύποσς δεδομένων) Ειςαγωγή ςσην XML 38
Διαυοποποίηςη και επικπάσηςη σοτ XML Schema Γπζαξέζθεηα κε ην DTD Δίλαη κηα δηαθνξεηηθή ζύληαμε Γξάθεηε ην έγγξαθν XML ρξεζηκνπνηώληαο κηα ζύληαμε θαη ην DTD ρξεζηκνπνηώληαο κηα άιιε ζύληαμε Πεξηνξηζκέλνπο ηύπνπο δεδνκέλωλ Τα DTDs ππνζηεξίδνπλ κηα πνιύ πεξηνξηζκέλε ηθαλόηεηα γηα ηνλ νξηζκό ηύπωλ δεδνκέλωλ Γελ κπνξείηε, παξαδείγκαηνο ράξηλ, λα εθθξάζεηε έλα αξηζκό ηύπνπ ηειεθώλνπ Με ζπκβαηνί ηύπνη κε απηνύο ηωλ Βάζεωλ Γεδνκέλωλ DTD ππνζηεξίδεη 10 ηύπνπο δεδνκέλωλ Τα XML ζρήκαηα ππνζηεξίδνπλ 44 + datatypes Ειςαγωγή ςσην XML 39
Highlights of XML Schemas Τμ XMLζπήμα οπενηενεί έκακηη ηςκ DTDs: datatypes : 44 + εκακηίμκ 10 Δεμημονγία κέςκ Ιδηα ζύκηαλε με ηα XMl documents Ληγόηενα πνάγμαηα κα ζομόμαζηε Ακηηθεημεκμζηναθήξ μνηζμόξ ηύπςκ δεδμμέκςκ Επέθηαζε θαη πενημνηζμόξ ηύπςκ δεδμμέκςκ Ειςαγωγή ςσην XML 40
BookStore.dtd <!ELEMENT BookStore (Book+)> <!ELEMENT Book (Title, Author, Date, ISBN, Publisher)> <!ELEMENT Title (#PCDATA)> <!ELEMENT Author (#PCDATA)> <!ELEMENT Date (#PCDATA)> <!ELEMENT ISBN (#PCDATA)> <!ELEMENT Publisher (#PCDATA)> Ειςαγωγή ςσην XML 41
ELEMENT ATTLIST #PCDATA ID NMTOKEN CDATA ENTITY BookStore Author Book Title Publisher ISBN Date To ιεμηιόγην DTD παξέρεη ηε δπλαηόηεηα γηα ηνλ νξηζκό ελόο λένπ XML πεξηερνκέλνπ Ειςαγωγή ςσην XML 42
http://www.w3.org/2001/xmlschema http://www.books.org (targetnamespace) complextype element sequence schema boolean string integer BookStore Author Book Title Publisher ISBN Date Τν ιεμηιόγην από ην XML Schema Ειςαγωγή ςσην XML 43
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.books.org" xmlns="http://www.books.org" elementformdefault="qualified"> <xsd:element name="bookstore"> <xsd:complextype> <xsd:sequence> <xsd:element ref="book" minoccurs="1" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="book"> <xsd:complextype> <xsd:sequence> <xsd:element ref="title" minoccurs="1" maxoccurs="1"/> <xsd:element ref="author" minoccurs="1" maxoccurs="1"/> <xsd:element ref="date" minoccurs="1" maxoccurs="1"/> <xsd:element ref="isbn" minoccurs="1" maxoccurs="1"/> <xsd:element ref="publisher" minoccurs="1" maxoccurs="1"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="publisher" type="xsd:string"/> </xsd:schema> 44 xsd = Xml-Schema Definition Ειςαγωγή ςσην XML
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.books.org" xmlns="http://www.books.org" elementformdefault="qualified"> <xsd:element name="bookstore"> <xsd:complextype> <xsd:sequence> <xsd:element ref="book" minoccurs="1" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="book"> <xsd:complextype> <xsd:sequence> <xsd:element ref="title" minoccurs="1" maxoccurs="1"/> <xsd:element ref="author" minoccurs="1" maxoccurs="1"/> <xsd:element ref="date" minoccurs="1" maxoccurs="1"/> <xsd:element ref="isbn" minoccurs="1" maxoccurs="1"/> <xsd:element ref="publisher" minoccurs="1" maxoccurs="1"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="publisher" type="xsd:string"/> </xsd:schema> 45 <!ELEMENT BookStore (Book+)> <!ELEMENT Book (Title, Author, Date, ISBN, Publisher)> <!ELEMENT Title (#PCDATA)> <!ELEMENT Author (#PCDATA)> <!ELEMENT Date (#PCDATA)> <!ELEMENT ISBN (#PCDATA)> <!ELEMENT Publisher (#PCDATA)> Ειςαγωγή ςσην XML
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.books.org" xmlns="http://www.books.org" elementformdefault="qualified"> <xsd:element name="bookstore"> <xsd:complextype> <xsd:sequence> <xsd:element ref="book" minoccurs="1" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="book"> <xsd:complextype> <xsd:sequence> <xsd:element ref="title" minoccurs="1" maxoccurs="1"/> <xsd:element ref="author" minoccurs="1" maxoccurs="1"/> <xsd:element ref="date" minoccurs="1" maxoccurs="1"/> <xsd:element ref="isbn" minoccurs="1" maxoccurs="1"/> <xsd:element ref="publisher" minoccurs="1" maxoccurs="1"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="publisher" type="xsd:string"/> </xsd:schema> 46 Όια ηα XML Schema έρνπλ "schema" ζαλ ην root element. Ειςαγωγή ςσην XML
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.books.org" xmlns="http://www.books.org" elementformdefault="qualified"> <xsd:element name="bookstore"> <xsd:complextype> <xsd:sequence> <xsd:element ref="book" minoccurs="1" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="book"> <xsd:complextype> <xsd:sequence> <xsd:element ref="title" minoccurs="1" maxoccurs="1"/> <xsd:element ref="author" minoccurs="1" maxoccurs="1"/> <xsd:element ref="date" minoccurs="1" maxoccurs="1"/> <xsd:element ref="isbn" minoccurs="1" maxoccurs="1"/> <xsd:element ref="publisher" minoccurs="1" maxoccurs="1"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="publisher" type="xsd:string"/> </xsd:schema> 47 ΤΑ elements θαη ηα datatypes ηα νπνία απαξηίδνπλ ην schema - schema - element - complextype - sequence - string Πξνέξρνληαη από ην http:// /XMLSchema namespace Ειςαγωγή ςσην XML