Xml annessi e connessi

54
XML annessi e connessi Domenico Briganti Francesco Angelillo

description

L’eXtensible Markup Language, fin dalla sua nascita, ha avuto un gran consenso da parte di tutti gli attori che operano nel mondo informatico, diventando di fatto la base di molte applicazioni, in particolar modo di quelle che fondano la loro attività sullo scambio di informazioni, per la sua semplicità ed interoperabilità.

Transcript of Xml annessi e connessi

Page 1: Xml annessi e connessi

XMLannessi e connessi

Domenico Briganti

Francesco Angelillo

Page 2: Xml annessi e connessi

Eidon School 2

L’eXtensible Markup Language, fin dalla sua nascita, ha avuto un gran consenso da parte di tutti gli attori che operano nel mondo informatico, diventando di fatto la base di molte applicazioni, in particolar modo di quelle che fondano la loro attività sullo scambio di informazioni, per la sua semplicità ed interoperabilità.

Page 3: Xml annessi e connessi

Eidon School 3

Agenda

XML e Namespace Accenni di

XMLSchema XSL XPath XSL-Fo

Page 4: Xml annessi e connessi

Eidon School 4

XML

Page 5: Xml annessi e connessi

Eidon School 5

Le origini di XML 1/2L’XML è un metalinguaggio, derivato da SGML (Standard Generalized Markup Language standard internazionale ISO 8879 del 1986) che ha il compito di rappresentare informazioni strutturate più rigidamente rispetto al suo predecessore. L’SGML deriva dal GML, creato da IBM nel ’69, che aveva come obiettivo quello di rendere i documenti elettronici più comprensibili e versatili, indipendenti dal mezzo di consultazione e di sollevare l’autore dal compito di impaginazione (per qualunque output, carta, pagina web, presentazione, ecc.)...e per durare per tempo!

Page 6: Xml annessi e connessi

Eidon School 6

Le origini di XML 2/2L’SGML non ha avuto notorietà essendo complicato da implementare.

L’HTML, un altro derivato di SGML, ha avuto invece un successo enorme per la sua semplicità e per il boom dei web browser.

L’XML è un metalinguaggio che mira a migliorare sia l’SGML perché complesso, sia l’HTML (perché mischia nel testo informazioni di impaginazione e formattazione).

È stato formalizzato dal W3C nel febbraio ’98, attualmente (2009) la versione 1.1 è W3C recommendation.

Page 7: Xml annessi e connessi

Eidon School 7

Ma cos’è XML? È una raccomandazione del W3C

http://www.w3.org/XML Consiste in un insieme di tag (marcatori di testo che

sono racchiusi da “<“ e “>”) e attributi definiti dall’utente che permettono di rappresentare un’informazione in maniera gerarchica.

È uno standard aperto libero da royalty, brevetti, copyright o segreti industriali.

Auto esplicativo. Creabile ed editabile con un semplice editor di testo.

Page 8: Xml annessi e connessi

Eidon School 8

..e cosa non è! Un linguaggio di programmazione. Un sostituto di HTML. Un protocollo di comunicazione. Uno standard binario.

Page 9: Xml annessi e connessi

Eidon School 9

Vediamo un esempio di XML<?xml version="1.1" encoding=”UTF-8”?><computer>

<!—questo è un commento--><memoria tipo=”DDR” unit=”Mb”>512</memoria><CPU>1.2 GHz</CPU><tastiera>400 tasti</tastiera><HD>

<HardDisk>7200 rpm 5Gb</HardDisk><HardDisk>7200 rpm 224Tb</HardDisk>

</HD><descrizione><![CDATA[ questo è

un ottimo <<PC>>!]]></descrizione><lettore/>

</computer>

Page 10: Xml annessi e connessi

Eidon School 10

Esaminiamolo!Questa è una fantomatica descrizione di un computer.

Un documento XML è formato da due parti: Un prologo facoltativo (ma raccomandato per

indicare la versione del documento xml e la codifica) che vedremo tra pochissimo

Il corpo del documento

Page 11: Xml annessi e connessi

