XML: eXtensible Markup Language
La lingua franca del Web
Isole di Informazione
Database
Word
EDI
WordPerfect
CAD
XML
XML
Graphics
Trieste, 3 October, 2015 - slide 2
Il Problema
 Utenti diversi con diversi software vendors

XML
e.g. MS Word, WordPerfect & XML Editor
Trieste, 3 October, 2015 - slide 3
Problema di Esempio
WP o r X M L E d ito r
27 Januar y 1999
D ear John,
How are you doing ?
Is n’t it ab o u t time you vis ited?
S ee you s oon,
P eter
XML
W P O u tp u t
\w indow \frac w idth\dec td\s dknone\linem od0
\linex0\c ol1\ endnher e\pard\plain\s l\li3 60
\s l1280\tx720\t x1080 \tx144 0\tx18 00\tx2 160\f22
{\v 930204 01}\par\pard
\s l\qr\li360\s 1280\tx 720\tx 1080\t x1440\t x2160
27 Januar y 1999\ par\pard
\s l\li360\s b1440\s a240\s 1280\t x720\t x1080
\tx1440\t x1800\t x2160
D ear John,\par\par d\s l
\li360\s 1280\t x720\t x1080\t x1440\ tx180 0\tx216 0
How are you doing ?\par Is n\rquote t it
{\i about tim e} you vis ited?\ par\pard\s l
\li360\s b240\s 1280\t x720\t x1080\t x1440 \tx180 0\tx21 60
S ee you s oon,\par\p ard\s l\li360\s b144 0\s 1260
P eter\par\pard\pla in\f20\ fs 28\par
X M L O u tp u t
< letter filecode= ”93020401 ”>
< date> 27 Ja nua r y 1999< /da te>
< < gre eting> & sa lute ; Jo hn,> /graating>
< body>
< para> Ho w are yo u do ing?< /pap a>
< para> Is n’ t it Bo ld> abo ut tim e< /b o ld>
yo u vis ited?< /pa ra>
< body>
< c los ing> S ee yo u soo n, < /c los ing>
< s ig> P ete r< /s ig>
< /letter>
Trieste, 3 October, 2015 - slide 4
‘Message in the Bottle ‘
• Grado di "self-description":
Per niente
ÐÏ^Qࡱ^Zá^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@>
^@^C^@þÿ^@^F^@^@^@^@^@^@^@^@^@^@^@^A^@
^@^@#^@^@^@^@^@^@^@^@^P^@^@%^@^@^@^A^
@^@^@þÿÿÿ^@^@^@^@"^@^@^@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥Á[email protected]^@^D^@^@^@^R¿
^@^@^@^@^@^@^P^@^@^@^@^@^D^@^@Ç^G^@^@
[email protected]+t+^@^@^@
[email protected] Quotations from the Universal Library^M1 Famous Quotes^M1.1
By William I^M[2, Sonnet XVIII]^MShall I compare thee to a
summer's day?^MThou art more lovely and more
temperate.^MRough winds do shake the darling buds of
May,^MAnd summer's lease hath all too short a date.^MSometime
too hot the eye of heaven shines,^MAnd often is his gold
complexion dimmed.^MAnd every fair from fair some
declines,^MBy chance or nature's changing course
untrimmed.^MBut thy eternal summer shall not fade,^MNor lose
possession of that fair thou owest,^MNor shall Death brag thou
wander'st in his shade^MWhile in eternal lines to time thou
growest.^MSo long as men can breathe, or eyes can see,^MSo
long live this, and this gives life to thee.^M1.2 By William II^M[1,
p.265]^M\223The obvious mathematical breakthrough would be
development of^Man easy way to factor large prime
numbers."^MReferences^M[1] W. H. Gates. The Road Ahead.
Viking Penguin, 1995.^M[2] W. Shakespeare. The Sonnets of
Shakespeare.609.^M^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@
Non male
\documentclass{article}
\begin{document}
\title{Some Quotations from the Universal
Library}
...
\section{Famous Quotes}
\subsection{By William I}
\textbf{\cite[Sonnet XVIII]{shakespearesonnets-1609}}
\begin{verse}
Shall I compare thee to a summer's day?\\
Thou art more lovely and more temperate.
\\
Rough winds do shake the darling buds of
May, \\
And summer's lease hath all too short a
date. \\
Sometime too hot the eye of heaven shines,
\\
And often is his gold complexion dimmed. \\
…
\qquad So long as men can breathe, or eyes
can see,\\
\qquad So long live this, and this gives life to
thee. \\
\end{verse}
...
\bibliographystyle{abbrv}
\bibliography{msg}
\end{document}
XML
OK
<?xml version="1.0"?>
<universal_library>
<books>
<book> <title>Some Quotations from the Universal
Library</title>
<section> <title>Famous Quotes</title>
<subsection> <title>By William I</title>
<quote bibref="shakespeare-sonnets-1609">
<title>Sonnet XVIII</title>
<verse>
<line>Shall I compare thee to a summer's
day?</line>
<line>Thou art more lovely and more temperate.
</line>
<line>Rough winds do shake the darling buds of May,
</line>
</verse>
…
<subsection> <title>By William II</title>
<quote bibref="gates-road-ahead-1995">
<title>Page 265</title>
<line>``The obvious mathematical breakthrough would
be development of an easy way to factor large prime
numbers.’’</line>
</quote>
</subsection>
</section>
</book>
…
</books>
</universal_library>
Trieste, 3 October, 2015 - slide 5
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
(transfer)
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Risulta difficoltosa la manutenzione
Informazioni possono venire perse in quanto si descrive solo la
forma, non il significato (semantica)
Trieste, 3 October, 2015 - 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
Modellazione
di tipi di dati
differenti
presentazione
Di differenti
Tipi di dati
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
HTML
RTF
Hytime
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 20
XML Basic
Struttura di documenti XML
Struttura Logica

