Introduzione alle griglie computazionali
Università degli Studi di Napoli Federico II
Corso di Laurea in Informatica – III Anno
LEZIONE N. 8
Elementi di XML
Sommario
•
•
•
•
•
•
•
•
Introduzione
Dall’HTML all’XML
XML
Namespaces
DTD, XML Schema
XPath
Xsl, Xslt
Xquery
Introduzione alle Griglie computazionali - aa 2005-06
2
Introduzione
•
•
XML: EXtensible Markup Language
World Wide Web Consortium (W3C) – 1998
– leader definizione standard per il web
– sviluppo di protocolli comuni che aiutino l'evoluzione del WEB ed
assicurino interoperabilità.
XML creato per rendere disponibili via Web documenti
(ampiamente) strutturati
• Rapida diffusione
•
Ad uno stesso sorgente corrispondono diverse visualizzazioni
Introduzione alle Griglie computazionali - aa 2005-06
3
Dall’HTML all’XML
Introduzione alle Griglie computazionali - aa 2005-06
4
HTML: origini
•
Hyper-Text Markup Language
– Hyper-Text
• Documento contente link ad altri documenti (testi, immagini, musica, ...)
– Markup Language
• Notazione per la scrittura di documenti tramite marcatori (tag)
•
Motivazione originaria
– nasce al CERN, 1991, per mano di Tim Berners-Lee & Robert Caillau
– obiettivo: tenere traccia di informazioni legate agli esperimenti
•
HTML descrive solo la struttura logica dei documenti:
– browser liberi di interpretare i marcatori
– un documento ha senso anche se alcuni marcatori sono ignorati
Introduzione alle Griglie computazionali - aa 2005-06
5
HTML: evoluzione
• Si diversifica la tipologia di utenti ed aumentano le esigenze di
controllo
• Si passa dalla struttura logica...
– h1: "header livello 1", em: "testo in rilievo (emphasized)", ul: “ elenco”
• ... alla struttura fisica
– "header: posizione centrata, carattere Times, size 20pt"
– "testo in italico e grassetto"
– "lista rientrante di 5 mm, uso di immagini come puntatori"
• Aumenta il numero di tag legati all'esposizione (layout)
• Introdotti i fogli di stile (styleheets) ed altre tecnologie
accessorie di potenziamento (applet, linguaggi di scripting)
Introduzione alle Griglie computazionali - aa 2005-06
6
HTML: Cascading Style Sheets (CSS)
• Descrivono proprietà di layout dei tag
• (Solitamente) Scritti su file separati
• Condivisi fra diversi documenti HTML
• Separazione fra proprietà fisiche e proprietà logiche
HTML:
CSS:
B {color:blue;}
B B {color:gray;}
B.foo {color:green;}
B B.foo {color:red;}
B.bar{color:yellow;}
...
<b class=foo>CSS: </b>
<b>ecco
<b> giusto </b>
<b class=foo>un piccolo </b>
<b class=bar> esempio. </b>
<i>Chiaro?</i>
</b>
...
CSS: ecco giusto un piccolo esempio.
Chiaro?
Introduzione alle Griglie computazionali - aa 2005-06
7
HTML: un esempio (2)
Introduzione alle Griglie computazionali - aa 2005-06
9
HTML: nuove esigenze
Il WEB è cambiato:
•
•
•
Nascita del commercio elettronico (dinamicità dei dati)
Creazione di servizi al pubblico (rilascio di documenti)
Dati scambiati fra organizzazioni diverse
Il modello HTML è inadeguato
Introduzione alle Griglie computazionali - aa 2005-06
10
HTML: limiti
•
Caratterizzato da un insieme predefinito di marcatori
– (alto) numero e semantica dei tag prefissati
– non tutto il contenuto informativo è hypertext
– non facilmente estensibile/configurabile
– non ugualmente interpretati da client diversi
Orientato alla visualizzazione dei dati
• Non descrive la semantica associata (codificata nei tag di
formattazione)
• Nessun controllo possibile sulla correttezza del contenuto
• Modifiche di layout (nonostante stylesheets) non facili
•
Introduzione alle Griglie computazionali - aa 2005-06
11
XML
Introduzione alle Griglie computazionali - aa 2005-06
12
Cos'è?
Metalinguaggio Universale: definizione di altri linguaggi di
markup
•
– consente la definizione di tag e della relazione strutturale fra questi
Unificazione formato di scambio e distribuzione di dati fra
diverse applicazioni su diverse piattaforme hw
•
– Separazione fra struttura (generale) e contenuto (specifico)
•
Orientato alla descrizione dei dati
– Dati utilizzabili da qualsiasi applicazione che comprenda il linguaggio
XML (browser, db, cell...)
– Uno stesso documento può essere utilizzato per scopi diversi.
•
XML non è nè il successore nè il sostituto di HTML
– HTML stesso può essere ridefinito tramite l’XML (XHTML)
Introduzione alle Griglie computazionali - aa 2005-06
13
Terminologia
Documento XML: file contenente testo con marcatori e altre
meta-informazioni
•
– i marcatori denotano gli elementi:
<es attr=”val” ...> .... </tag>
<es attr=”val”.../>
•
Caratterizzato da una struttura logica...
– modo in cui viene creato un documento
•
... ed una fisica
– costituita da tutto il contenuto del documento stesso
Introduzione alle Griglie computazionali - aa 2005-06
15
Struttura Logica (1)
• Documento XML: dichiarazioni, elementi, istruzioni di elaborazione e
commenti.
• Prologo:
– dichiarazione XML: versione delle specifiche XML cui il documento deve
conformarsi:
• dichiarazione di codifica (encoding) schema di codifica dei caratteri (ad esempio
UTF-8 (default) o EUC-JP)
• dichiarazione di documento autonomo (standalone):
yes (default): non sono presenti dichiarazioni di markup esterne al documento (well formed)
<?xml version= “1.0” encoding=“UTF-8” standalone=“yes”?>
– dichiarazione del tipo di documento DTD
Descrizione formale dei marcatori usati per qualificare un elemento, i suoi attributi e
relazioni fra loro
<!DOCTYPE indirizzo SYSTEM ”indirizzo.dtd”>
Introduzione alle Griglie computazionali - aa 2005-06
16
Struttura Logica (2)
•
elemento Document (radice):
Elemento più esterno del documento (necessario);
include tutti i dati di un documento XML, inclusi tutti i sottoelementi,
(nidificati) all’interno di questo marcatore
<indirizzo>
<via > via Cimarosa, 30 </via>
<località>Collegno</località>
<provincia sigla=”TO” />
<cap codice=”10148” />
</indirizzo>
•
Nidificazione:
consente di incorporare un oggetto o un costrutto l’uno all’interno dell’altro;
Ogni elemento diverso dalla radice deve essere completamente contenuto in uno
ed un solo elemento.
Introduzione alle Griglie computazionali - aa 2005-06
17
Albero etichettato (1)
Concettualmente un documento XML è un albero etichettato
ed ordinato
• Radice: Element Document
• Nodi: elementi etichettati
– nome: element type
•
– set di attributi, ognuno coppia nome, valore; a loro volta possono avere
dei sottoalberi di elementi, attributi e valori
Foglie: attributi (coppie di nome e valore) o valori (stringhe,
numeri, date…)
•
Introduzione alle Griglie computazionali - aa 2005-06
18
Albero etichettato (2)
bibliografia
Pubblicazione
Id=… tipo=..
autore
titolo
Learning XML
……
editore
Erik T. Ray
……
Introduzione alle Griglie computazionali - aa 2005-06
19
Conformità
Documento XML conforme (well-formed) se:
•
•
rispetta le regole relative alla struttura e alla nidificazione prima elencati
tutti gli elementi possiedono marcatori di apertura e di chiusura
eccezione viene fatta per gli elementi vuoti:
<provincia sigla=”TO” />
oppure
<provincia sigla=”TO”></provincia>
•
•
possiede un unico elemento radice
XML è case-sensitive
Un documento conforme non è detto che abbia senso dal punto di vista
semantico.
Introduzione alle Griglie computazionali - aa 2005-06
20
Validità
Validazione: consente di verificare se un documento oltre ad
essere well-formed è semanticamente sensato.
• Documento XML associato ad una definizione di struttura:
descrive il nome e la posizione dei marcatori e degli attributi nel
documento.
• Principali tecniche di descrizione della struttura di contenuti
XML:
•
– DTD (Document Type Definition)
– XML Schema
Introduzione alle Griglie computazionali - aa 2005-06
21
NAMESPACE
Introduzione alle Griglie computazionali - aa 2005-06
22
Namespace (2)
<?xml version="1.0"?>
<prodotto>
<codice>cod01</codice>
<prezzo valuta=”eur”>100
</prezzo>
</prodotto>
Significati diversi
• Nasce il conflitto se inglobati in un
unico documento...
•
<?xml version="1.0"?>
<cliente>
<codice>mr1979</codice>
<generalita>
<nome>Mario Rossi</nome>
<indirizzo>
via Sparone 13
</indirizzo>
<cap>10148</cap>
<comune>Torino</comune>
<generalita>
</cliente>
Introduzione alle Griglie computazionali - aa 2005-06
23
Namespace
Qualificano in modo univoco i nomi degli elementi e degli
attributi in un documento XML
• Nomi identificati con una risorsa esterna univoca: URI
(Uniform Resource Identifier)
• Nomi qualificati: prefisso + nome locale
•
– Prefisso: namespace cui l'elemento appartiene (URI)
– Nome locale: nome appartenente a tale namespace.
•
Dichiarazione dello spazio dei nomi
– inclusa nel prologo oppure all’interno di un elemento appartenente allo
spazio dei nomi, la prima volta che questo si utilizza.
Introduzione alle Griglie computazionali - aa 2005-06
24
Namespace (3)
<?xml version="1.0"?>
<ordine
xmlns=”http://www.neg.it/NS/ordine”
xmlns:prod = http://www.neg.it/NS/prodotto
xmlns:cli =”http://www.neg.it/NS/cliente”>
<prod:prodotto>
<prod:codice>cod01</prod:codice>
<prod:prezzo valuta=”eur”>100</prod:prezzo>
</prod:prodotto>
<cli:cliente>
<cli:codice>mr1979</cli:codice>
<cli:generalita>
<cli:nome>Mario Rossi</cli:nome>
<cli:indirizzo>via Sparone 13</cli:indirizzo>
<cli:cap>10148</cli:cap>
<cli:comune>Torino</cli:comune>
</cli:generalita>
</cliente>
</ordine>
Introduzione alle Griglie computazionali - aa 2005-06
25
DTD & XML Schema
Introduzione alle Griglie computazionali - aa 2005-06
26
DTD - Document Type Definition
•
Specifica delle regole che controllano la struttura di un
documento XML.
• Definisce gli elementi leciti all'interno del documento XML
• Defininisce attributi (valore) e struttura di ogni elemento.
(contenuto ciascun elemento: ordine, quantità di elementi -opzionali o
obbligatori- grammatica)
•
Validità e conformità:
– Un documento XML valido segue tutte le regole del DTD
– Un documento XML valido è conforme anche a tutti i limiti di validità
identificati dalle specifiche XML (well-formed)
Introduzione alle Griglie computazionali - aa 2005-06
27
DTD: generalità
La dichiarazione della DTD è nel prologo, nella dichiarazione
del tipo di documento:
•
– DTD interna: parte integrante del documento XML
<?xml version=”1.0” ?>
<!DOCTYPE nome_root […contenuto della DTD…]>
...
–
DTD esterna: file separato da quello contenente il documento XML
<?xml version=”1.0” ?>
<!DOCTYPE nome_root SYSTEM “http://some.host/xmlDtd.dtd”>
...
• Vincolo di validità: nome_root = radice del documento.
•
Tipi di dichiarazione previsti: elementi, attributi, entità
Introduzione alle Griglie computazionali - aa 2005-06
28
DTD: limitazioni
Non usa una sintassi XML (editor, parser e processor ad hoc)
• Non supporta Namespace (XML 1.0 è precedente)
• Non è possibile esprimere vincoli per 'character data' oltre ai
default (se ammessi, un loro qualunque valore è ammesso)
• Struttura lineare: non risalta il concetto di contenimento degli
elementi del documento XML
• Impossibilità di definire due elementi con lo stesso nome e
contenuti in elementi distinti
• Impossibilità di definire criteri per la validazione del
contenuto degli elementi
•
Introduzione alle Griglie computazionali - aa 2005-06
35
XML Schema
XML Schema Definition (XSD)
• Usata sintassi XML
•
– Definizione dei nomi dei marcatori, degli attributi e la loro posizione
all’interno del docuemnto XML
– Caratterizzazione del contenuto di marcatori e attributi tramite tipi di
dati noti (integer, string,…)
– Estensibile
– XSD elaborati da applicazioni che riconoscono XML
Supporta Namespace
• Possibile esprimere vincoli di cardinalità per sotto-elementi
•
Introduzione alle Griglie computazionali - aa 2005-06
36
XML Schema: costrutti
•
Dichiarazione di elemento
associa ad un elemento un nome ed un tipo
•
Tipo Complesso (complexType)
definizione di elementi contenenti altri elementi e/o attributi
• Dichiarazione di attributi: definisce eventuali attributi contenuti
• Dichiarazione di elementi: definisce eventuali sotto-elementi, il
loro numero e l’ordine con cui si annidano
•
Tipo Semplice (simpleType)
definizione di contenuto (testuale) di elementi e/o attributi
Un elemento è valido se la regola associata è verificata
• Se tutti gli elementi sono validi, l'intero documento è valido
•
Introduzione alle Griglie computazionali - aa 2005-06
37
XML Schema: Complex Type (1)
•
un tipo complesso può contenere:
– Dichiarazioni di attributi
• <attribute name="..." type=".." use=".."/>
– type:
definizione di tipo semplice
– use: optional (default), required, oppure prohibited (può essere usato in
un’altra restrizione ma non direttamente)
• <anyAttribute ... />
– qualunque attributo contenuto in uno dei namespaces definiti
– uno fra i seguenti contenuti:
• empty (default) il complexType è vuoto;
• simple content: <simpleContent> ... </simpleContent>
il complexType contiene solo testo o un simpleType
...
Introduzione alle Griglie computazionali - aa 2005-06
38
XML Schema: Complex Type (2)
• una combinazione di:
– <sequence>...</sequence>:sequenza specifica di elementi
– <choice>...</choice>: gruppo di elementi in alternativa
– <all>...</all>: gruppo di elementi senza riferimenti all’ordine
ogni combinazione con riferimenti ad elementi:
– <element name="..." minOccurs="..."
maxOccurs="..."/>
» name è il nome dell’elemento,
» minOccurs e maxOccurs rispettivamente il numero minimo e
massimo (se elemento diverso da radice) di occorrenze (default:
1)
– <any .../>
– in un complexType, il contenuto deve essere specificato prima di
tutte le dichiarazioni di attributi
Introduzione alle Griglie computazionali - aa 2005-06
39
XML Schema: Complex Type (3)
<xsd:complexType name="order_type">
<xsd:choice>
<xsd:element name="address"
type=”xsd:string”/>
<xsd:sequence>
<xsd:element name="email"
minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element name="phone"/>
</sequence>
</choice>
<attribute name="id" type="unsignedInt"
use="required"/>
</complexType>
…
<xsd:element name=“order” type=“order_type”/>
Introduzione alle Griglie computazionali - aa 2005-06
40
XML Schema: Simple Type (1)
•
Un tipo semplice può essere:
– primitivo: string, boolean, decimal, float, ...
– derivato da tipi semplici tramite:
• liste di sequenze di altri tipi semplici
• unione di tipi semplici
• restriction:
– length, minLength, maxLength: per limitare la lunghezza
di un valore in un elemento (es: password)
– enumeration: limitazione del contenuto di un elemento
ad un insieme di valori consentiti
– pattern: limitazione del contenuto di un elemento ad una
sequenza di valori (numeri o lettere) che possono essere
utilizzati
Introduzione alle Griglie computazionali - aa 2005-06
41
XML Schema: Simple Type (2)
» whiteSpace: specifiche di gestione degli spazi bianchi
(preserve/replace/collapse white space)
» minInclusive, maxInclusive: specifica dei limiti
consentiti per valori numerici
<simpleType name="may_date">
<restriction base="date">
<pattern value="\d{4}-05-\d{2}"/>
</restriction>
</simpleType>
<xs:simpleType name=”age”>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name=”car”>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
Introduzione alle Griglie computazionali - aa 2005-06
42
XSD: esempio “citazione”
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="citazione">
<xs:complexType>
<xs:sequence>
<xs:element name="autore" type="xs:string"/>
<xs:element name="titolo" type="xs:string"/>
<xs:element name="editore” minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="nazione" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="anno" type="xs:date" minOccurs="0" maxOccurs="1"/>
<xs:element name="classificazione" type="xs:string" minOccurs="0"
maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Introduzione alle Griglie computazionali - aa 2005-06
43
XPATH
Introduzione alle Griglie computazionali - aa 2005-06
44
XPath
• Xml Path Language
• Fornisce metodo di navigazione e selezione degli elementi
all’interno di un documento XML
• Dal punto di vista di XPath, il documento XML è un albero
• Le relazioni tra i nodi sono semplici:
– un elemento annidato è un nodo figlio dell’elemento che lo contiene
– un attributo è figlio del suo elemento
– commenti e testo sono figli dell’elemento che li contiene.
Introduzione alle Griglie computazionali - aa 2005-06
45
Location path
•
Costrutto principale: location path
– sequenze di location steps separate da ‘/’
child::section[position()<6] / descendant::cite / attribute::href
selezione degli attributi href di elementi cite contenuti fra le prime 5
sezioni di un documento
– location path: valutazione rispetto ad un contesto rappresentato da un
insieme di nodi
– location step: valutazione composta, da sinistra verso destra, a partire
da un contesto iniziale
• ogni nodo risultato da una valutazione di un step è usato come contesto per
la valutazione successiva, ed i risultati sono valutati secondo l'unione
Introduzione alle Griglie computazionali - aa 2005-06
46
Location steps
Sintassi di una location step:
axis::node-test [predicato 1] [predicato 2] … [predicato 3]
• axis: seleziona un insieme di nodi candidati (figli del nodo
correntemente selezionato, context node)
• node-test: nodo usato come filtro iniziale sui nodi da
individuare in base al loro nome ed al loro tipo
•
– nameTest
– nodeType: text(), comment(), processing-instruction(), node()
predicati (0+): costituiscono un ulteriore filtro da applicare al
node-set (insieme di nodi candidati) identificato. Sono selezionati
solo i nodi fra i candidati che verificano i predicati (risultato della
selezione)
•
Introduzione alle Griglie computazionali - aa 2005-06
47
Axes
ancestor: tutti i genitori del context node fino a root
ancestor-or-self: come ancestor più il context node stesso
attribute: tutti attribute del context node
child: tutti i figli del context node
descendant: eredi del context node a qualunque livello
descendant-or-self: come sopra più il context node
parent: il genitore del context node
following-sibling tutti i nodi a destra del context node
preceding-sibling: tutti i nodi a sinistra del context node
following: tutti i nodi che seguono il context node come posizione
ordinale
preceding: tutti i nodi che precedono il context node come posizione
ordinale
self: context node
Introduzione alle Griglie computazionali - aa 2005-06
48
Gerarchie
<a>
<b/>
<c>
<e/>
<d xmlns:y=“…” x=“…”>
<f>
<g/>
</f>
</d>
<i/>
</c>
<h/>
ancestor: [c,a]
ancestor-or-self: [d,c,a]
attribute: [x]
child: [f]
descendant: [f,g]
descendant-or-self: [d,f,g]
following: [i,h]
following-sibling: [i]
namespace: [y]
parent: [c]
preceding: [b,e]
preceding-sibling: [e]
self: [d]
</a>
Introduzione alle Griglie computazionali - aa 2005-06
49
Esempi
attribute::*: tutti gli attributi del nodo
corrente
child::Prezzo[@Valuta=“Euro”]:
elementi Prezzo, figli del nodo corrente
con att Valuta = Euro
ancestor::node(): tutti nodi antenati
del context node
descendant-or-self::test(): testo di
tutti i nodi eredi compreso il context
node
child::cd: tutti nodi ‘cd’ figli del nodo
corrente; child::cd[position()=1]:
seleziona il primo figlio cd del nodo
corrente
<?xml version="1.0" encoding="ISO-88591"?>
<Catalogo>
<cd Paese="USA">
<Titolo>The Best</Titolo>
<Artista>Bob Dylan</Artista>
<Prezzo valuta=‘dol’>10.90</Prezzo>
</cd>
<cd Paese=‘Ita’>
<Titolo>Hide your heart</Titolo>
<Artista>Bonnie Tyler</Artista>
<Prezzo Valuta=‘Euro’>9.90</Prezzo>
</cd>
</Catalogo>
Introduzione alle Griglie computazionali - aa 2005-06
50
Funzioni
•
Funzioni che operano sui node-set
– count(node-set): numero di nodi in un node-set
– name(node-set): nome del primo nodo in un node-set
•
Funzioni che operano sulle stringhe
– string(value): cast
– concat(string, string, ...): concatenazione di stringhe
•
Funzioni booleane
– boolean(value): cast
– not(boolean): negazione
•
Funzioni che operano sui numeri
– number(value): cast
– sum(node-set): somma del valore di ogni nodo nel node-set
Introduzione alle Griglie computazionali - aa 2005-06
51
XSL
Introduzione alle Griglie computazionali - aa 2005-06
52
XSL
EXtensible Stylesheet Language
• Applicazione in sintassi XML: consente la rappresentazione di
documenti XML sul Web
• Utilizzo di template da applicare agli elementi.
• Duplice processo:
•
– ricostruzione di un albero strutturale
– formattazione degli elementi
•
Costituito da 2 parti:
– XSLT: linguaggio per la trasformazione di documenti XML
– XSL Formatting Objects: linguaggio per la formattazione di
documenti XML
Introduzione alle Griglie computazionali - aa 2005-06
53
XSLT
• Trasforma contenuti XML in altri contenuti XML
– XPath per individuare porzioni di documento
– Su tali porzioni è attuata la trasformazione
– Nulla è fatto sul resto del documento
• XSLT -> {regola = xpath + template}
<xsl:template match="pattern">
template
</xsl:template>
• Opera sull’albero associato al documento XML
Introduzione alle Griglie computazionali - aa 2005-06
54
Dichiarazioni XSL
XSL stylesheets sono scritti come documenti XML
• La prima linea identifica il file XSL come un file XML
• Viene quindi introdotto il riferimento al Namespace per XSL:
•
<xsl:stylesheet version=“1.0”
xmlns:xsl=“http://www.w3.org/1999/XSL/
Transform”>
Introduzione alle Griglie computazionali - aa 2005-06
55
XSL Template
• <xsl:template>: contiene la specifica delle regole da
applicare ad un determinato nodo
– viene utilizzato l’attributo “match” per associare il template con un
elemento XML
Es: <xsl:template match = "/">
– ‘/’ seleziona la radice del documento XML (quindi l’intero documento)
<xsl:template match="article">
<h1><xsl:apply-templates select="title"/></h1>
</xsl:template>
• chiusura
del template
</xsl:template>
Introduzione alle Griglie computazionali - aa 2005-06
56
Esempio:
<?xml version = "1.0"?>
<xsl:stylesheet version = "1.0“
xmlns:xsl="http://www.w3.org/1999/XSL/Tra
nsform">
<xsl:template match = "/">
<html>
<head>
<title>Module List</title>
</head>
<body>
<table border="1" bgcolor="cyan">
<thead>
<tr>
<th>Module Number</th>
<th>Name</th>
<th>Information</th>
</tr>
</thead>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Introduzione alle Griglie computazionali - aa 2005-06
57
Alcuni costrutti
• value-of: seleziona il valore di un elemento XML e lo
aggiunge all’output
<xsl:template match="xpath">
<xsl:value-of select="text()"/>
</xsl:template>
• for-each: istanzia un template per ogni nodo nel node-set
selezionato
<xsl:for-each select="node-set expression">
template
</...>
Introduzione alle Griglie computazionali - aa 2005-06
58
Associare uno Stylesheet...
<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl"
href="moduleTable.xsl" ?>
<moduleList>
<module no="CP3024">
<name>Web Information Systems</name>
<comment>Easy!</comment>
</module>
<module no="CP2027">
<name>Prog in Java</name>
<comment>Hard</comment>
</module>
</moduleList>
Introduzione alle Griglie computazionali - aa 2005-06
59
... xsl ...
<?xml version = "1.0"?>
<xsl:stylesheet version = "1.0"
xmlns:xsl =
"http://www.w3.org/1999/XSL/Transf
orm">
<xsl:template match = "/">
<html>
<head>
<title>Module List</title>
</head>
<body>
<table border = "1" bgcolor =
"cyan">
<thead>
<tr>
<th>Module Number</th>
<th>Name</th>
<th>Information</th>
</tr>
</thead>
<tbody>
<xsl:for-each select =
"moduleList/module">
<tr>
<td><xsl:value-of select = "@no"/>
</td>
<td><xsl:value-of select = "name"/>
</td>
<td><xsl:value-of select =
"comment"/>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Introduzione alle Griglie computazionali - aa 2005-06
60
…output
Introduzione alle Griglie computazionali - aa 2005-06
61
XSL Formatting Objects
• XSL-FO è un insieme di elementi
ed attributi per la definizione di
informazioni tipografiche,
indipendentemente dal formato
finale di presentazione (controllo del
layout)
• Lo scopo di XSL non riguarda solo
le trasformazioni strutturali
• Formattazione di contenuti
destinati a svariate tipologie di
output
• Alla trasformazione XSLT segue
una seconda trasformazione atta a
formattare l’output secondo la
volontà dell'autore
Introduzione alle Griglie computazionali - aa 2005-06
62
XQuery
Introduzione alle Griglie computazionali - aa 2005-06
63
Xquery: SQL per XML
Linguaggio per interrogare e manipolare i dati di un
documento XML
• Estensione ed evoluzione di XPath, con cui condivide librerie
di funzioni ed operatori
• Sintassi per navigare all’interno di una struttura di un
documento simile a quella prevista da XPath
• Applicabile su diverse sorgenti dati XML (database relazionali,
ad oggetti,... )
• Query come insieme di proposizioni (come in SQL)
•
Introduzione alle Griglie computazionali - aa 2005-06
64
Struttura XQuery
• Una query è un'espressione che
– legge una sequenza di nodi XML od un singolo valore e
– restituisce come risultato una sequenza di nodi od un singolo valore.
• Le espressioni XQuery sono composte da espressioni XPath per individuare
i nodi da analizzare e da funzionalità aggiuntive specifiche di XQuery per il
recupero delle informazioni
• Dichiarazione Namespace (opzionale)
• Definizione funzioni (opzionale)
• Import schema (opzionale)
• L’espressione della Query
spesso si compone di molte espressioni
Introduzione alle Griglie computazionali - aa 2005-06
Query Prolog
Expr Sequence
65
Esempio
<libro>
<titolo>Titolo_del_libro</titolo>
<autore>Autore_del_libro</autore>
<editore>Editore_del_libro</editore>
<prezzo>Prezzo_del_libro</prezzo>
</libro>
XML
query: document("arch_libri.xml")//libro[prezzo > 50] SORTBY (autore)
Ricerca tutti i nodi <libro> che hanno un prezzo maggiore di
50 e ordina il risultato in funzione del nome dell'autore.
Introduzione alle Griglie computazionali - aa 2005-06
66
Riferimenti...
• XML Tutorial:
http://www.w3schools.com/xml/default.asp
http://www.w3schools.com/dtd/dtd_intro.asp
http://www.w3schools.com/schema/schema_intro.asp
• XPath Tutorial:
http://www.w3schools.com/xpath/default.asp
• XSL Tutorial:
http://www.w3schools.com/xsl/xsl_languages.asp
• XQuery Tutorial:
http://www.w3schools.com/xquery/default.asp
Introduzione alle Griglie computazionali - aa 2005-06
72
Introduzione alle Griglie computazionali - aa 2005-06
73