Eidon School 11

Processing Instructions Sono delle direttive che forniscono informazioni su

come leggere/parserizzare i file xml. Sono racchiusi tra “<?” e “?>”. Come per i commenti, possono trovarsi in

qualunque punto del documento ma non dentro un tag es. <tag NO-QUI>.

<?robots index="yes" follow="no"?>

<?xml-stylesheet href="person.css" type="text/css"?>

<?php mysql_connect("database.unc.edu", "debra", "secret"); ?>

Page 12: Xml annessi e connessi

Eidon School 12

Il prologo (XML Declaration) È una process instruction riservata Se c’è, deve trovarsi in testa al documento

Nell’esempio che abbiamo visto era:

<?xml version="1.1" encoding=”UTF-8”?>

Il primo indica la versione di XML utilizzata, la più recente è la 1.1. Il secondo l’encoding del documento (in questo caso UTF-8, che è anche il charterset di default per XML).

È possibile indicare anche standalone="yes" Xml, XML, xml ecc. in qualunque combinazione di case sono

riservati.

Page 13: Xml annessi e connessi

Eidon School 13

Il corpoDopo il possibile prologo, segue una radice da cui si origina l’albero del documento. Come l’esempio dimostra, la radice dell’elemento contiene i dati (le informazioni vere e proprie) tra i marcatori mentre quest’ultimi si occupano di definire la struttura gerarchica del documento.

Page 14: Xml annessi e connessi

Eidon School 14

Strutturare al meglio!Vediamo che le informazioni, i dati veri e propri, del documento sono contenuti dentro dei tag all’interno dei quali è possibile inserire anche altri tag figli.

Benché sia ammissibile avere tag figli e testo dentro lo stesso marcatore (“tag a contenuto misto”), ad esempio:

<HD>Haqdrdisk<HardQ>5</ HardQ>

</HD>

è sconsigliato, in quanto si complica la creazione di documenti che controllano la correttezza del nostro XML

Page 15: Xml annessi e connessi

Eidon School 15

AttributiI nostri elementi possono contenere anche attributi come questi:

<memoria tipo=”DDR” unit=”Mb”>512</memoria>

possiamo anche scrivere le stesse informazioni così:

<memoria tipo=”DDR” unit=”Mb” qta=”512”/>

oppure cosi:<memoria>

<tipo>DDR</tipo>

<unit>Mb</unit>

<qta>512</qta>

</memoria>

oppure cosi ancora:

<memoria>512Mb DDR</memoria>

Qual è secondo voi la rappresentazione migliore?

BENE!! OVVIAMENTE LA PRIMA FORMA!!è più utilizzata perché si tende a inserire negli

attributi delle proprietà che riguardano il valore contenuto nel tag, evitando cosi di andare a

modificare il valore di un attributo, meno flessibile di un testo contenuto in un tag, o di

dover analizzare la stringa “512Mb DDR” come nell’ultimo caso.

Page 16: Xml annessi e connessi

Eidon School 16

Sezioni CDATAPossiamo notare una sezione CDATA (Character Data):

<descrizione><![CDATA[ questo è

un ottimo <<PC>>!]]>

</descrizione>

Questa è utilizzata per inserire del testo in cui sono presenti anche caratteri particolari come “&”, “<”, “>” senza che siano interpretati come riferimenti a markup.

Deve iniziare con “<![CDATA[”. E terminare con “]]>”. Non può contenere al suo interno la stringa “]]>”.

Page 17: Xml annessi e connessi

Eidon School 17

Dove lo abbiamo già visto?

Entità 1/2

Per poter usare caratteri significativi per XML si usano le entità: Cinque sono le predefinite &lt;(<) &gt;(>) &amp;(&) &quot;(“)

&apos;(‘) Il DTD viene usato per dichiarare entità:

<!ENTITY fnof "&#402;">

<!ENTITY coordinate "((x, y) | (y, x) | (q, r) | (r, q))“ >

