Xml Xslt

124
XML, XSL e tecnologie correlate Domenico Briganti [email protected] Hackmeeting Genova2004

description

An introduction to XML and related technology

Transcript of Xml Xslt

Page 1: Xml  Xslt

XML, XSL e tecnologie correlate

Domenico Briganti

[email protected]

Hackmeeting Genova2004

Page 2: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 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 lo attività sullo scambio di informazioni per la sua semplicità ed interoperabilità. (ricerca di XML con Google -> 35 milioni di risultati!)

Page 3: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 3

Agenda

XML e Namespace DTD e XMLSchema (XSD) CSS e XSL XSLT XSL-Fo Introduzione ai WebServices Accenno a SVG, SMIL, RSS, XUL

Page 4: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 4

Cosa scegliere?IL PROGRAMMA E’ TROPPO GRANDE!!

Page 5: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 5

XML

Page 6: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 6

Le origini di XML 1/2L’XML è un metalinguaggio, derivato da SGML (Standard Generalized Markup Language standard internazionale ISO 8879 del 1986) e da HTML, che ha il compito di rappresentare informazioni strutturate. L’SGML, creato originariamente da IBM col nome di GML nel ’69, si poneva 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.)...

Page 7: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 7

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 facilità 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 la versione 1.1 è in fase di candiate recommendation.

Page 8: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 8

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 9: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 9

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

Page 10: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 10

Vediamo un esempio di XML<?xml version="1.0" 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 11: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 11

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 e la codifica). Il corpo del documento.

Page 12: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 12

Il prologo È racchiuso tra “<?” e “?>”. Indica una direttiva (Processing Instruction) per il parser.

Nell’esempio che abbiamo visto era:

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

Il primo indica la versione di XML utilizzata, attualmente l’unica è la 1.0 e l’encoding del documento (in questo caso UTF-8, la versione a 8 bit di UNICODE ).

Page 13: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 13

Il corpoAl 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  Xslt

Domenico Briganti - Hackmeeting Genova2004 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 (lo vedremo più avanti parlando di XSL Schema).

Page 15: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 15

I commenti Sono racchiusi tra i marcatori “<--” e “-->”. Non possono contenere la sequenza di caratteri “--”. Non possono essere inseriti all’interno di un tag.

Esempio:

<!-- questo è un commento

Su due linee-->

Page 16: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 16

I tagI tag che non hanno contenuto possono evitare il marcatore di chiusura in questo modo:

<lettore/>

Il nome del tag non può contenere: Spazi Virgolette e apostrofi Caratteri <, >, $ Percentuali e punto e virgola È case sensitive

Page 17: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 17

AttributiI nostri elementi possono contenere anche attributi come questi:

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

Benché si possa scrivere anche 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>

è più utilizzato il primo esempio 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 18: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 18

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 19: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 19

EntitàPer poter utilizzare caratteri significativi per XML, senza che siamo interpretati come markup e senza utilizzare sezioni CDATA, si utilizzano le entità.

Infatti per poter utilizzare caratteri come “&” dentro un elemento in condizioni normali devono apparire nella forma &#ddd; (per inserire un carattere Unicode attraverso il suo codice decimale) o &#xhhhh (per la versione in esadecimale). Esistono anche dei delle entità richiamabili per riferimento, come:

&lt; &gt; &amp; &quot; &apos;

che indicano rispettivamente:

minore di, maggiore di, & commerciale, virgolette e apostrofo.

Page 20: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 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  Xslt

Domenico Briganti - Hackmeeting Genova2004 21

Le regole di XML per documenti WF 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 apici. I nomi dei marcatori e degli attributi sono Case Sensitive.

Page 22: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 22

NAMESPACE

Page 23: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 23

Namespace: 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? Con i Namespace

Page 24: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 24

Namespace: 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/uri prefix=“au"?> <?xml:namespace ns=http://some/url 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 25: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 25

Namespace È una recommendation di W3C del 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 26: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 26

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”>

Page 27: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 27

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 28: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 28

DTD e XML Schema

Page 29: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 29

Validare un documentoPer controllare se un documento è valido si possono utilizzare varie tecnologie:

