XSLT (eXtensible Stylesheet Language Transformation) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis

Slides:



Advertisements
Presentazioni simili
I Namespace Mario Arrigoni Neri.
Advertisements

WWW XML-Namespace Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u Lesigenza e il funzionamento dei Namespace in XML.
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
Introduzione ai CSS. Cosa è successo allHTML Perché usare i CSS Introduzione ai CSS Fondamenti.
XSLT (eXtensible Stylesheet Language Transformation) Laurea Magistrale in Informatica.
DTD Laurea Magistrale in Informatica Chapter 03 Modulo del corso Thecnologies for Innovation.
Esercitazione XSLT Laurea Magistrale in Informatica Digital Technologies (2008/08) dott. Francesco De Angelis dott. Federico.
XSLT UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
Query OQL e XQUERY a confronto
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
TW Analisi dei documenti n Classificazione dei componenti n Selezione dei componenti, costruzione della gerarchia, dei blocchi informativi e degli elementi.
WWW Link in XML Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u XLink.
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
XML Prof. Barbara Pernici Politecnico di Milano aggiornato 10/12/2002.
Informatica.science.unitn.it Un esempio di architettura basata sulluso di XML e XSL per la pubblicazione di un sito web.
Linguaggi di marcatura e fogli stile Presentazione del corso.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
XML e XSL. XSL - eXtensible Stylesheet Language XSL è un linguaggio di annotazione che serve a "trasformare" la struttura di un documento in formato XML.
XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.
Corso di basi di dati II Prof. Francesco Cutugno Dott. Sara Romano
Basi di Dati II Sara Romano
Introduzione e nozioni fondamentali di sintassi
Linguaggi di markup1 LINGUAGGI DI MARKUP. Linguaggi di markup2 Documenti su Internet Internet permette (tra laltro) di accedere a documenti remoti In.
Il linguaggio ASP Lezione 4 Manipolare i database con ASP Lutilizzo dei FORM per laggiunta dei dati.
Elaborazione di Franco Grivet Chin
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... XML Elaborazione di Franco Grivet Chin.
Esercizio 1 Convertire il seguente DTD (esercizio 1 sui DTD) in XML Schema:
Corso di PHP.
Linguaggi per il Web Linguaggi di markup: CSS. Cascading Style Sheets (CSS) servono per facilitare la creazione di pagine HTML con un aspetto uniforme.
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
1 XPath. 2 What is XPath? XPath is a syntax for defining parts of an XML document XPath uses paths to define XML elements XPath defines a library of standard.
Informatica Umanistica A.A. 2009/2010 eXtensible Markup Language (XML)
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.
I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select.
1 IsaPress. 2 Obiettivo Realizzare uno strumento di facile uso per estrarre il contenuto da documenti binari di vario tipo in un formato utile per l'impaginazione.
1 IsaPress. 2 Obiettivo Realizzare uno strumento di facile uso per estrarre il contenuto da documenti binari di vario tipo in un formato utile per l'impaginazione.
HTML Lezione 8 I collegamenti ipertestuali (link).
Il metalinguaggio XML: la nuova frontiera per la codifica dellinformazione Relatore: Ing. Marco Porta Tesi di Laurea di: Andrea Mocchi ANNO ACCADEMICO.
Creare pagine web Xhtlm. Struttura di una pagina.
HTML Lezione 3 Stili.
Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.
HTML HyperText Markup Language Linguaggio per marcare un’Ipertesto
XPATH.
CSS Cascade Style Sheets.
Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi  Lezione 02: 06/03martedi  Lezione 03: 13/03martedi  Lezione 04:
Informatica Umanistica A.A. 2007/2008 LEZIONE 4 eXtensible Markup Language (XML) INTRODUZIONE.
JavaScript Generalità Cos'è JavaScript?
XHTML Corso linguaggi per il web a.s. 2011/2012 ITIS A. Righi – Corsico Relatore – Aldo Guastafierro.
Introduzione a Javascript
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
HTML e CSS C. Gena, C. Picardi, J. Sproston HTML e CSS.
WWW XSLT Ing. Michele Vindigni. WWW 2 Introduzione Oggi esaminiamo in breve: u XSLT, ovvero il linguaggio trasformazione per documenti XML con sintassi.
A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language.
CSS Cascading Style Sheet
Fondamenti di Markup Languages: Richiami di HTML © 2005 Stefano Clemente Stefano Clemente
Cenni Su SGML, HTML, XML SGML (Standard Generalized Markup Language) è il padre di tutti i linguaggi "Markup" – Lo svantaggio è la "pesantezza" dei suoi.
I fogli di stile XSL.
WWW XSLT Fabio Vitali. WWW Fabio Vitali2 Introduzione Oggi esaminiamo in breve: u XSLT, ovvero il linguaggio di stile di XML.
Ingegneria del software Modulo 3 -Tecniche di implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
EXtensible Stylesheet Language Transformations (XSLT) Giuseppe Della Penna Università degli Studi di L’Aquila
WWW XSLT Fabio Vitali. WWW Fabio Vitali2 Introduzione Oggi esaminiamo in breve: u XSLT, ovvero il linguaggio di stile di XML.
Tesi di Laurea di: Relatore: Mariano Diasio Prof. Fabio Vitali
1 XSL:Rappresentare i documenti XML Marco Mesiti XSL, XSLT, XPath.
Documenti XML ben formati Altre componenti di un documento XML – Struttura dei documenti XML.
Università degli Studi di Firenze Facoltà di Ingegneria Dipartimento di Sistemi e Informatica Corso di Laurea in Ingegneria Informatica Modelli e strumenti.
XML (eXtensible Markup Language). XML è stato progettato per descrivere dati HTML è stato progettato per visualizzare dati XML (eXtensible Markup Language)
INFORMAZIONE E PRESENTAZIONE Lo scopo di una pagina web è, essenzialmente la trasmissione di una informazione. L’informazione è costituita da due aspetti.
Transcript della presentazione:

XSLT (eXtensible Stylesheet Language Transformation) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis

XSLT - eXtensible Stylesheet Language Transformation2 Agenda XSL e XSLT Modello XSLT I template Creazione di Elementi Creazione di Attributi Prelievo di valori Definizione della struttura di destinazione Iterazione Istruzioni condizionali Ordinamento Stile Iterativo e ricorsivo Esempi…

XSLT - eXtensible Stylesheet Language Transformation3 CSS e XSL CSS (Cascading Style Sheets) è un linguaggio puramente descrittivo. Assegna ai nodi del documento XML una caratterizzazione tipografica senza nessuna modifica strutturale o organizzativa XSL (eXtensible Stylesheet Language), invece, permette sia caratterizzazione tipografica che riscrittura, ovvero la possibilità di organizzare il contenuto finale in maniera diversa dall'originale

XSLT - eXtensible Stylesheet Language Transformation4 XSL e XSLT XSLT (XSL Transformation) estende il concetto di foglio di stile fino a permettere la manipolazione della struttura stessa del documento XSLT permette di trasformare un documento XML filtrandone i dati e riorganizzandoli in unaltra struttura XML, o persino in un semplice testo XSLT possiede molte delle caratteristiche di un linguaggio di programmazione imperativo! La proposta è divisa in due parti: un linguaggio di trasformazione, XSLT un vocabolario di elementi XML con semantica di formattazione, XSL-FO (XSL Formatting Object) XSLT, inoltre, si basa su XPath

XSLT - eXtensible Stylesheet Language Transformation5 XSLT come formattatore Per quel che riguarda labilità di generare una presentazione dei dati XML, XSLT dispone attualmente di due metodi: E possibile trasformare il documento XML in un documento XHTML, per poi farlo visualizzare in qualsiasi browser. E possibile usare gli XSL Formatting Object, che definiscono il formato di visualizzazione senza presupporre la trasformazione in HTML o in altri linguaggi di presentazione.

XSLT - eXtensible Stylesheet Language Transformation6 XSLT come trasformatore Questa funzionalità, del tutto nuova, è la più interessante Con XSLT è possibile modificare al volo la struttura che accoglie i dati, e in parte anche i dati stessi. Questo permette, ad esempio: di offrire viste differenti sugli stessi dati a utenti differenti di esportare i dati in un formato noto, come HTML o PDF di adattare i dati a diversi dispositivi di visualizzazione