Cosa succede se scrivo <alert>Il totale è < 0</alert> ?server.dtd:<!ENTITY jvmRoute "rcstom01cinematv"><!ENTITY SHUTDOWNport "8419"><!ENTITY HTTPport "8097"><!ENTITY AJPport "8031">

conf/server.xml:<!DOCTYPE Server SYSTEM "../server.dtd"><Server port="&SHUTDOWNport;“

shutdown="SHUTDOWN">

Page 18: Xml annessi e connessi

Eidon School 18

DEMORisolvi entità

Page 19: Xml annessi e connessi

Eidon School 19

Entità 2/2

È possibile inserire come entità anche un intero documento, anche esterno:

<!ENTITY footer SYSTEM "http://www.oreilly.com/boilerplate/footer.xml">

Page 20: Xml annessi e connessi

Eidon School 20

I tipi di documento XMLI documenti XML possono essere di due tipi:

Ben Formati: è il documento che rispetta le regole di XML (non può altrimenti essere un documento xml!).

Validi: oltre a essere ben formati deve anche rispondere correttamente ad un controllo semantico che permette di sapere se il documento ha un significato rispetto a quello che vogliamo. Un programma di elaborazione matematica gestisce l’importazione di documenti XML contenenti determinati tag, diversi per un programma bancario. Questo controllo è opzionale.

Page 21: Xml annessi e connessi

Eidon School 21

Le regole di XML per documenti well-format

L’intero documento deve essere racchiuso in un unico tag radice.

I tag devono essere annidati in maniera corretta, ogni tag di apertura deve essere seguito dal suo di chiusura dentro i quali possono esserci altri tag sempre annidati in maniera corretta.

Gli attributi possono essere solo inseriti nei tag di apertura. Lo stesso attributo non può comparire più di una volta

all’interno dello stesso tag. Ogni attributo inserito deve avere un valore e deve essere

racchiuso tra doppi o singoli apici. I nomi dei marcatori e degli attributi sono Case Sensitive.

Page 22: Xml annessi e connessi

Eidon School 22

DOC TYPE Un documento valido deve avere un DTD (o,

come vedremo più avanti, un XML Schema) con cui può essere validato

Il DOCTYPE deve essere inserito tra l’xml declaration e il root element

Subito dopo “<!DOCTYPE” è presente in nome del tag di root del documento

SYSTEM o PUBLIC?

Page 23: Xml annessi e connessi

Eidon School 23

DOCTYPE: esempi XHTML 1.0 Strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Page 24: Xml annessi e connessi

Eidon School 24

DOCTYPE: esempi<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>

<title>XHTML 1.0 Example</title>

….

Page 25: Xml annessi e connessi

Eidon School 25

DOCTYPE: esempi<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>CommunityAtCasa</display-name>

Page 26: Xml annessi e connessi

Eidon School 26

NAMESPACE

Page 27: Xml annessi e connessi

Eidon School 27

Il problemaIn un unico documento XML possiamo rappresentare informazioni di natura diversa:

<autovettura>

<modello type="I">Honda CRW</modello>

<pneumatici>

<modello>Pirelli P9999</modello>

</pneumatici>

</autovettura>

Come distinguere i vari tag in base al loro significato?

Page 28: Xml annessi e connessi

Eidon School 28

La soluzionePer dare un significato differente ai vari tag si usano dei prefissi, identificatori posti prima del nome del marcatore e separati dai “:” da quest’ultimo:

<?xml:namespace ns="http://some/uri1" prefix="au"?> <?xml:namespace ns="http://some/url2" prefix="pn"?>

<au:autovettura>

<au:modello type="I">Honda CRW</au:modello>

<pn:pneumatici>

<pn:modello>Pirelli P9999</pn:modello>

</pn:pneumatici>

</au:autovettura>

Page 29: Xml annessi e connessi

Eidon School 29

Namespace È una recommendation di W3C dal 1999. La direttiva “xml:namespace” indica a quale URI

(Uniform Resource Identifier) si riferisce un determinato prefisso. Si usa un URI perché unico in Internet.

Un marcatore che usa un prefisso di dice che ha un “nome qualificato”.

