Tecniche Multimediali



Documenti analoghi
XSLT. Testo di riferimento. Cos'è XSLT. Come funziona XSLT

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A Language) Stylesheet.

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS

XSL: extensible Stylesheet Language

XSLT WWW. Fabio Vitali

Rappresentare i file XML - XSL

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Informatica A per Ingegneria Gestionale ( ) Il linguaggio HTML. Elisa Quintarelli-Laura Mandelli. HyperText Markup Language

a cura di Maria Finazzi

XML: La nascita del linguaggio

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

HTML+XML= XHTML. Che cos è l XHTML

APPUNTI DI HTML (SECONDA LEZIONE)

Tecnologie Web T Introduzione a XML

Introduzione a XML. Language

Settimana I...1. Giorno 1 - Introduzione all XSLT...3

XML: extensible Markup Language

XML. Concetti principali. Risultato possibile. Differenze tra XML e HTML

Introduzione al Linguaggio HTML

extensible Markup Language

2.3 Cenni sui fogli di stile CSS per XML

Tecniche Multimediali

XML e PHP. Gestire XML con PHP. Appendice

La struttura: DTD. Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino. laura.farinetti@polito.it

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I

La sintassi di un DTD si basa principalmente sulla presenza di quattro dichiarazioni:

XML. Parte VI - Introduzione e nozioni fondamentali di sintassi. XML: Extensible Markup Language:

Applicazioni e Architetture Internet. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Form Editor. Dove NomeProfilo è personalizzabile.

Creare documenti XML. La natura epistemologica della codifica. Perché comprare XML? La struttura gerarchica ordinata. Riassumendo le componenti

Linguaggi per il web oltre HTML: XML

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

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

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso di PHP. Prerequisiti. 1 - Introduzione

Laboratorio Matematico Informatico 2

Creare un Ipertesto. 1

Appendice C Da XML a PDF Progetto Atena

Introduzione al MATLAB c Parte 2

Comandi principali del linguaggio HTML (Hyper Text Markup Language)

Guida all uso di Java Diagrammi ER

Alcune regole di base per scrivere un programma in linguaggio C

Il linguaggio HTML - Parte 3

Editing e gestione delle views per il modulo Landing Page Espositore

Introduzione all'html

Corso html 5. Di Roberto Abutzu. *********** Quarta parte: Body ed elementi strutturali. ********** Cos'è il Body e gli elementi strutturali?

Esercizi di JavaScript

Gestione del workflow

XML: sintassi. Prof. Carlo Blundo Tecnologie di Sviluppo per il Web 1

Sommario. Settimana - Gli elementi fondamentali Introduzione...xv. Giorno 1 - I linguaggi di markup...3

Funzioni in C. Violetta Lonati

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

Costruzione del layout in gino cms

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE.

Laboratorio di Informatica

Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda)

HTML e Linguaggi. Politecnico di Milano Facoltà del Design Bovisa. Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione

Andrea Maioli Instant Developer: guida all uso

Corso di recupero di sistemi Lezione 8

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

SVI Nuovo Sistema Revisioni

Rappresentazione grafica di entità e attributi

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Il linguaggio HTML - Parte 4

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

19. LA PROGRAMMAZIONE LATO SERVER

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

4 - XML e basi di dati

Transcript:

Un programma di computer fa quello che gli dici, non quello che vuoi. Legge di Greer (Leggi di Murphy applicate all informatica) Tecniche Multimediali Corso di Laurea in «Informatica» - aa 2010-2011 Prof. Giorgio Poletti giorgio.poletti@unife.it

Rappresentazione dei dati CSS (Cascading Style Sheets) Linguaggio descrittivo assegna a ogni nodo del file XML un formato non fa modifiche di struttura XSL (extensible Stylesheet Language) assegna a ogni nodo del file XML una rappresentazione permette la riorganizzazione della struttura XSL Linguaggio di Stylesheet XML XML (XSLT) XSLT (recommendation 1999) VOCABOLARIO (XSL-FO o XSL) (semantica di trasformazione) XSL-FO (Formattin Object)(recommendation 2001)

XSL e XSLT XSLT (XSL Transformation) Estensione del concetto di foglio di stile Manipolazione della struttura del documento Ha le caratteristiche di un linguaggio «dichiarativo» Si basa anche su XPath XSL permette di trasformare XML in un documento XHTML Rappresentare i documenti (attraverso FO) in formati di visualizzazione (senza presupporre linguaggi marcatori)

XSL e XSLT INPUT XML XSLT processor INPUT XSL OUTPUT WAP XHTML XML PDF [ ] 1. Modifica dinamica dei dati 2. Device Indipindent 3. Esportare dati in multi-formato