XSLT - eXtensible Stylesheet Language Transformation7 Il modello di XSLT processore XSLT input output

XSLT - eXtensible Stylesheet Language Transformation8 Struttura generale Un documento XSLT, come ogni documento XML, inizia con una dichiarazione XML Lelemento root è stylesheet Se il documento deve emettere HTML o un altro linguaggio, bisogna dichiarare entrambi i namespace Di solito il linguaggio target viene usato come default namespace, quindi tutti gli elementi XSLT vanno prefissati con il loro namespace (xsl:) <xsl:stylesheet version="1.0" xmlns:xsl=" xmlns="

XSLT - eXtensible Stylesheet Language Transformation9 I fogli di stile XSLT Un foglio di stile XSL è composto sostanzialmente di template di costruzione, che permettono di riscrivere, modificandola, una selezione del documento XML dorigine nel documento destinazione Ogni template individua un pattern da ricercare nel documento di partenza, e vi associa un blocco di elementi e testo da inserire nel documento di destinazione Un template è indicato dallelemento template

XSLT - eXtensible Stylesheet Language Transformation10 I template Ad esempio, dato il frammento: Questo deve essere importante Il seguente template: Fa match con lelemento emph e scrive un elemento b di HTML ed inserisce tutti i nodi figlio del nodo di match nella lista dei nodi correnti Il pattern in questo caso è un XPath relativo (equivalente a child::emph). Qualunque XPath che ritorni un nodeset può essere inserito nell'attributo match.

XSLT - eXtensible Stylesheet Language Transformation11 I template Un template è una subroutine di trasformazione LXPath fornito dallattributo match viene usato per filtrare il contesto: tutti i nodi filtrati vengono elaborati nel template... Ogni stylesheet deve avere un template con match=/, la sua procedura main, che viene chiamata allavvio con tutto il documento come insieme di nodi. Allinterno dellelemento template vi sono una varietà di istruzioni che servono o per modificare la lista di nodi o per scrivere frammenti dellalbero di destinazione.

XSLT - eXtensible Stylesheet Language Transformation12 I template richiama il template che fa match con i nodi selezionati da e nel contesto corrente (opzionale) e con attributo mode uguale a quello dato (opzionale) Con questa forma è possibile gestire documenti dalla struttura complessa e ricorsiva, lasciando al parser il compito di cercare il template adatto agli elementi che incontra Nel corso del processing qualunque nodo può essere inserito, anche più volte, nel documento, e in qualunque ordine (non è uno stack!). il parser sospende il processing del template in corso e procede ricorsivamente ad esaminare i figli.

XSLT - eXtensible Stylesheet Language Transformation13 Questo template trasforma un para in un p di HTML: Esempio

XSLT - eXtensible Stylesheet Language Transformation14 Dentro il template scrivere direttamente il frammento XML richiesto. Ogni elemento che non appartiene al namespace di XSL viene direttamente scritto nellalbero di destinazione così come appare nel template Analogamente viene fatto per ogni nodo di testo Pippo Creazione di Elementi

XSLT - eXtensible Stylesheet Language Transformation15 Se è necessario scrivere un elemento complesso o calcolato si usa Ad esempio può servire per trasformare il valore di un attributo del documento di partenza nel nome di un tag nel documento destinazione Dato il frammento e il template ottengo il frammento Mario Rossi Creazione di Elementi

XSLT - eXtensible Stylesheet Language Transformation16 Allinterno di un elemento è possibile specificare degli attributi in maniera esplicita con il tag E più chiaro e più potente delle parentesi graffe. Lo si può usare per stabilire con espressione anche il nome dellattributo. Dato il frammento e il template.html ottengo il frammento Mario Rossi Creazione di Attributi

XSLT - eXtensible Stylesheet Language Transformation17 crea un nodo di testo nellalbero di destinazione. Lattributo select (obbligatorio) contiene un espressione XPath che viene valutata e convertita in stringa. La stringa viene combinata con gli altri nodi di testo intorno Luso tipico è per convertire markup in testo (ad esempio il valore di attributi in contenuto). Dato il frammento e il template ottengo il frammento Mario Rossi Prelievo di valori

