Upload
erich-bond
View
37
Download
0
Tags:
Embed Size (px)
DESCRIPTION
XML: eXtensible Markup Language. La lingua franca del Web. Isole di Informazione. Il Problema. Utenti diversi con diversi software vendors e.g. MS Word, WordPerfect & XML Editor. Problema di Esempio. - PowerPoint PPT Presentation
Citation preview
XML: eXtensible Markup Language
La lingua franca del Web
XML Trieste, 19 April 2023 - slide 2
Isole di Informazione
Word
ED I WordPerfect
C ADGraphics
XMLD atabase
XML Trieste, 19 April 2023 - slide 3
Il Problema
Utenti diversi con diversi software vendors
e.g. MS Word, WordPerfect & XML Editor
XML Trieste, 19 April 2023 - slide 4
Problema di Esempio
WP or XML Editor
27 January 1999
Dear John,
How are you doing?Isn’t it about time you visited?
See you soon,
Peter
WP Output
\window\fracwidth\dectd\sdknone\linemod0\linex0\col1\endnhere\pard\plain\sl\li360\sl1280\tx720\tx1080\tx1440\tx1800\tx2160\f22{\v 93020401}\par\pard\sl\qr\li360\s1280\tx720\tx1080\tx1440\tx216027 January 1999\par\pard\sl\li360\sb1440\sa240\s1280\tx720\tx1080\tx1440\tx1800\tx2160Dear John,\par\pard\sl\li360\s1280\tx720\tx1080\tx1440\tx1800\tx2160How are you doing?\par Isn\rquote t it{\i about time} you visited?\par\pard\sl\li360\sb240\s1280\tx720\tx1080\tx1440\tx1800\tx2160See you soon,\par\pard\sl\li360\sb1440\s1260Peter\par\pard\plain\f20\fs28\par
XML Output
<letter filecode=”93020401”><date>27 January 1999</date><<greeting>&salute; John,>/graating><body><para>How are you doing?</papa><para>Isn’t it Bold>about time</bold> you visited?</para><body><closing>See you soon, </closing><sig>Peter</sig></letter>
XML Trieste, 19 April 2023 - slide 5
‘Message in the Bottle ‘
ÐÏ^Qࡱ^Zá^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@>^@^C^@þÿ^@^F^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@#^@^@^@^@^@^@^@^@^P^@^@%^@^@^@^A^@^@^@þÿÿÿ^@^@^@^@"^@^@^@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥Á^@q^@^D^@^@^@^R¿^@^@^@^@^@^@^P^@^@^@^@^@^D^@^@Ç^G^@^@^N^@bjbjt+t+^@^@^@
^@Some 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^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
\documentclass{article}
\begin{document}
\title{Some Quotations from the Universal Library}
...
\section{Famous Quotes}
\subsection{By William I}
\textbf{\cite[Sonnet XVIII]{shakespeare-sonnets-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 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>
• Grado di "self-description":
Per niente OKNon male
XML Trieste, 19 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 & other
software
• HTTP
URLs(location
e.g -- http://www.foo.org/boo.html )
• URL
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 12
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, 19 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 Trieste, 19 April 2023 - slide 14
Generalised Markup Languages
Linguaggio proprietari di markup creano problemi.
Generalised markup languages sono linguaggi per la definizione di markup languages.
Metalanguages
SGML
XML Trieste, 19 April 2023 - slide 15
SGML - Storia
Standard 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 Trieste, 19 April 2023 - slide 16
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, 19 April 2023 - slide 17
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, 19 April 2023 - slide 18
XML
Extensible 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 20
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
XML Basic
XML Trieste, 19 April 2023 - slide 22
Struttura di documenti XMLStruttura Logica
Elementi
Struttura Fisica Entitià
Document
UnitSub-unit
XML Trieste, 19 April 2023 - slide 23
XML: gerarchia
Document
UnitSub-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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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.
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 Trieste, 19 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.
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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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? no yesSintassi CSS XML
XML Trieste, 19 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 Trieste, 19 April 2023 - slide 43
Ruolo di XSL e di CSS.
XML Trieste, 19 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 Trieste, 19 April 2023 - slide 45
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, 19 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 Trieste, 19 April 2023 - slide 47
Visualizzazione di cd_catalog.xml con css
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 50
Visualizzazione di XML con XSL
XML Trieste, 19 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 Trieste, 19 April 2023 - slide 52
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, 19 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 Trieste, 19 April 2023 - slide 54
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 desideratoEsempio: document(“libri.xml”)/Elenco/LibroRestituisce l’insieme di tutti i libri contenuti nell’elenco che si trovano
nel documento libri.xml
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 61
Match
Si 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 64
Esempio: output
XML Trieste, 19 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 Trieste, 19 April 2023 - slide 67
Standalone Rendering
HTMLXML
XSL
XML Trieste, 19 April 2023 - slide 68
Client Side Rendering
XML
XSLHTML
Server (qualsiasi) Browser con XSL engineMS IE 6.x.
XML
XSL
XML Trieste, 19 April 2023 - slide 69
Server Side Rendering
HTML
Browser (qualsiasi)Server con XSL engineeg Apache/Jserv/Cocoon/IIS
XML
XSLHTML
XML Trieste, 19 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
XSL
DOM 1
Modularized XHTML
Xforms
Canonical
XMLsignature
XML baseXpointer
XML query ….
Infoset
XML schema
Xfragment
XHTMLevents
UDDI
XML-RPC100's
more ....
SAX 2
DOM 2
DOM 3
CSS 1
CSS 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 Trieste, 19 April 2023 - slide 71
Interrogazione di dati XML con XQuery
Xpath consente solo estrazioni … XQuery serve per elaborazioni + complesseStandard W3C: dal 2001
Interrogazioni: Path expressions
Sintassi abbreviata di XPath Espressioni FLWR
Clausole FOR, LET, WHERE, RETURN
XML Trieste, 19 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 Trieste, 19 April 2023 - slide 73
Espressioni FLWRFOR per l’iterazioneLET per collegare variabiliWHERE per esprimere predicatiRETURN per generare il risultato
XML Trieste, 19 April 2023 - slide 74
Espressioni FOR
Esempio:
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 Trieste, 19 April 2023 - slide 75
Espressioni LET
Esempio:
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 Trieste, 19 April 2023 - slide 76
Clausola WHERE
La 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 78
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”)//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 Trieste, 19 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 Trieste, 19 April 2023 - slide 80
Esempi
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 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 Trieste, 19 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 graphics
A language for describing two-dimensional graphics in XMLSee <http://www.w3.org/Graphics/SVG/Overview.htm8>
XML Trieste, 19 April 2023 - slide 84
XML Trieste, 19 April 2023 - slide 85
SVG Example
http://www.karto.ethz.ch/neumann/cartography/vienna/http://www.karto.ethz.ch/neumann/cartography/vienna/
XML Trieste, 19 April 2023 - slide 86
SVG and XSLT
This 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/http://people.w3.org/maxf/ChessGML/
Chemical Markup Language
XML Trieste, 19 April 2023 - slide 88
File transfer in a grid environment
XML Trieste, 19 April 2023 - slide 89
…..
IF (a.lt.1.0) THEN
b=acos(c/d)
ENDIF
CALL 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 to
interface them
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 98
XML Trieste, 19 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 Trieste, 19 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/>See <http://www.mozilla.org/projects/mathml/>
XML e Data base
XML e data base relazionaliXML e basi di dati native
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 104
Documenti Data Centric
Struttura 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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-Enabled DBMS e documenti Data Centric
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 116
EsempioDocumento XML
Tabella Lista_ClientiNumero
2000
7369
Numero Num_cliente Nome Cognome
2000 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 Trieste, 19 April 2023 - slide 117
2. DBMS object relationalIl documento può sempre essere mappato in una singola tabella, utilizzando campi strutturati
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 122
Interrogazione dati
DocQuery
DocResult
DB
ExtractSelect
Command
ConstructDocument
answer
SubmitSELECTCommand
Middleware
Result
XML Trieste, 19 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 Trieste, 19 April 2023 - slide 124
Esempio
<clienti>
<row>
<nome> PAUL </nome>
<cognome> SMITH </cognome>
</row>
</clienti>
Documento XML
Numero Nome Cognome2000 MIKE SCOTT7369 PAUL SMITH7000 STEVE ADAM
Tabella Clienti
SELECT nome, cognomeFROM ClientiWHERE Numero = “7369
XML-Enabled DBMS e documenti Document Centric
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 system
Vantaggi: flessibile
Svantaggi: i dati sono non strutturati interrogazione più complessa la tabella può contenere documenti eterogenei (diversi DTD)
XML Trieste, 19 April 2023 - slide 129
129
Rappresentazione non strutturata
Documento XML
riferimento
CLOBXML
XML
DBMS
XML Trieste, 19 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 Clienti
Id 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 Trieste, 19 April 2023 - slide 131
Rappresentazione ibrida
Rappresentazione che combina rappresentazione strutturata e non strutturata
Documento XML
CLOBXML
DBMS
XML
Rappr. strutturata
XML Trieste, 19 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 dettagli
capitolo
Guida introduttiva al mondo dei DBMS Oracle ...
capitolotitolo
XML Trieste, 19 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 Trieste, 19 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 136
XML e IBM DB2
XML 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
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, 19 April 2023 - slide 137
XML e SQL 2008
XML 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 Trieste, 19 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 Trieste, 19 April 2023 - slide 139
XML Spy
XML Trieste, 19 April 2023 - slide 140
Fonti: XLM editor
XML Trieste, 19 April 2023 - slide 141
Fonti: XQuery Editor
XML Trieste, 19 April 2023 - slide 142