Elementi
Struttura Fisica

Entitià
Document
Unit
Sub-unit
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
(ex) XML document - Journal.xml
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 37
Validazione di XML (Cont.) - XML Schema
Un XML schema descrive la struttura di un
documento XML .








XML
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
Trieste, 3 October, 2015 - slide 38
XML Schema è Raccommandato
XML
XML
XML
XML
XML
XML
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
Trieste, 3 October, 2015 - 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
CSS (Cascading StyleSheets) – sviluppato per HTML
XSL – sviluppato specificataemnte per XML
Trieste, 3 October, 2015 - slide 40
Perchè due Style Sheet languages?
Può essere usato con HTML?
Può essere usato con XML?
Transformation language?
Sintassi
XML
CSS
yes
yes
no
CSS
XSL
no
yes
yes
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 42
Ruolo di XSL e di CSS.
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 46
Visualizzazione di cd_catalog.xml con css
XML
Trieste, 3 October, 2015 - 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
plenty of real
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 49
Visualizzazione di XML con XSL
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 52
Path expressions (Xpath)
Consente la scrittura di path in un documento con lo scopo
di selezionare parti di docuemnti XML
.
..
/
//
@
*
[]
[n]
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
posizione
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
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>
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 63
Esempio: output
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 65
Standalone Rendering
XML
HTML
XSL
XML
Trieste, 3 October, 2015 - slide 67
Client Side Rendering
XML
XML
HTML
XSL
Server (qualsiasi)
XML
XSL
Browser con XSL engine
MS IE 6.x.
Trieste, 3 October, 2015 - slide 68
Server Side Rendering
XML
HTML
HTML
XSL
Server con XSL engine
eg Apache/Jserv/Cocoon/IIS
XML
Browser (qualsiasi)
Trieste, 3 October, 2015 - 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
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
Modularized
XHTML
TEI
HEML
...
Application areas
…...
SVG
Docbook
XUL
100's
more ....
...
Data/presentaion
Trieste, 3 October, 2015 - slide 70
Interrogazione di dati XML con XQuery
Xpath consente solo estrazioni … XQuery serve per
elaborazioni + complesse
Standard W3C: dal 2001
Interrogazioni:

Path expressions
 Sintassi abbreviata di XPath

Espressioni FLWR
 Clausole FOR, LET, WHERE, RETURN
XML
Trieste, 3 October, 2015 - slide 71
Esempio
XML
<?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
Trieste, 3 October, 2015 - slide 72
Espressioni FLWR
FOR per l’iterazione
LET per collegare variabili
WHERE per esprimere predicati
RETURN per generare il risultato
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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 [email protected]à=“S”
RETURN $l
Restituisce tutti i libri pubblicati da Bompiani che sono disponibili
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 80
Esempi
“Per ciascun ingrediente, le ricette in cui è usato":
for $i in distinctvalues(document("recipes.xml")[email protected])
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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 84
SVG Example
XML
http://www.karto.ethz.ch/neumann/cartography/vienna/
Trieste, 3 October, 2015 - slide 85
SVG and XSLT
This example:




XML
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
Trieste, 3 October, 2015 - slide 86
Chemical Markup Language
File transfer in a grid environment
XML
Trieste, 3 October, 2015 - 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
•use a common file format
Trieste, 3 October, 2015 - slide 89
Computational chemistry and physics is
burdened by a confusion of data formats..
Coordinates, structures and trajectories
Some examples









