Rappresentare i file XML - XSL



Похожие документы
Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A Language) Stylesheet.

XSL: extensible Stylesheet Language

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS

Tecniche Multimediali

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

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

XSLT WWW. Fabio Vitali

Linguaggi per il web oltre HTML: XML

XML: extensible Markup Language

a cura di Maria Finazzi

Introduzione al Linguaggio HTML

extensible Markup Language

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

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

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

XSLT EXTENSIBLE STYLESHEET LANGUAGE TRANSFORMATION. Dott.sa Vincenza Anna Leano site:

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

Corso di HTML. Prerequisiti. Modulo L3. 1-Concetti generali. Browser Rete Internet Client e server. M. Malatesta 1-Concetti generali-12 28/07/2013

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

XML e PHP. Gestire XML con PHP. Appendice

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

XML: La nascita del linguaggio

MANUALE D USO DELLA PIATTAFORMA ITCMS

2.3 Cenni sui fogli di stile CSS per XML

Tecnologie Web T Introduzione a XML

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

APPUNTI DI HTML (SECONDA LEZIONE)

Form Editor. Dove NomeProfilo è personalizzabile.

HTML+XML= XHTML. Che cos è l XHTML

Costruzione del layout in gino cms

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

ACM ARIADNE CONTENT MANAGER MANUALE DI PRODUZIONE TEMPLATE

Laboratorio Matematico Informatico 2

Capitolo 4 Pianificazione e Sviluppo di Web Part

Introduzione a XML. Language

Guida all uso di Java Diagrammi ER

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

Una metodologia di progettazione di applicazioni web centrate sui dati

Corso di Informatica di base per le discipline umanistiche - XPATH

Introduzione ai database relazionali

Esercizi di JavaScript

Creare un Ipertesto. 1

Lezione 6: Form 27/04/2012

Rappresentazione grafica di entità e attributi

Novità di Access 2010

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

Al giorno d oggi, i sistemi per la gestione di database

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>...

EXPLOit Content Management Data Base per documenti SGML/XML

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

GIS e Geo WEB: piattaforme e architetture. Docente: Cristoforo Abbattista abbattista@planetek.it

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

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

HTML 1. HyperText Markup Language

Prefazione. Piersalvo Ortu 1

Corso di PHP. Prerequisiti. 1 - Introduzione

STAMPA UNIONE DI WORD

CONTENT MANAGEMENT SYSTEM

XML e standard connessi. XML, XML-Names, XSL, XPointer, XLink

Appendice C Da XML a PDF Progetto Atena

HTML il linguaggio per creare le pagine per il web

File XML il futuro dei file di interscambio dati

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

Editing e gestione delle views per il modulo Landing Page Espositore

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

Esercitazione PAM. (Php Apache MySQL)

XML. XML è contemporaneamente: XML non è:

Lezione 3. Joomla 2.5

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Architettura client-server

Database. Si ringrazia Marco Bertini per le slides

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

b) Dinamicità delle pagine e interattività d) Separazione del contenuto dalla forma di visualizzazione

Corso di Informatica

19. LA PROGRAMMAZIONE LATO SERVER

HTML 6. I frame. Sintassi di base. I frame e DOCTYPE FRAME. ...head... <FRAMESET lista_attributi> <FRAME SRC= URL lista_attributi>

Laboratorio di Informatica

Транскрипт:

Rappresentare i file XML - XSL Laura Papaleo papaleo@disi.unige.it CSS2, XSL, XSLT, XPath 1 XSL - exstensible Stylesheet Language XSL Raccomandazione del W3C (2001) Per aumentare la flessibilità dello standard XML Più sofisticato di CSS Contiene specifiche di CSS e DSSSL XSL consiste di tre parti: Un linguaggi o per trasformare i documenti XML (XSLT) un vocabolario per definire la formattazione (XSL) una sintassi per indirizzare parti di un documento ad una certa formattazione (XPath) 2