XSL Struttura generale XSLT è un documento XML <?xml version= "1.0" encoding="iso-8854-1"?> XSLT ha stylesheet come nodo radice <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns="http://www.w3.org/tr/xhtml1/dtd/xhtml1strict.dtd"> -----------------------------------</stylesheet>

XSLT è composto da template di costruzione soubroutine di trasformazione individua pattern (schema) usa XPath per filtrare i nodi da elaborare (pattern matching) per ogni radice stylesheet deve esserci un template match="/«contiene regole di rappresentazione e gestione della struttura SINTASSI <xsl:template name="nome_template" match="percoso " priority="priorità" mode="modo" > <!-- azioni e comandi-->

SINTASSI <xsl:template name="nome_template" match="percoso " priority="priorità" mode="modo" > <!-- azioni e comandi--> Attributo Significato name nome del template; se l attributo name è presente può, ma non necessariamente deve, esserci l attributo match match pattern (schema) che identifica uno o più nodi di origine a cui applicare le regole, priority priorità del modello; tutte le regole del modello con una priorità più bassa rispetto alle regole di modello non vengono tenute in considerazione mode valore del modo, consente di elaborare più volte un elemento, producendo ogni volta un risultato diverso; mode non deve esserci se non c è un attributo match; se un elemento <xsl:apply-templates> ha un attributo mode, può essere applicato solo alle regole di modello da elementi <xsl:template> che hanno un attributo mode con lo stesso valore; un elemento <xsl:apply-templates> che non ha un attributo mode, può essere applicato solo alle regole di modello da elementi <xsl:template> che non hanno un attributo mode. l attributo match è obbligatorio a meno che non ci sia l attributo name

SINTASSI <xsl:template name="nome_template" match="percoso " priority="priorità" mode="modo" > <!-- azioni e comandi--> Elemento percorso Valori item seleziona tutti gli elementi denominati item; * seleziona qualsiasi elemento parent/child seleziona tutti gli elementi denominati child il cui padre si chiama parent / seleziona la radice dell'albero text() seleziona nodi di tipo testo @att seleziona l'attributo di nome att item[@name=``foo''] seleziona gli elementi denominati item che hanno un attributo chiamato name, il cui valore è foo @* seleziona qualsiasi attributo

ESEMPIO 1 (template) Cap. 1 <titolo>la storia</titolo> (elemento di un documento) <xsl:template match= "titolo"> <html:b> <xsl:apply-templates/> </html:b> Il template fa match con titolo e scrive un elemento b (HTML) e inserisce tutti i nodi figli nella lista dei nodi correnti; XPATH è relativo (child::titolo), restituisce un nodeset.

ESEMPIO 2 (apply-template) <xsl:apply-templates select="nodea" mode= modea"/> <xsl:apply-templates/> </xsl:apply-tempaltes> Viene applicato il template che fa match con il nodeset selezionati da nodea e con un attributo mode istanziato (con un valore) modea. Modalità utile per gestire documenti a struttura complessa (il parser applica il template più opportuno in funzione delle regole espresse) inserire qualunque nodo, in qualunque ordine e in qualunque molteplicità durante il processing (non ci sono problemi di stack) elaborare, in fase di processing, in modo ricorsivo i figli dopo la sospensione del template principale

ESEMPIO 3 (apply-template) <xsl:templates match= Paragrafo"/> <P><xsl:apply-templates/></P> <xsl:apply-templates/> Trasforma il nodo Paragrafo nel tag <P> di HTML

ESEMPIO 4 (creare elementi) <xsl:templates match="paragrafo"/> <P>Testo del Paragrafo</P> <xsl:apply-templates/> Scrive direttamente un elemento nel file risultante

ESEMPIO 5 (creare elementi) INPUT <testo tipo="nota" contenuto= "testo nota " /> <xsl:templates match="testo"/> <xsl:element name= "{@tipo}"> <xsl:value-of select="@conbtenuto"/> </xsl:element> <xsl:apply-templates/> OUTPUT <testo nota="testo nota " /> Trasforma il valore di un attributo nel documento di partenza nel nome di un nodo; utile in elementi complessi o calcolati

ESEMPIO 6 (creare attributi) INPUT <testo notan="1" contenuto= "testo nota " /> <xsl:templates match="testo"/> <A><xsl:attribute name= HREF"> <xsl:value-of select="@notan"/>.txt </xsl:attribute> <xsl:value-of select="@contenuto"/> <xsl:apply-templates/> OUTPUT <A HREF="1.txt">testo nota</a> Specifica di attributi, utilizzando come il nome dell attributo come espressione