DTD (Document Type Definition), obsoleto (daremo solo un accenno).

XDR (XML-Data Reduced) è lo “schema language” utilizzato da Microsoft nell’attesa della “draft implementation” di XSD del W3C (non standard e qui non trattato).

XSD (XML Schema Language) è lo schema del W3C che stanno adottando tutti parser XML.

Page 30: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 30

Parser Implementazione software per leggere e scrivere

XML: DOM (Documente Object Model): permette una

rappresentazione dell’intero XML in memoria. SAX (Simple Api for XML): mentre legge un XML

lancia eventi su determinati Elementi o Attributi, intercettabili da funzioni di gestione.

Page 31: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 31

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 32: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 32

DTD Deriva da SGML e nato prima di XML. Definisce le parti di un documento (Nodi, Attributi…) È uno standard non XML-like, difficile da scrivere e leggere

automaticamente. Può essere inserito in un documento o può stare in un file

separato (soprattutto se si deve condividere tra molti documenti).

È molto limitato nella possibilità di controllare tipi di dati. Non supporta XML namespaces. Non supporta constraints. Non supporta il controllo degli attributi.

Page 33: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 33

Esempio di DTD<!DOCTYPE catalog [

<!ELEMENT catalog (book+) >

<!ELEMENT book (author, title, genre, price, publish_date, description) >

<!ATTLIST book id ID #REQUIRED >

<!ELEMENT author (#PCDATA) >

<!ELEMENT title (#PCDATA) >

<!ELEMENT genre (#PCDATA) >

<!ELEMENT price (#PCDATA) >

<!ELEMENT publish_date (#PCDATA) >

<!ELEMENT description (#PCDATA) >

]>

<?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella</author> <title>XML Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000</publish_date> <description>A look…</description> </book>

Page 34: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 34

XSD (XML Schema Definition) Sintassi XML-like (è di fatto un documento XML). Controllo di tipi base (stringa, interi, date, ecc.), con

limitazioni. Controllo di tipo complessi (che contengono una

serie o gerarchia di nodi al loro interno). Controllo degli attributi. 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.

È più complesso del DTD (ma non molto IHMO).

Page 35: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 35

XSD: un esempio<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

elementFormDefault="qualified"><xsd:element name="merceologia">

<xsd:complexType> <xsd:sequence>

<xsd:element name="row" maxOccurs="unbounded">

<xsd:complexType>…………

</xsd:complexType> </xsd:element>

</xsd:sequence></xsd:complexType>

</xsd:element></xsd:schema>

Page 36: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 36

XSD: assegnarlo a un XML<merceologia xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="valida1.xsd">

Viene indicato quale file XSD utilizzare per validare il tag merceologia e i suoi discendenti.

Page 37: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 37

XSD: l’elemento radice <xsd:schema

xmlns:xsd="http://www.w3.org/2001/XMLSchema” elementFormDefault="qualified">

Il prefisso xsd si riferisce al namespace definito da W3C e si applica a tutti i tag che hanno tale prefisso.

Page 38: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 38

XSD: tipi di elemento Elementi semplici:

dentro i quali non compaiono altri elementi o attributi.

Elementi complessi: tutti gli altri (nodi che contengono attributi e altri nodi)

<xsd:element name=“cognome" type="xsd:string"/>

<xsd:element name="merceologia">

<xsd:complexType>

<xsd:sequence>

<xsd:element ref=“row" maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

Page 39: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 39

XSD: tipi sempliciI tipi base di XMLSchema sono molti, tra i quali: String, Integer, Decimal, Boolean, Date, Time.

Su di essi è possibile applicare delle limitazione, come:

<xs:element name="ret_unit">

<xs:simpleType>

<xs:restriction base="xs:integer">

<xs:minInclusive value="1"/>

<xs:maxInclusive value="1000"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

Page 40: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 40

XSD: limitazioni sui tipi StringaÈ possibile anche imporre dei constraints sui tipi stringa con le espressioni regolari:

<xs:element name="nome">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:pattern value="[0-9]+ - [\w|\s]+"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

Page 41: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 41

XSD: enumerazioniLimitazioni in cui il valore può essere solo del tipo specificato:

<xs:element name="type">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="Macrosettore"/>

<xs:enumeration value="Medium"/>

<xs:enumeration value="Famiglia"/>

<xs:enumeration value="Settore"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

Page 42: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 42

XSD: tipi complessiEcco come si presenta la dichiarazione:

<xsd:element name="merceologia">

<xsd:complexType>

<xsd:sequence>

<xsd:element ref="row“ maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

Page 43: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 43

XSD: tipi complessiI tipi complessi vengono dichiarati in tre modi:

Sequence: i tag indicati nello schema devono apparire tutti ed in ordine nel file XML.

Choice: può esserci un solo elemento nell’origine XML di quelli dichiarati con questo costruttore.

All: gli elementi dichiarati qui possono apparire in un ordine non prestabilito.

La struttura di un elemento complesso può essere dichiarata anche a parte per essere utilizzata in vari punti dello schema.

Page 44: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 44

XSD: tag semplici con attributi<xsd:element name=“ret_unit">

<xsd:complexType>

<xsd:simpleContent>

<xsd:extension base=“xsd:integer”>

<xsd:attribute name=“tipo” type=“xsd:string”/>

</xsd:extension>

<xsd:simplyContent>

</xsd:complexType>

</xsd:element>

Page 45: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 45

XSD: tag vuoti e contenuto misto Vengono definiti i tag vuoti come tipo complessi:

<xsd:element name=“tagvuoto">

<xsd:complexType/>

</xsd:element> Mentre i tag a contenuto misto:

<xsd:element name=“tagacontenutomisto">

<xsd:complexType mixed=“true”>

<xsd:sequence>

<xsd:element name=“tagfiglio” type=“xsd:string”/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

Page 46: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 46

XSD: vincoli sui tipi complessiEsistono anche dei constraints sui tipi complessi, il più utilizzato è certamente quello che limita il numero di nodi:

<xsd:element name="merceologia">

<xsd:complexType>

<xsd:sequence>

<xsd:element ref="row" minOccurs="0"

maxOccurs="100"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

Page 47: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 47

XSD: attributiGli attributi si applicano ai tipi complessi, hanno questa forma:

<xsd:attribute name="open" type="xsd:boolean" use="required"/>

anche qui è possibile applicare dei limiti. L’attributo use può essere:

Default: in concomitanza con l’attributo value, è indicato per dare un valore di default all’attributo.

Required: indica chè l’attributo è atteso. Non esserci, l’attributo è opzionale.

Page 48: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 48

XSD: parser in JAXPDefaultHandler heandler = new DefaultHandler();

SAXParserFactory spf = SAXParserFactory.newInstance();

spf.setNamespaceAware(true);

spf.setValidating(true);

SAXParser saxParser = spf.newSAXParser();

saxParser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");

XMLReader xmlReader = saxParser.getXMLReader();

xmlReader.setContentHandler(heandler);

xmlReader.setErrorHandler(new MyErrorHandler());

xmlReader.parse(filename);

Page 49: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 49

CSS e XSL

Page 50: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 50

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 51: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 51

CSS: Cascading Style Sheet Ratifica del W3C (level1 dic. 1996, level2 mag. 1998). Semplice documento che descrive lo style degli

elementi che contiene una pagina web. I documenti vengono applicati a “cascata”. Applicabile a (X)HTML e con fatica a XML. Inseribile nella pagina web (attraverso attributi) o

applicabile con un link ad un file “.css”. Applicabile contemporaneamente a diverse pagine. Non XML-Like.

Page 52: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 52

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 53: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 53

Differenza tra CSS e XSLCSS     XSL  

Formattazione (X)HTML Sì No Formattazione XML Sì Si Funzionalità avanzate (istruzioni

if, cicli for ecc.) No Si Trasformazioni dal formato

originario ad altri formati No Si

(Fonte: w3.org)

Page 54: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 54

XSLF

onte

: w

3.or

g

Page 55: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 55

XPath

Page 56: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 56

XPath Raccomandazione del W3C del novembre 1999. È usato soprattutto da XSL e XPointer. Con una semplice stringa che descrive il percorso

tra la radice e il nodo destinazione si riesce a recuperare parti di documenti XML o specifici valori di un tag o una serie di tag.

Ma anche manipolare stringhe, valutare espressioni booleane o far calcoli sui nodi o sui loro contenuti.

Page 57: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 57

XPath: esempi / Recupera il primo nodo del file XML, incluso ogni

commento o Processing Instructions, esclusa la dichiarazione XML.

//RAG_SOC AbrreviatedAbsoluteLocationPath, seleziona tutti gli elementi RAG_SOC del documento.

//CODICE[. = 1234] Ricerca tutti gli elementi CODICE che hanno il valore 1234.

//CODICE[@origin=‘Florida’] Ricerca tutti gli elementi CODICE che hanno l’attributo origin settato a

Florida.

.//CODICE Seleziona tutti gli elementi CODICE che sono contenuti nel sottoalbero del nodo corrente.

//* Seleziona tutti gli elementi del documento.

Page 58: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 58

XPath: esempi (più complessi)<xsl:decimal-format name="euro" decimal-

separator="," grouping-separator="."/> format-number(imponibile, '#.##0,00','euro') ../@bordi[. = 'solid'] count(/ANAGRAFICA/RECORD/rs:data/z:row) format-number(sum(z:row/@VAL), '#.##0,00','euro') count(z:row[@ANOMALIA = '6']) count(RECORD/DATA/z:row[@ANOMALIA = '8' or @ANOMALIA

= '1']) format-number((sum(RECORD/DATA/z:row/@VALORE) +

TESTATA/VALOREVENDITAVARIE), '#.##0,00','euro')

Page 59: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 59

XPath: funzioniEcco un piccolo elenco di funzioni che è possibile trovare in xpath:

Concat() Substring() Ceiling() Floor() Sum() Round()

….

Page 60: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 60

XSLT

Page 61: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 61

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 62: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 62

XSLT: esempio1 (XML)<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="esempio1.xslt"?>

<ANAGRAFICA>

<TESTATA>

<NOMEMERCATO>TEST</NOMEMERCATO>

<DATA>18 dicembre 2003 16.05.29</DATA>

</TESTATA>

<RECORD>

<CODICE_CLIENTE>000105</CODICE_CLIENTE>

<INDIRIZZO>VIA BIANCOSPINI 20</INDIRIZZO>

….

Page 63: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 63

XSLT: esempio1 (XSLT)<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/><xsl:template match="ANAGRAFICA"> <html><body>

<h1><xsl:value-of select="TESTATA/NOMEMERCATO"/></h1><hr/><table bgcolor="yellow" border="1" >

<tbody> <tr> <th>Cod. Cliente</th>

<th>Ragione Sociale</th> <th>P. iva</th> <th>Indirizzo</th></tr><xsl:for-each select="RECORD"> <tr> <td><xsl:value-of select="CODICE_CLIENTE"/></td> <td><xsl:value-of select="RAG_SOC"/></td> ….

Page 64: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 64

XSLT: Output (XHMTL)

Page 65: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 65

XSLT: il tag di root<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"

xmlns="http://www.w3.org/TR/REC-html40"

version="1.0">

È obbligatorio indicare la versione. È necessario il namespace FO per Mozilla/Firebird.

Page 66: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 66

XSLT: il tag template …

<xsl:template match="ANAGRAFICA">

Viene utilizzato per applicare il template ad un nodo, in questo caso al nodo radice del documento, quando viene verificato il match tra il suo attributo (un’espressione XPath) e un nodo del documento XML. Viene processato il suo contenuto e mandato al documento che si sta costruendo in output.

Page 67: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 67

XSLT: xsl:value-of…

<h1><xsl:value-of select=“XPathExpression"/></h1>

...

Potete immaginare già a cosa serva... Recupera le informazioni puntate dalla stringa XPath. I tag che non appartengono al namespace xsl vengono riportati cosi come sono sul documento di output.

Page 68: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 68

XSLT: xsl:for-each…

<xsl:for-each select="RECORD">

Anche qui non è difficile capire significato: per ogni tag RECORD contenuto nel nodo corrente, applica la struttura al suo interno. Naturalmente, al posto di RECORD, poteva esserci una qualunque instruzione XPath!

Page 69: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 69

XSLT: xsl:attribute<a onclick=“<xsl:value-of select="@name"/>”>

<img hspace="0“ src="img.gif“ border="0">

<xsl:attribute name="id">

Img<xsl:value-of select="@name"/>

</xsl:attribute>

</img>

</a>

Page 70: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 70

XSLT: xsl:if<xsl:if test="js:IsEan(string(@ITEM_NO))">

<fo:instream-foreign-object width="28mm" height="8mm">

<svg:svg height="8mm" width="28mm">

….

</fo:instream-foreign-object>

</xsl:if>

Page 71: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 71

XSLT: xsl:choose<xsl:choose>

<xsl:when test="trasporto = 'D'"><xsl:choose>

<xsl:when test="../@bordi[. = 'solid']"><fo:block text-align="center">Destinatario</fo:block>

</xsl:when><xsl:otherwise>

<fo:block><fo:instream-foreign-object>

<svg:svg width="2mm">….</svg:svg>

</fo:instream-foreign-object></fo:block>

</xsl:otherwise></xsl:choose>

</xsl:when><xsl:otherwise>

<fo:block text-align="center">Mittente</fo:block></xsl:otherwise>

</xsl:choose>

Page 72: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 72

XSLT: altri elementi comuni xsl:copy xsl:decimal-format xsl:sort xsl:variable

Spiegati con degli esempi (File: sito/stylesheet.xsl)

O funzioni tra cui: current() document() format-number() function-available()

Page 73: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 73

XSL-Fo

Page 74: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 74

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 75: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 75

XSL-Fo: processo di generazione

Page 76: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 76

XSL-Fo: Struttura del documento<?xml version="1.0"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">  <fo:layout-master-set>        <!--modello pagina (quardare slide succ.)-->  </fo:layout-master-set>

  <fo:declarations>    <!--dichiarazioni globali-->  </fo:declarations>    <fo:page-sequence>    <!--contenuti pagine-->  </fo:page-sequence></fo:root>F

onte

: ht

ml.i

t

Page 77: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 77

XSL-Fo: esempio (from Cocoon project)

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"><fo:layout-master-set>

<fo:simple-page-master master-name="page" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="2cm" margin-left="2.5cm" margin-right="2.5cm">

<fo:region-before extent="3cm"/> <fo:region-body margin-top="3cm"/> <fo:region-after extent="1.5cm"/></fo:simple-page-master><fo:page-sequence-master master-name="all"> <fo:repeatable-page-master-alternatives> <fo:conditional-page-master-reference master-reference="page" page-position="first"/> </fo:repeatable-page-master-alternatives></fo:page-sequence-master>

</fo:layout-master-set><fo:page-sequence master-reference="all"> <fo:static-content flow-name="xsl-region-after"> <fo:block text-align="center" font-size="10pt" font-family="serif" line-height="14pt">page <fo:page-number/></fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body">

<fo:block font-size="36pt" space-before.optimum="24pt" text-align="center">Ciao Mondo!</fo:block> </fo:flow></fo:page-sequence>

</fo:root>

Page 78: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 78

XSL-Fo: fo:root Deve essere “fo:root”. Deve contenere:

Un singolo fo:layout-master-set. Uno o più fo:page-sequences. Una facoltativa sezione fo:declarations (per le

dichiarazioni relative al colore, ICC Color Profile).

fo:simple-page-master

fo:root

fo:page-sequencesfo:layout-master-set

fo:page-sequence-master fo:static-content fo:flow

Page 79: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 79

XSL-Fo: fo:layout-master-set Definisce geometria e suddivisioni delle pagine, i

figli sono: Uno o più fo:simple-page-master: per la struttura

della pagina. Delle facoltative sezioni fo:page-sequence-

master: per descrivere con quale modello di pagina si deve renderizzare durante la formattazione.

fo:simple-page-master

fo:root

fo:page-sequencesfo:layout-master-set

fo:page-sequence-master fo:static-content fo:flow

Page 80: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 80

XSL-Fo: fo:simple-page-master Dimensioni della pagina. Dimensione delle cinque regioni:

fo:region-before. fo:region-after. fo:region-start. fo:region-end. fo:region-body.

fo:simple-page-master

fo:root

fo:page-sequencesfo:layout-master-set

fo:page-sequence-master fo:static-content fo:flow

Page 81: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 81

XSL-Fo: il layoutF

onte

: w

3.or

g

Page 82: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 82

XSL-Fo: fo:page-sequence-master Definisce la sequenza dei simple-page-maset da

utilizzare per il rendering del folw: fo:single-page-master-reference. fo:repeatable-page-master-reference. fo:repeatable-page-master-alternatives.

fo:simple-page-master

fo:root

fo:page-sequencesfo:layout-master-set

fo:page-sequence-master fo:static-content fo:flow

Page 83: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 83

XSL-Fo: fo:page-sequences Contengono le informazioni vere e proprie del

documento, ogni page-sequences deve avere un attributo che indica il tipo di formattazione (page-sequence-master o simple-page-master) da applicare, i figli sono: fo:static-content. fo:flow. fo:title.

fo:simple-page-master

fo:root

fo:page-sequencesfo:layout-master-set

fo:page-sequence-master fo:static-content fo:flow

Page 84: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 84

XSL-Fo: fo:static-content Il nome è una spiegazione: inserisce del contenuto

statico in una serie di pagine, si usa soprattutto per le intestazioni e i piè di pagina o anche per inserire il numero di pagina.

fo:simple-page-master

fo:root

fo:page-sequencesfo:layout-master-set

fo:page-sequence-master fo:static-content fo:flow

Page 85: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 85

XSL-Fo: fo:flow Il tag che contiene tutto il resto del documento. Infatti

questo è comporto dal testo e dagli altri marcatori fo:* che definiscono la formattazione del documento, come: fo:block (il più importante, nonché il più utilizzato). fo:table. fo:list-block.

fo:simple-page-master

fo:root

fo:page-sequencesfo:layout-master-set

fo:page-sequence-master fo:static-content fo:flow

Page 86: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 86

XSL-Fo: altri tag di formattazione fo:footnote. fo:instream-foreign-object. fo:page-number-citation. fo:block-container. fo:external-graphic. fo:inline. fo:list-item. fo:basic-link. ecc…

Page 87: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 87

XSL-Fo: engine Apache Foundation’s FOP. Antenna House XSL Formatter. RenderX XEP. Inventive Designers Scriptura 2.1.

Page 88: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 88

Web Services

Page 89: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 89

WebServices: i motivi Chi non ha mai avuto bisogno di intercomunicazione

tra applicativi, sistemi, sedi e filiali, ecc…? Cosa era il difficile?? Semplice, in sede c’era un

sistema *nix e le vostre filiali usano Windows XP! Come comunicare?

DCOM, CORBA, Java RMI, CCM… difficile la comunicazione tra tecnologie diverse…o uguali e far passare la comunicazione da internet (sicurezza).

Scambiare un file con dentro una serie di cifre da interpretare in base alla posizione dei caratteri...? No per applicazioni internet…

Page 90: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 90

WebServices Perché non far comunicate i diversi attori tramite

una lingua franca: SOAP (dialetto di XML)

Attraverso un protocollo facile da gestire: HTTP (ma non solo)

E descriverli con un altra lingua franca: WSDL (WS Description Language sempre XML)

E rendere disponibili delle “pagine gialle” per questi servizi: UDDI (Universal Description, Discovery and

Integration of Web Services)

Page 91: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 91

WebServices Sono standard aperti, non concepiti da un’unica entità. Adottati da tutti. Indipendenti dal linguaggio di programmazione, protocolli e

piattaforme. Possono essere utilizzati in modo asincrono. Non offrono meccanismi nativi per gestire lo stato. È possibile far percorrere dei salti ai messaggi attraverso vari

server, come avviene con o pacchetti TCP/IP (WS-Addressing). È possibile implementare meccanismi di sicurezza per firmare

il messaggio o criptarlo (WS-Security). È possibile attivare un meccanismo di transazioni. Programmazione per componenti.

Page 92: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 92

WebServices: come funzionanoF

onte

: ja

va.s

un.o

rg

Client

Server

Page 93: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 93

WebServices: SOAP Simple Access Object Protocol Originariamente sviluppato da Microsoft, ma resa

indipendente dal fornitore (basta che si vedano le tecnologie alla base di SOAP: HTTP e XML).

Protocollo lightweight. Non complesso e completo come uno heavyweight. È trasportato tipicamente su HTTP, ma può viaggiare

anche su HTTPS, SMTP, FTP… Serializzazione in base al valore e non al riverimento. Buone prestazioni nonostante la “parserizzazione”

del messaggio xml.

Page 94: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 94

WebService: messaggio SOAPF

onte

: ja

va.s

un.o

rg

Page 95: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 95

WebService: messaggio soapPOST /helloservice/Service1.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/HelloWorld"

<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-

instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <HelloWorld xmlns="http://tempuri.org/">

<String_1>Domenico</String_1> </HelloWorld>

</soap:Body></soap:Envelope>

Page 96: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 96

WebService: risposta soapHTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length

<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-

instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body>

<HelloWorldResponse xmlns="http://tempuri.org/"> <HelloWorldResult>Ciao

Domenico</HelloWorldResult> </HelloWorldResponse> </soap:Body>

</soap:Envelope>

Page 97: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 97

WebService: Header Tipicamente in chiaro. Invia varie informazioni circa il messaggio, come il

timestamp o un id. mustUnderstand=“1”: se 1 indica al server che

nell’Header sono contenute informazioni importanti per l’esecuzione del metodo.

Actor=“urn:temp”: utilizzato da WS-Routing per identificare il destinatario del messaggio.

Page 98: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 98

WebService: Body

Page 99: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 99

WebService: WSDL

Page 100: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 100

WebService: UDDI

Page 101: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 101

WS-Security Autenticazione:

Username e Password Certificato X.509 Token custom

Firma digitale: Basata su Username e Password Con certificato X.509 Con token custom

Encryption: Chiavi simmetriche (shared key) Chiavi asimmetriche (certificati X.509 per es.) Custom

Page 102: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 102

WS-Routing Definisce le regole veicolare una chiamata SOAP

verso un’altro server Può effettuare un routing su protocolli differenti

Page 103: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 103

WS-Attachments e DIME DIME (Direct Internet Message Encapsulation)

definisce il formato binario dei messaggi WS-Attachments descrive come usare DIME per

allegare un dato binario ad un messaggio SOAP

Page 104: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 104

WSDL - review Web Services Description Language Defines the Web service interface Describes everything required to write a program to work with

a Web service – URI, methods and properties, data types, protocols

Describes the request message a program must send and the what the response will be

Page 105: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 105

Page 106: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 106

Sicurezza dei Web Services

Page 107: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 107

Why Web Services? “There is nothing magic about Web Services”

Similar to CORBA/proxy/stub/IDL Similar to EJB/home/remote/method Introspection Similar to DCOM/COM+

but… Widely accepted common registry (cross vendor, platform,

industry) Uses standards, human readable, easily transported Operating System agnostic

provides consistent architecture Whether the application has to be used inside or out side your

enterprise Whether the application is produced or consumed on different

hardware Or whether your/their developer’s are using their development environments

Page 108: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 108

SVG Nuovo formato grafico vettoriale di W3C:

W3C Recommendation 14 January 2003. Il disegno è rappresentato da una struttura

gerarchica. Può essere animato e interattivo.

Page 109: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 109

XLink

Page 110: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 110

SVG, VML, SMIL, RDF, RSS, XUL

Page 111: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 111

XML Vocabularies MathML Recommendation (July 1999)

Describes mathematical notation in XMLhttp://www.w3.org/TR/REC-MathML/

Scalar Vector Graphics (SVG) Describes two-dimensional vector and mixed

vector/raster graphics in XML Candidate Recommendation (Nov 2000)

http://www.w3.org/TR/2000/CR-SVG-20001102/

Page 112: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 112

Tomorrow’s XML Standards XML Infoset DOM Level 2 HTML and DOM Level 3 XSL Formating Objects XML Linking (XPointer and XLink) XML Base Canonical XML XML Schema XML Query XML Protocol

Page 113: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 113

XML Linking XPointer

Supports addressing into an XML document Depends on XPath (like XSLT) XPointer Last Call WD (Jan 2001)

http://www.w3.org/TR/xptr Reverted to WD from CR status for Namespace

issues

Page 114: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 114

XML Linking (2) XML Linking Language (XLink)

Permits creation of elements in XML documents to describe links between Web resources

Uses XPointer to point to resources Uses XML Base to define base URI for links XLink Proposed Rec (Dec 2000)

http://www.w3.org/TR/xlink/

Page 115: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 115

XML Base XML Base

Provides XML equivalent of HTML BASE for defining base URIs for XML documents

Defines an attribute xml:base Originally needed by XLink In future will impact other XML specs XBase Proposed Rec (Dec 2000)

http://www.w3.org/TR/xmlbase

Page 116: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 116

Canonical XML Canonical XML

Describes a method of creating a canonical representation of an XML document

C14N Candidate Recommendation (Oct 2000)http://www.w3.org/TR/xml-c14n

Referenced by XML Signatures CR (Oct 2000)http://www.w3.org/TR/xmldsig-core/

Page 117: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 117

XML Query XML Query

Defining a data model, algebra and syntax for an XML query language

Requirements and Use Cases WD http://www.w3.org/TR/xmlquery-req XML Query Data Model WD

http://www.w3.org/TR/query-datamodel/ XML Query Algebra WD

http://www.w3.org/TR/query-algebra/

Page 118: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 118

XML Protocol XML Protocol

Most recently started XML Working Group Developing a framework for XML messaging Work based on SOAP 1.1

http://www.w3.org/TR/SOAP/ Working Group Charter

http://www.w3.org/2000/09/XML-Protocol-Charter XProtocol Requirements (Dec 2000) http://www.w3.org/TR/xp-reqs

Page 119: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 119

SMIL Synchronised Multimedia Integration Language

Integration of multimedia with text, audio, video

Support in RealPlayer & Windows Media Player

This Day in History from the History ChannelPorsche

Page 120: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 120

RDF - Resource Description Framework Framework for metadata

Interoperability of information exchange between applications

Applications:

Resource discovery

Knowledge sharing and exchange

Content rating

Intellectual property rights

Page 121: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 121

Evolution To Web Services

XMLXML

ProgrammabilityProgrammabilityConnectivityConnectivity

HTMLHTML

PresentationPresentationTCP/IPTCP/IP

Technology

Technology

Innovation

Innovation

FTP,FTP, EE-mail, Gopher

-mail, GopherWeb PagesWeb Pages

Browse Browse the Webthe Web

Program Program the Webthe Web

Web Services

Web Services

Page 122: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 122

Web Services

PublisherPublisher

SellerSeller

BROKERBROKER

SellerSeller

Order Full-FillmentOrder Full-Fillment ContentContent

PublisherPublisher

Web Service

Web Service

Web Service

Web Service

Page 123: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 123

Riferimenti SOAP - Guida allo sviluppatore – Kennard Mark IoProgrammo () DEV () JAVA 2 Tecniche Avanzate – Horsrmann Cornell www.apache.org www.w3.org http://www.renderx.com/tutorial.html http://pro.html.it/ http://msdn.microsoft.com In internet in generale…

Page 124: Xml  Xslt

Domenico Briganti - Hackmeeting Genova2004 124

Questo insieme di trasparenze è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relative alle trasparenze (ivi inclusi, ma non limitatamente a, ogni immagine, fotografia, animazione, video e testo) sono di proprietà degli autori indicati.Le trasparenze possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione per scopi istituzionali, non a fine di lucro.Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente a, le riproduzioni a mezzo stampa, su supporti magnetici o su reti di calcolatori) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte dell’autore.L’informazione contenuta in queste trasparenze è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, ecc.L’informazione contenuta in queste trasparenze è soggetta a cambiamenti senza preavviso. Gli autori non si assumono alcuna responsabilità per il contenuto di queste trasparenze (ivi incluse, ma non limitatamente a, la correttezza, completezza, applicabilità ed aggiornamento dell’informazione).In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste trasparenze.In ogni caso questa nota di copyright non deve mai essere rimossa e deve essere riportata anche in utilizzi parziali.