XSL è uno Standard W3C XSL è uno standard del World Wide Web Consortium XSLT ed XPath sono diventate Raccomandazioni nel Novembre 1999 Il linguaggio completo che include XSL formatting è diventato raccomandazione al W3C nell Ottobre 2001 3 XSLT, XPath: Scopi e funzionalità XSLT è in pratica un linguaggio dedicato alla trasformazione di documenti XML in documenti XML XPath è un linguaggio dedicato alla definizione ed al recupero di parti di documenti XML (Indirizzamento di documenti XML) Useremo XSLT per trasformare XML in XHTML e XPath per il recupero di parti da trasformare 4

XSLT Trasformare documenti XML XSLT è sicuramente la parte più interessante dello standard XSL XSLT, nella trasformazione, può anche aggiungere nuovi elementi o rimuoverne di vecchi XSLT può ordinare i dati, può prendere decisioni su quali elementi mostrare e molto di più Formalmente il processo di trasformazione XSLT prende in input un albero XML sorgente e produce un nuovo albero XML XML XHTML XSLT 5 Come funziona? Nel processo di trasformazione XSLT utilizza XPath per determinare le parti dell albero sorgente che corrispondono a determinati template operativi Quando un match viene trovato XSLT trasforma la parte interessata nel pattern stabilito che restituisce in output Le parti che non trovano matching con alcun template non verranno modificate nel risultato o addirittura non compariranno nell albero di output. 6

Internet Explorer 5 e 6 XSL in Internet Explorer 5 NON è compatibile con la raccomandazione ufficiale del W3C su XSL. Internet Explorer 5.0 uscito nel Marzo 1999, Lo standard XSL era ancora un W3C Working Draft. Internet Explorer supporta completamente XSL Il Parser XML 3.0 è basato sulla Raccomandazione http://msdn.microsoft.com/xml/general/xmlparser.asp 7 Netscape 6 Netscape 6 non supporta completamente la raccomandazione XSL del W3C La maggior parte degli esempi non dovrebbe funzionare anche su Netscape 6 8

Una trasformazioni XSLT La trasformazione viene attuata associando patterns con templates Un pattern deve coincidere con un elemento dell input tree Un template serve per formare parte dell albero in output Come già detto, la struttura dell albero risultante potrebbe essere del tutto diversa da quella dell albero in input 9 XSLT Namespace http://www.w3.org/1999/xsl/transform I parser XSLT devono usare il concetto di namespaces XML per riconoscere elementi e attributi del Linguaggio XSLT Tali elementi sono riconosciuti solo nello stylesheet e non nel documento sorgente 10

XSLT: Dichiarazione di Foglio di Stile L elemento root che dichiara un foglio di stile XSLT è <xsl:stylesheet> o <xsl:transform>. Codice di dichiarazione <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> oppure <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> xmlns:xsl="http://www.w3.org/1999/xsl/transform" identifica il namespace per XSL Occorre includere l attributo version="1.0 11 XSLT - xsl:stylesheet Può contenere, ad esempio i seguenti elementi: xsl:import xsl:strip-space xsl:output xsl:decimal-format xsl:attribute-set xsl:param xsl:include xsl:preserve-space xsl:key xsl:namespace-alias xsl:variable xsl:template top-level element: elemento che compare come figlio di xsl:stylesheet 12

Un esempio <xsl:stylesheet version="1.0 xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:import href="..."/> <xsl:include href="..."/> <xsl:strip-space elements="..."/> <xsl:preserve-space elements="..."/> <xsl:output method="..."/> <xsl:variable name="...">...</xsl:variable> <xsl:param name="...">...</xsl:param> <xsl:template match="..."> </xsl:template> <xsl:template name="...">...</xsl:template> </xsl:stylesheet> Se c è un import deve trovarsi per primo 13 XSLT: Combinare fogli di Stile diversi Due meccanismi per combinare fogli di stile: un meccanismo di inclusione che permette agli stylesheet di essere combinati senza cambiare la loro semantica e <!-- Category: top-level-element --> <xsl:include href = url-reference /> un meccanismo di importazione che permette ai fogli di stile di sovrascriversi <xsl:import href = url-reference /> 14

