28
a.a. 2004/05 Tecnologie Web 1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

Embed Size (px)

Citation preview

Page 1: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 1

Introduzione a XML: Document Type Definition;parser XML; XML-schema; eXtensible Stylesheet Language

Page 2: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 2

XML (eXStensible Markup Language):

XML è un formato standard, definito dal W3C (http://www.w3.org) indipendente dalla piattaforma, utilizzato per la rappresentazione di dati e di contenuti strutturati

XML viene spesso presentato come il successore di HTML; in realtà:

• HTML è un linguaggio per il markup di documenti (pagine Web)

• XML è un meta-linguaggio, consente cioè la definizione di nuovi linguaggi

XML - I

Page 3: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 3

XML - II

Vantaggi di XML:

• Si è imposto come standard per la condivisione di dati su Internet

• E` basato su una rappresentazione dei dati come stringhe di caratteri facilmente trasferibili via HTTP

• Sono stati sviluppati strumenti per la scrittura, l’interpretazione, la gestione di documenti XML

• E` utilizzato per la condivisione e lo scambio di dati tra applicazioni

Page 4: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 4

Che cos'è un meta-linguaggio?

Un meta-linguaggio è un linguaggio per definire nuovi linguaggi (in questo senso è “estensibile”)

Per es: supponiamo di avere una ditta che importa e rivende caffè e di voler rappresentare il nostro listino prezzi; vorremmo un linguaggio che ci metta a disposizione i seguenti tag:

<listinoPrezzi> <caffe> <nome>Mocha Java</nome> <prezzo>11.95</ prezzo> </caffe> <caffe>    <nome>Sumatra</nome> <prezzo>12.50</ prezzo> </caffe> </listinoPrezzi>

XML - III

nome prezzo

Mocha Java

11.95

Sumatra 12.50

Listino prezzi caffè

Page 5: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 5

Possiamo definirlo!

Utilizziamo una DTD (Document Type Definition), per definire il nuovo linguaggio (cioè l'insieme di tag di cui abbiamo bisogno):

<!ELEMENT listinoPrezzi (caffe)*>

<!ELEMENT caffe (nome, prezzo)>

<!ELEMENT nome (#PCDATA)>

<!ELEMENT prezzo (#PCDATA)>

XML: DTD - I

Definisco un tag"listinoPrezzi", costituito da un numero arbitrario di tag "caffe"

Definisco un tag "caffe", costituito da un tag "nome"e da un tag "prezzo"

I tag "nome" e "prezzo"non sono a loro volta costituiti da altri tag, ma contengono solo testo

Page 6: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 6

XML: DTD - II

<?xml version='1.0' encoding='utf-8'?><!ELEMENT listinoPrezzi (caffe)*><!ELEMENT caffe (nome, prezzo)><!ELEMENT nome (#PCDATA)><!ELEMENT prezzo (#PCDATA)>

coffees.dtd

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE listino SYSTEM “coffees.dtd"><listinoPrezzi> <caffe> <nome>Mocha Java</nome> <prezzo>11.95</ prezzo> </caffe> <caffe>    <nome>Sumatra</nome> <prezzo>12.50</ prezzo> </caffe></listinoPrezzi>

listino.xml

prologo: specifica la versione di XML e il set di caratteri usato

all’inizio del documento XML dichiariamo la DTD di riferimento

Page 7: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 7

Una caratteristica fondamentale di XML è la possibilità di rappresentare la struttura delle informazioni (mediante i tag); in particolare i tag in un documento XML definiscono una struttura gerarchica:

XML: DTD - III

listinoPrezzi

caffè nome

prezzo

caffè nome

prezzo

listinoPrezzi

caffè …

nome prezzo nome prezzo

caffè

Page 8: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 8

XML: documenti ben formati

• Un documento XML è ben formato se rispetta le regole sintattiche dell’XML

• Intuitivamente, un documento è ben formato sse:– contiene tutte le componenti necessarie (1 prologo, 1

solo elemento radice, ...)– i suoi tag sono bilanciati, cioè

ogni tag aperto viene chiuso: <TAG>bla</TAG>Se l’elemento è vuoto: <TAG></TAG> <TAG/>

• i tag sono “annidati” correttamente, cioè l’ultimo tag aperto è il primo ad essere chiuso: <TAG1><TAG2><TAG3>...</TAG3></TAG2></TAG1>

• NB: XML (a differenza di HTML) è case-sensitive!

Page 9: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 9

XML: documenti validi - I

• Abbiamo detto che, utilizzando una DTD (Document Type Definition) possiamo definire nuovi linguaggi (cioè insiemi di tag) basati su XML

• Un documento XML è valido se è ben formato (sintassi XML) e se rispetta la DTD; per es, dato il frammento di DTD visto prima:

<!ELEMENT listinoPrezzi (caffe)*> <!ELEMENT caffe (nome, prezzo)> <!ELEMENT nome (#PCDATA)> <!ELEMENT prezzo (#PCDATA)>

Page 10: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 10

XML: documenti validi - II

<listinoPrezzi> <caffe> <nome>Mocha Java</nome> <prezzo>11.95</ prezzo> </caffe> <caffe>    <nome>Sumatra</nome> <prezzo>12.50</ prezzo> </caffe> </listinoPrezzi>

<listinoPrezzi> <caffe> <marca>Mocha Java</marca> </caffe> <prezzo>11.95</ prezzo> <caffe>    <marca>Sumatra</marca> </caffe> <prezzo>12.50</ prezzo> </listinoPrezzi>

è un documento valido NON è un documento valido

tag non definito nella DTD

struttura errata: l’elemento prezzo NONè figlio di listinoPrezzi (ma di caffe)

Page 11: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 11

Parser XML: SAX - I

• Parser XML = strumento (programma) che verifica se un documento XML è ben formato

• Alcuni parser XML sono anche “validanti”, cioè verificano se un documento XML è ben formato e se è valido rispetto alla DTD (o XML-schema) di riferimento

• Per costruire applicazioni che usano documenti XML il parser deve offrire delle API per invocare l’analisi sintattica, restituire risultati, validare, ecc. Per es. esistono i parser SAX (Simple API for XML), sviluppati per vari linguaggi di programmazione tra cui Java (JAXP: parser SAX di Sun Microsystems, offre API in Java)

• Ci sono anche dei parser utilizzabili via web, per es. il validatore di W3C: http://validator.w3.org/

Page 12: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 12

Parser XML: SAX - II

Quando “lanciamo” un parser (validante) su un documento XML, il parser • analizza il file xml • se trova un errore (per es: manca prologo, tag aperto ma

non chiuso, tag non bilanciati, tag sconosciuto, …) lo segnala e si ferma (documento non ben formato e/o non valido)

• altrimenti, arriva fino a fine documento (e si ferma)

Esempio di segnalazione di errore:org.xml.sax.SaxParseException: Element type “marca” must be declared.

at org.apache.xerces.parsers.AbstractSaxParser.parse…at ….

Page 13: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 13

Parser XML: SAX - IIICome funziona un parser XML?• legge il documento XML in modo sequenziale,

carattere per carattere, partendo dall’inizio• “lancia eventi” che contengono informazioni sui

caratteri appena letti; per es: quando incontra un tag aperto, lancia l’evento startElement() che indica l’inizio di un elemento XML; quando incontra un tag chiuso lancia l’evento endElement(), ecc.

doc.XML

StreamXML

Parser startDocument

event

startElement

event

startDocument()

startElement()

endDocument()..

Applicazione Java

endDocumentevent

Page 14: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 14

Parser XML: SAX - IV

Si può scrivere un’applicazione (Java) che • “cattura” gli eventi lanciati dal parser durante l’analisi

del documento • li gestisce (per es. estrae dati e li salva, stampa a video,

ecc.) i parser possono essere usati per estrarre

informazioni da documenti XML; per es. JAXP (il parser SAX di Sun Microsystems), offre API in Java per “catturare” gli eventi e gestirli

Page 15: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 15

Parser XML: DOM - I

• I parser SAX fanno l’analisi sintattica del documento XML basandosi sul concetto di “evento”

• W3C ha definito le specifiche per una rappresentazione alternativa di documenti XML, maggiormente strutturata permette di analizzare e modificare il contenuto del documentoL’idea di base è quella di utilizzare il fatto che l’annidamento dei tag definisce una struttura gerarchica che permette una rappresentazione ad albero, in cui gli elementi sono “oggetti” che rappresentano i nodi dell’albero

DOM (Document Object Model) = W3C standard per gestione di documenti XML

Page 16: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 16

Parser XML: DOM - IIDOM (Document Object Model):• rappresenta i documenti con un modello ad oggetti• rappresenta i documenti come strutture ad albero• specifica delle interfacce (API) per “navigare”

all’interno del documento (albero) e per accedere alle varie parti

listinoPrezzi

caffè …

nome prezzo nome prezzo

caffè

DOCUMENT(listino)

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE listino SYSTEM “coffees.dtd"><listinoPrezzi> <caffe> <nome>Mocha Java</nome> <prezzo>11.95</ prezzo> </caffe> <caffe>    <nome>Sumatra</nome> <prezzo>12.50</ prezzo> </caffe></listinoPrezzi>

listino.xml Document

Root element

child elements

Page 17: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 17

Parser XML: DOM - III

• Molti parser (es. JAXP) sono conformi a DOM usano la rappresentazione DOM (libreria org.w3c.dom) per gestire documenti

• La librearia org.w3c.dom offre un supporto completo per creare, “navigare” e modificare un albero (documento) a partire dalla radice;

Page 18: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 18

Parser XML: DOM - IV

DOM è nato per trattare documenti:• è document-oriented (focalizzato sulle parti di cui un

documento si compone)• la gestione di strutture dati è possibile, ma un po’ ostica sono stati sviluppati altri modelli di rappresentazione che

facilitano l’accesso e la modifica; per es: JDOM, DOM4J, JAXB

• JAXB (Java Architecture for XML Binding) è nato apposta per trattare la rappresentazione XML di strutture dati

Page 19: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 19

XML Schema - I

• XML-Schema è una specifica di W3C (www.w3.org/TR/xmlschema-0/) alternativa (e più recente) di DTD, per definire linguaggi basati su XML; XML-Schema permette di:– specificare la struttura dei dati– specificare il tipo del contenuto dei dati

• NB: DTD permette di specificare la struttura, ma non il (tipo del) contenuto!

• Es: coffeeOrder.xsd definisce la struttura di documenti XML che descrivono ordini di caffè (definisce un linguaggio XML per descrivere ordini di caffè)

Page 20: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 20

XML Schema - II

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"><xsd:element name="coffeeOrder" type="CoffeeOrderType"/><xsd:complexType name="CoffeeOrderType"> <xsd:sequence> <xsd:element name="billTo" type="Address"/> <xsd:element name="items" type="Items"/> <xsd:element name= "comment" type= "xsd:string"

minOccurs= "0"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/></xsd:complexType>…

coffeeOrder.xsd [prima parte]

elementoopzionale

definizione del tipo complesso CoffeeOrderType come sequenza di elementi:• un elemento di tipo (complesso) Address• un elemento di tipo (complesso) Items• un elemento di tipo (semplice, predefinito) string

namespace per XML-Schema

dichiarazione dell’elemento (tag) coffeOrder (di tipo CoffeOrderType)

definizione dell’attributo orderDate, di elementi di tipo CoffeeOrderType

Page 21: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 21

XML Schema - III

…<xsd:complexType name="Address"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street"

type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="country"

type="xsd:string"/></xsd:complexType><xsd:complexType name="Items"> …</xsd:complexType></xsd:schema>

definizione del tipo complesso Address come sequenza di 3 elementi (name, street, city) di tipo (semplice, predefinito) string

definizione del tipo complesso Items

coffeeOrder.xsd [seconda parte]

Page 22: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 22

XML Schema - IV

<?xml version="1.0"?><coffeeOrder orderDate="1999-10-20" xmlns:xsi="http://www.w3.org/2001/XMLSchema-

instance"> <billTo country="Italy"> <name>Paolo Bianchi</name> <street>123 via Po</street> <city>Torino</city> </billTo> <items> <item partNum="242-NO" > <coffeeName>Lavazza Oro</coffeeName> <quantity>5</quantity> <price>19.99</price> </item> <item partNum="242-MU" > <coffeeName>Nescafe</coffeeName> <quantity>3</quantity> <price>19.98</price> </item> </items></coffeeOrder>

ESEMPIO: coffeeOrder.xml

all’inizio del documento XML dichiariamo L’XML-Schema di riferimento

Page 23: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 23

XML Schema - V

Per gestire schemi grossi o condividere definizioni è possibile importare uno schema esternoSupponiamo, per es, di definire il tipo Address in un documento (file) separato, address.xsd e poi di importarlo in coffeeOrder.xsd (dichiarandone una URI):<include schemaLocation=“http://www.example.com/schemas/address.xsd”/>

in questo modo coffeeOrder.xsd può dichiarare elementi di tipo Address come se la definizione fosse internaNB: uno schema può importare più schemi esterni mediante clausole include

Page 24: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 24

La principale caratteristica di XML è la separazione del contenuto del documento dal suo aspetto (grafico):

• Il documento XML rappresenta unicamente il contenuto informativo che si intende pubblicare

• L'aspetto finale del documento è prodotto per mezzo di fogli di stile scritti in XSL (eXstensible Stylesheet Language):

XML: XSL - I

<listinoPrezzi> <caffe> <nome>Mocha Java</nome> <prezzo>11.95</ prezzo> </caffe> <caffe>   <nome>Sumatra</nome> <prezzo>12.50</ prezzo> </caffe></listinoPrezzi>

documento XML doc. finale (per es. brochure)

marca prezzo

Mocha Java 11.95

Sumatra 12.50

Listino prezzi caffè

XSL

Page 25: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 25

Grazie a questa caratteristica possiamo gestire un’unica versione del contenuto (dati) che vogliamo rappresentare e poi generare visualizzazioni diverse (in formati diversi: word, pdf, excel, html, …) riutilizzo del contenuto in contesti diversi:

XML: XSL - II

documentoXML

pagina Web (HTML)

record in un database

brochure ecc…

Page 26: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 26

Un processore XSLT legge in input il file XML che rappresenta il contenuto + il foglio di stile XSL (che è un file di testo con estesione .xsl, per es: stile1.xsl) ed esegue la trasformazione e produce il risultato (un file di testo che può essere a sua volta interpretato come pagina HTML, record di database, ecc.)

XML: XSL - III

processore XSLT

documento XML

pagina Web (HTML)

record in un database

brochure ecc…stylesheetXSL

Page 27: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 27

Modalità per applicare una trasformazione XSL ad un documento XML (cioè per invocare il processore XSLT):

1. Il browser (per es. IE6) contiene un processore XSLT: il file XML viene caricato come una normale pagina; il foglio di stile da applicare è indicato nel file XML; il risultato viene visualizzato dal browser stesso

2. Un programma (per es. Java) standalone applica il foglio di stile XSL al file XML

3. Un Web Server applica il foglio di stile XSL al file XML e spedisce il risultato al client (browser) che ha originato l'applicazione

Vediamo un esempio della prima modalità

XML: XSL - IV

Page 28: A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language

a.a. 2004/05 Tecnologie Web 28

Il browser (per es. IE6) contiene un processore XSLT:• il file XML viene caricato come una normale pagina • nel file XML indichiamo qual è il foglio di stile da

applicare: <?xml-stylesheet type="text/xsl" href="listinoWeb.xsl"?>

• nel file XSL indichiamo il namespace specifico usato dal browser: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">

Files: coffees.dtd, listino.xml, listinoWeb.xsl, listinoCarta.xslPer provare l’applicazione di diversi fogli di stile XSL allo stesso documento XML:- in listino.xml mettere il riferimento a listinoWeb.xsl- aprire listino.xml con IE per vedere il risultato della trasformazione- modificare il riferimento in listino.xml (a listinoCarta.xsl)- aprire listino.xml con IE per vedere il risultato della trasformazione

XML: XSL - V