XML
.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
Trieste, 3 October, 2015 - 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
.gif, .jpeg, .bmp, .png, .tiff, .eps, .ps, .wrl
.pdf
.wlv, .pov, .msv, .xsd
common graphics
formats
formats used by
some viewer
programs
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
x2 + 4x + 4
Trieste, 3 October, 2015 - slide 96
Example 2: Using MathType 5 and
Amaya
<math xmlns="http://www.w3.org/1998/Math/MathML" style="background-color:#">
<mrow>
<munderover>
<mo>&sum;</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>&minus;</mo><mover accent='true'>
<mi>X</mi>
<mo>&macr;</mo>
</mover>
<mo stretchy='false'>)</mo>
</mrow>
<mn>2</mn>
</msup>
</mrow>
</mrow>
</math>
n
 (X
i
 X)
2
i 1
XML
Trieste, 3 October, 2015 - slide 97
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
è 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 107
XML e DBMS
Ciascuna tipologia di documenti richiede una
particolare tecnologia per la sua gestione
data
document
XML
Relational/object-oriented DB
DB basato su XML
(XML è il modello dei dati)
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 109
XML-Enabled DBMS e documenti
Data Centric
Problematiche per Data Centric
Tre problematiche di
base:



XML
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
Trieste, 3 October, 2015 - 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
Scarsa flessibilità: la tabella deve essere conforme al documento
il documento di partenza non è più recuperabile
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Tabella Clienti
Numero
2000
7369
7000
Nome
MIKE
PAUL
STEVE
Cognome
SCOTT
SMITH
ADAM
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 116
2. DBMS object relational
Il documento può sempre essere mappato in una
singola tabella, utilizzando campi strutturati
XML
Trieste, 3 October, 2015 - 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
cognome
SCOTT
cognome
SMITH
cognome
ADAM
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
la query viene rappresentata nel documento XML
necessità di middleware
Trieste, 3 October, 2015 - 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
121
Trieste, 3 October, 2015 - slide 121
Interrogazione dati
Doc
Result
Doc
Query
Middleware
Extract
Select
Command
Construct
Document
answer
Submit
SELECT
Command
Result
DB
XML
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 123
Esempio
SELECT nome, cognome
FROM Clienti
WHERE Numero = “7369
Tabella Clienti
Numero
2000
7369
7000
XML
Nome
MIKE
PAUL
STEVE
Documento XML
Cognome
SCOTT
SMITH
ADAM
<clienti>
<row>
<nome> PAUL </nome>
<cognome> SMITH </cognome>
</row>
</clienti>
Trieste, 3 October, 2015 - slide 124
XML-Enabled DBMS e documenti
Document Centric
Problematiche per Document Centric
Due problematiche di
base:


XML
come rappresentare i
documenti XML nel DBMS
XML
doc
DB
come interrogare i
documenti XML
XML
doc
DB
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
i dati sono non strutturati
interrogazione più complessa
la tabella può contenere documenti eterogenei (diversi DTD)
Trieste, 3 October, 2015 - slide 128
Rappresentazione non strutturata
DBMS
Documento
XML
CLOB
XML
XML
riferimento
XML
129
Trieste, 3 October, 2015 - 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
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>
Trieste, 3 October, 2015 - slide 130
Rappresentazione ibrida
Rappresentazione che combina rappresentazione
strutturata e non strutturata
DBMS
Documento
XML
XML
CLOB
XML
Rappr.
strutturata
XML
Trieste, 3 October, 2015 - 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
Tabella LIBRO
SCHEMA
Titolo
autore
dettagli
contenuto
capitolo
titolo
capitolo
CLOB
Guida introduttiva al mondo
dei DBMS Oracle ...
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
QUERY_TAG::= <tag_value> WITHIN <tag_name> |
<attribute_value> WITHIN <[email protected]_name>|
…
CONTAINS restituisce un valore maggiore di 0 se la condizione è
verificata
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - 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
Clausola FOR XML AUTO
Trieste, 3 October, 2015 - 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
Trieste, 3 October, 2015 - slide 138
XML Spy
XML
Trieste, 3 October, 2015 - slide 139
Fonti: XLM editor
XML
Trieste, 3 October, 2015 - slide 140
Fonti: XQuery Editor
XML
Trieste, 3 October, 2015 - slide 141
XML
Trieste, 3 October, 2015 - slide 142
Descargar

Servizi agli studenti: smart card e portale di accesso