Inserire fogli di stile in XML E possibile inserire l elemento xsl-stylesheet nel documento XML <?xml version= 1.0 > <?xml-stylesheet type= text/xml href= #style1?> <doc> <intestazione> <xsl:stylesheet id= style1 version="1.0 xmlns:xsl="http://www.w3.org/1999/xsl/transform > <xsl:import href="doc.xsl"/> <xsl:template match= body/para > <b><xsl:apply-templates/></b> </xsl:template> <xsl:template match="xsl:stylesheet"> </xsl:template> </xsl:stylesheet> </intestazione> <body> <para> testo di esempio</para> </body> </doc> 15 XSLT Espressioni per la trasformazione XSLT usa un linguaggio di espressioni definito da XPath Le espressioni sono usate per: Selezionare un nodo da processare; Specificare le condizioni per differenti modi di processare un nodo; Generare del testo da inserire nell albero di output. Le espressioni compaiono come valori di certi attributi di elementi nel file XSLT dentro parentesi graffe 16

XSLT - Regole di Template L albero in output viene creato appendendo i nodi processati partendo dal nodo radice Un nodo viene processato cercando tutti le regole di template con il pattern corrispondente Un template contiene, tipicamente istruzioni di selezione di nuovi nodi da processare Il processo di matching, la creazione di nodi e la selezione continuano ricorsivamente fino a quando non esistono nuovi nodi da aggiungere 17 XSLT - I Patterns Le regole di Template identificano i nodi I patterns sono usati anche per la numerazione e per la dichiarazione di chiavi Un pattern specifica un insieme di condizioni su un nodo Un nodo che soddisfa quelle condizioni corrisponde al pattern La sintassi di patterns è un sottoinsieme della sintassi di espressioni in XPath 18