ESEMPIO 6 (leggere i valori) - <xsl:value-of select="nodo" /> INPUT <testo notan="1" contenuto= "testo nota " /> <xsl:templates match="testo"/> <P> <xsl:value-of select="@notan"/> <xsl:text> </xsl:text> <xsl:value-of select="@contenuto"/> </P> <xsl:apply-templates/> OUTPUT <P> 1 testo nota</p> L attributo select è obbligatorio, xsl:text inserisce il testo nel documento

ESEMPIO 7 (leggere i valori) uso delle parentesi grafe {} INPUT <file nome= "filename" tipo= "pdf" /> <xsl:templates match= linkpdf"/> <A><xsl:attribute name= HREF"> <xsl:value-of select= {@nome}.{@tipo}"/>.txt </xsl:attribute> <xsl:value-of select="@testo"/> <xsl:apply-templates/> OUTPUT <A HREF="filename.pdf">testo</A> Uso frequente per la conversione di valori in tag per il markup

Strutturare l albero del documento finale Alcuni comandi <xsl:comment> </xsl:comment> Inserimento di un commento nel documento finale <xsl:number> </xsl:number> Inserimento di numeri formattati nel documento finale. <xsl:text> </xsl:text> Inserimento esplicito del testo contenuto dentro al documento. Rispetto all inserimento diretto di testo: rispetta gli spazi (blank) con l'attributo disable-output-escaping="yes" rispetta i caratteri speciali ( & e < ) <xsl:processing-instruction> </xsl:processing-instruction> Permette di inserire le processing instruction nel foglio di stile che altrimenti vengono ignorate; Esempio INPUT <xsl:processing-instruction name="xml-stylesheet"> href="book.css" type="text/css </xsl:processing-instruction> OUTPUT <?xml-stylesheet href="book.css" type="text/css"?>

ESEMPIO 8 (leggere i valori) l iterazione <xsl:for-each> Uso del template <xsl:template match= "BODY"> <xsl:apply-templates select="h1"/> <xsl:template match="h1"> <P><xsl:value-of select="."/></p> Uso dell iterazione <xsl:template match="body"> <xsl:for-each select="h1"> <P><xsl:value-of select=. /></P> </xsl:for-each>

ESEMPIO 9 (istruzioni condizionate - <xsl:if> ) <xsl:if> esegue azioni in funzione della verità di un XPath test Colorare di giallo (in RGB: FFFF00) lo sfondo di una riga ogni due di una tabella HTML <xsl:template match="riga"> <tr> <xsl:if test="position() mod 2 = 0"> <xsl:attribute name="bgcolor"> #FFFF00 </xsl:attribute> </xsl:if> <xsl:apply-templates/> </tr>

ESEMPIO 9 (istruzioni condizionate - <xsl:choose> ) <xsl:choose> esegue azioni in funzione di diversi test di verità di un XPath test Colorare di giallo, blu e rosso (in RGB: FFFF00, 0000FF, FF0000) alternativamente le righe di una tabella HTML <xsl:template match="riga"> <tr> <xsl:choose> <xsl:when test="position() mod 3 = 0"> <xsl:attribute name="bgcolor">#ffff00</xsl:attribute> </xsl:when> <xsl:when test="position() mod 3 = 1"> <xsl:attribute name="bgcolor">#0000ff</xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="bgcolor">red</xsl:attribute> </xsl:otherwise> </xsl:choose> <xsl:apply-templates/> </tr>

ESEMPIO 9 (ordinamento - <xsl:sort> ) <xsl:sort> ordina i contenuti dei nodi della lista corrente, è figlio solamente di <xsl:for-each> o <xsl:apply-templates>; si possonno iterare e annidare gli elementi <xsl:sort> <xsl:template match="elenco"> <ul> <xsl:apply-templates select="persona"> <xsl:sort select="cognome"/> <xsl:sort select="nome"/> </xsl:apply-templates> </ul> <xsl:template match="persona"> <li> <xsl:value-of select="nome"/> <xsl:text> </xsl:text> <xsl:value-of select="cognome"/> </li>

<xsl:sort> - sintassi e attributi <xsl:sort select="expression" lang="language-code" data-type="text number qname" order="ascending descending" case-order="upper-first lower-first"/> Attributi select Valori Espressione XPath Descrizione Opzionale, specifica il nodo i cui valori devono essere utilizzati per l ordinamento lang Codice di lingua Opzionale, specifica quale lingua è utilizzata per l ordinamento data-type text number qname Opzionale, specifica che tipo di dati sono utilizzati per l ordinamento; di default è text order ascending descending Opzionale, specifica di che tipo è l ordinamento; di default è ascending case-order upper-first lower-first Opzionale, specifica se devono precedere le lettere minuscole o maiuscole; il default dipende dalla lingua

Modalità di progettazione Documento XSLT NameSpace xsl NameSpace format (es. HTML) NameSpace Progettazione documento XSLT PULL (iterativo) PUSH (ricorsivo) basato su MODELLI REGOLE (trasformare dati) (trasformare documenti)