XSLT - eXtensible Stylesheet Language Transformation18 Laddove non sia possibile usare del markup (ad esempio come valore di un attributo), è possibile usare le parentesi graffe, che hanno in questo senso lo stesso significato di Luso tipico è per convertire markup in altro markup (ad esempio il valore di un attributo nel nome di un tag). Dato il frammento e il template ottengo il frammento Mario Uso delle graffe {}

XSLT - eXtensible Stylesheet Language Transformation19 Inserisce esplicitamente il testo contenuto dentro al documento E vantaggioso rispetto a mettere il testo letterale perché rispetta il white space. Inoltre con l'attributo disable-output-escaping="yes" rispetta anche i caratteri speciali (& e <) Altrimenti le processing instruction dentro al foglio di stile vengono ignorate, non trasferite Ad esempio, href="book.css" type="text/css genera il seguente output: Inserisce esplicitamente del commento dentro al documento Definire lalbero di destinazione

XSLT - eXtensible Stylesheet Language Transformation20 Permette di specificare esplicitamente il namespace di arrivo Copia nelloutput il nodo di riferimento, insieme al suo namespace, ma non al suo contenuto e ai suoi attributi, che vanno copiati esplicitamente. Viene usato per inserire esplicitamente numeri formattati dentro allalbero dei risultati. Definire lalbero di destinazione

XSLT - eXtensible Stylesheet Language Transformation21 Per applicare un comportamento specifico ad ognuno dei figli direttamente dentro al template si utilizza Ad esempio il template: viene più facilmente realizzato così: Iterazione

XSLT - eXtensible Stylesheet Language Transformation22 attiva condizionalmente dei comportamenti a seconda della verità di un XPath di test. Ad esempio il template seguente colora di giallo lo sfondo di una riga ogni due di una tabella HTML: yellow Istruzioni condizionali

XSLT - eXtensible Stylesheet Language Transformation23 seleziona una tra molte alternative (la funzione di switch in java) blue green red Istruzioni condizionali

XSLT - eXtensible Stylesheet Language Transformation24 ordina i nodi nella lista dei nodi correnti. Esso può essere soltanto figlio di un o di un Gli elementi possono annidarsi Vari attributi: Select: lespressione in base alla quale fare il sort Data-type: il tipo di dato da ordinare (numero o testo o altro) Order: il tipo ascendete o discendente di ordine Case-order: come trattare le maiuscole e le minuscole Ordinamento

XSLT - eXtensible Stylesheet Language Transformation25 Esempio di ordinamento

XSLT - eXtensible Stylesheet Language Transformation26 Fogli di stile Pull o Push Nel documento XSLT si usano dunque elementi provenienti da almeno due namespace: quello di XSLT e quello del modello di documenti di destinazione Esistono due filosofie di riscrittura disponibili in XSLT Iterativo, o Pull: basata su template, viene usata tipicamente per trasformare dati. In un documento pre-formattato per loutput, si vanno ad inserire le parti di documento tratte dal file XML dorigine Ricorsivo, o Push: basata su regole, usata tipicamente per trasformare documenti

XSLT - eXtensible Stylesheet Language Transformation27 Stile iterativo (Pull) I fogli di stile tipo pull sono adatti per riscrivere documenti XML dalla struttura di database, molto ripetitivi: zacx corp ZCXM zaffymat inc ZFFX zysmergy inc ZYSZ

XSLT - eXtensible Stylesheet Language Transformation28 Stile iterativo (Pull) Questo è un foglio di stile XSLT di tipo pull per generare un documento HTML con quei dati: Simbolo Nome Prezzo

XSLT - eXtensible Stylesheet Language Transformation29 Stile iterativo (Pull) Questo è sostanzialmente un documento HTML con qualche tag strano xsl:for-each va a cercare uno ad uno una sequenza di elementi ed applica le istruzioni al suo interno per ciascun elemento xsl:value-of va a cercare il valore (cioè il contenuto) di ogni elemento allinterno di xsl:foreach, e lo inserisce al suo posto

XSLT - eXtensible Stylesheet Language Transformation30 Stile ricorsivo (Push) Supponiamo di avere questo documento XML dalla struttura di documento, molto diversificato: To the Pole and Back The First Day It was the best of days, it was the worst of days. Best in that the sun was out, but worst in that it was 39 degrees below zero....