XSLT - I Patterns - Esempi paragrafo ogni elemento <paragrafo> * qualsiasi elemento lista/elemento ogni elemento con una <lista> come genitore / il nodo radice text() node() id( unico") para[1] @* ogni nodo text ogni nodo l elemento con ID uguale a unico ogni <para> elemento primo nel contesto genitore ogni attributo 19 Procediamo con un esempio (XML) <?xml version="1.0" encoding="iso-8859-1"?> <catalog> <cd> <title> Empire Burlesque </title> <artist>bob Dylan</artist> <country>usa</country> <company>columbia</company> <price>22.23</price> <year>1985</year> </cd> </catalog> catalog.xml 20

Procediamo con un esempio (XSL) <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">title</th> <th align="left">artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/> </td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template></xsl:stylesheet> catalog.xsl 21 Associare il foglio di stile a un documento XML <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl href="cdcatalog.xsl"?> <catalog> <cd> <title>empire Burlesque</title> <artist>bob Dylan</artist> <country>usa</country> <company>columbia</company> <price>10.90</price> <year>1985</year> </cd> </catalog> 22

L elemento <xsl:template> Come abbiamo detto un foglio di stile corrisponde ad una serie di regole dette templates Ogni regola è definita da un elemento <xsl:template> Questo contiene regole da applicare ai nodi che fanno match con l espresisone di XPath 23 XSL usa Templates L attributo match viene usato per associare il template ad un elemento XML L attributo match viene anche usato per definire un template da applicare ad un intero ramo dell albero XML di input Ad esempio match="/" definisce l intero documento 24

XSLT - Definire una regola di template <!-- Category: top-level-element --> <xsl:template match = pattern name = qname priority = number mode = qname > <!-- Content: (xsl:param*, template) --> </xsl:template> viene specificata da un elemento xsl:template match è un pattern che identifica il nodo (nodi) sorgente a cui applicare la regole 25 XSLT - Definire una regola di template Esempio: This is an <emph>important</emph> point. <xsl:template match="emph"> <B> <xsl:apply-templates/> </B> </xsl:template> l xsl:apply-templates ricorsivamente processa i figli dell elemento sorgente 26

Un foglio di stile XSL E un documento XML. Deve iniziare con la dichiarazione di documento XML <?xml version="1.0" encoding="iso- 8859-1"?> Il TAG <xsl:stylesheet> è l elemento radice del foglio di stile 27 XSLT - Applicare una regola Template <!-- Category: instruction --> <xsl:apply-templates select = node-set-expression mode = qname> <!-- Content:(xsl:sort xsl:with-param)* --> </xsl:apply-templates> <xsl:template match="chapter"> <my_rules> <xsl:apply-templates/> </my_rules> </xsl:template> in assenza di select xsl:apply-templates processa tutti i figli del nodo corrente 28

XSLT - Applicare una regola Template ESEMPIO: Processa tutti gli elementi <author> figli dell elemento <author-group> <xsl:template match="author-group"> <b> <xsl:apply-templates select="author"/> </b> </xsl:template> Qui c è la select 29 XSLT - Applicare una regola Template Più xsl:apply-templates possono essere usati in un singolo template per fare ordinamenti Ad esempio per creare due tabelle HTML La prima riempita da domestic sales la seconda da foreign sales <xsl:template match="product"> <table> <xsl:apply-templates select="sales/domestic"/> </table> <table> <xsl:apply-templates select="sales/foreign"/> </table> </xsl:template> 30

L elemento <xsl:value-of> <xsl:value-of> viene utilizzato per selezionare il valore di un elemento XML ed aggiungerlo all albero di output <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> 31 XSLT Ripetizioni <!-- Category: instruction --> <xsl:for-each select = node-set-expression> <!-- Content: (xsl:sort*, template) --> </xsl:for-each> Quando il documento ha una struttura più o meno regolare è utili selezionare un certo template per nodi dello stesso genere l istruzione xsl:for-each contiene un template, che viene creato per ogni nodo selezionato L attributo select è obbligatorio 32

L elemento <xsl:for-each> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> 33 L elemento <xsl:sort> Dove ordinare le informazioni Occorre inserire un sort all interno di un elemento for-each nel file XSL. <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> 34

XSLT Processare seguendo una condizione Esistono due istruzioni in XSLT che supportano il processing condizionale in un template xsl:if L istruzione xsl:if fornisce un semplice if-then xsl:choose l istruzione xsl:choose supporta la selezione di una scelta quando esistono varie possibilità 35 L elemento <xsl:if> Applicato solo se la condizione è vera <xsl:if test="price > 10"> some output... </xsl:if> <xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each> 36

L elemento <xsl:choose> Insieme a <xsl:when> ed <xsl:otherwise> per test condizionali multipli <xsl:choose> <xsl:when test="price > 10">... some code...</xsl:when> <xsl:otherwise>... some code... </xsl:otherwise> </xsl:choose> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> 37 Ancora l elemento <xsl:apply-templates> Applica la regola all elemento corrente o ai figli. Se aggiungiamo un attributo select processerà solo i figli che match-ano con la richiesta. Si può usare le select per selezionare in che ordine processare i figli 38

Esempio Tag articolo Tag vuoto Link ad altro file 39 Esempio file.xsl Lo trasforma in un file HTML 40

Risultato links 41 Un esempio: Trasformare XML con Javascript In certi casi potrebbe essere utile applicare un foglio di sitle senza includerlo Una soluzione versatile potrebbe essere usare JavaScript per fare la trasformazione Con JavaScript, possiamo: Fare test speciale sul tipo di browser Utilizzare diversi fogli di stile a seconda delle necessità dell utente Il vero scopo di XSL Braille, Web printers, handheld devices 42

Un esempio: Trasformare XML con Javascript Consideriamo il codice: <html> <body> <script type="text/javascript"> // Load XML var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cdcatalog.xml") // Load XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("cdcatalog.xsl") // Transform document.write(xml.transformnode(xsl)) </script> </body> </html> 43 Un esempio: Trasformare XML lato server A Cross Browser Solution Soluzione javascript non funzionante nel caso di browser che non supportano un XML parser. Dobbiamo trasformare i documenti XML sul SERVER e mandarli come XHTML puro al BROWSER Internet Information Server si stanno evolvendo nel rispetto di queste richieste 44

Un esempio: Trasformare lato server con ASP <% 'Load XML set xml = Server.CreateObject("Microsoft.XMLDOM") xml.async = false xml.load(server.mappath("cdcatalog.xml")) %> 'Load XSL set xsl = Server.CreateObject("Microsoft.XMLDOM") xsl.async = false xsl.load(server.mappath("cdcatalog.xsl")) 'Transform file Response.Write(xml.transformNode(xsl)) 45