Upload
marli
View
49
Download
0
Tags:
Embed Size (px)
DESCRIPTION
XML: eXtensible Markup Language. La lingua franca del Web. Ftp. News. Email. HTML. Web Server. HTTP. URL. Db & other software. URLs (location e.g -- http://www.foo.org/boo.html ). Internet communication protocols. HTML (data/display). Hello There - PowerPoint PPT Presentation
Citation preview
XML: eXtensible Markup LanguageLa lingua franca del Web
XML - CMLPadova, 24 April 2023 - slide 6
All’inizio ..... …. Era la nascita del Web (Tim Berners-Lee, 1992)
Internetcommunication
protocols
EmailNewsFtp
HTML(data/display)
Hello ThereHere’s a zippy HTML page, with lots of Colors and Links ...!!!Fun, Eh?
• HTMLWeb
Server
HTTP(transfer)
Db & othersoftware
• HTTP
URLs(location
e.g -- http://www.foo.org/boo.html )
• URL
XML - CMLPadova, 24 April 2023 - slide 7
I tre concetti di baseHTTP -- 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 Un markup language per codificare informazioni per
potere essere lette / visualizzate HTTP e URLs hanno superato il test del tempo
Ma dal 1996, HTML ha iniziato a mostrare l’età ....
XML - CMLPadova, 24 April 2023 - slide 8
Semplice Esempio di HTMLHTML (not XML) Markup<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 ….
Browser Rendering
XML - CMLPadova, 24 April 2023 - slide 9
Problemi con HTMLHTML 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 - CMLPadova, 24 April 2023 - slide 10
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
Risulta difficoltosa la manutenzione Informazioni possono venire perse in quanto si descrive
solo la forma, non il significato (semantica)
XML - CMLPadova, 24 April 2023 - slide 11
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
presentazioneDi differenti Tipi di dati
Modellazionedi tipi di dati
differenti
interscambio dati tra
macchine
Evolution
Web
XML - CMLPadova, 24 April 2023 - slide 12
Markup LanguagesLa 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 - CMLPadova, 24 April 2023 - slide 13
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
HTML RTF Hytime
XML - CMLPadova, 24 April 2023 - slide 14
Generalised Markup LanguagesLinguaggio proprietari di markup creano problemi.
Generalised markup languages sono linguaggi per la definizione di markup languages.
Metalanguages
SGML
XML - CMLPadova, 24 April 2023 - slide 15
SGML - StoriaStandard Generalised Markup Language1969 - GML da IBM
text editing formatting information retrieval
1980 SGML prima pubblicazione1980’s SGML adottato da US IRS & DOD1986 - ISO standardISO 8879: Information processing--Text and office systems--Standard Generalized Markup Language (SGML), ([Geneva]: ISO, 1986).
XML - CMLPadova, 24 April 2023 - slide 16
SGMLSGML 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 - CMLPadova, 24 April 2023 - slide 17
Benefici di SGMLDocumenti 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 - CMLPadova, 24 April 2023 - slide 18
XMLExtensible Markup LanguageIniziativa 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 FormatUniversal Data Format
XML - CMLPadova, 24 April 2023 - slide 19
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 - CMLPadova, 24 April 2023 - slide 20
contiene regole esplicite per determinare dove le strutture dei documenti iniziano e finiosconoTende a raggiungere un compromesso tra flessibilità, semplicità e leggibilità sia da parte di umani che di macchineprovvede uno standard per I dati con cui codificare I contenuti, semantica e schema per una grande varietà di casi
XML
XML Basic
XML - CMLPadova, 24 April 2023 - slide 22
Struttura di documenti XMLStruttura Logica
ElementiStruttura Fisica
Entitià
DocumentUnit
Sub-unit
XML - CMLPadova, 24 April 2023 - slide 23
XML: gerarchia
DocumentUnit
Sub-unit
Document
Unit
Sub-unit
N.B. Tutti gli elementi devono essere annidati
XML può essere descritto in una Gerarchia ad albero
Parent
Child
Sibling
XML - CMLPadova, 24 April 2023 - slide 24
Database ed XMLIl 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 - CMLPadova, 24 April 2023 - slide 25
XML basics
Un documento XML è composto di XML elements.
Un elemento XML può contenere elementi inglobati formando I suoi subelements.
content
<start-tag> </end-
tag>
element
XML - CMLPadova, 24 April 2023 - slide 26
Ciascun documento XML ha un root element.Un elemento XML può contenere informazioni addizionali descritte dai suoi attributes.
<start-tag name = ‘value’>
Attribute
XML - CMLPadova, 24 April 2023 - slide 27
<?xml version=‘1.0’?> <!DOCTYPE Journal SYSTEM ‘journal.dtd’><Journal><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’> <Abstract>This article describes…</Abstract></Article><Article Title=‘The Internet’ Authors=‘A.Black’ Pages=‘5-20’> <Abstract>This Internet…</Abstract></Article>…..</Journal>
root
elements
attributes
(ex) XML document - Journal.xml
XML - CMLPadova, 24 April 2023 - 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> <MESSAGE> <P>This is to confirm that I received your work</P> <P>Thanks, Tim.</P> </MESSAGE></MEMO>
XML - CMLPadova, 24 April 2023 - slide 29
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> <P>Thanks, Tim.</P> </BODY></MEMO>
<!ELEMENT MEMO (FROM, TO, SUBJECT, DATE, MESSAGE)><!ELEMENT FROM (#PCDATA)><!ELEMENT TO (#PCDATA)><!ELEMENT SUBJECT (#PCDATA)><!ELEMENT DATE (#PCDATA)><!ELEMENT MESSAGE (P+)><!ELEMENT P (#PCDATA)>
XML - CMLPadova, 24 April 2023 - slide 30
Contents vs StyleXML tags contengono significato non formattazione.Questo permette di estrarre informazioni ulterioriConsidera 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 dogis Canis familiaris, and of the domestic cat is Felis catus.
XML - CMLPadova, 24 April 2023 - slide 31
Contents vs StyleXML tags contain meaning not appearance.This allows extra information to be extractedConsider the example of the scientific names of animals.
scientific names are in latin by convention they are always printed in italics
The scientific name of the domestic dogis Canis familiaris, and of the domestic cat is Felis catus.
In HTML
<P>The <I>scientific</I> name of the domestic dog is <I>Canis familiaris</I>, and of the domestic cat is <I>Felis catus.</I></P>
NB non c’è distinzione tra nomi scientifici ed enfasi.
XML - CMLPadova, 24 April 2023 - slide 32
Contents vs StyleXML tags contain meaning not appearance.This allows extra information to be extractedConsider the example of the scientific names of animals.
scientific names are in latin by convention they are always printed in italics
The scientific name of the domestic dogis Canis familiaris, and of the domestic cat is Felis catus.
In XML
<P>The <emph>scientific</emph> name of the domestic dog is <sci>Canis familiaris</sci>, and of the domestic cat 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.
XML - CMLPadova, 24 April 2023 - slide 33
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 - CMLPadova, 24 April 2023 - slide 34
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 - CMLPadova, 24 April 2023 - slide 35
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 - CMLPadova, 24 April 2023 - slide 36
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 - CMLPadova, 24 April 2023 - slide 37
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 - CMLPadova, 24 April 2023 - slide 38
Validazione di XML (Cont.) - XML Schema
Un XML schema descrive la struttura di un documento XML .
Definisce elementi che possono essere usati nel documento
Definisce attributi contenuti nel documento Definisce quali elementi sono child elements Definisce l’ordine dei child elements Definisce il numero di child objects Definisce se un elemento è vuoto o può includere del testo Definisce I data types per elementi ed attributi Definisce valori di default e valori fissati per elementi ed
attributi
XML - CMLPadova, 24 April 2023 - slide 39
XML Schema è RaccommandatoXML Schemas sono estendibili per future estensioniXML Schemas sono più ricchi ed utili dei DTD XML Schemas sono scritti in XML XML Schemas supporta data types XML Schemas supporta namespaces
XML - CMLPadova, 24 April 2023 - slide 40
StylesheetsStile in XML è definito da stylesheetsStyleseets definiscono l’apparenza fisica del documento, ed il suo comportamentoStylesheets non sono un concetto nuovo
Word processors/DTP SGML HTML 4.0
Stylesheet languages CSS (Cascading StyleSheets) – sviluppato per HTML XSL – sviluppato specificataemnte per XML
XML - CMLPadova, 24 April 2023 - slide 41
Perchè due Style Sheet languages? CSS XSL
Può essere usato con HTML? yes noPuò essere usato con XML? yes yesTransformation language? noyesSintassi CSS XML
XML - CMLPadova, 24 April 2023 - slide 42
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 - CMLPadova, 24 April 2023 - slide 43
Ruolo di XSL e di CSS.
XML - CMLPadova, 24 April 2023 - slide 44
Visualizzazione di XML con CSSA 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 - CMLPadova, 24 April 2023 - slide 45
Visualizzazione di XML con CSS
Uno CSS style sheet cd_catalog.cssCATALOG { 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 - CMLPadova, 24 April 2023 - slide 46
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 - CMLPadova, 24 April 2023 - slide 47
Visualizzazione di cd_catalog.xml con css
XML - CMLPadova, 24 April 2023 - slide 48
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 plenty of real 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 - CMLPadova, 24 April 2023 - slide 49
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 - CMLPadova, 24 April 2023 - slide 50
Visualizzazione di XML con XSL
XML - CMLPadova, 24 April 2023 - slide 51
XSL – Più che uno Style Sheet XSL ……. Oltre al foglio stileXPath (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 - CMLPadova, 24 April 2023 - slide 52
XLink e XPointer
Aggiungono nuove funzionalità a XML per creare ipertesti e ipermediaXLink consente di definire link verso l’esterno e multidirezionaliXPointer consente di definire locazioni in documenti XMLVengono usati in combinazione, anche se sono uno indipendente dall’altro
XML - CMLPadova, 24 April 2023 - slide 53
Path expressions (Xpath)
Consente la scrittura di path in un documento con lo scopo di selezionare parti di docuemnti XML. 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[n] posizione
XML - CMLPadova, 24 April 2023 - slide 54
Esempi di path expressionsUna 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 desideratoEsempio: document(“libri.xml”)/Elenco/LibroRestituisce l’insieme di tutti i libri contenuti nell’elenco che si trovano
nel documento libri.xml
XML - CMLPadova, 24 April 2023 - slide 55
Esempi di path expressionsdocument(“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>
<?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 - CMLPadova, 24 April 2023 - slide 56
XSL cos’è allora ???XSL è l’unione di tre linguaggi
Xpath specifica della porzione di documento a cui la regola XSL si riferisceXLS Transformation parte che consente di scrivere le regole di trasformazione documentaleXSL Formating Object: un linguaggio per la specifica della resa del documento
XML - CMLPadova, 24 April 2023 - slide 57
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 - CMLPadova, 24 April 2023 - slide 58
XSLT
Utilizza path expression per definire le parti del documento sul quale effettuare le trasformazioniPer gli elementi sui quali devono essere applicate le trasformazioni vengono definiti dei template
XML - CMLPadova, 24 April 2023 - slide 59
Template
Per assegnare uno stile ad un particolare elemento XML oppure per applicare delle trasformazioni si usa un template nel foglio di stileIl 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 - CMLPadova, 24 April 2023 - slide 60
Esempio di template (1)
<xsl:template match=paragrafo> … <xsl:template>
La clausola match definisce su quali elementi si applica il templatePer 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 - CMLPadova, 24 April 2023 - slide 61
MatchSi possono specificare gli elementi figli da processare utilizzando i seguenti simboli:
| operatore or. Elemento corrente// discendenti/ figlio.. Padre@ identifica un attributofirst-of-any(), first-of-type(), last-of-any(), last-of-type()
XML - CMLPadova, 24 April 2023 - slide 62
Esempio: documento<?xml version="1.0"?><?xml version="1.0"?> <AUCTIONBLOCK><AUCTIONBLOCK> <ITEM><ITEM> <TITLE>Vase and Stones</TITLE><TITLE>Vase and Stones</TITLE> <ARTIST>Linda Mann</ARTIST><ARTIST>Linda Mann</ARTIST> <DIMENSIONS>20x30 inches</DIMENSIONS><DIMENSIONS>20x30 inches</DIMENSIONS> <MATERIALS>Oil</MATERIALS><MATERIALS>Oil</MATERIALS> <YEAR>1996</YEAR><YEAR>1996</YEAR> <DESCRIPTION>Still Life</DESCRIPTION><DESCRIPTION>Still Life</DESCRIPTION> <BIDS><BIDS> <BID><BID> <PRICE>6000</PRICE><PRICE>6000</PRICE> <TIME>3:02:22 PM</TIME><TIME>3:02:22 PM</TIME> <BIDDER>Chris</BIDDER><BIDDER>Chris</BIDDER> </BID></BID> <BID><BID> <PRICE>5700</PRICE><PRICE>5700</PRICE> <TIME>2:58:42 PM</TIME><TIME>2:58:42 PM</TIME> <BIDDER>John</BIDDER><BIDDER>John</BIDDER> </BID></BID> </BIDS></BIDS> </ITEM></ITEM> </AUCTIONBLOCK></AUCTIONBLOCK>
XML - CMLPadova, 24 April 2023 - slide 63
Esempio: regola di trasformazione<?xml version="1.0"?><?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="<xsl:template match="//">"> <TABLE STYLE="border:1px solid black"><TABLE STYLE="border:1px solid black"> <TR STYLE="font-size:12pt; font-family:Verdana; <TR STYLE="font-size:12pt; font-family:Verdana; font-weight:bold; text-decoration:underline">font-weight:bold; text-decoration:underline"> <TD>Price</TD><TD>Price</TD> <TD STYLE="background-color:lightgrey">Time</TD><TD STYLE="background-color:lightgrey">Time</TD> <TD>Bidder</TD><TD>Bidder</TD> </TR></TR> <xsl:for-each<xsl:for-each select="select="AUCTIONBLOCK/ITEM/BIDS/BIDAUCTIONBLOCK/ITEM/BIDS/BID">"> <TR STYLE="font-family:Verdana; font-size:12pt"><TR STYLE="font-family:Verdana; font-size:12pt"> <TD>$<xsl:value-of select="<TD>$<xsl:value-of select="PRICEPRICE"/></TD>"/></TD> <TD STYLE="background-color:lightgrey"><TD STYLE="background-color:lightgrey"> <xsl:value-of select="<xsl:value-of select="TIMETIME"/></TD>"/></TD> <TD><xsl:value-of select="<TD><xsl:value-of select="BIDDERBIDDER"/></TD>"/></TD> </TR></TR> </xsl:for-each></xsl:for-each> </TABLE></TABLE> </xsl:template></xsl:template> </xsl:stylesheet></xsl:stylesheet>
XML - CMLPadova, 24 April 2023 - slide 64
Esempio: output
XML - CMLPadova, 24 April 2023 - slide 65
Processing di documenti XML
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 document
DTD
XML processor
XML XML applicationapplication
XML - CMLPadova, 24 April 2023 - slide 67
Standalone Rendering
HTMLXML
XSL
XML - CMLPadova, 24 April 2023 - slide 68
Client Side Rendering
XML
XSLHTML
Server (qualsiasi) Browser con XSL engineMS IE 6.x.
XML
XSL
XML - CMLPadova, 24 April 2023 - slide 69
Server Side Rendering
HTML
Browser (qualsiasi)Server con XSL engineeg Apache/Jserv/Cocoon/IIS
XML
XSLHTML
XML - CMLPadova, 24 April 2023 - slide 70
XML (and related) Specifications
XML 1.0 XML names
‘Open’ std
W3C rec
W3C draft
industry std
XML Core
APIs
Style Protocols Web Services Application areas Data/presentaion
XHTMLbasic
Xlink …...
SAX 1
Xpath
XSLT
XSLDOM 1
Modularized XHTML
Xforms
Canonical
XMLsignature
XML baseXpointer
XML query ….
Infoset
XML schema
Xfragment
XHTMLevents
UDDI
XML-RPC100's
more ....
SAX 2
DOM 2DOM 3
CSS 1CSS 2
CSS 3
JDOM
JAXP
WSDL ...
ebXML
Biztalk
WDDXXMI ...
...
IFX
Docbook
...
MathML
SMIL 1 & 2
VoiceXML
XHTML 1.0
RDF
SOAP RSS
CellML
IMS
SVG
HEML
TEI
XULJabber
XML - CMLPadova, 24 April 2023 - slide 71
Interrogazione di dati XML con XQuery
Xpath consente solo estrazioni … XQuery serve per elaborazioni + complesseProposta W3C: 15 Febbraio 2001
Interrogazioni: Path expressions
Sintassi abbreviata di XPath Espressioni FLWR
Clausole FOR, LET, WHERE, RETURN
XML - CMLPadova, 24 April 2023 - slide 72
Esempio<?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
XML - CMLPadova, 24 April 2023 - slide 73
Espressioni FLWRFOR per l’iterazioneLET per collegare variabiliWHERE per esprimere predicatiRETURN per generare il risultato
XML - CMLPadova, 24 April 2023 - slide 74
Espressioni FOREsempio:
FOR $l IN document(“libri.xml”)//LibroRETURN $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 $lL’interrogazione restituisce l’insieme di tutti i libri che si trovano nel documento libri.xml
XML - CMLPadova, 24 April 2023 - slide 75
Espressioni LETEsempio:
LET $l := document(“libri.xml”)//LibroRETURN $l
La clausola LET valuta l’espressione (//Libro) e assegna l’intero insieme di libri trovati alla variabile $lIl risultato di una clausola LET produce un singolo binding per la variabile: l’intero set viene assegnato alla variabile
XML - CMLPadova, 24 April 2023 - slide 76
Clausola WHERELa clausola WHERE esprime una condizione: solamente le tuple che soddisfano tale condizione vengono utilizzate per invocare la clausola RETURNLe condizioni nella clausola WHERE possono contenere diversi predicati connessi da AND, OR, NOTEsempio:
FOR $l IN document(“libri.xml”)//LibroWHERE $l/Editore=“Bompiani” AND $l/@disponibilità=“S”RETURN $l
Restituisce tutti i libri pubblicati da Bompiani che sono disponibili
XML - CMLPadova, 24 April 2023 - slide 77
Clausola RETURNGenera l’output di un’espressione FLWR che può essere:
Un nodo
Un foresta ordinata di nodi
Un valore
Può contenere dei costruttori di elementi, riferimenti a variabili definite nelle parti FOR e LET ed espressioni annidate
<Autore>F. Dürrenmatt</Autore>
<Autore>J.R.R. Tolkien</Autore><Autore>Umberto Eco</Autore><Autore>F. Dürrenmatt</Autore>
F. Dürrenmatt
XML - CMLPadova, 24 April 2023 - slide 78
Clausola RETURNUn 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”)//LibroWHERE $l/Editore=“Bompiani”RETURN <Libro-Bompiani>
$l/Titolo</Libro-Bompiani>
nuovo nuovo elementoelemento
<Libro-Bompiani><Titolo>Il Signore degli Anelli</Titolo></Libro-Bompiani><Libro-Bompiani><Titolo>Il nome della rosa</Titolo></Libro-Bompiani>
XML - CMLPadova, 24 April 2023 - slide 79
Ruolo di XQUERYdato 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 - CMLPadova, 24 April 2023 - slide 80
Esempifor $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 titoli di tutte le ricette
<floury> { for $r in document("recipes.xml")//recipe[.//ingredient[@name="flour"]] return <dish>{$r/title/text()}</dish> } </floury> <floury> <dish>Ricotta Pie</dish> <dish>Zuppa Inglese</dish> <dish>Cailles en Sarcophages</dish> </floury>
“I piatti che contengono farina - flour":
XML - CMLPadova, 24 April 2023 - slide 81
Esempi
for $i in distinct-values(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>, ...
“Per ciascun ingrediente, le ricette in cui è usato":
SVG: Scalable vector graphicsA language for describing two-dimensional graphics in XMLSee <http://www.w3.org/Graphics/SVG/Overview.htm8>
XML - CMLPadova, 24 April 2023 - slide 84
XML - CMLPadova, 24 April 2023 - slide 85
SVG Example
http://www.karto.ethz.ch/neumann/cartography/vienna/
XML - CMLPadova, 24 April 2023 - slide 86
SVG and XSLTThis example:
Originally written in Java
Author realised that XSLT would be easier
Uses SVG for chess board and pieces
Uses XSLT to move pieces
http://people.w3.org/maxf/ChessGML/
Chemical Markup Language
XML - CMLPadova, 24 April 2023 - slide 88
File transfer in a grid environment
XML - CMLPadova, 24 April 2023 - slide 89
…..IF (a.lt.1.0) THEN b=acos(c/d)ENDIFCALL JACOBI(a,b,err)WRITE(6,*) A
..open(fp,”out.dat”);scanf(“%d\n”,a);for (i=0;i<a;i++) {….
PROGRAM 1
PROGRAM 2
OUTPUT
INPUT
two strategies•write converters to transform from one output format to any other input format
•use a common file format
Avoid editing application programs in order tointerface them
XML - CMLPadova, 24 April 2023 - slide 90
Computational chemistry and physics is burdened by a confusion of data formats..
Coordinates, structures and trajectoriesSome examples
.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
XML - CMLPadova, 24 April 2023 - slide 91
Computational chemistry and physics is burdened by a confusion of data formats..
Data and other information .gzmat, .cube, .g98, .chk … Gaussian output files .gamout GAMESS .mopint MOPAC .tpvec, tphmx, .hessian DMOL3 (Accelrys DFT) data files .wavfun, .symm, .bands, .force CASTEP (Accelrys plane-
wave DFT)Graphics
.gif, .jpeg, .bmp, .png, .tiff, .eps, .ps, .wrl common graphics .pdf formats
.wlv, .pov, .msv, .xsd formats used by some viewer programs
XML - CMLPadova, 24 April 2023 - slide 92
CML-Chemistry Mark-up LanguageXML specification designed by Peter Murray-Rust and Henry Rezpahttp://www.xml-cml.org/Version 1.0 formally published in 1997Concentrates 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 - CMLPadova, 24 April 2023 - slide 93
<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 - CMLPadova, 24 April 2023 - slide 94
BMLsBioinformatic Sequence Markup Language (BSML) Biopolymer Markup Language (BIOML) CellMLGene Expression Markup Language (GEML) GeneX Gene Expression Markup LanguageMolecular Dynamics Markup Language (MoDL)Systems Biology Markup Language (SBML)
Math Markup Language
XML - CMLPadova, 24 April 2023 - slide 96
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>
x2 + 4x + 4
XML - CMLPadova, 24 April 2023 - slide 97
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>
2
1
( )n
ii
X X
XML - CMLPadova, 24 April 2023 - slide 98
XML - CMLPadova, 24 April 2023 - slide 99
MathML SoftwareTex4ht Latex package to convert to XMLMathType (Design Science Inc. www.dessi.com)Equation Editor (for MS Office) by MicrosoftAmaya Browser/Editor for MathML by W3CMathPlayer: MathML display engine for MS IEWebEQ Editor (Java tool)E-Lite Browser by ICESoftIBM techexplorer as viewerMacKichan SoftwareMaple: a symbolic and numeric computation systemMathCad by Mathsoft Engeneering & Education Inc.Mathematica, More see http://www.w3.org/math/implementations.html
XML - CMLPadova, 24 April 2023 - slide 100
MathMLMathML:
An XML application for maths
Various plugins, dedicated readers, etc.
Mozilla renders natively
See <http://www.mozilla.org/projects/mathml/>
XML e Data baseXML e data base relazionaliXML e basi di dati native
XML - CMLPadova, 24 April 2023 - slide 102
XML e Database: il problemaProblema:
è possibile/necessario memorizzare documenti XML in un DBMS?
Quale tecnologia è necessaria a questo scopo?Risposta:
è 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
XML - CMLPadova, 24 April 2023 - slide 103
Tipologie di documenti XMLDue 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 - CMLPadova, 24 April 2023 - slide 104
Documenti Data CentricStruttura regolarelivello di dettaglio piuttosto finecontenuto omogeneol’ordine con cui gli elementi allo stesso livello appaiono è ininfluenteUtilizzati per “machine consumption”Esempi: ordini di vendita, scheduling di voli, menù,…
XML - CMLPadova, 24 April 2023 - slide 105
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 - CMLPadova, 24 April 2023 - slide 106
Documenti Document Centric Struttura irregolareLivello di dettaglio meno fine contenuto eterogeneol’ordine degli elementi allo stesso livello è significativoin genere progettati per “human consumption”Esempi: libri, email, …
XML - CMLPadova, 24 April 2023 - slide 107
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 left-handed 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 - CMLPadova, 24 April 2023 - slide 108
XML e DBMSCiascuna tipologia di documenti richiede una particolare tecnologia per la sua gestione
data
document
Relational/object-oriented DB
DB basato su XML(XML è il modello dei dati)
XML - CMLPadova, 24 April 2023 - slide 109
XML e DBMSDue 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 - CMLPadova, 24 April 2023 - slide 110
XML e DBMSNel seguito.
Problematiche relative alla gestione di documenti Data Centric e Document Centric in XML-Enabled DBMS
XML-Enabled DBMS e documenti Data Centric
XML - CMLPadova, 24 April 2023 - slide 112
Problematiche per Data Centric
Tre problematiche di base:
come rappresentare i dati contenuti nei documenti XML nel DBMS
come generare documenti XML partendo dai dati contenuti nel DBMS
come interrogare i dati estratti da documenti XML
DBXMLdoc
DBXMLdoc
DB
XML - CMLPadova, 24 April 2023 - slide 113
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 strutturataVantaggi:
approccio piuttosto semplice i dati sono facilmente interrogabili
Svantaggi: Scarsa flessibilità: la tabella deve essere conforme al documento il documento di partenza non è più recuperabile
XML - CMLPadova, 24 April 2023 - slide 114
1. DBMS relazionaleUn documento XMl viene rappresentato come una singola tabella o un insieme di tabellela 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 - CMLPadova, 24 April 2023 - slide 115
Esempio
<clienti><row> <numero> 7369 </numero> <nome> PAUL </nome> <cognome> SMITH </cognome></row><row> <numero> 7000 </numero> <nome> STEVE </nome> <cognome> ADAM </cognome></row>
</clienti>
Numero Nome Cognome2000 MIKE SCOTT7369 PAUL SMITH7000 STEVE ADAM
Documento XML Tabella Clienti
XML - CMLPadova, 24 April 2023 - slide 116
EsempioDocumento XML
Tabella Lista_ClientiNumero
2000
7369
Numero Num_cliente Nome Cognome2000 1 MIKE SCOTT
7369 2 PAUL SMITH7369 3 STEVE ADAM
<clienti> <row>
<numero> 7369 </numero> <lista_clienti>
<cliente> <nome> PAUL </nome>
<cognome> SMITH </cognome> </cliente>
<cliente> <nome> STEVE </nome>
<cognome> ADAM </cognome> </cliente> </lista_clienti></row>
</clienti>
Tabella Clienti
XML - CMLPadova, 24 April 2023 - slide 117
2. DBMS object relationalIl documento può sempre essere mappato in una singola tabella, utilizzando campi strutturati
XML - CMLPadova, 24 April 2023 - slide 118
Esempio<clienti>
<row> <numero> 7369 </numero> <cliente> <nome> PAUL </nome> <cognome> SMITH </cognome></cliente></row><row> <numero> 7000 </numero> <cliente> <nome> STEVE </nome> <cognome> ADAM </cognome> </cliente></row>
</clienti>
Numero Cliente
2000
7369
7000
Documento XML Tabella Clienti
nome cognomeMIKE SCOTT
nome cognomePAUL SMITH
nome cognomeSTEVE ADAM
XML - CMLPadova, 24 April 2023 - slide 119
Esempio
<clienti> <row>
<numero> 7369 </numero> <lista_clienti>
<cliente> <nome> PAUL </nome>
<cognome> SMITH </cognome> </cliente>
<cliente> <nome> STEVE </nome>
<cognome> ADAM </cognome> </cliente> </lista_clienti></row>
</clienti>
Numero Cliente
2000
7369
Documento XML Tabella Clienti
nome cognomeMIKE SCOTT
nome cognomeSTEVE ADAM
nome cognomePAUL SMITH
CLIENTE
CLIENTE
XML - CMLPadova, 24 April 2023 - slide 120
Interrogazione datiPoiché i dati vengono rappresentati secondo il modello supportato dal DBMS (es. relazionale), è possibile utilizzare i linguaggi supportati dal DBMS per l’interrogazione dei dati memorizzatiapproccio template-based:
la query viene rappresentata nel documento XML necessità di middleware
XML - CMLPadova, 24 April 2023 - slide 121 121
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 - CMLPadova, 24 April 2023 - slide 122
Interrogazione datiDoc
QueryDoc
Result
DB
ExtractSelect
Command
ConstructDocument
answer
SubmitSELECTCommand
Middleware
Result
XML - CMLPadova, 24 April 2023 - slide 123
Generazione documenti XMLProblema: fornire una rappresentazione XML ai dati recuperati tramite query dal DBMSsi utilizza il mapping inverso rispetto a quello utilizzato per la memorizzazioneoperazione importante per attribuire un formato standard ai dati ritrovati, prima di inviarli sulla rete
XML - CMLPadova, 24 April 2023 - slide 124 124
Esempio
<clienti><row> <nome> PAUL </nome> <cognome> SMITH </cognome></row>
</clienti>
Documento XMLNumero Nome Cognome
2000 MIKE SCOTT7369 PAUL SMITH7000 STEVE ADAM
Tabella Clienti
SELECT nome, cognomeFROM ClientiWHERE Numero = “7369
XML-Enabled DBMS e documenti Document Centric
XML - CMLPadova, 24 April 2023 - slide 126
Problematiche per Document Centric
Due problematiche di base:
come rappresentare i documenti XML nel DBMS
come interrogare i documenti XML
DBXMLdoc
DBXMLdoc
XML - CMLPadova, 24 April 2023 - slide 127
Rappresentazione Permette di mantenere integro il documento XMLDue 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 - CMLPadova, 24 April 2023 - slide 128
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 systemVantaggi:
flessibileSvantaggi:
i dati sono non strutturati interrogazione più complessa la tabella può contenere documenti eterogenei (diversi DTD)
XML - CMLPadova, 24 April 2023 - slide 129 129
Rappresentazione non strutturata
Documento XML
riferimento
CLOBXML
XML
DBMS
XML - CMLPadova, 24 April 2023 - slide 130
Esempio
<clienti><row> <numero> 7369 </numero> <nome> PAUL </nome> <cognome> SMITH </cognome></row><row> <numero> 7000 </numero> <nome> STEVE </nome> <cognome> ADAM </cognome></row>
</clienti>
Documento XML Tabella ClientiId 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>
10
XML - CMLPadova, 24 April 2023 - slide 131
Rappresentazione ibrida
Rappresentazione che combina rappresentazione strutturata e non strutturata
Documento XML
CLOBXML
DBMS
XML
Rappr. strutturata
XML - CMLPadova, 24 April 2023 - slide 132
Esempio<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>
Documento XML Tabella LIBROSCHEMA
CLOB
Titoloautore
contenuto dettaglicapitolo
Guida introduttiva al mondo dei DBMS Oracle ...
capitolotitolo
XML - CMLPadova, 24 April 2023 - slide 133
Interrogazione documenti Dal punto di vista del DBMS, un documento memorizzato in modo non strutturato non è che un documento di testoin genere i DBMS supportano strumenti per ritrovare i documenti in base al contenutonel caso di documenti XML, mettono a disposizione operatori avanzati da utilizzare in statement SQL per recuperare documenti XML in base al contenuto
XML - CMLPadova, 24 April 2023 - slide 134
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
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
XML - CMLPadova, 24 April 2023 - slide 135
XML e Oracle 8iXML-enabledsupporta rappresentazione strutturata, non strutturata in campi CLOB e BFILE, e ibridainterrogazione rappresentazione non strutturata tramite Intermedia Context generazione documenti XML a partire dal contenuto DB
XML - CMLPadova, 24 April 2023 - slide 136
XML e IBM DB2XML enabledsupporta rappresentazione strutturata, non strutturata in campi ad hoc, e ibridaNuovi tipi di dato:
XMLVARCHAR: documenti XML memorizzati come VARCHAR XMLCLOB: documenti XML memorizzati come CLOB XMLFILE: riferimento ad un documento XML, memorizzato su file
systeminterrogazione 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 - CMLPadova, 24 April 2023 - slide 137
XML e SQL 2008XML enabledsupporta rappresentazione strutturata, non strutturata in campi ad hoc, e ibridaNuovi 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
Clausola FOR XML AUTO
XML - CMLPadova, 24 April 2023 - slide 138
SQL/XMLXmlelmentXmlforestXmlgenXmlconcatXmlaggr
Select I.matr, Xmlelement (name “imp”, Xmlattributes (I.matr, I.nome as “Cognome”)) as Risultatofrom Impiegato I;
Risultato: due colonne costruite dall’operatore xmlelement
XML - CMLPadova, 24 April 2023 - slide 139
XML Spy
XML - CMLPadova, 24 April 2023 - slide 140
Fonti: XLM editor
XML - CMLPadova, 24 April 2023 - slide 141
Fonti: XQuery Editor