0
XML, XSL e tecnologie correlate Domenico Briganti [email_address] Hackmeeting Genova2004
L’eXtensible Markup Language, fin dalla sua nascita, ha avuto un gran consenso da parte di tutti gli attori che operano ne...
Agenda <ul><li>XML e Namespace </li></ul><ul><li>DTD e XMLSchema (XSD) </li></ul><ul><li>CSS e XSL </li></ul><ul><li>XSLT ...
Cosa scegliere? <ul><li>IL PROGRAMMA E’ TROPPO GRANDE!! </li></ul>
<ul><li>XML </li></ul>
Le origini di XML  1/2 <ul><li>L’XML è un metalinguaggio, derivato da SGML ( Standard Generalized Markup Language  standar...
Le origini di XML  2/2 <ul><li>L’SGML non ha avuto notorietà essendo complicato da implementare. </li></ul><ul><li>L’HTML,...
Ma cos’è XML? <ul><li>È una raccomandazione del W3C </li></ul><ul><li>http://www.w3.org/XML </li></ul><ul><li>Consiste in ...
..e cosa non è! <ul><li>Un linguaggio di programmazione. </li></ul><ul><li>Un sostituto di HTML. </li></ul><ul><li>Un prot...
Vediamo un esempio di XML <ul><li><?xml version=&quot;1.0&quot; encoding=”UTF-8”?> </li></ul><ul><li><computer> </li></ul>...
Esaminiamolo! <ul><li>Questa è una fantomatica descrizione di un computer. </li></ul><ul><li>Un documento XML è formato da...
Il prologo <ul><li>È racchiuso tra “<?” e “?>”. </li></ul><ul><li>Indica una direttiva (Processing Instruction) per il par...
Il corpo <ul><li>Al prologo segue una radice da cui si origina l’albero del documento. Come l’esempio dimostra, la radice ...
Strutturare al meglio! <ul><li>Vediamo che le informazioni, i dati veri e propri, del documento sono contenuti dentro dei ...
I commenti <ul><li>Sono racchiusi tra i marcatori “<--” e “-->”. </li></ul><ul><li>Non possono contenere la sequenza di ca...
I tag <ul><li>I tag che non hanno contenuto possono evitare il marcatore di chiusura in questo modo: </li></ul><ul><li><le...
Attributi <ul><li>I nostri elementi possono contenere anche attributi come questi: </li></ul><ul><li><memoria tipo=”DDR” u...
Sezioni CDATA <ul><li>Possiamo notare una sezione CDATA (Character Data): </li></ul><ul><li><descrizione><![CDATA[ questo ...
Entità <ul><li>Per poter utilizzare caratteri significativi per XML, senza che siamo interpretati come markup e senza util...
I tipi di documento XML <ul><li>I documenti XML possono essere di due tipi: </li></ul><ul><li>Ben Formati: è il documento ...
Le regole di XML per documenti WF <ul><li>L’intero documento deve essere racchiuso in un unico tag radice. </li></ul><ul><...
<ul><li>NAMESPACE </li></ul>
Namespace: il problema <ul><li>In un unico documento XML possiamo rappresentare informazioni di natura diversa: </li></ul>...
Namespace: la soluzione <ul><li>Per dare un significato differente ai vari tag si usano dei prefissi, identificatori posti...
Namespace <ul><li>È una recommendation di W3C del 1999. </li></ul><ul><li>La direttiva “xml:namespace” indica a quale URI ...
Namespace di default <ul><li>Tutti i tag che non hanno un prefisso appartengono al namespace di default. </li></ul><ul><li...
Namespace e attributi <ul><li>I namespace si possono applicare anche agli attributi: </li></ul><ul><li><au:modello au:type...
<ul><li>DTD e XML Schema </li></ul>
Validare un documento <ul><li>Per controllare se un documento è valido si possono utilizzare varie tecnologie: </li></ul><...
Parser <ul><li>Implementazione software per leggere e scrivere XML: </li></ul><ul><ul><li>DOM (Documente Object Model): pe...
Parser: DOM vs. SAX <ul><li>Quando usare DOM: </li></ul><ul><ul><li>Per percorrere l’albero avanti e indietro </li></ul></...
DTD <ul><li>Deriva da SGML e nato prima di XML. </li></ul><ul><li>Definisce le parti di un documento (Nodi, Attributi…) </...
Esempio di DTD <ul><li><!DOCTYPE catalog [  </li></ul><ul><li><!ELEMENT catalog (book+) >  </li></ul><ul><li><!ELEMENT boo...
XSD (XML  Schema Definition ) <ul><li>Sintassi XML-like (è di fatto un documento XML). </li></ul><ul><li>Controllo di tipi...
XSD: un esempio <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><xsd:schema xmlns:xsd...
XSD: assegnarlo a un XML <ul><li><merceologia xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:noNamesp...
XSD: l’elemento radice <ul><li><xsd:schema  xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema”   elementFormDefault=&quot;q...
XSD: tipi di elemento <ul><li>Elementi semplici: dentro i quali non compaiono altri elementi o attributi. </li></ul><ul><l...
XSD: tipi semplici <ul><li>I tipi base di XMLSchema sono molti, tra i quali: String, Integer, Decimal, Boolean, Date, Time...
XSD: limitazioni sui tipi Stringa <ul><li>È possibile anche imporre dei constraints sui tipi stringa con le espressioni re...
XSD: enumerazioni <ul><li>Limitazioni in cui il valore può essere solo del tipo specificato: </li></ul><ul><li><xs:element...
XSD: tipi complessi <ul><li>Ecco come si presenta la dichiarazione: </li></ul><ul><li><xsd:element name=&quot;merceologia&...
XSD: tipi complessi <ul><li>I tipi complessi vengono dichiarati in tre modi: </li></ul><ul><li>Sequence: i tag indicati ne...
XSD: tag semplici con attributi <ul><li><xsd:element name=“ret_unit&quot;> </li></ul><ul><li>  <xsd:complexType> </li></ul...
XSD: tag vuoti e contenuto misto <ul><li>Vengono definiti i tag vuoti come tipo complessi: </li></ul><ul><ul><li><xsd:elem...
XSD: vincoli sui tipi complessi <ul><li>Esistono anche dei constraints sui tipi complessi, il più utilizzato è certamente ...
XSD: attributi <ul><li>Gli attributi si applicano ai tipi complessi, hanno questa forma: </li></ul><ul><li><xsd:attribute ...
XSD: parser in JAXP <ul><li>DefaultHandler heandler = new DefaultHandler(); </li></ul><ul><li>SAXParserFactory spf = SAXPa...
<ul><li>CSS e XSL </li></ul>
CSS e XSL <ul><li>L’importanza che il W3C ha dato alla separazione delle informazioni in dati e presentazione ha portato l...
CSS: Cascading Style Sheet  <ul><li>Ratifica del W3C ( level1  dic. 1996,  level2  mag. 1998). </li></ul><ul><li>Semplice ...
XSL <ul><li>È una famiglia di linguaggi per la trasformazione e presentazione di documenti XML, si compone di: </li></ul><...
Differenza tra CSS e XSL <ul><li>CSS      XSL   </li></ul><ul><li>Formattazione (X)HTML   Sì   No </li></ul><ul><li>Format...
XSL Fonte: w3.org
<ul><li>XPath </li></ul>
XPath <ul><li>Raccomandazione del W3C del novembre 1999. </li></ul><ul><li>È usato soprattutto da XSL e XPointer. </li></u...
XPath: esempi <ul><li>/   Recupera il primo nodo del file XML, incluso ogni  commento o Processing Instructions, esclusa l...
XPath: esempi (più complessi) <ul><li><xsl:decimal-format name=&quot;euro&quot; decimal- </li></ul><ul><li>separator=&quot...
XPath: funzioni <ul><li>Ecco un piccolo elenco di funzioni che è possibile trovare in xpath: </li></ul><ul><li>Concat() </...
<ul><li>XSLT </li></ul>
XSLT <ul><li>Raccomandazione del W3C (1.0) del novembre 1999 . </li></ul><ul><li>W3C: “Linguaggio per trasformate un docum...
XSLT: esempio1 (XML) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><?xml-stylesheet...
XSLT: esempio1 (XSLT) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><xsl:stylesheet...
XSLT: Output (XHMTL)
XSLT: il tag di root <ul><li><xsl:stylesheet  xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; xmlns:fo=&quot;ht...
XSLT: il tag template  <ul><li>… </li></ul><ul><li><xsl:template match=&quot;ANAGRAFICA&quot;> </li></ul><ul><li>… </li></...
XSLT: xsl:value-of <ul><li>… </li></ul><ul><li><h1><xsl:value-of select=“ XPathExpression &quot;/></h1> </li></ul><ul><li>...
XSLT: xsl:for-each <ul><li>… </li></ul><ul><li><xsl:for-each select=&quot;RECORD&quot;> </li></ul><ul><li>… </li></ul><ul>...
XSLT: xsl:attribute <ul><li><a onclick=“<xsl:value-of select=&quot;@name&quot;/>”> </li></ul><ul><li><img hspace=&quot;0“ ...
XSLT: xsl:if <ul><li><xsl:if test=&quot;js:IsEan(string(@ITEM_NO))&quot;> </li></ul><ul><li><fo:instream-foreign-object wi...
XSLT: xsl:choose <ul><li>< xsl:choose > </li></ul><ul><li>< xsl:when  test=&quot;trasporto = 'D'&quot;> </li></ul><ul><li>...
XSLT: altri elementi comuni <ul><li>xsl:copy </li></ul><ul><li>xsl:decimal-format </li></ul><ul><li>xsl:sort </li></ul><ul...
<ul><li>XSL-Fo </li></ul>
XSL-Fo <ul><li>Raccomandazione del W3C dell’ottobre 2001.  </li></ul><ul><li>Namespace:  xmlns:fo=“ http://www.w3.org/1999...
XSL-Fo: processo di generazione
XSL-Fo: Struttura del documento <ul><li><?xml version=&quot;1.0&quot;?> <fo:root xmlns:fo=&quot;http://www.w3.org/1999/XSL...
XSL-Fo: esempio  (from Cocoon project) <ul><li><fo:root xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot;> </li></ul>...
XSL-Fo: fo:root <ul><li>Deve essere “fo:root”. </li></ul><ul><li>Deve contenere: </li></ul><ul><ul><li>Un singolo fo:layou...
XSL-Fo: fo:layout-master-set <ul><li>Definisce geometria e suddivisioni delle pagine, i figli sono: </li></ul><ul><ul><li>...
XSL-Fo: fo:simple-page-master <ul><li>Dimensioni della pagina. </li></ul><ul><li>Dimensione delle cinque regioni: </li></u...
XSL-Fo: il layout Fonte: w3.org
XSL-Fo: fo:page-sequence-master <ul><li>Definisce la sequenza dei simple-page-maset da utilizzare per il rendering del fol...
XSL-Fo: fo:page-sequences <ul><li>Contengono le informazioni vere e proprie del documento, ogni page-sequences deve avere ...
XSL-Fo: fo:static-content <ul><li>Il nome è una spiegazione: inserisce del contenuto statico in una serie di pagine, si us...
XSL-Fo: fo:flow <ul><li>Il tag che contiene tutto il resto del documento. Infatti questo è comporto dal testo e dagli altr...
XSL-Fo: altri tag di formattazione <ul><li>fo:footnote. </li></ul><ul><li>fo:instream-foreign-object. </li></ul><ul><li>fo...
XSL-Fo: engine <ul><li>Apache Foundation’s FOP. </li></ul><ul><li>Antenna House XSL Formatter. </li></ul><ul><li>RenderX X...
<ul><li>Web Services </li></ul>
WebServices: i motivi <ul><li>Chi non ha mai avuto bisogno di intercomunicazione tra applicativi, sistemi, sedi e filiali,...
WebServices <ul><li>Perché non far comunicate i diversi attori tramite una lingua franca: </li></ul><ul><ul><li>SOAP (dial...
WebServices <ul><li>Sono standard aperti, non concepiti da un’unica entità. </li></ul><ul><li>Adottati da tutti. </li></ul...
WebServices: come funzionano Fonte: java.sun.org Client Server
WebServices: SOAP <ul><li>Simple Access Object Protocol </li></ul><ul><li>Originariamente sviluppato da Microsoft, ma resa...
WebService: messaggio SOAP Fonte: java.sun.org
WebService: messaggio soap <ul><li>POST /helloservice/Service1.asmx HTTP/1.1  </li></ul><ul><li>Host: localhost  </li></ul...
WebService: risposta soap <ul><li>HTTP/1.1 200 OK  </li></ul><ul><li>Content-Type: text/xml; charset=utf-8  </li></ul><ul>...
WebService: Header <ul><li>Tipicamente in chiaro. </li></ul><ul><li>Invia varie informazioni circa il messaggio, come il t...
WebService: Body
WebService: WSDL
WebService: UDDI
WS-Security <ul><li>Autenticazione: </li></ul><ul><ul><li>Username e Password </li></ul></ul><ul><ul><li>Certificato X.509...
WS-Routing <ul><li>Definisce le regole veicolare una chiamata SOAP verso un’altro server </li></ul><ul><li>Può effettuare ...
WS-Attachments e DIME <ul><li>DIME (Direct Internet Message Encapsulation) definisce il formato binario dei messaggi </li>...
WSDL  - review <ul><li>Web Services Description Language </li></ul><ul><li>Defines the Web service interface  </li></ul><u...
 
Sicurezza dei Web Services
Why Web Services? <ul><li>“ There is nothing magic about Web Services” </li></ul><ul><ul><li>Similar to CORBA/proxy/stub/I...
SVG <ul><li>Nuovo formato grafico vettoriale di W3C: </li></ul><ul><ul><ul><li>W3C Recommendation  14 January 2003 . </li>...
XLink
SVG, VML, SMIL, RDF, RSS, XUL
XML Vocabularies <ul><li>MathML Recommendation (July 1999) </li></ul><ul><ul><li>Describes mathematical notation in XML ht...
Tomorrow’s XML Standards <ul><li>XML Infoset </li></ul><ul><li>DOM Level 2 HTML and DOM Level 3 </li></ul><ul><li>XSL Form...
XML Linking <ul><li>XPointer </li></ul><ul><ul><li>Supports addressing into an XML document </li></ul></ul><ul><ul><li>Dep...
XML Linking (2) <ul><li>XML Linking Language (XLink) </li></ul><ul><ul><li>Permits creation of elements in XML documents t...
XML Base <ul><li>XML Base  </li></ul><ul><ul><li>Provides XML equivalent of HTML BASE for defining base URIs for XML docum...
Canonical XML <ul><li>Canonical XML </li></ul><ul><ul><li>Describes a method of creating a canonical representation of an ...
XML Query <ul><li>XML Query </li></ul><ul><ul><li>Defining a data model, algebra and syntax for an XML query language </li...
XML Protocol <ul><li>XML Protocol </li></ul><ul><ul><li>Most recently started XML Working Group </li></ul></ul><ul><ul><li...
SMIL <ul><li>Synchronised Multimedia Integration Language </li></ul><ul><li>Integration of multimedia with text, audio, vi...
RDF - Resource Description Framework <ul><li>Framework for  metadata </li></ul><ul><li>Interoperability of information exc...
Evolution To Web Services XML Programmability Connectivity HTML Presentation TCP/IP FTP,   E -mail, Gopher Web Pages Brows...
Web Services Publisher Seller BROKER   Seller Order Full-Fillment Content Publisher Web Service Web Service Web Service We...
Riferimenti <ul><li>SOAP - Guida allo sviluppatore – Kennard Mark  </li></ul><ul><li>IoProgrammo () </li></ul><ul><li>DEV ...
Questo insieme di trasparenze è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali.  Il t...
Upcoming SlideShare
Loading in...5
×

Xml Xslt

2,640

Published on

An introduction to XML and related technology

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,640
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
61
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Transcript of "Xml Xslt"

    1. 1. XML, XSL e tecnologie correlate Domenico Briganti [email_address] Hackmeeting Genova2004
    2. 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!)
    3. 3. Agenda <ul><li>XML e Namespace </li></ul><ul><li>DTD e XMLSchema (XSD) </li></ul><ul><li>CSS e XSL </li></ul><ul><li>XSLT </li></ul><ul><li>XSL-Fo </li></ul><ul><li>Introduzione ai WebServices </li></ul><ul><li>Accenno a SVG, SMIL, RSS, XUL </li></ul>
    4. 4. Cosa scegliere? <ul><li>IL PROGRAMMA E’ TROPPO GRANDE!! </li></ul>
    5. 5. <ul><li>XML </li></ul>
    6. 6. Le origini di XML 1/2 <ul><li>L’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.)... </li></ul>
    7. 7. Le origini di XML 2/2 <ul><li>L’SGML non ha avuto notorietà essendo complicato da implementare. </li></ul><ul><li>L’HTML, un altro derivato di SGML, ha avuto invece un successo enorme per la sua facilità e per il boom dei web browser. </li></ul><ul><li>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. </li></ul><ul><li>È stato formalizzato dal W3C nel febbraio ’98, attualmente la versione 1.1 è in fase di candiate recommendation. </li></ul>
    8. 8. Ma cos’è XML? <ul><li>È una raccomandazione del W3C </li></ul><ul><li>http://www.w3.org/XML </li></ul><ul><li>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. </li></ul><ul><li>È uno standard aperto libero da royalty, brevetti, copyright o segreti industriali. </li></ul><ul><li>Auto esplicativo. </li></ul><ul><li>Creabile ed editabile con un semplice editor di testo. </li></ul>
    9. 9. ..e cosa non è! <ul><li>Un linguaggio di programmazione. </li></ul><ul><li>Un sostituto di HTML. </li></ul><ul><li>Un protocollo di comunicazione. </li></ul><ul><li>Uno standard binario. </li></ul>
    10. 10. Vediamo un esempio di XML <ul><li><?xml version=&quot;1.0&quot; encoding=”UTF-8”?> </li></ul><ul><li><computer> </li></ul><ul><li><!—questo è un commento--> </li></ul><ul><li><memoria tipo=”DDR” unit=”Mb”>512</memoria> </li></ul><ul><li><CPU>1.2 GHz</CPU> </li></ul><ul><li><tastiera>400 tasti</tastiera> </li></ul><ul><li><HD> </li></ul><ul><li><HardDisk>7200 rpm 5Gb</HardDisk> </li></ul><ul><li><HardDisk>7200 rpm 224Tb</HardDisk> </li></ul><ul><li></HD> </li></ul><ul><li><descrizione><![CDATA[ questo è </li></ul><ul><li>un ottimo <<PC>>!]]> </li></ul><ul><li></descrizione> </li></ul><ul><li><lettore/> </li></ul><ul><li></computer> </li></ul>
    11. 11. Esaminiamolo! <ul><li>Questa è una fantomatica descrizione di un computer. </li></ul><ul><li>Un documento XML è formato da due parti: </li></ul><ul><li>Un prologo facoltativo (ma raccomandato per indicare la versione del documento e la codifica). </li></ul><ul><li>Il corpo del documento. </li></ul>
    12. 12. Il prologo <ul><li>È racchiuso tra “<?” e “?>”. </li></ul><ul><li>Indica una direttiva (Processing Instruction) per il parser. </li></ul><ul><li>Nell’esempio che abbiamo visto era: </li></ul><ul><li><?xml version=&quot;1.0&quot; encoding=”UTF-8”?> </li></ul><ul><li>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 ). </li></ul>
    13. 13. Il corpo <ul><li>Al 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. </li></ul>
    14. 14. Strutturare al meglio! <ul><li>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. </li></ul><ul><li>Benché sia ammissibile avere tag figli e testo dentro lo stesso marcatore (“tag a contenuto misto”), ad esempio: </li></ul><ul><li><HD> </li></ul><ul><li>Haqdrdisk </li></ul><ul><li><HardQ>5</ HardQ> </li></ul><ul><li></HD> </li></ul><ul><li>è sconsigliato, in quanto si complica la creazione di documenti che controllano la correttezza del nostro XML (lo vedremo più avanti parlando di XSL Schema). </li></ul>
    15. 15. I commenti <ul><li>Sono racchiusi tra i marcatori “<--” e “-->”. </li></ul><ul><li>Non possono contenere la sequenza di caratteri “--”. </li></ul><ul><li>Non possono essere inseriti all’interno di un tag. </li></ul><ul><li>Esempio: </li></ul><ul><li><!-- questo è un commento </li></ul><ul><li>Su due linee --> </li></ul>
    16. 16. I tag <ul><li>I tag che non hanno contenuto possono evitare il marcatore di chiusura in questo modo: </li></ul><ul><li><lettore/> </li></ul><ul><li>Il nome del tag non può contenere: </li></ul><ul><li>Spazi </li></ul><ul><li>Virgolette e apostrofi </li></ul><ul><li>Caratteri <, >, $ </li></ul><ul><li>Percentuali e punto e virgola </li></ul><ul><li>È case sensitive </li></ul>
    17. 17. Attributi <ul><li>I nostri elementi possono contenere anche attributi come questi: </li></ul><ul><li><memoria tipo=”DDR” unit=”Mb”>512</memoria> </li></ul><ul><li>Benché si possa scrivere anche così: </li></ul><ul><li><memoria tipo=”DDR” unit=”Mb” qta=”512”/> </li></ul><ul><li>oppure cosi: </li></ul><ul><li><memoria><tipo>DDR</tipo><unit>Mb</unit><qta>512</qta></memoria> </li></ul><ul><li>oppure cosi ancora: </li></ul><ul><li><memoria>512Mb DDR</memoria> </li></ul><ul><li>è 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. </li></ul>
    18. 18. Sezioni CDATA <ul><li>Possiamo notare una sezione CDATA (Character Data): </li></ul><ul><li><descrizione><![CDATA[ questo è </li></ul><ul><li>un ottimo <<PC>>!]]> </li></ul><ul><li></ descrizione > </li></ul><ul><li>Questa è utilizzata per inserire del testo in cui sono presenti anche caratteri particolari come “&”, “<”, “>” senza che siano interpretati come riferimenti a markup. </li></ul><ul><li>Deve iniziare con “<![CDATA[”. </li></ul><ul><li>E terminare con “]]>”. </li></ul><ul><li>Non può contenere al suo interno la stringa “]]>”. </li></ul>
    19. 19. Entità <ul><li>Per poter utilizzare caratteri significativi per XML, senza che siamo interpretati come markup e senza utilizzare sezioni CDATA, si utilizzano le entità. </li></ul><ul><li>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: </li></ul><ul><li>&lt; &gt; &amp; &quot; &apos; </li></ul><ul><li>che indicano rispettivamente: </li></ul><ul><li>minore di, maggiore di, & commerciale, virgolette e apostrofo. </li></ul>
    20. 20. I tipi di documento XML <ul><li>I documenti XML possono essere di due tipi: </li></ul><ul><li>Ben Formati: è il documento che rispetta le regole di XML (non può altrimenti essere un documento xml!). </li></ul><ul><li>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. </li></ul>
    21. 21. Le regole di XML per documenti WF <ul><li>L’intero documento deve essere racchiuso in un unico tag radice. </li></ul><ul><li>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. </li></ul><ul><li>Gli attributi possono essere solo inseriti nei tag di apertura. </li></ul><ul><li>Lo stesso attributo non può comparire più di una volta all’interno dello stesso tag. </li></ul><ul><li>Ogni attributo inserito deve avere un valore e deve essere racchiuso tra doppi apici. </li></ul><ul><li>I nomi dei marcatori e degli attributi sono Case Sensitive. </li></ul>
    22. 22. <ul><li>NAMESPACE </li></ul>
    23. 23. Namespace: il problema <ul><li>In un unico documento XML possiamo rappresentare informazioni di natura diversa: </li></ul><ul><li><autovettura> </li></ul><ul><li><modello type=“I”>Honda CRW</modello> </li></ul><ul><li><pneumatici> </li></ul><ul><li><modello>Pirelli P9999</modello> </li></ul><ul><li></pneumatici> </li></ul><ul><li></autovettura> </li></ul><ul><li>Come distinguere i vari tag in base al loro significato? Con i Namespace </li></ul>
    24. 24. Namespace: la soluzione <ul><li>Per dare un significato differente ai vari tag si usano dei prefissi, identificatori posti prima del nome del marcatore e separati dai “:” da quest’ultimo: </li></ul><ul><li><?xml:namespace ns=http://some/uri prefix=“au&quot;?> <?xml:namespace ns=http://some/url prefix=“pn&quot;?> </li></ul><ul><li><au:autovettura> </li></ul><ul><li><au:modello type=“I”>Honda CRW</au:modello> </li></ul><ul><li><pn:pneumatici> </li></ul><ul><li><pn:modello>Pirelli P9999</pn:modello> </li></ul><ul><li></pn:pneumatici> </li></ul><ul><li></au:autovettura> </li></ul>
    25. 25. Namespace <ul><li>È una recommendation di W3C del 1999. </li></ul><ul><li>La direttiva “xml:namespace” indica a quale URI (Uniform Resource Identifier) si riferisce un determinato prefisso. Si usa un URI perché unico in Internet. </li></ul><ul><li>Un marcatore che usa un prefisso di dice che ha un “nome qualificato”. </li></ul><ul><li>Si può specificare anche al suo primo utilizzo e/o dentro un tag (e ha validità solo nei nodi figli): </li></ul><ul><li><au:autovettura xmlns:au=“http://some/uri”> </li></ul>
    26. 26. Namespace di default <ul><li>Tutti i tag che non hanno un prefisso appartengono al namespace di default. </li></ul><ul><li>Il namespace di default può anche essere dichiarato attraverso la parola chiave riservata xmlns NON seguita da prefisso: </li></ul><ul><li><autovettura xmlns=“http://some/uri”> </li></ul>
    27. 27. Namespace e attributi <ul><li>I namespace si possono applicare anche agli attributi: </li></ul><ul><li><au:modello au:type=“I”>Honda CRW</au:modello> </li></ul><ul><li>Il namespace di default non si applica agli attributi privi di prefisso. </li></ul><ul><li>Se relativi a namespace diversi, e che puntano a URI diversi, gli attributi possono avere nome locale uguale. </li></ul>
    28. 28. <ul><li>DTD e XML Schema </li></ul>
    29. 29. Validare un documento <ul><li>Per controllare se un documento è valido si possono utilizzare varie tecnologie: </li></ul><ul><li>DTD (Document Type Definition), obsoleto (daremo solo un accenno). </li></ul><ul><li>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). </li></ul><ul><li>XSD (XML Schema Language) è lo schema del W3C che stanno adottando tutti parser XML. </li></ul>
    30. 30. Parser <ul><li>Implementazione software per leggere e scrivere XML: </li></ul><ul><ul><li>DOM (Documente Object Model): permette una rappresentazione dell’intero XML in memoria. </li></ul></ul><ul><ul><li>SAX (Simple Api for XML): mentre legge un XML lancia eventi su determinati Elementi o Attributi, intercettabili da funzioni di gestione. </li></ul></ul>
    31. 31. Parser: DOM vs. SAX <ul><li>Quando usare DOM: </li></ul><ul><ul><li>Per percorrere l’albero avanti e indietro </li></ul></ul><ul><ul><li>Manipolare il documento in molte parti </li></ul></ul><ul><ul><li>Si ha a disposizione molta memoria perché l’albero XML viene ricostruito in essa </li></ul></ul><ul><ul><li>Creare un nuovo documento </li></ul></ul><ul><li>Quando usare SAX: </li></ul><ul><ul><li>Percorrere l’albero solo “forward only” </li></ul></ul><ul><ul><li>Leggere solo poche informazioni </li></ul></ul><ul><ul><li>Si ha poca memoria a disposizione </li></ul></ul>
    32. 32. DTD <ul><li>Deriva da SGML e nato prima di XML. </li></ul><ul><li>Definisce le parti di un documento (Nodi, Attributi…) </li></ul><ul><li>È uno standard non XML-like, difficile da scrivere e leggere automaticamente. </li></ul><ul><li>Può essere inserito in un documento o può stare in un file separato (soprattutto se si deve condividere tra molti documenti). </li></ul><ul><li>È molto limitato nella possibilità di controllare tipi di dati. </li></ul><ul><li>Non supporta XML namespaces. </li></ul><ul><li>Non supporta constraints. </li></ul><ul><li>Non supporta il controllo degli attributi. </li></ul>
    33. 33. Esempio di DTD <ul><li><!DOCTYPE catalog [ </li></ul><ul><li><!ELEMENT catalog (book+) > </li></ul><ul><li><!ELEMENT book (author, title, genre, price, publish_date, description) > </li></ul><ul><li><!ATTLIST book id ID #REQUIRED > </li></ul><ul><li><!ELEMENT author (#PCDATA) > </li></ul><ul><li><!ELEMENT title (#PCDATA) > </li></ul><ul><li><!ELEMENT genre (#PCDATA) > </li></ul><ul><li><!ELEMENT price (#PCDATA) > </li></ul><ul><li><!ELEMENT publish_date (#PCDATA) > </li></ul><ul><li><!ELEMENT description (#PCDATA) > </li></ul><ul><li>]> </li></ul><?xml version=&quot;1.0&quot;?> <catalog> <book id=&quot;bk101&quot;> <author>Gambardella</author> <title>XML Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000</publish_date> <description>A look…</description> </book>
    34. 34. XSD (XML Schema Definition ) <ul><li>Sintassi XML-like (è di fatto un documento XML). </li></ul><ul><li>Controllo di tipi base (stringa, interi, date, ecc.), con limitazioni. </li></ul><ul><li>Controllo di tipo complessi (che contengono una serie o gerarchia di nodi al loro interno). </li></ul><ul><li>Controllo degli attributi. </li></ul><ul><li>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. </li></ul><ul><li>È più complesso del DTD (ma non molto IHMO). </li></ul>
    35. 35. XSD: un esempio <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; elementFormDefault=&quot;qualified&quot;> </li></ul><ul><li><xsd:element name=&quot;merceologia&quot;> </li></ul><ul><li><xsd:complexType> </li></ul><ul><li> <xsd:sequence> </li></ul><ul><li> <xsd:element name=&quot;row&quot; maxOccurs=&quot;unbounded&quot;> </li></ul><ul><li><xsd:complexType> </li></ul><ul><li>………… </li></ul><ul><li></xsd:complexType> </li></ul><ul><li> </xsd:element> </li></ul><ul><li> </xsd:sequence> </li></ul><ul><li></xsd:complexType> </li></ul><ul><li></xsd:element> </li></ul><ul><li></xsd:schema> </li></ul>
    36. 36. XSD: assegnarlo a un XML <ul><li><merceologia xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:noNamespaceSchemaLocation=&quot;valida1.xsd&quot;> </li></ul><ul><li>Viene indicato quale file XSD utilizzare per validare il tag merceologia e i suoi discendenti. </li></ul>
    37. 37. XSD: l’elemento radice <ul><li><xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema” elementFormDefault=&quot;qualified&quot;> </li></ul><ul><li>Il prefisso xsd si riferisce al namespace definito da W3C e si applica a tutti i tag che hanno tale prefisso. </li></ul>
    38. 38. XSD: tipi di elemento <ul><li>Elementi semplici: dentro i quali non compaiono altri elementi o attributi. </li></ul><ul><li>Elementi complessi: tutti gli altri (nodi che contengono attributi e altri nodi) </li></ul><ul><li><xsd:element name=“cognome&quot; type=&quot;xsd:string&quot;/> </li></ul><ul><li><xsd:element name=&quot;merceologia&quot;> </li></ul><ul><li><xsd:complexType> </li></ul><ul><li><xsd:sequence> </li></ul><ul><li><xsd:element ref=“row&quot; maxOccurs=&quot;unbounded&quot;/> </li></ul><ul><li></xsd:sequence> </li></ul><ul><li></xsd:complexType> </li></ul><ul><li></xsd:element> </li></ul>
    39. 39. XSD: tipi semplici <ul><li>I tipi base di XMLSchema sono molti, tra i quali: String, Integer, Decimal, Boolean, Date, Time. </li></ul><ul><li>Su di essi è possibile applicare delle limitazione, come: </li></ul><ul><li><xs:element name=&quot;ret_unit&quot;> </li></ul><ul><li><xs:simpleType> </li></ul><ul><li><xs:restriction base=&quot;xs:integer&quot;> </li></ul><ul><li><xs:minInclusive value=&quot;1&quot;/> </li></ul><ul><li><xs:maxInclusive value=&quot;1000&quot;/> </li></ul><ul><li></xs:restriction> </li></ul><ul><li></xs:simpleType> </li></ul><ul><li></xs:element> </li></ul>
    40. 40. XSD: limitazioni sui tipi Stringa <ul><li>È possibile anche imporre dei constraints sui tipi stringa con le espressioni regolari: </li></ul><ul><li><xs:element name=&quot;nome&quot;> </li></ul><ul><li> <xs:simpleType> </li></ul><ul><li> <xs:restriction base=&quot;xs:string&quot;> </li></ul><ul><li> <xs:pattern value=&quot;[0-9]+ - [w|s]+&quot;/> </li></ul><ul><li> </xs:restriction> </li></ul><ul><li> </xs:simpleType> </li></ul><ul><li></xs:element> </li></ul>
    41. 41. XSD: enumerazioni <ul><li>Limitazioni in cui il valore può essere solo del tipo specificato: </li></ul><ul><li><xs:element name=&quot;type&quot;> </li></ul><ul><li><xs:simpleType> </li></ul><ul><li><xs:restriction base=&quot;xs:string&quot;> </li></ul><ul><li><xs:enumeration value=&quot;Macrosettore&quot;/> </li></ul><ul><li><xs:enumeration value=&quot;Medium&quot;/> </li></ul><ul><li><xs:enumeration value=&quot;Famiglia&quot;/> </li></ul><ul><li><xs:enumeration value=&quot;Settore&quot;/> </li></ul><ul><li></xs:restriction> </li></ul><ul><li></xs:simpleType> </li></ul><ul><li></xs:element> </li></ul>
    42. 42. XSD: tipi complessi <ul><li>Ecco come si presenta la dichiarazione: </li></ul><ul><li><xsd:element name=&quot;merceologia&quot;> </li></ul><ul><li> <xsd:complexType> </li></ul><ul><li> <xsd:sequence> </li></ul><ul><li> <xsd:element ref=&quot;row“ maxOccurs=&quot;unbounded&quot;/> </li></ul><ul><li> </xsd:sequence> </li></ul><ul><li> </xsd:complexType> </li></ul><ul><li></xsd:element> </li></ul>
    43. 43. XSD: tipi complessi <ul><li>I tipi complessi vengono dichiarati in tre modi: </li></ul><ul><li>Sequence: i tag indicati nello schema devono apparire tutti ed in ordine nel file XML. </li></ul><ul><li>Choice: può esserci un solo elemento nell’origine XML di quelli dichiarati con questo costruttore. </li></ul><ul><li>All: gli elementi dichiarati qui possono apparire in un ordine non prestabilito. </li></ul><ul><li>La struttura di un elemento complesso può essere dichiarata anche a parte per essere utilizzata in vari punti dello schema. </li></ul>
    44. 44. XSD: tag semplici con attributi <ul><li><xsd:element name=“ret_unit&quot;> </li></ul><ul><li> <xsd:complexType> </li></ul><ul><li><xsd:simpleContent> </li></ul><ul><li> <xsd:extension base=“xsd:integer”> </li></ul><ul><li> <xsd:attribute name=“tipo” type=“xsd:string”/> </li></ul><ul><li> </xsd:extension> </li></ul><ul><li><xsd:simplyContent> </li></ul><ul><li> </xsd:complexType> </li></ul><ul><li></xsd:element> </li></ul>
    45. 45. XSD: tag vuoti e contenuto misto <ul><li>Vengono definiti i tag vuoti come tipo complessi: </li></ul><ul><ul><li><xsd:element name=“tagvuoto&quot;> </li></ul></ul><ul><ul><li><xsd:complexType/> </li></ul></ul><ul><ul><li></xsd:element> </li></ul></ul><ul><li>Mentre i tag a contenuto misto: </li></ul><ul><li><xsd:element name=“tagacontenutomisto&quot;> </li></ul><ul><li><xsd:complexType mixed=“true”> </li></ul><ul><li> <xsd:sequence> </li></ul><ul><li><xsd:element name=“tagfiglio” type=“xsd:string”/> </li></ul><ul><li> </xsd:sequence> </li></ul><ul><li></xsd:complexType> </li></ul><ul><li></xsd:element> </li></ul>
    46. 46. XSD: vincoli sui tipi complessi <ul><li>Esistono anche dei constraints sui tipi complessi, il più utilizzato è certamente quello che limita il numero di nodi: </li></ul><ul><li> <xsd:element name=&quot;merceologia&quot;> </li></ul><ul><li> <xsd:complexType> </li></ul><ul><li> <xsd:sequence> </li></ul><ul><li> <xsd:element ref=&quot;row&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;100&quot;/> </li></ul><ul><li> </xsd:sequence> </li></ul><ul><li> </xsd:complexType> </li></ul><ul><li></xsd:element> </li></ul>
    47. 47. XSD: attributi <ul><li>Gli attributi si applicano ai tipi complessi, hanno questa forma: </li></ul><ul><li><xsd:attribute name=&quot;open&quot; type=&quot;xsd:boolean&quot; use=&quot;required&quot;/> </li></ul><ul><li>anche qui è possibile applicare dei limiti. L’attributo use può essere: </li></ul><ul><li>Default: in concomitanza con l’attributo value, è indicato per dare un valore di default all’attributo. </li></ul><ul><li>Required: indica chè l’attributo è atteso. </li></ul><ul><li>Non esserci, l’attributo è opzionale. </li></ul>
    48. 48. XSD: parser in JAXP <ul><li>DefaultHandler heandler = new DefaultHandler(); </li></ul><ul><li>SAXParserFactory spf = SAXParserFactory.newInstance(); </li></ul><ul><li>spf.setNamespaceAware(true); </li></ul><ul><li>spf.setValidating(true); </li></ul><ul><li>SAXParser saxParser = spf.newSAXParser(); </li></ul><ul><li>saxParser.setProperty(&quot;http://java.sun.com/xml/jaxp/properties/schem aLanguage&quot;, &quot;http://www.w3.org/2001/XMLSchema&quot;); </li></ul><ul><li>XMLReader xmlReader = saxParser.getXMLReader(); </li></ul><ul><li>xmlReader.setContentHandler(heandler); </li></ul><ul><li>xmlReader.setErrorHandler(new MyErrorHandler()); </li></ul><ul><li>xmlReader.parse(filename); </li></ul><ul><li>… </li></ul>
    49. 49. <ul><li>CSS e XSL </li></ul>
    50. 50. CSS e XSL <ul><li>L’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. </li></ul>
    51. 51. CSS: Cascading Style Sheet <ul><li>Ratifica del W3C ( level1 dic. 1996, level2 mag. 1998). </li></ul><ul><li>Semplice documento che descrive lo style degli elementi che contiene una pagina web. </li></ul><ul><li>I documenti vengono applicati a “cascata”. </li></ul><ul><li>Applicabile a (X)HTML e con fatica a XML. </li></ul><ul><li>Inseribile nella pagina web (attraverso attributi) o applicabile con un link ad un file “.css”. </li></ul><ul><li>Applicabile contemporaneamente a diverse pagine. </li></ul><ul><li>Non XML-Like. </li></ul>
    52. 52. XSL <ul><li>È una famiglia di linguaggi per la trasformazione e presentazione di documenti XML, si compone di: </li></ul><ul><ul><li>XPath: recupera determinati elementi di un XML </li></ul></ul><ul><ul><li>XSLT: Trasforma i file XML in altri formati </li></ul></ul><ul><ul><li>XSL-Fo: Formattazione </li></ul></ul><ul><ul><li>Non sostituisce il CSS, l’XSL è molto utile per </li></ul></ul><ul><ul><li>trasformare nella forma i contenuti, mentre il </li></ul></ul><ul><ul><li>CSS resta per assegnare gli stili di formattazione ai </li></ul></ul><ul><ul><li>tag HTML. </li></ul></ul>
    53. 53. Differenza tra CSS e XSL <ul><li>CSS     XSL   </li></ul><ul><li>Formattazione (X)HTML Sì No </li></ul><ul><li>Formattazione XML Sì Si </li></ul><ul><li>Funzionalità avanzate (istruzioni </li></ul><ul><ul><li>if, cicli for ecc.) No Si </li></ul></ul><ul><li>Trasformazioni dal formato </li></ul><ul><ul><li>originario ad altri formati No Si </li></ul></ul><ul><ul><li>(Fonte: w3.org) </li></ul></ul>
    54. 54. XSL Fonte: w3.org
    55. 55. <ul><li>XPath </li></ul>
    56. 56. XPath <ul><li>Raccomandazione del W3C del novembre 1999. </li></ul><ul><li>È usato soprattutto da XSL e XPointer. </li></ul><ul><li>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. </li></ul><ul><li>Ma anche manipolare stringhe, valutare espressioni booleane o far calcoli sui nodi o sui loro contenuti. </li></ul>
    57. 57. XPath: esempi <ul><li>/ Recupera il primo nodo del file XML, incluso ogni commento o Processing Instructions, esclusa la dichiarazione XML. </li></ul><ul><li>//RAG_SOC AbrreviatedAbsoluteLocationPath, seleziona tutti gli elementi RAG_SOC del documento. </li></ul><ul><li>//CODICE[. = 1234] Ricerca tutti gli elementi CODICE che hanno il valore 1234. </li></ul><ul><li>//CODICE[@origin=‘Florida’] Ricerca tutti gli elementi CODICE che hanno l’attributo origin settato a Florida. </li></ul><ul><li>.//CODICE Seleziona tutti gli elementi CODICE che sono contenuti nel sottoalbero del nodo corrente. </li></ul><ul><li>//* Seleziona tutti gli elementi del documento. </li></ul>
    58. 58. XPath: esempi (più complessi) <ul><li><xsl:decimal-format name=&quot;euro&quot; decimal- </li></ul><ul><li>separator=&quot;,&quot; grouping-separator=&quot;.&quot;/> </li></ul><ul><li>format-number(imponibile, '#.##0,00','euro') </li></ul><ul><li>../@bordi[. = 'solid'] </li></ul><ul><li>count(/ANAGRAFICA/RECORD/rs:data/z:row) </li></ul><ul><li>format-number(sum(z:row/@VAL), '#.##0,00','euro') </li></ul><ul><li>count(z:row[@ANOMALIA = '6']) </li></ul><ul><li>count(RECORD/DATA/z:row[@ANOMALIA = '8' or @ANOMALIA = '1']) </li></ul><ul><li>format-number((sum(RECORD/DATA/z:row/@VALORE) + TESTATA/VALOREVENDITAVARIE), '#.##0,00','euro') </li></ul>
    59. 59. XPath: funzioni <ul><li>Ecco un piccolo elenco di funzioni che è possibile trovare in xpath: </li></ul><ul><li>Concat() </li></ul><ul><li>Substring() </li></ul><ul><li>Ceiling() </li></ul><ul><li>Floor() </li></ul><ul><li>Sum() </li></ul><ul><li>Round() </li></ul><ul><li>… . </li></ul>
    60. 60. <ul><li>XSLT </li></ul>
    61. 61. XSLT <ul><li>Raccomandazione del W3C (1.0) del novembre 1999 . </li></ul><ul><li>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). </li></ul><ul><li>Namespace: “ http://www.w3.org/1999/XSL/Transform ”. </li></ul><ul><li>È spesso utilizzato per trasformare un XML in XHTML per la visualizzazione sul web. </li></ul><ul><li>La trasformazione di un XML attraverso un XSLT viene effettuata dal parser XML. </li></ul>
    62. 62. XSLT: esempio1 (XML) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><?xml-stylesheet type=&quot;text/xsl&quot; href=&quot;esempio1.xslt&quot;?> </li></ul><ul><li><ANAGRAFICA> </li></ul><ul><li><TESTATA> </li></ul><ul><li><NOMEMERCATO>TEST</NOMEMERCATO> </li></ul><ul><li><DATA>18 dicembre 2003 16.05.29</DATA> </li></ul><ul><li></TESTATA> </li></ul><ul><li><RECORD> </li></ul><ul><li><CODICE_CLIENTE>000105</CODICE_CLIENTE> </li></ul><ul><li><INDIRIZZO>VIA BIANCOSPINI 20</INDIRIZZO> </li></ul><ul><li>… . </li></ul>
    63. 63. XSLT: esempio1 (XSLT) <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot; http://www.w3.org/1999/XSL/Transform&quot;> </li></ul><ul><li><xsl:output method=&quot;html&quot; version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; indent=&quot;yes&quot;/> </li></ul><ul><li><xsl:template match=&quot;ANAGRAFICA&quot;> </li></ul><ul><li> <html><body> </li></ul><ul><li><h1><xsl:value-of select=&quot;TESTATA/NOMEMERCATO&quot;/></h1><hr/> </li></ul><ul><li><table bgcolor=&quot;yellow&quot; border=&quot;1&quot; > </li></ul><ul><li><tbody> <tr> </li></ul><ul><li> <th>Cod. Cliente</th> </li></ul><ul><li> <th>Ragione Sociale</th> </li></ul><ul><li> <th>P. iva</th> </li></ul><ul><li> <th>Indirizzo</th> </li></ul><ul><li></tr> </li></ul><ul><li><xsl:for-each select=&quot;RECORD&quot;> </li></ul><ul><li> <tr> </li></ul><ul><li> <td><xsl:value-of select=&quot;CODICE_CLIENTE&quot;/></td> </li></ul><ul><li> <td><xsl:value-of select=&quot;RAG_SOC&quot;/></td> </li></ul><ul><li> … . </li></ul>
    64. 64. XSLT: Output (XHMTL)
    65. 65. XSLT: il tag di root <ul><li><xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot; </li></ul><ul><li>xmlns=&quot;http://www.w3.org/TR/REC-html40&quot; </li></ul><ul><li>version=&quot;1.0&quot;> </li></ul><ul><li>È obbligatorio indicare la versione. </li></ul><ul><li>È necessario il namespace FO per Mozilla/Firebird. </li></ul>
    66. 66. XSLT: il tag template <ul><li>… </li></ul><ul><li><xsl:template match=&quot;ANAGRAFICA&quot;> </li></ul><ul><li>… </li></ul><ul><li>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. </li></ul>
    67. 67. XSLT: xsl:value-of <ul><li>… </li></ul><ul><li><h1><xsl:value-of select=“ XPathExpression &quot;/></h1> </li></ul><ul><li>... </li></ul><ul><li>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. </li></ul>
    68. 68. XSLT: xsl:for-each <ul><li>… </li></ul><ul><li><xsl:for-each select=&quot;RECORD&quot;> </li></ul><ul><li>… </li></ul><ul><li>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! </li></ul>
    69. 69. XSLT: xsl:attribute <ul><li><a onclick=“<xsl:value-of select=&quot;@name&quot;/>”> </li></ul><ul><li><img hspace=&quot;0“ src=&quot;img.gif“ border=&quot;0&quot;> </li></ul><ul><li><xsl:attribute name=&quot;id&quot;> </li></ul><ul><li>Img<xsl:value-of select=&quot;@name&quot;/> </li></ul><ul><li></xsl:attribute> </li></ul><ul><li></img> </li></ul><ul><li></a> </li></ul>
    70. 70. XSLT: xsl:if <ul><li><xsl:if test=&quot;js:IsEan(string(@ITEM_NO))&quot;> </li></ul><ul><li><fo:instream-foreign-object width=&quot;28mm&quot; height=&quot;8mm&quot;> </li></ul><ul><li><svg:svg height=&quot;8mm&quot; width=&quot;28mm&quot;> </li></ul><ul><li>… . </li></ul><ul><li> </fo:instream-foreign-object> </li></ul><ul><li></xsl:if> </li></ul>
    71. 71. XSLT: xsl:choose <ul><li>< xsl:choose > </li></ul><ul><li>< xsl:when test=&quot;trasporto = 'D'&quot;> </li></ul><ul><li>< xsl:choose > </li></ul><ul><li>< xsl:when test=&quot;../@bordi[. = 'solid']&quot;> </li></ul><ul><li><fo:block text-align=&quot;center&quot;>Destinatario</fo:block> </li></ul><ul><li></ xsl:when > </li></ul><ul><li>< xsl:otherwise > </li></ul><ul><li><fo:block> </li></ul><ul><li><fo:instream-foreign-object> </li></ul><ul><li><svg:svg width=&quot;2mm&quot;> </li></ul><ul><li>… . </li></ul><ul><li></svg:svg> </li></ul><ul><li></fo:instream-foreign-object> </li></ul><ul><li></fo:block> </li></ul><ul><li></ xsl:otherwise > </li></ul><ul><li></ xsl:choose > </li></ul><ul><li></ xsl:when > </li></ul><ul><li>< xsl:otherwise > </li></ul><ul><li><fo:block text-align=&quot;center&quot;>Mittente</fo:block> </li></ul><ul><li></ xsl:otherwise > </li></ul><ul><li></ xsl:choose > </li></ul>
    72. 72. XSLT: altri elementi comuni <ul><li>xsl:copy </li></ul><ul><li>xsl:decimal-format </li></ul><ul><li>xsl:sort </li></ul><ul><li>xsl:variable </li></ul><ul><li>Spiegati con degli esempi (File: sito/stylesheet.xsl) </li></ul><ul><li>O funzioni tra cui: </li></ul><ul><li>current() </li></ul><ul><li>document() </li></ul><ul><li>format-number() </li></ul><ul><li>function-available() </li></ul>
    73. 73. <ul><li>XSL-Fo </li></ul>
    74. 74. XSL-Fo <ul><li>Raccomandazione del W3C dell’ottobre 2001. </li></ul><ul><li>Namespace: xmlns:fo=“ http://www.w3.org/1999/XSL/Format ” </li></ul><ul><li>Trasforma un documento XML in uno Formattato secondo un determinato XSL-Fo. </li></ul><ul><li>Formati di output: </li></ul><ul><ul><li>PostScript </li></ul></ul><ul><ul><li>PDF </li></ul></ul><ul><ul><li>Testo </li></ul></ul><ul><ul><li>PCL </li></ul></ul><ul><ul><li>RTF </li></ul></ul><ul><ul><li>… </li></ul></ul>
    75. 75. XSL-Fo: processo di generazione
    76. 76. XSL-Fo: Struttura del documento <ul><li><?xml version=&quot;1.0&quot;?> <fo:root xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot;>   <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> </li></ul>Fonte: html.it
    77. 77. XSL-Fo: esempio (from Cocoon project) <ul><li><fo:root xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot;> </li></ul><ul><li><fo:layout-master-set> </li></ul><ul><li><fo:simple-page-master master-name=&quot;page&quot; page-height=&quot;29.7cm&quot; page-width=&quot;21cm&quot; margin- top=&quot;1cm&quot; margin-bottom=&quot;2cm&quot; margin-left=&quot;2.5cm&quot; margin-right=&quot;2.5cm&quot;> </li></ul><ul><li> <fo:region-before extent=&quot;3cm&quot;/> </li></ul><ul><li> <fo:region-body margin-top=&quot;3cm&quot;/> </li></ul><ul><li> <fo:region-after extent=&quot;1.5cm&quot;/> </li></ul><ul><li></fo:simple-page-master> </li></ul><ul><li><fo:page-sequence-master master-name=&quot;all&quot;> </li></ul><ul><li> <fo:repeatable-page-master-alternatives> </li></ul><ul><li> <fo:conditional-page-master-reference master-reference=&quot;page&quot; page-position=&quot;first&quot;/> </li></ul><ul><li> </fo:repeatable-page-master-alternatives> </li></ul><ul><li></fo:page-sequence-master> </li></ul><ul><li></fo:layout-master-set> </li></ul><ul><li><fo:page-sequence master-reference=&quot;all&quot;> </li></ul><ul><li> <fo:static-content flow-name=&quot;xsl-region-after&quot;> </li></ul><ul><li> <fo:block text-align=&quot;center&quot; font-size=&quot;10pt&quot; font-family=&quot;serif&quot; line-height=&quot;14pt&quot;>page <fo:page-number/></fo:block> </li></ul><ul><li> </fo:static-content> </li></ul><ul><li> <fo:flow flow-name=&quot;xsl-region-body&quot;> </li></ul><ul><li><fo:block font-size=&quot;36pt&quot; space-before.optimum=&quot;24pt&quot; text-align=&quot;center&quot;>Ciao Mondo!</fo:block> </li></ul><ul><li> </fo:flow> </li></ul><ul><li></fo:page-sequence> </li></ul><ul><li></fo:root> </li></ul>
    78. 78. XSL-Fo: fo:root <ul><li>Deve essere “fo:root”. </li></ul><ul><li>Deve contenere: </li></ul><ul><ul><li>Un singolo fo:layout-master-set. </li></ul></ul><ul><ul><li>Uno o più fo:page-sequences. </li></ul></ul><ul><ul><li>Una facoltativa sezione fo:declarations (per le dichiarazioni relative al colore, ICC Color Profile). </li></ul></ul>fo:simple-page-master fo:root fo:page-sequences fo:layout-master-set fo:page-sequence-master fo:static-content fo:flow
    79. 79. XSL-Fo: fo:layout-master-set <ul><li>Definisce geometria e suddivisioni delle pagine, i figli sono: </li></ul><ul><ul><li>Uno o più fo:simple-page-master: per la struttura della pagina. </li></ul></ul><ul><ul><li>Delle facoltative sezioni fo:page-sequence-master: per descrivere con quale modello di pagina si deve renderizzare durante la formattazione. </li></ul></ul>fo:simple-page-master fo:root fo:page-sequences fo:layout-master-set fo:page-sequence-master fo:static-content fo:flow
    80. 80. XSL-Fo: fo:simple-page-master <ul><li>Dimensioni della pagina. </li></ul><ul><li>Dimensione delle cinque regioni: </li></ul><ul><ul><li>fo:region-before. </li></ul></ul><ul><ul><li>fo:region-after. </li></ul></ul><ul><ul><li>fo:region-start. </li></ul></ul><ul><ul><li>fo:region-end. </li></ul></ul><ul><ul><li>fo:region-body. </li></ul></ul>fo:simple-page-master fo:root fo:page-sequences fo:layout-master-set fo:page-sequence-master fo:static-content fo:flow
    81. 81. XSL-Fo: il layout Fonte: w3.org
    82. 82. XSL-Fo: fo:page-sequence-master <ul><li>Definisce la sequenza dei simple-page-maset da utilizzare per il rendering del folw: </li></ul><ul><ul><li>fo:single-page-master-reference. </li></ul></ul><ul><ul><li>fo:repeatable-page-master-reference. </li></ul></ul><ul><ul><li>fo:repeatable-page-master-alternatives. </li></ul></ul>fo:simple-page-master fo:root fo:page-sequences fo:layout-master-set fo:page-sequence-master fo:static-content fo:flow
    83. 83. XSL-Fo: fo:page-sequences <ul><li>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: </li></ul><ul><ul><li>fo:static-content. </li></ul></ul><ul><ul><li>fo:flow. </li></ul></ul><ul><ul><li>fo:title. </li></ul></ul>fo:simple-page-master fo:root fo:page-sequences fo:layout-master-set fo:page-sequence-master fo:static-content fo:flow
    84. 84. XSL-Fo: fo:static-content <ul><li>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. </li></ul>fo:simple-page-master fo:root fo:page-sequences fo:layout-master-set fo:page-sequence-master fo:static-content fo:flow
    85. 85. XSL-Fo: fo:flow <ul><li>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: </li></ul><ul><ul><li>fo:block (il più importante, nonché il più utilizzato). </li></ul></ul><ul><ul><li>fo:table. </li></ul></ul><ul><ul><li>fo:list-block. </li></ul></ul>fo:simple-page-master fo:root fo:page-sequences fo:layout-master-set fo:page-sequence-master fo:static-content fo:flow
    86. 86. XSL-Fo: altri tag di formattazione <ul><li>fo:footnote. </li></ul><ul><li>fo:instream-foreign-object. </li></ul><ul><li>fo:page-number-citation. </li></ul><ul><li>fo:block-container. </li></ul><ul><li>fo:external-graphic. </li></ul><ul><li>fo:inline. </li></ul><ul><li>fo:list-item. </li></ul><ul><li>fo:basic-link. </li></ul><ul><li>ecc… </li></ul>
    87. 87. XSL-Fo: engine <ul><li>Apache Foundation’s FOP. </li></ul><ul><li>Antenna House XSL Formatter. </li></ul><ul><li>RenderX XEP. </li></ul><ul><li>Inventive Designers Scriptura 2.1. </li></ul>
    88. 88. <ul><li>Web Services </li></ul>
    89. 89. WebServices: i motivi <ul><li>Chi non ha mai avuto bisogno di intercomunicazione tra applicativi, sistemi, sedi e filiali, ecc…? </li></ul><ul><li>Cosa era il difficile?? Semplice, in sede c’era un sistema *nix e le vostre filiali usano Windows XP! Come comunicare? </li></ul><ul><li>DCOM, CORBA, Java RMI, CCM… difficile la comunicazione tra tecnologie diverse…o uguali e far passare la comunicazione da internet (sicurezza). </li></ul><ul><li>Scambiare un file con dentro una serie di cifre da interpretare in base alla posizione dei caratteri...? No per applicazioni internet… </li></ul>
    90. 90. WebServices <ul><li>Perché non far comunicate i diversi attori tramite una lingua franca: </li></ul><ul><ul><li>SOAP (dialetto di XML) </li></ul></ul><ul><li>Attraverso un protocollo facile da gestire: </li></ul><ul><ul><li>HTTP (ma non solo) </li></ul></ul><ul><li>E descriverli con un altra lingua franca: </li></ul><ul><ul><li>WSDL (WS Description Language sempre XML) </li></ul></ul><ul><li>E rendere disponibili delle “pagine gialle” per questi servizi: </li></ul><ul><ul><li>UDDI (Universal Description, Discovery and Integration of Web Services) </li></ul></ul>
    91. 91. WebServices <ul><li>Sono standard aperti, non concepiti da un’unica entità. </li></ul><ul><li>Adottati da tutti. </li></ul><ul><li>Indipendenti dal linguaggio di programmazione, protocolli e piattaforme. </li></ul><ul><li>Possono essere utilizzati in modo asincrono. </li></ul><ul><li>Non offrono meccanismi nativi per gestire lo stato. </li></ul><ul><li>È possibile far percorrere dei salti ai messaggi attraverso vari server, come avviene con o pacchetti TCP/IP (WS-Addressing). </li></ul><ul><li>È possibile implementare meccanismi di sicurezza per firmare il messaggio o criptarlo (WS-Security). </li></ul><ul><li>È possibile attivare un meccanismo di transazioni. </li></ul><ul><li>Programmazione per componenti. </li></ul>
    92. 92. WebServices: come funzionano Fonte: java.sun.org Client Server
    93. 93. WebServices: SOAP <ul><li>Simple Access Object Protocol </li></ul><ul><li>Originariamente sviluppato da Microsoft, ma resa indipendente dal fornitore (basta che si vedano le tecnologie alla base di SOAP: HTTP e XML). </li></ul><ul><li>Protocollo lightweight. </li></ul><ul><li>Non complesso e completo come uno heavyweight. </li></ul><ul><li>È trasportato tipicamente su HTTP, ma può viaggiare anche su HTTPS, SMTP, FTP… </li></ul><ul><li>Serializzazione in base al valore e non al riverimento. </li></ul><ul><li>Buone prestazioni nonostante la “parserizzazione” del messaggio xml. </li></ul>
    94. 94. WebService: messaggio SOAP Fonte: java.sun.org
    95. 95. WebService: messaggio soap <ul><li>POST /helloservice/Service1.asmx HTTP/1.1 </li></ul><ul><li>Host: localhost </li></ul><ul><li>Content-Type: text/xml; charset=utf-8 </li></ul><ul><li>Content-Length: length </li></ul><ul><li>SOAPAction: &quot;http://tempuri.org/HelloWorld&quot; </li></ul><ul><li><?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> </li></ul><ul><li>< soap :Envelope xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:soap=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;> < soap :Body> </li></ul><ul><li> < HelloWorld xmlns=&quot;http://tempuri.org/&quot;> < String_1 >Domenico</ String_1 > </li></ul><ul><li></ HelloWorld > </li></ul><ul><li></ soap :Body> </li></ul><ul><li></ soap :Envelope> </li></ul>
    96. 96. WebService: risposta soap <ul><li>HTTP/1.1 200 OK </li></ul><ul><li>Content-Type: text/xml; charset=utf-8 </li></ul><ul><li>Content-Length: length </li></ul><ul><li><?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> </li></ul><ul><li>< soap :Envelope xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:soap=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;> < soap :Body> </li></ul><ul><li>< HelloWorldResponse xmlns=&quot;http://tempuri.org/&quot;> < HelloWorldResult >Ciao Domenico</ HelloWorldResult > </ HelloWorldResponse > </li></ul><ul><li></ soap :Body> </li></ul><ul><li></ soap :Envelope> </li></ul>
    97. 97. WebService: Header <ul><li>Tipicamente in chiaro. </li></ul><ul><li>Invia varie informazioni circa il messaggio, come il timestamp o un id. </li></ul><ul><li>mustUnderstand=“1”: se 1 indica al server che nell’Header sono contenute informazioni importanti per l’esecuzione del metodo. </li></ul><ul><li>Actor=“urn:temp”: utilizzato da WS-Routing per identificare il destinatario del messaggio. </li></ul>
    98. 98. WebService: Body
    99. 99. WebService: WSDL
    100. 100. WebService: UDDI
    101. 101. WS-Security <ul><li>Autenticazione: </li></ul><ul><ul><li>Username e Password </li></ul></ul><ul><ul><li>Certificato X.509 </li></ul></ul><ul><ul><li>Token custom </li></ul></ul><ul><li>Firma digitale: </li></ul><ul><ul><li>Basata su Username e Password </li></ul></ul><ul><ul><li>Con certificato X.509 </li></ul></ul><ul><ul><li>Con token custom </li></ul></ul><ul><li>Encryption: </li></ul><ul><ul><li>Chiavi simmetriche (shared key) </li></ul></ul><ul><ul><li>Chiavi asimmetriche (certificati X.509 per es.) </li></ul></ul><ul><ul><li>Custom </li></ul></ul>
    102. 102. WS-Routing <ul><li>Definisce le regole veicolare una chiamata SOAP verso un’altro server </li></ul><ul><li>Può effettuare un routing su protocolli differenti </li></ul>
    103. 103. WS-Attachments e DIME <ul><li>DIME (Direct Internet Message Encapsulation) definisce il formato binario dei messaggi </li></ul><ul><li>WS-Attachments descrive come usare DIME per allegare un dato binario ad un messaggio SOAP </li></ul>
    104. 104. WSDL - review <ul><li>Web Services Description Language </li></ul><ul><li>Defines the Web service interface </li></ul><ul><li>Describes everything required to write a program to work with a Web service – URI, methods and properties, data types, protocols </li></ul><ul><li>Describes the request message a program must send and the what the response will be </li></ul>
    105. 106. Sicurezza dei Web Services
    106. 107. Why Web Services? <ul><li>“ There is nothing magic about Web Services” </li></ul><ul><ul><li>Similar to CORBA/proxy/stub/IDL </li></ul></ul><ul><ul><li>Similar to EJB/home/remote/method Introspection </li></ul></ul><ul><ul><li>Similar to DCOM/COM+ </li></ul></ul><ul><li>but… </li></ul><ul><ul><li>Widely accepted common registry (cross vendor, platform, industry) </li></ul></ul><ul><ul><li>Uses standards, human readable, easily transported </li></ul></ul><ul><ul><li>Operating System agnostic </li></ul></ul><ul><li>provides consistent architecture </li></ul><ul><ul><li>Whether the application has to be used inside or out side your enterprise </li></ul></ul><ul><ul><li>Whether the application is produced or consumed on different hardware </li></ul></ul><ul><ul><li>Or whether your/their developer’s are using their </li></ul></ul><ul><ul><li>development environments </li></ul></ul>
    107. 108. SVG <ul><li>Nuovo formato grafico vettoriale di W3C: </li></ul><ul><ul><ul><li>W3C Recommendation 14 January 2003 . </li></ul></ul></ul><ul><li>Il disegno è rappresentato da una struttura gerarchica. </li></ul><ul><li>Può essere animato e interattivo. </li></ul>
    108. 109. XLink
    109. 110. SVG, VML, SMIL, RDF, RSS, XUL
    110. 111. XML Vocabularies <ul><li>MathML Recommendation (July 1999) </li></ul><ul><ul><li>Describes mathematical notation in XML http://www.w3.org/TR/REC-MathML/ </li></ul></ul><ul><li>Scalar Vector Graphics (SVG) </li></ul><ul><ul><li>Describes two-dimensional vector and mixed vector/raster graphics in XML </li></ul></ul><ul><ul><li>Candidate Recommendation (Nov 2000) http://www.w3.org/TR/2000/CR-SVG-20001102/ </li></ul></ul>
    111. 112. Tomorrow’s XML Standards <ul><li>XML Infoset </li></ul><ul><li>DOM Level 2 HTML and DOM Level 3 </li></ul><ul><li>XSL Formating Objects </li></ul><ul><li>XML Linking (XPointer and XLink) </li></ul><ul><li>XML Base </li></ul><ul><li>Canonical XML </li></ul><ul><li>XML Schema </li></ul><ul><li>XML Query </li></ul><ul><li>XML Protocol </li></ul>
    112. 113. XML Linking <ul><li>XPointer </li></ul><ul><ul><li>Supports addressing into an XML document </li></ul></ul><ul><ul><li>Depends on XPath (like XSLT) </li></ul></ul><ul><ul><li>XPointer Last Call WD (Jan 2001) http://www.w3.org/TR/xptr </li></ul></ul><ul><ul><li>Reverted to WD from CR status for Namespace issues </li></ul></ul>
    113. 114. XML Linking (2) <ul><li>XML Linking Language (XLink) </li></ul><ul><ul><li>Permits creation of elements in XML documents to describe links between Web resources </li></ul></ul><ul><ul><li>Uses XPointer to point to resources </li></ul></ul><ul><ul><li>Uses XML Base to define base URI for links </li></ul></ul><ul><ul><li>XLink Proposed Rec (Dec 2000) http://www.w3.org/TR/xlink/ </li></ul></ul>
    114. 115. XML Base <ul><li>XML Base </li></ul><ul><ul><li>Provides XML equivalent of HTML BASE for defining base URIs for XML documents </li></ul></ul><ul><ul><li>Defines an attribute xml:base </li></ul></ul><ul><ul><li>Originally needed by XLink </li></ul></ul><ul><ul><li>In future will impact other XML specs </li></ul></ul><ul><ul><li>XBase Proposed Rec (Dec 2000) http://www.w3.org/TR/xmlbase </li></ul></ul>
    115. 116. Canonical XML <ul><li>Canonical XML </li></ul><ul><ul><li>Describes a method of creating a canonical representation of an XML document </li></ul></ul><ul><ul><li>C14N Candidate Recommendation (Oct 2000) http://www.w3.org/TR/xml-c14n </li></ul></ul><ul><ul><li>Referenced by XML Signatures CR (Oct 2000) http://www.w3.org/TR/xmldsig-core/ </li></ul></ul>
    116. 117. XML Query <ul><li>XML Query </li></ul><ul><ul><li>Defining a data model, algebra and syntax for an XML query language </li></ul></ul><ul><ul><li>Requirements and Use Cases WD </li></ul></ul><ul><ul><li>http://www.w3.org/TR/xmlquery-req </li></ul></ul><ul><ul><li>XML Query Data Model WD http://www.w3.org/TR/query-datamodel/ </li></ul></ul><ul><ul><li>XML Query Algebra WD http://www.w3.org/TR/query-algebra/ </li></ul></ul>
    117. 118. XML Protocol <ul><li>XML Protocol </li></ul><ul><ul><li>Most recently started XML Working Group </li></ul></ul><ul><ul><li>Developing a framework for XML messaging </li></ul></ul><ul><ul><li>Work based on SOAP 1.1 http://www.w3.org/TR/SOAP/ </li></ul></ul><ul><ul><li>Working Group Charter http://www.w3.org/2000/09/XML-Protocol-Charter </li></ul></ul><ul><ul><li>XProtocol Requirements (Dec 2000) </li></ul></ul><ul><ul><li>http://www.w3.org/TR/xp-reqs </li></ul></ul>
    118. 119. SMIL <ul><li>Synchronised Multimedia Integration Language </li></ul><ul><li>Integration of multimedia with text, audio, video </li></ul><ul><li>Support in RealPlayer & Windows Media Player </li></ul><ul><ul><ul><li>This Day in History from the History Channel </li></ul></ul></ul><ul><ul><ul><li>Porsche </li></ul></ul></ul>Examples
    119. 120. RDF - Resource Description Framework <ul><li>Framework for metadata </li></ul><ul><li>Interoperability of information exchange between applications </li></ul><ul><li>Applications: </li></ul><ul><ul><li>Resource discovery </li></ul></ul><ul><ul><li>Knowledge sharing and exchange </li></ul></ul><ul><ul><li>Content rating </li></ul></ul><ul><ul><li>Intellectual property rights </li></ul></ul>
    120. 121. Evolution To Web Services XML Programmability Connectivity HTML Presentation TCP/IP FTP, E -mail, Gopher Web Pages Browse the Web Program the Web Web Services Technology Innovation
    121. 122. Web Services Publisher Seller BROKER Seller Order Full-Fillment Content Publisher Web Service Web Service Web Service Web Service
    122. 123. Riferimenti <ul><li>SOAP - Guida allo sviluppatore – Kennard Mark </li></ul><ul><li>IoProgrammo () </li></ul><ul><li>DEV () </li></ul><ul><li>JAVA 2 Tecniche Avanzate – Horsrmann Cornell </li></ul><ul><li>www.apache.org </li></ul><ul><li>www.w3.org </li></ul><ul><li>http://www.renderx.com/tutorial.html </li></ul><ul><li>http://pro.html.it/ </li></ul><ul><li>http:// msdn.microsoft.com </li></ul><ul><li>In internet in generale… </li></ul>
    123. 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.
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×