Modalità PULL (iterativo) MODELLI (trasformare dati) Per documenti a struttura data-base, ripetitivi <magazzino> <stock anno="1999"> <art>bullone</art> <cod>10005</cod> <prezzo>12,5</prezzo> </stock> <stock anno="1999"> <art>vite</art> <cod>10012</cod> <prezzo>2,5</prezzo> </stock> <stock anno="2009"> <art>dado</art> <cod>15005</cod> <prezzo>16,5</prezzo> </stock> </magazzino> <HTML xmlns:xsl= http://www.w3.org/1999/xsl/transform xmlns= http://www.w3.org/html4/ > <BODY> <TABLE BORDER="2"> <TR><TD>Simbolo</TD><TD>Nome</TD><TD>Prezzo</TD></ TR> <xsl:for-each select=«magazzino/stock"> <TR> <TD><xsl:value-of select="art"/></td> <TD><xsl:value-of select="cod"/></td> <TD><xsl:value-of select="prezzo"/></td> </TR> </xsl:for-each> </TABLE> </BODY> </HTML>

Modalità PUSH (ricorsivo) PUSH (ricorsivo) Per documenti a struttura notevolmente diversificata <document> <title>to the Pole and Back</title> <section> <title>the First Day</title> <para>it was the <emph>best</emph> of days, it was the <emph>worst </emph> of days.</para> <para><emph>best</emph> in that the sun was out, but <emph>worst</emph> in that it was 39 degrees below zero.</para> </section>... </document> <xsl:stylesheet version="1.0" xmlns:xsl= http://www.w3.org/1999/xsl/transform xmlns= http://www.w3.org/html4/ > <xsl:template match="/"> <HTML> <BODY> <H1><xsl:value-of select="document/title"/></h1> <xsl:apply-templates select="document/section"/> </BODY> </HTML> <xsl:template match="section"> <HR/><H2><xsl:value-of select="title"/></h2> <xsl:apply-templates select="para"/> <xsl:template match="para"> <P><xsl:apply-templates /></P> <xsl:template match="emph"> <I><xsl:apply-templates /></I> </xsl:stylesheet>

Le variabili Le variabili XSL sono costanti derivanti dalla valutazione di una espressione; usata nel sottoalbero di definizione e identificata da {} e $ <xsl:variable name="fs">12pt</xsl:variable> <xsl:template match="para"> <fo:block font-size="{$fs}"> <xsl:apply-templates/> </fo:block>

Altri comandi e potenzialità - MERGING <xsl:import>, sintassi <xsl:import href="uri-reference" /> href è obblicatorio e identifica XSLT da importare (modifica la priorità) ESEMPIO <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" > <xsl:import href="article.xsl"/> <xsl:import href="bigfont.xsl"/> <xsl:attribute-set name="note-style"> <xsl:attribute name="font-style">italic</xsl:attribute> </xsl:attribute-set> </xsl:stylesheet>

Altri comandi e potenzialità - MERGING <xsl:include>, sintassi <xsl:include href="uri-reference" /> href è obblicatorio e identifica XSLT da importare (mantiene la priorità) ESEMPIO <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="xml" omit-xml-declaration="yes"/> <xsl:template match="/"> <xsl:for-each select="collection/book"> <xsl:apply-templates select="title"/> <BR/> </xsl:for-each> <xsl:include href="xslincludefile.xsl" /> </xsl:stylesheet>

Altri comandi e potenzialità - OUTPUT <xsl:output>, definisce le modalità di output SINTASSI <xsl:output method="xml html text name" version="string" encoding="string" omit-xml-declaration="yes no" standalone="yes no" doctype-public="string" doctype-system="string" cdata-section-elements="namelist" indent="yes no" media-type="string"/> Attributi Valori Descrizione method xml html text name Opzionale, specifica il formato di output; di default è xml version string Opzionale, specifica la versione del formato di output (solo con html e xml) encoding string Opzionale, specifica il set di caratteri del formato di output omit-xml-declaration yes no Opzionale, specifica se yes che in output non devono visualizzarsi le PI <?xml?> standalone yes no Opzionale, specifica che in output ci sarà una dichiarazione standalone, di default è "no" doctype-public string Opzionale, definisce PUBLIC il documento di output doctype-system string Opzionale, definisce SYSTEM il documento di output cdata-section-elements namelist Opzionale, un elenco di elementi testo separati da spazi deve essere scritto come sezione CDATA indent yes no Opzionale, "yes" specifica che in output il testo sarà indentato come indicato dalla gerarchia media-type string Opzionale, specifica il tipo MIME (Multipurpose Internet Mail Extensions) di output; di default è text/xml