Servizi agli studenti: smart card e portale di accesso
by user
Comments
Transcript
Servizi agli studenti: smart card e portale di accesso
XML: eXtensible Markup Language La lingua franca del Web All’inizio ..... …. Era la nascita del Web (Tim Berners-Lee, 1992) • HTML • HTTP • URL Ftp News Email Web Server Db & other software HTML Internet communication protocols URLs (location e.g -- http://www.foo.org/boo.html ) (data/display) Hello There Here’s a zippy HTML page, with lots of Colors and Links ...!!! Fun, Eh? HTTP XML - CML (transfer) Padova, 15 July, 2016 - slide 6 I tre concetti di base HTTP -- HyperText Transfer Protocol Un protocollo per trasferire dati tra macchine su Internet URL -- Uniform Resource Locator Uno schema per referenziare, usando una semplice stringa di testo, la specifica locazione di una risorsa (Web page, audio file, program) da qualche parte su Internet (e.g. http://www.utoronto.ca/ian/talks/ ) HTML -- HyperText Markup Language Unemarkup language per codificare HTTP URLs hanno superato il test informazioni del tempo per potere essere lette / visualizzate Ma dal 1996, HTML ha iniziato a mostrare l’età .... XML - CML Padova, 15 July, 2016 - slide 7 Semplice Esempio di HTML HTML (not XML) Markup Browser Rendering <HTML> <HEAD> <TITLE>The XML Specification Guide -- Website Home Page </TITLE> <LINK REL="stylesheet" HREF="style.css"> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="black" LINK="#0066CB" ALINK="#00A000" VLINK="#808080" > <TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"> <TR> <TD VALIGN="top" ALIGN="left"><FONT CLASS="toolbar" FACE="arial,helvetica" SIZE="-1">The XML Specification Guide </FONT></TD> …….. More tags and text …. XML - CML Padova, 15 July, 2016 - slide 8 Problemi con HTML HTML progettato per un ruolo solo - documenti semplici ipertestuali, con interazioni semplici con l’utente (forms, etc.). Ma la gente ben presto ha voluto visualizzare altri tipi di dait: Espressioni matematiche, testi letterari grapica, multimedia, contenuti interattivi ... Form commerciai, ordini di acquisto, dati generici ... e “connettere” queste parti assieme (in modo che possano interagire) ... e dinamicamente miscelare/editare blocchi di dati assieme ... e costruire network dinamiche che scambiano informazioni ... e far si che tutto questo funzioni, dovunque. XML - CML Padova, 15 July, 2016 - slide 9 Problemi con HTML (2) HTML è un formato di visualizzazione Buono per il rendering delle informazioni - ma... Non contiene informazioni sulla struttura dei documenti Quindi non va bene per documentoi lunghi e strutturati Stile e contenuto sono intrinsicamente collegati XML - CML Risulta difficoltosa la manutenzione Informazioni possono venire perse in quanto si descrive solo la forma, non il significato (semantica) Padova, 15 July, 2016 - slide 10 Lo scopo di HTML era troppo limitato Singolo modello per I dati (hypertext text) Sintassi troppo macchinosa ... È facile creare HTML che viene male-intrpretato da altri sistemi Risultato: Non è possibile creare dati arbitrari che possano essere ‘capiti’ ovunque HTML Web Evolution interscambio dati tra macchine XML - CML Modellazione di tipi di dati differenti presentazione Di differenti Tipi di dati Padova, 15 July, 2016 - slide 11 Markup Languages La parola “Markup” deriva dall’industria della stampa Istruzioni di stili dettagliati per tipografie Normalmente scritte a mano sulle copie (eg sottolineature di testo che deve essere settato in italico). Markup languages fanno lo stesso per documenti computerzzati. Markup aggiunge una struttura logica ad un documento, o indica come debba essere il layout (su carta o su video). Markup languages sono un set di istruzioni che si prestano ad un processo automatico. XML - CML Padova, 15 July, 2016 - slide 12 Markup Languages (cont.) Di solito una sequenza di caratteri in un file testo che indica una struttura oppure un comportamento del contenuto. Per esempio (in HTML) This is <B>bold</B> and this is <I>italic</I> <TITLE>This is the title.</TITLE> Markup possono essere creati editando direttamente I simboli, ma di solito questo viene mascherato agli utenti finali. Esempi XML - CML HTML RTF Hytime Padova, 15 July, 2016 - slide 13 Generalised Markup Languages Linguaggio proprietari di markup creano problemi. Generalised markup languages sono linguaggi per la definizione di markup languages. Metalanguages SGML XML - CML Padova, 15 July, 2016 - slide 14 SGML - Storia Standard Generalised Markup Language 1969 - GML da IBM text editing formatting information retrieval 1980 SGML prima pubblicazione 1980’s SGML adottato da US IRS & DOD 1986 - ISO standard ISO 8879: Information processing--Text and office systems-Standard Generalized Markup Language (SGML), ([Geneva]: ISO, 1986). XML - CML Padova, 15 July, 2016 - slide 15 SGML SGML definisce un sistema di tag markup <TAG>This is a pair of SGML tags</TAG> SGML è uno standard per specificare un tag set. Document Type Definition (DTD) SGML documenti contengono elementi strutturali che possono essere descritti indipendentemente da come vengono visualizzati. SGML application. HTML è una SGML application. XML - CML Padova, 15 July, 2016 - slide 16 Benefici di SGML Documenti sono creati pensando in termini di struttura piuttosto che di formato (che può cambiare nel tempo). Documenti sono portabili perchè qualsiasi SW SGML compliant li può interpretare riferendosi al DTD. Documenti originariamente creati per un media possono facilmente essere riclicati su altri media, come ad esempio un display di PC. XML - CML Padova, 15 July, 2016 - slide 17 XML Extensible Markup Language Iniziativa del W3C, che ha l’obiettivo di mettere a punto I problemi ed I limiti dell’ HTML. XML descrive una sintassi per il marking di documents in modo tale che strutture complesse possano essere facilmente descritte. Queste strutture possono essere usate come il fondamento per diversi tipi di processi eg: Documentio umani leggibili Agenti Automatizzati Data interchange tra sistemi disparati Universal Data Format XML - CML Padova, 15 July, 2016 - slide 18 Cos’è XML? XML è basato su SGML, ma è sostanzialmente una forte semplificazione per l’uso del WWW. Come SGML, XML è metalinguaggio Definizione arbitraria di elementi <TITLE> <PARAGRAPH> <ChapterHeading> <PRICE> <PARTNUMBER> <MANUFACTUER> <ExamGrade> La sintassi può essere (opzionalmente) descritta da un DTD Documenti Validi – hanno un DTD Documenti non ‘Well formed’ non hanno un DTD Stile e contenuto sono completamente separati XML documents contengono testo Stile viene specificato in stylesheets XML - CML Padova, 15 July, 2016 - slide 19 XML contiene regole esplicite per determinare dove le strutture dei documenti iniziano e finioscono Tende a raggiungere un compromesso tra flessibilità, semplicità e leggibilità sia da parte di umani che di macchine provvede uno standard per I dati con cui codificare I contenuti, semantica e schema per una grande varietà di casi XML - CML Padova, 15 July, 2016 - slide 20 XML Basic Struttura di documenti XML Struttura Logica Elementi Struttura Fisica Entitià Document Unit Sub-unit XML - CML Padova, 15 July, 2016 - slide 22 XML: gerarchia XML può essere descritto in una Gerarchia ad albero Document Parent Document Unit Sub-unit Unit Child Sub-unit Sibling N.B. Tutti gli elementi devono essere annidati XML - CML Padova, 15 July, 2016 - slide 23 Database ed XML Il contenuto di Database possono essere presentati in XML XML processor può accedere DBMS o file system e convertire dati in XML Web server possono servire contenuti in XML o HTML Image from http://www-4.ibm.com/software/developer/education/tutorial-prog/overview.html XML - CML Padova, 15 July, 2016 - slide 24 XML basics Un documento XML è composto di XML elements. element <start-tag> content </end-tag> Un elemento XML può contenere elementi inglobati formando I suoi subelements. XML - CML Padova, 15 July, 2016 - slide 25 Ciascun documento XML ha un root element. Un elemento XML può contenere informazioni addizionali descritte dai suoi attributes. Attribute <start-tag name = ‘value’> XML - CML Padova, 15 July, 2016 - slide 26 <?xml version=‘1.0’?> <!DOCTYPE Journal SYSTEM ‘journal.dtd’> <Journal> root <Title>The Computer World</Title> <Editors>J.Brown and P.White</Editors> <Volume>1</Volume> <Month>April</Month> <Year>2000</Year> <Article Title=‘Distributed Technologies’ Authors=‘W.Green’ Pages=‘5-20’> elements <Abstract>This article describes…</Abstract> </Article> <Article Title=‘The Internet’ Authors=‘A.Black’ Pages=‘5-20’> <Abstract>This Internet…</Abstract> </Article> ….. attributes </Journal> XML - CML (ex) XML document - Journal.xml Padova, 15 July, 2016 - slide 27 Un Esempio di Documento XML <!--?XML version="1.0"?--> <!DOCTYPE memo PUBLIC "memo.dtd"> <!--A very simple XML document --> <MEMO> <FROM>Tim Brailsford</FROM> <TO>A.N. Student</TO> <SUBJECT>Your Work</SUBJECT> <DATE>14th February, 2000</DATE> <MESSAGE> <P>This is to confirm that I received your work</P> <P>Thanks, Tim.</P> </MESSAGE> </MEMO> XML - CML Padova, 15 July, 2016 - slide 28 Un Esempio di Documento XML <!--?XML version="1.0"?--> <!DOCTYPE memo PUBLIC "memo.dtd"> <!--A very simple XML document --> <MEMO> <FROM>Tim Brailsford</FROM> <TO>A.N. Student</TO> <SUBJECT>Your Work</SUBJECT> <DATE>14th February, 2000</DATE> <BODY> <P>This is to confirm that I received your work</P> <!ELEMENT MEMO (FROM, TO, SUBJECT, DATE, MESSAGE)> <P>Thanks, Tim.</P> </BODY> <!ELEMENT FROM (#PCDATA)> <!ELEMENT TO (#PCDATA)> </MEMO> <!ELEMENT SUBJECT (#PCDATA)> <!ELEMENT DATE (#PCDATA)> <!ELEMENT MESSAGE (P+)> <!ELEMENT P (#PCDATA)> XML - CML Padova, 15 July, 2016 - slide 29 Contents vs Style XML tags contengono significato non formattazione. Questo permette di estrarre informazioni ulteriori Considera l’esempio del nome scientifico degli animali. I nomi sceintifici sono in latino Per convenzione essi sono sempre stampati in italico The scientific name of the domestic dog is Canis familiaris, and of the domestic cat is Felis catus. XML - CML Padova, 15 July, 2016 - slide 30 Contents vs Style tags contain meaning not appearance. InXML HTML This allows extra information to be extracted <P>The <I>scientific</I> Consider the example of the scientific names of name of the domestic dog animals. is <I>Canis scientific names familiaris</I>, are in latin by convention they are always printed in italics and of the domestic cat is <I>Felis catus.</I></P> NB non c’è distinzione tra nomi scientifici ed enfasi. The scientific name of the domestic dog is Canis familiaris, and of the domestic cat is Felis catus. XML - CML Padova, 15 July, 2016 - slide 31 Contents vs Style InXML XML tags contain meaning not appearance. This allows extra information to be extracted <P>The <emph>scientific</emph> Consider the example of the scientific names of name of the domestic dog animals. is <sci>Canis familiaris</sci>, scientific names are in latin and of the domestic cat by convention they are always printed in italics is <sci>Felis catus.</sci></P> NB enfasi e nomi sceintifici sono tag diversi. Essi possono essere Visualizzati in italico, ma anche essere trattati separatamente. The scientific name of the domestic dog is Canis familiaris, and of the domestic cat is Felis catus. XML - CML Padova, 15 July, 2016 - slide 32 Validazione di XML "Well Formed" XML documents Un "Well Formed" XML document ha una corretta sintassi XML "Valid" XML documents Un "Valid" XML document è un "Well Formed" XML document, che anche risulta conforme alle regole Document Type Definition (DTD) or XML Schema Definition (XSD). Errori provocano lo stop se il XML è non valido. XML - CML Padova, 15 July, 2016 - slide 33 Validazione di XML (Cont.) - XML DTD DTD definisce la struttura dei documenti con una lista di elementi legali. Internal DOCTYPE declaration External DOCTYPE declaration XML - CML Padova, 15 July, 2016 - slide 34 Esempio di Internal 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> <to>Jo</to> <from>Mary</from> <heading>Reminder</heading> <body>Don't forget me this weekend</body> </note> XML - CML Padova, 15 July, 2016 - slide 35 Esempio di External DTD <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Jo</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)> XML - CML Padova, 15 July, 2016 - slide 36 Perchè usare DTD? Con DTD, ciascun file XML può portare con se una descrizione del suo formato. Con un DTD, gruppi di persone indipendenti possono accordarsi sull’uso di un DTD in comune per lo scmbio di dati. La tua applicazione può usare un standard DTD per verificare che I dati ricevuti dall’esterno siano validi. E’ possibile usare un DTD per verificare I propri dati XML - CML Padova, 15 July, 2016 - slide 37 Validazione di XML (Cont.) - XML Schema Un XML schema descrive la struttura di un documento XML . XML - CML Definisce Definisce Definisce Definisce Definisce Definisce Definisce Definisce elementi che possono essere usati nel documento attributi contenuti nel documento quali elementi sono child elements l’ordine dei child elements il numero di child objects se un elemento è vuoto o può includere del testo I data types per elementi ed attributi valori di default e valori fissati per elementi ed attributi Padova, 15 July, 2016 - slide 38 XML Schema è Raccommandato XML XML XML XML XML XML - CML Schemas Schemas Schemas Schemas Schemas sono estendibili per future estensioni sono più ricchi ed utili dei DTD sono scritti in XML supporta data types supporta namespaces Padova, 15 July, 2016 - slide 39 Stylesheets Stile in XML è definito da stylesheets Styleseets definiscono l’apparenza fisica del documento, ed il suo comportamento Stylesheets non sono un concetto nuovo Word processors/DTP SGML HTML 4.0 Stylesheet languages XML - CML CSS (Cascading StyleSheets) – sviluppato per HTML XSL – sviluppato specificataemnte per XML Padova, 15 July, 2016 - slide 40 Perchè due Style Sheet languages? Può essere usato con HTML? Può essere usato con XML? Transformation language? Sintassi XML - CML CSS yes yes XSL no yes no CSS yes XML Padova, 15 July, 2016 - slide 41 Quale debbo usare? Usare CSS quando si può, usare XSL quando si deve. - CSS è molto più semplice da utilizzare, da imparare, ma ha alcune limitazioni. Alcune cose non possono essere fatte con CSS, o con CSS da soli. Allora serve XSL, oppure una trasformazione di XSL. XML - CML Padova, 15 July, 2016 - slide 42 Ruolo di XSL e di CSS. XML - CML Padova, 15 July, 2016 - slide 43 Visualizzazione di XML con CSS A pure xml file cd_catalog .xml <?xml version="1.0" encoding="ISO-8859-1" ?> <!-- Edited with XML Spy v4.2 --> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </CATALOG> XML - CML Padova, 15 July, 2016 - slide 44 Visualizzazione di XML con CSS Uno CSS style sheet cd_catalog.css CATALOG { background-color: #ffffff; width: 100%; } CD { display: block; margin-bottom: 30pt; margin-left: 0; } TITLE { color: #FF0000; font-size: 20pt; } ARTIST { color: #0000FF; font-size: 20pt; } COUNTRY,PRICE,YEAR,COMPANY { Display: block; color: #000000; margin-left: 20pt; } XML - CML Padova, 15 July, 2016 - slide 45 XML file, con un CSS aggiunto <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="cd_catalog.css"?> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </CATALOG> XML - CML Padova, 15 July, 2016 - slide 46 Visualizzazione di cd_catalog.xml con css XML - CML Padova, 15 July, 2016 - slide 47 Visualizzazione di XML con XSL <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="simple.xsl"?> <breakfast_menu> <food> <name>Belgian Waffles</name> <price>$5.95</price> <description>two of our famous Belgian Waffles with maple syrup</description> <calories>650</calories> </food> <food> <name>Strawberry Belgian Waffles</name> <price>$7.95</price> <description>light Belgian waffles covered with strawberries and whipped cream</description> <calories>900</calories> </food> </breakfast_menu> XML - CML plenty of real Padova, 15 July, 2016 - slide 48 Visualizzazione di XML con XSL <?xml version="1.0“?> <html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict"> <body style="font-family:Arial,helvetica,sans-serif;font-size:12pt; background-color:#EEEEEE"> <xsl:for-each select="breakfast_menu/food"> <div style="background-color:teal;color:white;padding:4px"> <span style="font-weight:bold;color:white"> <xsl:value-of select="name" /> </span> <xsl:value-of select="price" /> </div> <div style="margin-left:20px;margin-bottom:1em;font-size:10pt"> <xsl:value-of select="description" /> <span style="font-style:italic"> ( <xsl:value-of select="calories" /> calories per serving) </span> </div> </xsl:for-each> </body> A XSL style sheet simple.xsl XML - CML Padova, 15 July, 2016 - slide 49 Visualizzazione di XML con XSL XML - CML Padova, 15 July, 2016 - slide 50 XSL – Più che uno Style Sheet XSL ……. Oltre al foglio stile XPath (un linguaggio per definire parti di un documento XML – un linguaggio per ola scrittura di cammini - path) XQuery (un linguaggio che permette di estrarre porzioni di un documento) XSLT (un linguaggio per trasformare documenti XML) XSL Formatting Objects (un vocabolario per la formattazione di documenti XML) XML - CML Padova, 15 July, 2016 - slide 51 XLink e XPointer Aggiungono nuove funzionalità a XML per creare ipertesti e ipermedia XLink consente di definire link verso l’esterno e multidirezionali XPointer consente di definire locazioni in documenti XML Vengono usati in combinazione, anche se sono uno indipendente dall’altro XML - CML Padova, 15 July, 2016 - slide 52 Path expressions (Xpath) Consente la scrittura di path in un documento con lo scopo di selezionare parti di docuemnti XML . .. / // @ * [] [n] XML - CML Nodo corrente Nodo padre del nodo corrente nodo radice, o figlio del nodo corrente discendente del nodo corrente attributo del nodo corrente qualsiasi nodo predicato posizione Padova, 15 July, 2016 - slide 53 Esempi di path expressions Una path expression può iniziare con document(stringa_documento) Restituisce la radice del documento specificato A partire dalla radice del documento si possono specificare delle espressioni per estrarre il contenuto desiderato Esempio: document(“libri.xml”)/Elenco/Libro Restituisce l’insieme di tutti i libri contenuti nell’elenco che si trovano nel documento libri.xml XML - CML Padova, 15 July, 2016 - slide 54 Esempi di path expressions <?xml version="1.0"?> <Elenco> <Libro disponibilità=‘S’> <Titolo>Il Signore degli Anelli</Titolo> <Autore>J.R.R. Tolkien</Autore> <Data>2002</Data> <ISBN>88-452-9005-0</ISBN> <Editore>Bompiani</Editore> </Libro> <Libro disponibilità=‘N’> <Titolo>Il nome della rosa</Titolo> <Autore>Umberto Eco</Autore> <Data>1987</Data> <ISBN>55-344-2345-1</ISBN> <Editore>Bompiani</Editore> </Libro> <Libro disponibilità=‘S’> <Titolo>Il sospetto</Titolo> <Autore>F. Dürrenmatt</Autore> <Data>1990</Data> <ISBN>88-07-81133-2</ISBN> <Editore>Feltrinelli</Editore> </Libro> </Elenco> XML - CML document(“libri.xml”)/Elenco/Libro <Libro disponibilità=‘S’> <Titolo>Il Signore degli Anelli</Titolo> <Autore>J.R.R. Tolkien</Autore> <Data>2002</Data> <ISBN>88-452-9005-0</ISBN> <Editore>Bompiani</Editore> </Libro> <Libro disponibilità=‘N’> <Titolo>Il nome della rosa</Titolo> <Autore>Umberto Eco</Autore> <Data>1987</Data> <ISBN>55-344-2345-1</ISBN> <Editore>Bompiani</Editore> </Libro> <Libro disponibilità=‘S’> <Titolo>Il sospetto</Titolo> <Autore>F. Dürrenmatt</Autore> <Data>1990</Data> <ISBN>88-07-81133-2</ISBN> <Editore>Feltrinelli</Editore> </Libro> Padova, 15 July, 2016 - slide 55 XSL cos’è allora ??? XSL è l’unione di tre linguaggi Xpath specifica della porzione di documento a cui la regola XSL si riferisce XLS Transformation parte che consente di scrivere le regole di trasformazione documentale XSL Formating Object: un linguaggio per la specifica della resa del documento XML - CML Padova, 15 July, 2016 - slide 56 XSLT XSL = XSLT + XSL FO XSLT (XSL Transformation) Trasforma un documento XML in un altro documento XML o altro tipo di documento (HTML, ecc.) Può: aggiungere nuovi elementi; rimuovere elementi presenti; riorganizzare gli elementi; decidere quali visualizzare, ecc. XSL FO (Formatting Object) contiene le istruzioni per formattare l’output di un documento XML XML - CML Padova, 15 July, 2016 - slide 57 XSLT Utilizza path expression per definire le parti del documento sul quale effettuare le trasformazioni Per gli elementi sui quali devono essere applicate le trasformazioni vengono definiti dei template XML - CML Padova, 15 July, 2016 - slide 58 Template Per assegnare uno stile ad un particolare elemento XML oppure per applicare delle trasformazioni si usa un template nel foglio di stile Il foglio di stile può essere eseguito da un processore XSLT che scandisce il documento XML sorgente, identifica gli elementi per i quali è stato definito un template nel foglio di stile, ed effettua le azioni specificate nel template. XML - CML Padova, 15 July, 2016 - slide 59 Esempio di template (1) <xsl:template match=paragrafo> … <xsl:template> La clausola match definisce su quali elementi si applica il template Per ogni elemento si possono specificare più template (si applica il più specifico oppure si assegna una priorità per l’applicazione) Un template può specificare lo stile per più elementi XML - CML Padova, 15 July, 2016 - slide 60 Match Si possono specificare gli elementi figli da processare utilizzando i seguenti simboli: | operatore or . Elemento corrente // discendenti / figlio .. Padre @ identifica un attributo first-of-any(), first-of-type(), last-of-any(), last-of-type() XML - CML Padova, 15 July, 2016 - slide 61 Esempio: documento <?xml version="1.0"?> <AUCTIONBLOCK> <ITEM> <TITLE>Vase and Stones</TITLE> <ARTIST>Linda Mann</ARTIST> <DIMENSIONS>20x30 inches</DIMENSIONS> <MATERIALS>Oil</MATERIALS> <YEAR>1996</YEAR> <DESCRIPTION>Still Life</DESCRIPTION> <BIDS> <BID> <PRICE>6000</PRICE> <TIME>3:02:22 PM</TIME> <BIDDER>Chris</BIDDER> </BID> <BID> <PRICE>5700</PRICE> <TIME>2:58:42 PM</TIME> <BIDDER>John</BIDDER> </BID> </BIDS> </ITEM> </AUCTIONBLOCK> XML - CML Padova, 15 July, 2016 - slide 62 Esempio: regola di trasformazione <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <TABLE STYLE="border:1px solid black"> <TR STYLE="font-size:12pt; font-family:Verdana; font-weight:bold; text-decoration:underline"> <TD>Price</TD> <TD STYLE="background-color:lightgrey">Time</TD> <TD>Bidder</TD> </TR> <xsl:for-each select="AUCTIONBLOCK/ITEM/BIDS/BID"> <TR STYLE="font-family:Verdana; font-size:12pt"> <TD>$<xsl:value-of select="PRICE"/></TD> <TD STYLE="background-color:lightgrey"> <xsl:value-of select="TIME"/></TD> <TD><xsl:value-of select="BIDDER"/></TD> </TR> </xsl:for-each> </TABLE> </xsl:template> </xsl:stylesheet> XML - CML Padova, 15 July, 2016 - slide 63 Esempio: output XML - CML Padova, 15 July, 2016 - slide 64 Processing di documenti XML XML document XML processor XML application DTD Quando vengono processati documenti XML si procede ad un parsing del documento per garantire la struttura grammaticale del documento sia conforme alle specifiche XML XML - CML Padova, 15 July, 2016 - slide 65 Standalone Rendering XML HTML XSL XML - CML Padova, 15 July, 2016 - slide 67 Client Side Rendering XML XML HTML XSL Server (qualsiasi) XML - CML XSL Browser con XSL engine MS IE 6.x. Padova, 15 July, 2016 - slide 68 Server Side Rendering XML HTML HTML XSL Server con XSL engine eg Apache/Jserv/Cocoon/IIS XML - CML Browser (qualsiasi) Padova, 15 July, 2016 - slide 69 XML (and related) Specifications XML Core XML 1.0 W3C rec industry std W3C draft ‘Open’ std Xfragment XML names RDF Canonical Xpath MathML APIs XSLT JDOM Xpointer SMIL 1 & 2 XML base VoiceXML JAXP Xlink XSL DOM 1 DOM 2 DOM 3 XML signature Infoset XHTML events XML query …. UDDI RSS SOAP Biztalk CSS 1 CSS 2 CSS 3 XML - CML Style WDDX ... IFX IMS XML-RPC XMI ebXML ... Jabber WSDL Protocols Web Services CellML XHTML 1.0 XHTML basic Xforms XML schema SAX 1 SAX 2 TEI HEML ... Application areas …... SVG Modularized XHTML Docbook XUL 100's more .... ... Data/presentaion Padova, 15 July, 2016 - slide 70 Interrogazione di dati XML con XQuery Xpath consente solo estrazioni … XQuery serve per elaborazioni + complesse Proposta W3C: 15 Febbraio 2001 Interrogazioni: Path expressions Sintassi abbreviata di XPath Espressioni FLWR Clausole FOR, LET, WHERE, RETURN XML - CML Padova, 15 July, 2016 - slide 71 Esempio XML - CML <?xml version="1.0"?> <Elenco> <Libro disponibilità=‘S’> <Titolo>Il Signore degli Anelli</Titolo> <Autore>J.R.R. Tolkien</Autore> <Data>2002</Data> <ISBN>88-452-9005-0</ISBN> <Editore>Bompiani</Editore> </Libro> <Libro disponibilità=‘N’> <Titolo>Il nome della rosa</Titolo> <Autore>Umberto Eco</Autore> <Data>1987</Data> <ISBN>55-344-2345-1</ISBN> <Editore>Bompiani</Editore> </Libro> <Libro disponibilità=‘S’> <Titolo>Il sospetto</Titolo> <Autore>F. Dürrenmatt</Autore> <Data>1990</Data> <ISBN>88-07-81133-2</ISBN> <Editore>Feltrinelli</Editore> </Libro> </Elenco> libri.xml Padova, 15 July, 2016 - slide 72 Espressioni FLWR FOR per l’iterazione LET per collegare variabili WHERE per esprimere predicati RETURN per generare il risultato XML - CML Padova, 15 July, 2016 - slide 73 Espressioni FOR Esempio: FOR $l IN document(“libri.xml”)//Libro RETURN $l La clausola FOR valuta l’espressione sulla destra (//Libro) che è un insieme, e itera all’interno di questo set assegnando il nodo di turno alla variabile $l L’interrogazione restituisce l’insieme di tutti i libri che si trovano nel documento libri.xml XML - CML Padova, 15 July, 2016 - slide 74 Espressioni LET Esempio: LET $l := document(“libri.xml”)//Libro RETURN $l La clausola LET valuta l’espressione (//Libro) e assegna l’intero insieme di libri trovati alla variabile $l Il risultato di una clausola LET produce un singolo binding per la variabile: l’intero set viene assegnato alla variabile XML - CML Padova, 15 July, 2016 - slide 75 Clausola WHERE La clausola WHERE esprime una condizione: solamente le tuple che soddisfano tale condizione vengono utilizzate per invocare la clausola RETURN Le condizioni nella clausola WHERE possono contenere diversi predicati connessi da AND, OR, NOT Esempio: FOR $l IN document(“libri.xml”)//Libro WHERE $l/Editore=“Bompiani” AND $l/@disponibilità=“S” RETURN $l Restituisce tutti i libri pubblicati da Bompiani che sono disponibili XML - CML Padova, 15 July, 2016 - slide 76 Clausola RETURN Genera l’output di un’espressione FLWR che può essere: Un nodo <Autore>F. Dürrenmatt</Autore> Un foresta ordinata di nodi <Autore>J.R.R. Tolkien</Autore> <Autore>Umberto Eco</Autore> <Autore>F. Dürrenmatt</Autore> Un valore F. Dürrenmatt Può contenere dei costruttori di elementi, riferimenti a variabili definite nelle parti FOR e LET ed espressioni annidate XML - CML Padova, 15 July, 2016 - slide 77 Clausola RETURN Un costruttore di elemento consiste di un tag iniziale e di un tag finale racchiudenti una lista opzionale di espressioni che determinano il contenuto dell’elemento Esempio: FOR $l IN document(“libri.xml”)//Libro WHERE $l/Editore=“Bompiani” RETURN <Libro-Bompiani> $l/Titolo </Libro-Bompiani> nuovo elemento <Libro-Bompiani><Titolo>Il Signore degli Anelli</Titolo></Libro-Bompiani> <Libro-Bompiani><Titolo>Il nome della rosa</Titolo></Libro-Bompiani> XML - CML Padova, 15 July, 2016 - slide 78 Ruolo di XQUERY dato un documento XML well-formed, xquery permette, dall’interno di un programma qualsiasi di estrarre un documento xml da quello di partenza e ritornarlo all’utente. In sostanza xquery non è molto diverso da XSLT, solo orientato ai DB. Vedi ad esempio xquery in java (http://www.fatdog.com/extreme_2002.html ). E’ possibile anche inserire la sintassi Xquery in un documento XML (vedi seguente esempio): XML - CML Padova, 15 July, 2016 - slide 79 Esempi “I titoli di tutte le ricette for $t in document("recipes.xml")//title return $t <title>Beef Parmesan with Garlic Angel Hair Pasta</title>, <title>Ricotta Pie</title>, <title>Linguine Pescadoro</title>, <title>Zuppa Inglese</title>, <title>Cailles en Sarcophages</title> “I piatti che contengono farina - flour": <floury> { for $r in document("recipes.xml")//recipe[.//ingredient[@name="fl our"]] return <dish>{$r/title/text()}</dish> } </floury> <floury> <dish>Ricotta Pie</dish> <dish>Zuppa Inglese</dish> <dish>Cailles en Sarcophages</dish> </floury> XML - CML Padova, 15 July, 2016 - slide 80 Esempi “Per ciascun ingrediente, le ricette in cui è usato": for $i in distinctvalues(document("recipes.xml")//ingredient/@name) return <ingredient name="{$i}"> { for $r in document("recipes.xml")//recipe where $r//ingredient[@name=$i] return $r/title } </ingredient> <ingredient name="beef cube steak"> <title>Beef Parmesan with Garlic Angel Hair Pasta</title> </ingredient>, <ingredient name="onion, sliced into thin rings"> <title>Beef Parmesan with Garlic Angel Hair Pasta</title> </ingredient>, ... <ingredient name="butter"> <title>Beef Parmesan with Garlic Angel Hair Pasta</title> <title>Cailles en Sarcophages</title> </ingredient>, ... XML - CML Padova, 15 July, 2016 - slide 81 SVG: Scalable vector graphics A language for describing two-dimensional graphics in XML See <http://www.w3.org/Graphics/SVG/ Overview.htm8> XML - CML Padova, 15 July, 2016 - slide 84 SVG Example XML - CML http://www.karto.ethz.ch/neumann/cartography/vienna/ Padova, 15 July, 2016 - slide 85 SVG and XSLT This example: XML - CML http://people.w3.org/maxf/ChessGML/ Originally written in Java Author realised that XSLT would be easier Uses SVG for chess board and pieces Uses XSLT to move pieces Padova, 15 July, 2016 - slide 86 Chemical Markup Language File transfer in a grid environment XML - CML Padova, 15 July, 2016 - slide 88 PROGRAM 1 ….. IF (a.lt.1.0) THEN b=acos(c/d) ENDIF CALL JACOBI(a,b,err) WRITE(6,*) A OUTPUT Avoid editing application programs in order to INPUT PROGRAM 2 interface them .. open(fp,”out.dat”); scanf(“%d\n”,a); for (i=0;i<a;i++) { …. two strategies •write converters to transform from one output format to any other input format XML - CML •use a common file format Padova, 15 July, 2016 - slide 89 Computational chemistry and physics is burdened by a confusion of data formats.. Coordinates, structures and trajectories Some examples XML - CML .pdb, .ent, .ccmf proteins derived from X-ray .msf Quanta .car, .msi, .mdf Accelrys coordinate files .his, .arc, .trj Accelrys trajectory files .mol, .sd, .sdf, .mdl MDL Mol files .mol2 Sybyl .xyz XYZ coordinates c3d1,.c3d2 Chem3D .csd, .fdat, .dat Cambridge Crystallographic Padova, 15 July, 2016 - slide 90 Computational chemistry and physics is burdened by a confusion of data formats.. Data and other information .gzmat, .cube, .g98, .chk … .gamout .mopint .tpvec, tphmx, .hessian .wavfun, .symm, .bands, .force Gaussian output files GAMESS MOPAC DMOL3 (Accelrys DFT) data files CASTEP (Accelrys planewave DFT) Graphics XML - CML .gif, .jpeg, .bmp, .png, .tiff, .eps, .ps, .wrl .pdf .wlv, .pov, .msv, .xsd common graphics formats formats used by some viewer programs Padova, 15 July, 2016 - slide 91 CML-Chemistry Mark-up Language XML specification designed by Peter Murray-Rust and Henry Rezpa http://www.xml-cml.org/ Version 1.0 formally published in 1997 Concentrates on molecules – structures, sequences and reactions. No direct support for physiochemical concepts, but allows labeled numeric data types. Murray-Rust, Henry S. Rzepa and Michael Wright, New J. Chem., 2001, 618-634. XML - CML Padova, 15 July, 2016 - slide 92 <molecule convention="MDLMol" > <date day="12" month="02" year="1996" /> - <atomArray> - <atom id="a1"> <string builtin="elementType">C</string> <float builtin="x2">3.3437</float> <float builtin="y2">-2.9752</float> </atom> - <atom id="a2"> <string builtin="elementType">C</string> <float builtin="x2">3.8896</float> <float builtin="y2">-4.3672</float> </atom> - <atom id="a3"> <string builtin="elementType">C</string> <float builtin="x2">2.0471</float> <float builtin="y2">-1.9926</float> </atom> ………….. XML - CML Padova, 15 July, 2016 - slide 93 BMLs Bioinformatic Sequence Markup Language (BSML) Biopolymer Markup Language (BIOML) CellML Gene Expression Markup Language (GEML) GeneX Gene Expression Markup Language Molecular Dynamics Markup Language (MoDL) Systems Biology Markup Language (SBML) XML - CML Padova, 15 July, 2016 - slide 94 Math Markup Language MathML <apply> <plus/> <apply> <power/> <ci>x</ci> <cn>2</cn> </apply> <apply> <times/> <cn>4</cn> <ci>x</ci> </apply> <cn>4</cn> </apply> XML - CML x2 + 4x + 4 Padova, 15 July, 2016 - slide 96 Example 2: Using MathType 5 and Amaya <math xmlns="http://www.w3.org/1998/Math/MathML" style="background-color:#"> <mrow> <munderover> <mo>∑</mo> <mrow> <mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>n</mi> </munderover> <msup> <mrow> <mo stretchy='false'>(</mo><msub> <mi>X</mi> <mi>i</mi> </msub> <mo>−</mo><mover accent='true'> <mi>X</mi> <mo>¯</mo> </mover> <mo stretchy='false'>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </mrow> </math> n (X i 1 XML - CML X ) i 2 Padova, 15 July, 2016 - slide 97 XML - CML Padova, 15 July, 2016 - slide 98 MathML Software Tex4ht Latex package to convert to XML MathType (Design Science Inc. www.dessi.com) Equation Editor (for MS Office) by Microsoft Amaya Browser/Editor for MathML by W3C MathPlayer: MathML display engine for MS IE WebEQ Editor (Java tool) E-Lite Browser by ICESoft IBM techexplorer as viewer MacKichan Software Maple: a symbolic and numeric computation system MathCad by Mathsoft Engeneering & Education Inc. Mathematica, More see http://www.w3.org/math/implementations.html XML - CML Padova, 15 July, 2016 - slide 99 MathML MathML: An XML application for maths Various plugins, dedicated readers, etc. Mozilla renders natively See <http://www.mozilla.org/projects/mathml/> XML - CML Padova, 15 July, 2016 - slide 100 XML e Data base XML e data base relazionali XML e basi di dati native XML e Database: il problema Problema: è possibile/necessario memorizzare documenti XML in un DBMS? Quale tecnologia è necessaria a questo scopo? Risposta: XML - CML è certamente possibile memorizzare e gestire documenti XML in un DBMS la tecnologia necessaria a questo scopo dipende dal perché vogliamo gestire documenti XML in un DBMS Padova, 15 July, 2016 - slide 102 Tipologie di documenti XML Due possibili usi per documenti XML: Data Centric: i documenti possono rappresentare lo strumento con il quale dati tradizionali (es. relazionali) vengono trasferiti su Web XML come veicolo per trasporto di dati Esempio: ordini di vendita, scheduling di voli, menù Document Centric: l’informazione è rappresentata dal documento in sé XML come modello per la rappresentazione dei dati Esempio: libri, documenti in genere XML - CML Padova, 15 July, 2016 - slide 103 Documenti Data Centric Struttura regolare livello di dettaglio piuttosto fine contenuto omogeneo l’ordine con cui gli elementi allo stesso livello appaiono è ininfluente Utilizzati per “machine consumption” Esempi: ordini di vendita, scheduling di voli, menù,… XML - CML Padova, 15 July, 2016 - slide 104 Esempio: ordini di vendita <Orders> <SalesOrder SONumber=“12345”> <Customer CustNumber=“543”> <CustName>ABC Industries</CustName> ... </Customer> <OrderDate>981215</OrderDate> <Line LineNumber=“1”> <Part PartNumber=“123”> <Description> Turkey wrench: Stainless steel, one piece... </Description> <Price>9.95</Price> </Part> <Quantity>10</Quantity> </Line> <Line LineNumber=“2”> ... </Line> </SaleOrder> </Orders> XML - CML Padova, 15 July, 2016 - slide 105 Documenti Document Centric Struttura irregolare Livello di dettaglio meno fine contenuto eterogeneo l’ordine degli elementi allo stesso livello è significativo in genere progettati per “human consumption” Esempi: libri, email, … XML - CML Padova, 15 July, 2016 - slide 106 Product Description <Product> <Name>Turkey Wrench</Name> <Developer>Full Fabrication Labs, Inc.</Developer> <Summary>Like a monkey wrench, but not as big.</Summary> <Description> <Para>The Turkey wrench, which comes in both right- and lefthanded versions ....</Para> <Para>You can:</Para> <List> <Item><Link URL=“Order.htm”>Order your turkey wrench</Link></Item> <Item><Link URL=“Wrench.html”>Read about wrenches</Link></Item> <Item><Link URL=“catalog.zip”>Download the catalog</Link></Item> </List> .... </Description> </Product> XML - CML Padova, 15 July, 2016 - slide 107 XML e DBMS Ciascuna tipologia di documenti richiede una particolare tecnologia per la sua gestione data document XML - CML Relational/object-oriented DB DB basato su XML (XML è il modello dei dati) Padova, 15 July, 2016 - slide 108 XML e DBMS Due categorie di DBMS: XML-Native DBMS: comprendono un insieme di nuovi sistemi la cui architettura è stata progettata per supportare totalmente le funzionalità necessarie alla gestione di documenti XML tecnologia non ancora matura utili per Document Centric Esempio:eXcelon XML-Enabled DBMS: comprendono tutti i DBMS che mantengono integra la propria architettura estendendola con funzionalità necessarie alla gestione di documenti XML sono tipicamente Object-Relational (DB2, Oracle8i,…) utili per Data Centric e parzialmente per Document Centric XML - CML Padova, 15 July, 2016 - slide 109 XML e DBMS Nel seguito. XML - CML Problematiche relative alla gestione di documenti Data Centric e Document Centric in XML-Enabled DBMS Padova, 15 July, 2016 - slide 110 XML-Enabled DBMS e documenti Data Centric Problematiche per Data Centric Tre problematiche di base: XML - CML come rappresentare i dati contenuti nei documenti XML nel DBMS XML doc DB come generare documenti XML partendo dai dati contenuti nel DBMS XML doc DB come interrogare i dati estratti da documenti XML DB Padova, 15 July, 2016 - slide 112 Rappresentazione dati È necessario definire un mapping tra la struttura dei documenti XML e lo schema del DB è Per memorizzare i dati contenuti in un documenti XML in un DB, deve esistere una o più tabelle con lo schema richiesto dal mapping rappresentazione strutturata Vantaggi: approccio piuttosto semplice i dati sono facilmente interrogabili Svantaggi: XML - CML Scarsa flessibilità: la tabella deve essere conforme al documento il documento di partenza non è più recuperabile Padova, 15 July, 2016 - slide 113 1. DBMS relazionale Un documento XMl viene rappresentato come una singola tabella o un insieme di tabelle la struttura del documento XML è simile alla seguente: <database> <table> <row> <column1>...</column1> <column1>...</column1> ... </row> ... </table> ... </database> approccio tipico per DBMS relazionali, object-relational XML - CML Padova, 15 July, 2016 - slide 114 Esempio Documento XML <clienti> <row> <numero> 7369 </numero> <nome> PAUL </nome> <cognome> SMITH </cognome> </row> <row> <numero> 7000 </numero> <nome> STEVE </nome> <cognome> ADAM </cognome> </row> </clienti> XML - CML Tabella Clienti Numero 2000 7369 7000 Nome MIKE PAUL STEVE Cognome SCOTT SMITH ADAM Padova, 15 July, 2016 - slide 115 Esempio Documento XML Tabella Lista_Clienti <clienti> <row> Numero <numero> 7369 </numero> 2000 <lista_clienti> 7369 <cliente> <nome> PAUL </nome> <cognome> SMITH </cognome> </cliente> Tabella Clienti <cliente> Numero Num_cliente Nome Cognome <nome> STEVE </nome> 2000 1 MIKE SCOTT <cognome> ADAM </cognome> 7369 2 PAUL SMITH </cliente> 7369 3 STEVE ADAM </lista_clienti> </row> </clienti> XML - CML Padova, 15 July, 2016 - slide 116 2. DBMS object relational Il documento può sempre essere mappato in una singola tabella, utilizzando campi strutturati XML - CML Padova, 15 July, 2016 - slide 117 Esempio Documento XML Tabella Clienti <clienti> Numero Cliente <row> <numero> 7369 </numero> nome <cliente> MIKE <nome> PAUL </nome> 2000 <cognome> SMITH </cognome> </cliente> nome </row> PAUL <row> <numero> 7000 </numero> 7369 <cliente> <nome> STEVE </nome> nome <cognome> ADAM </cognome> STEVE </cliente> </row> 7000 </clienti> XML - CML cognome SCOTT cognome SMITH cognome ADAM Padova, 15 July, 2016 - slide 118 Esempio Documento XML Tabella Clienti <clienti> Numero Cliente <row> <numero> 7369 </numero> nome cognome <lista_clienti> MIKE SCOTT <cliente> 2000 <nome> PAUL </nome> <cognome> SMITH </cognome> CLIENTE </cliente> nome cognome <cliente> PAUL SMITH <nome> STEVE </nome> <cognome> ADAM </cognome> CLIENTE </cliente> nome cognome </lista_clienti> STEVE ADAM </row> </clienti> 7369 XML - CML Padova, 15 July, 2016 - slide 119 Interrogazione dati Poiché i dati vengono rappresentati secondo il modello supportato dal DBMS (es. relazionale), è possibile utilizzare i linguaggi supportati dal DBMS per l’interrogazione dei dati memorizzati approccio template-based: XML - CML la query viene rappresentata nel documento XML necessità di middleware Padova, 15 July, 2016 - slide 120 Flight Information <?xml version=“1.0”> <FlightInfo> <Intro>The following flights have available seats:</Intro> <SelectStmt> SELECT Airline, FltNumber, Depart, Arrive FROM Flights </SelectStmt> <Conclude>We hope one of these meets your needs</Conclude> </FlightInfo> <?xml version=“1.0”> <FlightInfo> <Intro>The following flights have available seats:</Intro> <Flight> <Row> <Airline>ACME</Airline><FltNumber>123</FltNumber> <Depart>Dec 12, 1998 13:43</Depart><Arrive>...<Arrive> <Row> </Flight> <Conclude>We hope one of these meets your needs</Conclude> </FlightInfo> XML - CML 121 Padova, 15 July, 2016 - slide 121 Interrogazione dati Doc Result Doc Query Middleware Extract Select Command Construct Document answer Submit SELECT Command Result DB XML - CML Padova, 15 July, 2016 - slide 122 Generazione documenti XML Problema: fornire una rappresentazione XML ai dati recuperati tramite query dal DBMS si utilizza il mapping inverso rispetto a quello utilizzato per la memorizzazione operazione importante per attribuire un formato standard ai dati ritrovati, prima di inviarli sulla rete XML - CML Padova, 15 July, 2016 - slide 123 Esempio SELECT nome, cognome FROM Clienti WHERE Numero = “7369 Tabella Clienti Numero 2000 7369 7000 XML - CML Nome MIKE PAUL STEVE Documento XML Cognome SCOTT SMITH ADAM <clienti> <row> <nome> PAUL </nome> <cognome> SMITH </cognome> </row> </clienti> 124 Padova, 15 July, 2016 - slide 124 XML-Enabled DBMS e documenti Document Centric Problematiche per Document Centric Due problematiche di base: XML - CML come rappresentare i documenti XML nel DBMS XML doc DB come interrogare i documenti XML XML doc DB Padova, 15 July, 2016 - slide 126 Rappresentazione Permette di mantenere integro il documento XML Due approcci: rappresentazione non strutturata documento come unico oggetto rappresentazione ibrida documento parzialmente rappresentato secondo la rappresentazione strutturata e parzialmente secondo la rappresentazione non strutturata XML - CML Padova, 15 July, 2016 - slide 127 Rappresentazione non strutturata Il documento viene tipicamente mappato in un singolo campo di una tabella di tipo: CLOB (Character Large Object): il documento è fisicamente contenuto nel campo della tabella alcuni DBMS (IBM DB2) supportato tipi ad hoc: XMLVARCHAR riferimento: il campo contiene il riferimento al documento, memorizzato altrove, sul file system Vantaggi: flessibile Svantaggi: XML - CML i dati sono non strutturati interrogazione più complessa la tabella può contenere documenti eterogenei (diversi DTD) Padova, 15 July, 2016 - slide 128 Rappresentazione non strutturata DBMS Documento XML CLOB XML XML riferimento XML - CML 129 Padova, 15 July, 2016 - slide 129 Esempio Tabella Clienti Documento XML <clienti> <row> <numero> 7369 </numero> <nome> PAUL </nome> <cognome> SMITH </cognome> </row> <row> <numero> 7000 </numero> <nome> STEVE </nome> <cognome> ADAM </cognome> </row> </clienti> XML - CML Id 10 Documento_XML <clienti> <row> <numero> 7369 </numero> <nome> PAUL </nome> <cognome> SMITH </cognome> </row> <row> <numero> 7000 </numero> <nome> STEVE </nome> <cognome> ADAM </cognome> </row> </clienti> Padova, 15 July, 2016 - slide 130 Rappresentazione ibrida Rappresentazione che combina rappresentazione strutturata e non strutturata DBMS Documento XML XML - CML CLOB XML Rappr. strutturata XML Padova, 15 July, 2016 - slide 131 Esempio Documento XML <libro> <titolo> Oracle Guide </titolo> <autore> M. Abbey </autore> <contenuto> <capitolo n=‘1’> <titolo> Introduzione </titolo> … </capitolo> … </contenuto> <dettagli> <capitolo n=‘1’> <sezione n=‘1’> Guida introduttiva al mondo dei DBMS Oracle … </sezione> </capitolo> </dettagli> … </libro> XML - CML Tabella LIBRO SCHEMA Titolo autore dettagli contenuto capitolo titolo capitolo CLOB Guida introduttiva al mondo dei DBMS Oracle ... Padova, 15 July, 2016 - slide 132 Interrogazione documenti Dal punto di vista del DBMS, un documento memorizzato in modo non strutturato non è che un documento di testo in genere i DBMS supportano strumenti per ritrovare i documenti in base al contenuto nel caso di documenti XML, mettono a disposizione operatori avanzati da utilizzare in statement SQL per recuperare documenti XML in base al contenuto XML - CML Padova, 15 July, 2016 - slide 133 Interrogazione in Oracle Nuova funzione: CONTAINS(XML_COLUMN, QUERY_TAG) XML_COLUMN: colonna (attributo) in cui sono contenuti i documenti XML QUERY_TAG: predicato che permette di specificare condizioni sui documenti XML XML - CML QUERY_TAG::= <tag_value> WITHIN <tag_name> | <attribute_value> WITHIN <tag_name@attribute_name>| … CONTAINS restituisce un valore maggiore di 0 se la condizione è verificata Padova, 15 July, 2016 - slide 134 XML e Oracle 8i XML-enabled supporta rappresentazione strutturata, non strutturata in campi CLOB e BFILE, e ibrida interrogazione rappresentazione non strutturata tramite Intermedia Context generazione documenti XML a partire dal contenuto DB XML - CML Padova, 15 July, 2016 - slide 135 XML e IBM DB2 XML enabled supporta rappresentazione strutturata, non strutturata in campi ad hoc, e ibrida Nuovi tipi di dato: XMLVARCHAR: documenti XML memorizzati come VARCHAR XMLCLOB: documenti XML memorizzati come CLOB XMLFILE: riferimento ad un documento XML, memorizzato su file system interrogazione rappresentazione non strutturata tramite: operatori specifici, che permettono di navigare la struttura del documento text extender, che supporta funzionalità aggiuntive di analisi del contenuto (ne parleremo nel contesto Multimedia) generazione documenti XML a partire dal contenuto DB XML - CML Padova, 15 July, 2016 - slide 136 XML e SQL 2008 XML enabled supporta rappresentazione strutturata, non strutturata in campi ad hoc, e ibrida Nuovi tipi di dato: XML: documenti XML memorizzati sia come VARCHAR che CLOB interrogazione rappresentazione non strutturata tramite: operatori specifici, che permettono di navigare la struttura del documento (OPENXML) generazione documenti XML a partire dal contenuto DB XML - CML Clausola FOR XML AUTO Padova, 15 July, 2016 - slide 137 SQL/XML Xmlelment Xmlforest Xmlgen Xmlconcat Xmlaggr Select I.matr, Xmlelement (name “imp”, Xmlattributes (I.matr, I.nome as “Cognome”)) as Risultato from Impiegato I; Risultato: due colonne costruite dall’operatore xmlelement XML - CML Padova, 15 July, 2016 - slide 138 XML Spy XML - CML Padova, 15 July, 2016 - slide 139 Fonti: XLM editor XML - CML Padova, 15 July, 2016 - slide 140 Fonti: XQuery Editor XML - CML Padova, 15 July, 2016 - slide 141