XSLT - eXtensible Stylesheet Language Transformation31 Stile ricorsivo (Push) Questo è un foglio di stile XSLT di tipo push:

XSLT - eXtensible Stylesheet Language Transformation32 Questo non assomiglia ad un documento HTML, ma ad una serie di istruzioni di riscrittura separate: xsl:template è la regola da applicare se lelemento in esame corrisponde al valore dellattributo match. Di volta in volta verrà applicato il template della radice (/), dellelemento section, dellelemento para, dellelemento emph, ecc xsl:apply-templates spinge a cercare, allinterno dellelemento che stiamo considerando, se esistono altri template applicabili. E il modo per far ripartire ricorsivamente la ricerca di altri template Stile ricorsivo (Push)

XSLT - eXtensible Stylesheet Language Transformation33 Uso di variabili E possibile definire delle variabili. Il valore di una variabile è quello di qualunque espressione. La variabile può essere usata nel sottoalbero in cui è definita e deve essere richiamata con luso delle graffe e del segno $ 12pt Attenzione: la variabile XSLT non è variabile!!!, ovvero il suo valore non può essere cambiato durante la computazione. E' una costante ottenuta attraverso la valutazione di un'espressione, non una variabile.

XSLT - eXtensible Stylesheet Language Transformation34 Merging E possibile porre frammenti di fogli di stile in file esterni. Con gli elementi e è possibile inserire frammenti esterni con due significati leggermente diversi: modifica, diminuendola, la priorità degli elementi inclusi, mentre la mantiene Metodi di output E possibile specificare che il documento risultante è XML, HTML o testo con lelemento. Se loutput è HTML o testo, il processore è meno rigoroso nel valutare la buona forma del documento risultante White space E possibile specificare quali elementi debbano preservare e quali debbano collassare il white space con due appositi elementi, e Altri aspetti di XSLT

XSLT - eXtensible Stylesheet Language Transformation35 Stranger in a strange land Starman Jones The Space Merchants Un esempio complesso

XSLT - eXtensible Stylesheet Language Transformation36 Robert Heinlein Cyril Kornbluth Frederick Pohl Judy-Lyn Del Rey Un esempio complesso

XSLT - eXtensible Stylesheet Language Transformation37 <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:variable name="books_by_rh" <xsl:variable name="more_than_one_auth" select="//book[count(author-ref) > 1]"/> Total number of books by Robert Heinlein: Total number of books by several authors: Number of books in the union of the two sets <xsl:value-of select="count($books_by_rh | $more_than_one_auth)"/> Un esempio complesso

XSLT - eXtensible Stylesheet Language Transformation38 La trasformazione genera un documento XML composto da un solo nodo di testo Total number of books by Robert Heinlein: 2 Total number of books by several authors: 2 Number of books in the union of the two sets 3 Un esempio complesso

XSLT - eXtensible Stylesheet Language Transformation39 Un esempio complesso

XSLT - eXtensible Stylesheet Language Transformation40 Numerare i capitoli ed i paragrafi <xsl:stylesheet version="1.0" xmlns:xsl=" …. Un esempio complesso

XSLT - eXtensible Stylesheet Language Transformation41... Chapter :... Paragraph :... Un esempio complesso

XSLT - eXtensible Stylesheet Language Transformation42 Risultato: Chapter I: It begins Paragraph I.a: First paragraph Paragraph I.b: 2nd paragraph Paragraph I.c: 3rd paragraph Chapter II: The sequel Paragraph II.a: Paragraph Paragraph II.b: Yet another paragraph Un esempio complesso

XSLT - eXtensible Stylesheet Language Transformation43 XSLT consente di trasformare documenti XML in altri documenti con struttura diversa Funziona con un meccanismo di pattern matching e si basa su Xpath Implementa istruzioni condizionali e meccanismi di iterazione Conclusione

XSLT - eXtensible Stylesheet Language Transformation44 Riferimenti Deitel et al, XML Corso di programmazione, Apogeo Chris Bates, XML in theory and Practice, Wiley XML Path Language (XPath) Version 1.0 W3C Recommendation 16 November W3Schools Online Web Tutorials