Si può specificare anche al suo primo utilizzo e/o dentro un tag (e ha validità solo nei nodi figli):

<au:autovettura xmlns:au="http://some/uri">

Page 30: Xml annessi e connessi

Eidon School 30

Namespace di default Tutti i tag che non hanno un prefisso appartengono

al namespace di default. Il namespace di default può anche essere dichiarato

attraverso la parola chiave riservata xmlns NON seguita da prefisso:

<autovettura xmlns="http://some/uri"> Il namespace di default non dichiarato ha l’URI ""

Page 31: Xml annessi e connessi

Eidon School 31

Namespace e attributi I namespace si possono applicare anche agli

attributi:

<au:modello au:type="I">Honda CRW</au:modello> Il namespace di default non si applica agli attributi

privi di prefisso. Se relativi a namespace diversi, e che puntano a URI

diversi, gli attributi possono avere nome locale uguale.

Page 32: Xml annessi e connessi

Eidon School 32

Un esempio<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>msite</display-name>

<description>

MSITE - sito mobile della gazzetta dello sport

</description>

Page 33: Xml annessi e connessi

Eidon School 33

Facciamo un altro esempio!<!-- http://www.w3.org is bound to n1 and n2 and is the

default -->

<x xmlns:n1="http://www.w3.org"

xmlns:n2="http://www.w3.org"

xmlns="http://www.w3.org" >

<alex a="1" b="2" />

<frantz a="1" n1:a="2" />

<ficarra a="1" a="2" />

<picone n1:a="1" n2:a="2" />

</x>

Page 34: Xml annessi e connessi

Eidon School 34

DEMOTest Namespace

Page 35: Xml annessi e connessi

Eidon School 35

DEMOMathML e SVG in Mozilla

Page 36: Xml annessi e connessi

Eidon School 36

ENCODING

Page 37: Xml annessi e connessi

Eidon School 37

Mai visto qualcosa del genere? Simbolo dell'euro � € anche questo è il simbolo dell’euro!! Vari “?” <?xml version='1.0' encoding='UTF-8'?>

Quante volte vi hanno detto che su una pagina html/xml le accentate non si vedono?

…€…

Page 38: Xml annessi e connessi

Eidon School 38

Character-Set Quasi tutti i caratteri di ogni lingua sono codificati

nello standard UNICODE che associa un numero ad un simbolo

L’encoding dice come quel numero è scritto fisicamente nel file

I parser XML possono applicare un meccanismo di auto-detection dell’encoding (anche grazie al Byte Order Mark di UTF)

MIME Type text/xml -> US-ASCII, applicazion/xml -> Il client tenta di capire l’econding come nel punto precedente

Page 39: Xml annessi e connessi

Eidon School 39

Encoding declaration<?xml version="1.0" encoding="ISO-8859-1"?>

È caldamente consigliato dichiarare l’encoding Se non viene fatto, il default è UTF-8 o UTF-16 Un XML scritto con caratteri ASCII puri non ha

problemi a non dichiarare l’encoding…ma è,à,ù,€ non fanno parte di ASCII 7 bit!

ASCII: <città>Mondovì più Como</città>

Letto da UTF-8: <città>Mondovì più Como</città>

Letto da Latin1: <citt?>Mondov? pi? Como</citt?>

Page 40: Xml annessi e connessi

Eidon School 40

Character References 1/2 Da la possibilità di inserire un carattere usando il

codice UNICODE: &#1114; decimale &#x45A; esadecimale

Non può essere usato nei nomi di tag e attributi Può essere usato nelle Entità:

<!ENTITY sigma "&#x3C3;"> (σ)

Page 41: Xml annessi e connessi

Eidon School 41

Character References 2/2 Esempio (proverbio greco):

<maxim>&#x3C3;&#x3BF;&#x3C6;&#x3CC;&#x3C2; &#x3AD;&#x3B1;&#x3C5;&#x3C4;&#x3CC;&#x3BD; &#x3B3;&#x3B9;&#x3B3;&#x3BD;&#x3CE;&#x3C3;&#x3BA;&#x3B5;&#x3B9;</maxim>

“The wise man knows himself”

Page 42: Xml annessi e connessi

Eidon School 42

DEMOEncoding

Page 43: Xml annessi e connessi

Eidon School 43

Accenni ai contenuti del corso

Page 44: Xml annessi e connessi

Eidon School 44

CSS e XSLL’importanza che il W3C ha dato alla separazione delle informazioni in dati e presentazione ha portato la necessita di sviluppare nuove tecnologie capaci di supportare tale divisione. Nasce cosi CSS per HTML, seguito da XSL per XML, due tecnologie chiave per il futuro del web, il web semantico, in cui le macchine sono capaci di comprendere e trattare le informazioni senza la fatica di dover riconoscerle tra le parti di formattazione.

Page 45: Xml annessi e connessi

Eidon School 45

XSLÈ una famiglia di linguaggi per la trasformazione e presentazione di documenti XML, si compone di: XPath: recupera determinati elementi di un XML XSLT: Trasforma i file XML in altri formati XSL-Fo: Formattazione

Non sostituisce il CSS, l’XSL è molto utile per

trasformare nella forma i contenuti, mentre il

CSS resta per assegnare gli stili di formattazione ai

tag HTML.

Page 46: Xml annessi e connessi

Eidon School 46

XPath Sintassi per localizzare elementi o attributi in

documenti XML Namespaces aware String-based (non XML) Riesce a manipolare stringhe, valutare espressioni

booleane o far calcoli sui nodi o sui loro contenuti. Usato anche da altre tecnologie come XSLT e

XPointer È considerato l’SQL di XML

Page 47: Xml annessi e connessi

Eidon School 47

XSLT Raccomandazione del W3C (1.0) del novembre 1999 . W3C: “Linguaggio per trasformate un documento

XML in un altro documento sempre XML”, ma fa molto altro! (unire due documenti XML, ordinare elementi, filtrarli, crearne di nuovi, cambiare strutturalmente il documento).

Namespace: “http://www.w3.org/1999/XSL/Transform”. È spesso utilizzato per trasformare un XML in

XHTML per la visualizzazione sul web. La trasformazione di un XML attraverso un XSLT

viene effettuata dal parser XML.

Page 48: Xml annessi e connessi

Eidon School 48

XSL-Fo Raccomandazione del W3C dell’ottobre 2001. Namespace: xmlns:fo=“http://www.w3.org/1999/XSL/Format”

Trasforma un documento XML in uno Formattato secondo un determinato XSL-Fo.

Formati di output: PostScript PDF Testo PCL RTF …

Page 49: Xml annessi e connessi

Eidon School 49

XMLSchema Linguaggio per definire delle regole di validità per documenti

XML W3C Raccommendation dal 2001 Più potente del DTD (datatypes…) È XML quindi manipolabile come qualunque altro documento

XML Supporta i namespaces Estensibile Uno schema può validare anche solo una porzione di

documenti in cui è definito un namespace, viceversa, uno documento XML può avere molti XSD per i diversi namespace che ingloba.

Page 50: Xml annessi e connessi

Eidon School 50

Java & XML Parser DOM, SAX, StAX, TrAX

Page 51: Xml annessi e connessi

Eidon School 51

Parser: DOM vs. SAX Quando usare DOM:

Per percorrere l’albero avanti e indietro Manipolare il documento in molte parti Si ha a disposizione molta memoria perché

l’albero XML viene ricostruito in essa Creare un nuovo documento

Quando usare SAX: Percorrere l’albero solo “forward only” Leggere solo poche informazioni Si ha poca memoria a disposizione

Page 52: Xml annessi e connessi

Eidon School 52

Ci vediamo al corso!!Ci vediamo al corso!!

Page 53: Xml annessi e connessi

Eidon School 53

Riferimenti XML in a Nutshell, 3rd Edition (ISBN: 0-596-00764-7) http://en.wikipedia.org/wiki/

Standard_Generalized_Markup_Language http://www.sgmlsource.com/history/roots.htm

Page 54: Xml annessi e connessi

Eidon School 54