JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B...

49
B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e per supporto a lezioni universitarie. Ogni altro uso è riservato, e deve essere preventivamente autorizzato dall’ autore. Sono graditi commenti o suggerimenti per il miglioramento del materiale

Transcript of JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B...

Page 1: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 1

B6_5 V1.11

JSP parte E

Applicazioni Internet B

Paolo Salvaneschi

Università di BergamoFacoltà di Ingegneria

Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e per supporto a lezioni universitarie.Ogni altro uso è riservato, e deve essere preventivamente autorizzato dall’ autore.

Sono graditi commenti o suggerimenti per il miglioramento del materiale

Page 2: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 2B6 JSP Paolo Salvaneschi 2

• Introduzione a XML• Tecnologie XML

– DTD - W3C XML schema– CSS – XSLT - XSL-FO– XPath

• Utilizzo di XML con JSP /tag library– Libreria <X: >– Esempi

INDICE

Page 3: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 3B6 JSP Paolo Salvaneschi 3

Introduzione a XML

• Origine e ruolo di XML– eXtensible Markup Language (XML)

(1998 --raccomandazione del W3C)

– Metalinguaggio che permette di rappresentare contenuti testuali organizzati in una gerarchia

– Derivato da SGML (Standard Generalized Markup Language)

Page 4: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 4B6 JSP Paolo Salvaneschi 4

<TITLE>Laptop Computer</TITLE><BODY><UL><LI>DELL INSPIRON 7500<LI>650 Mhz<LI>256 Mb<LI>23 Gb<LI>4.1 pounds<LI>$3200</UL></BODY>

Descrizione HTML dei contenuti

Introduzione a XML

<COMPUTER TYPE=“LAPTOP”><MANUFACTURER>DELL</MANUFACTURER><LINE>INSPIRON</LINE><MODEL>7500</MODEL><SPEED>650 Mhz</SPEED><MEMORY>256 Mb</MEMORY><DISK>23 Gb</DISK><WEIGHT UNIT=“POUND”>4.1 </WEIGHT><PRICE CURRENCY=“USD”>3200</PRICE>

</COMPUTER>

Descrizione XML dei contenuti

Page 5: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 5B6 JSP Paolo Salvaneschi 5

Introduzione a XML

• Sintassi– Elementi

Un documento XML, è costituito da una struttura gerarchica di elementi distinti mediante una marcatura di inizio e fine<Nome>Mario</Nome>

Gerarchia di tag non sovrapposti

Un elemento può contenere testo, altri elementi, elementi e testo

Page 6: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 6B6 JSP Paolo Salvaneschi 6

Introduzione a XML

<Nome>Mario</Nome>

Case sensitive

Composto da caratteri alfanumerici, . , - , _ Inizia con lettera o _

Notazione abbreviata se non c’è un corpo<graphic file="smile.jpg"/>

Page 7: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 7B6 JSP Paolo Salvaneschi 7

Introduzione a XML

<note><nota n=”101”>

La riunione del <data>10 marzo</data> viene spostata da <luogo>Londra</luogo> a <luogo>Parigi</luogo>

</nota><nota n=”102”>

La riunione del <data>20 marzo</data> viene annullata</nota>

</note>

Elemento misto: testo + elementi

Page 8: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 8B6 JSP Paolo Salvaneschi 8

Introduzione a XML

– AttributiUn elemento può avere degli attributi (proprietà a singolo valore) degli elementi.<Order Key = "23">……..</Order>

– Caratteri specialiSe è necessario inserire un carattere speciale (usato per marcare elementi e attributi in un valore), occorre adottare la codifica seguente:&lt; < &gt; > &amp; & &quot; "

– CommentiSono racchiusi tra <!-- e --> e possono contenere i caratteri speciali.<!-- if x > 0 then -->

Page 9: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 9B6 JSP Paolo Salvaneschi 9

<caldata><holiday type="international"><name>New Year's Day</name><date><month>January</month><day>1</day></date>

</holiday><holiday type="personal"><name>Erik's birthday</name><date><month>April</month><day>23</day></date>

</holiday><holiday type="national"><name>Independance Day</name><date><month>July</month><day>4</day></date>

</holiday><holiday type="religious"><name>Religious</name><date><month>December</month><day>25</day></date>

</holiday></caldata>

Calendariodei giorni di festa

Introduzione a XML

Page 10: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 10B6 JSP Paolo Salvaneschi 10

Introduzione a XML

Editor: NotepadViewer: Explorer

Page 11: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 11B6 JSP Paolo Salvaneschi 11

Introduzione a XML

• Struttura di un documento XML– Prologo

sezione che contiene metadati

– Elemento (o elemento radice)contiene tutti gli elementi e i contenuti che fanno parte del documento

Page 12: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 12B6 JSP Paolo Salvaneschi 12

<?xml version="1.0" standalone="no"?>

<!DOCTYPE reminderSYSTEM "/home/reminder.dtd" [

<!ENTITY smile "<graphic file="smile.jpg"/>">]>

<reminder> &smile; <msg>Smile! It can always get worse.</msg>

</reminder>

Introduzione a XML

Dichiarazione XML

Dichiarazione del tipo di documento

Prologo

DocumentoDichiarazione di entità

Elemento radice

Page 13: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 13B6 JSP Paolo Salvaneschi 13

<?xml version="1.0" standalone="no"?>

Nella prima rigaCase sensitiveOrdine dei parametri come sotto

version versione XMLencoding tipo codifica caratteristandalone esistenza di dichiarazioni esterne al documento

Introduzione a XML

Dichiarazione XML

Prologo

Page 14: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 14B6 JSP Paolo Salvaneschi 14

<!DOCTYPE reminderSYSTEM "/home/reminder.dtd" [

<!ENTITY smile "<graphic file="smile.jpg"/>">]>

<!DOCTYPE element nome elemento radiceSYSTEM “DTD identifier" DTD (system-specifico del

sistema; public-registrato in modo pubblico)

[ declaration 1 elementi di informazione da

assemblare (es. parti ripetitive)…..

]>

Introduzione a XML

Dichiarazione del tipo di documento

Prologo

Dichiarazione di entità

Page 15: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 15B6 JSP Paolo Salvaneschi 15

<reminder> &smile; <msg>Smile! It can always get worse.</msg>

</reminder>

Introduzione a XML

Documento

Utilizzo dell’entità

Page 16: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 16B6 JSP Paolo Salvaneschi 16

Introduzione a XML

• Namespaces– meccanismo attraverso il quale i nomi degli elementi

sono assegnati a gruppi

– Scopo: evitare conflitti di nomi nello scambio di documenti

Page 17: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 17B6 JSP Paolo Salvaneschi 17

<?xml version="1.0" ?><catalogoxmlns:abb="http://www.abbindustries.com/"xmlns="http://www.newindustries.com/"

><abb:elemento abb:codice="1327">

<abb:descrizione>caldaia</abb:descrizione>

</abb:elemento><parte >

<descrizione>bruciatore</descrizione></parte>

</catalogo>

Introduzione a XML

Dichiarazioni di Namespaces(attributi di catalogo)•Namespace•Implicit Namespace

Fully qualified name

Page 18: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 18B6 JSP Paolo Salvaneschi 18

Tecnologie XML

• Tecnologie XML• Validazione

– DTD (Document Type Definition): primo meccanismo utilizzato. Non nato per descrivere XML

– W3C XML SchemaEstensione. Es. tipi di dati, vincoli sui contenuti

Page 19: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 19B6 JSP Paolo Salvaneschi 19

Tecnologie XML

• Tecnologie XML• Formattazione e trasformazione

– CSS– XSLT: W3CeXtensible Stylesheet

Language for Transformation. Linguaggio per la trasformazione di contenuti XML in altri contenuti XML, testuali o HTML

– XSL-FO: eXtensible Stylesheet LanguageFormatting Objects. Linguaggio che definisce una semantica di formattazione di contenuti (es. stampe con formattazioni complesse)

Page 20: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 20B6 JSP Paolo Salvaneschi 20

<?xml version="1.0"?><?xml-stylesheet type="text/css" href="esterno_1.css"?><catalogo>

<titolo>Nuova edizione del catalogo</titolo><elemento> Sedia ottocento</elemento><numero>6</numero><elemento> Tavolo Luigi Filippo</elemento><numero>2</numero><elemento> Vetrinetta inglese ottocento</elemento><numero>5</numero>

</catalogo>

Tecnologie XML

Page 21: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 21B6 JSP Paolo Salvaneschi 21

esterno_1.css

Tecnologie XML

catalogo{font-family: Times New Roman;font-size: 12pt;color: black;display: block;}

titolo{font-family: Tahoma;font-size: 18pt;color: blue;font-weight: bold;display: block;}

elemento{font-family: Tahoma;font-size: 14pt;color: red;font-weight: bold;display: block;}

Page 22: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 22B6 JSP Paolo Salvaneschi 22

Tecnologie XML

• Tecnologie XML• Navigazione

– Un documento XML è un albero di nodi che può essere percorso per raggiungere i nodi ed elaborarli

– XPath: Linguaggio per raggiungere i nodi dell’albero

Page 23: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 23B6 JSP Paolo Salvaneschi 23

Tecnologie XML

• Xpath – esempi

<AAA><BBB/> <CCC/> <BBB/> <BBB/> <DDD>

<BBB/> </DDD>

<CCC/> </AAA>

/AAA l’elemento radice

<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD>

<BBB/></DDD>

<CCC/> </AAA>

/AAA/DDD/BBB gli elementi BBB figli degli elementi DDD figli dell’elemento radice

Page 24: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 24B6 JSP Paolo Salvaneschi 24

Tecnologie XML

<AAA> <BBB/><CCC/> <BBB/> <DDD>

<BBB/></DDD> <CCC>

<DDD> <BBB/><BBB/>

</DDD> </CCC>

</AAA>

//BBB tutti gli elementi BBB

/AAA/CCC/DDD/* Tutti gli elementi identificati dal path precedente

<AAA> <BBB/> <CCC/> <BBB/> <DDD>

<BBB/> </DDD> <CCC>

<DDD> <BBB/> <EEE/>

</DDD> </CCC>

</AAA>

Page 25: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 25B6 JSP Paolo Salvaneschi 25

Tecnologie XML

<AAA> <BBB/><BBB/> <BBB/> <BBB/>

</AAA>

/AAA/BBB[1]Il primo figlio BBB dell’elemento AAA

<AAA> <BBB/> <BBB/> <BBB/> <BBB/>

</AAA>

/AAA/BBB[last()]L’ultimo

Page 26: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 26B6 JSP Paolo Salvaneschi 26

Tecnologie XML

<AAA> <BBB id = "b1"/> <BBB id = "b2"/><BBB name = "bbb"/> <BBB/>

</AAA>

//BBB[@id]Tutti gli elementi BBB che hanno attributo “id”

<AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB name = "kkk"/><BBB/>

</AAA>

//BBB[@name= "bbb"]Tutti gli elementi BBB che hanno attributo “name” con valore “bbb”

Page 27: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 27B6 JSP Paolo Salvaneschi 27

Tecnologie XML

<AAA> <BBB/><CCC/>

</AAA>

/child::AAA/child::BBB

Equivalente di /AAA/BBB

. Il nodo corrente

.. Il nodo genitore

Direzione di percorso dell’albero

Page 28: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 28B6 JSP Paolo Salvaneschi 28

Tecnologie XML

<AAA> <BBB>

<DDD> <CCC>

<DDD/> <EEE/>

</CCC> </DDD>

</BBB> <CCC>

<DDD><EEE>

<DDD> <FFF/>

</DDD> </EEE>

</DDD> </CCC>

</AAA>

//CCC/descendant::DDD

Tutti gli elementi DDD che hanno CCC tra i loro avi

Etc………………………

Page 29: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 29B6 JSP Paolo Salvaneschi 29

Utilizzo di XML con JSP /tag library

• La tag library < x : >

<x:if><x:choose><x:when><x:otherwise><x:forEach>

<x:parse> <x:transform><x:out><x:set><x:param>

Page 30: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 30B6 JSP Paolo Salvaneschi 30

Utilizzo di JSTL

<x:if select="espressioneBooleana XPath">Elementi JSP

</x:if>

• Valuta il corpo solo se l’espressione Xpathspecificata vale true<x:if select="$doc//c">

True se l’insieme dei nodi estratti contiene almeno un nodoFalse se l’insieme è vuoto

Page 31: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 31B6 JSP Paolo Salvaneschi 31

Utilizzo di JSTL

• Analogamente a <c: per <x:choose> <x:when> <x:otherwise>

<x:choose>azioni <c:when> ed eventualmente un’azione <c:otherwise>

</x:choose><x:when select="espressioneBooleana XPath">

Elementi JSP</x:when><x:otherwise>

Elementi JSP</x:otherwise>

Page 32: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 32B6 JSP Paolo Salvaneschi 32

Utilizzo di JSTL

• Nota:Valore dinamico <x:if select="$doc//c">

statico <x:if select=".//d">– Le espressioni Xpath sono accettate solo nell’attributo select– Non devono essere racchiuse tra ${………} (come per

espressioni EL) - solo normali apici– Le variabili possono apparire in qualunque posizione in

un’espressione Xpath e iniziano con un carattere $ es. $doc– Non sono riconosciuti gli operatori di accesso alle proprietà e

agli elementi di EL ( . e [] ) (es. myBean.myProperty)– Le variabili implicite EL sono disponibili alle espressioni Xpath

con sintassi diversa (: anziché .)es. $param:myParam (in EL: param.myParam) -- parametro della request

Page 33: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 33B6 JSP Paolo Salvaneschi 33

Utilizzo di JSTL

<x:forEach select="espressioneXPath" [var="var"] >Elementi JSP

</x:forEach>

• Valuta il corpo una volta per ciascun nodo presente nel risultato di un’espressione Xpath.

• Sul nodo corrente è impostato il nodo di contesto utilizzato dalle azioni nidificate(con XPath: ". Il nodo corrente " vedi esempio 4 )

• var - nome della variabile nidificata che detiene l’elemento corrente

Page 34: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 34B6 JSP Paolo Salvaneschi 34

Utilizzo di JSTL

<x:out select="espressioneXPath"/>

Valuta l’espressione e inserisce il risultato nella risposta

<x:set select="espressioneXPath" var="var"

[scope= "page|request|session|application" ] />Imposta una variabile di scope sul valore di un’espressione XPath

Page 35: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 35B6 JSP Paolo Salvaneschi 35

Utilizzo di JSTL

<x:parse xml="DocumentoXML" [var= " var "| varDom= " var "]/>

<x:parse [var= " var " | varDom= " var "]>DocumentoXML

</x:parse>

Esegue il parsing di un documento XML (String o java.io.Reader) e salva il risultato in un’oggetto dipendente dall’applicazione (struttura dati utilizzata dalle altre azioni XML della JSTL)Alternativamente può salvare il risultato in un oggetto DOM (org.w3c.dom.Document) per elaborazioni con codice specifico

Page 36: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 36B6 JSP Paolo Salvaneschi 36

Utilizzo di JSTL

<x:transform>Trasforma un documento XML utilizzando un foglio di stile XSLT

<x:param> Fornisce un valore per un parametro utilizzato in un foglio di stile XSLT

Page 37: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 37B6 JSP Paolo Salvaneschi 37

<%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %><html><head><title>JSTL: XML Support -- Parse / Out</title></head><body bgcolor="#FFFFFF"><h3>Parse / Out</h3><x:parse var="doc"><a>

<b><c>testo 1

</c></b><d>testo 2

</d></a>

</x:parse><x:out select="$doc//c"/><x:out select="$doc//d"/><hr /></body></html>

Utilizzo di XML con JSP /tag library

Esempio 1

Page 38: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 38B6 JSP Paolo Salvaneschi 38

<%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %><html><head><title></title></head><body bgcolor="#FFFFFF"><h3>Parse / Set / Out</h3><x:parse var="doc"><a><b><c>testo 1--c

</c></b><d>

<e>testo 2--e</e><f>testo 3--f</f>

</d></a></x:parse>……….

Utilizzo di XML con JSP /tag library

……….

<x:set var="elementod" select="$doc//d"/>

<x:out select=" $elementod/f "/>

<hr /></body></html>

Estrae l’albero <d>

Trova l’elemento <f> nell’albero <d>

Esempio 2

Page 39: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 39B6 JSP Paolo Salvaneschi 39

<%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %><html><head><title></title></head><body bgcolor="#FFFFFF"><h3>Parse / If</h3><x:parse var=“doc"><a>

<b><c>testo 1</c>

</b><d>

testo 2</d>

</a></x:parse>…………

……..<x:if select="$doc//c">$doc//c exists

</x:if><br><x:if select="$doc/a/d">$doc/a/d exists

</x:if><br><x:if select="$doc/w/o/l">$doc/w/o/l exists

</x:if><hr></body></html>

Non esiste

Utilizzo di XML con JSP /tag library

Esempio 3

Page 40: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 40B6 JSP Paolo Salvaneschi 40

<%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %><html><head><title></title></head><body bgcolor="#FFFFFF"><h3>Parse / ForEach</h3><x:parse var="document"><doc><a>

<b>testo 1</b></a><a>

<c>testo 2</c></a><a>

<d>testo 3</d></a><a>

<d>testo 4</d></a></doc></x:parse>

Utilizzo di XML con JSP /tag library

Esempio 4

Page 41: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 41B6 JSP Paolo Salvaneschi 41

………….<x:forEach select="$document//a">elemento trovato--- <x:out select="."/><br />

</x:forEach><hr /><x:forEach select="$document//a"><x:if select=".//d">

elemento trovato tipo d--- <x:out select="."/><br />

</x:if></x:forEach>

</body></html>

Utilizzo di XML con JSP /tag library

Nodo corrente dell’iterazione

Page 42: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 42B6 JSP Paolo Salvaneschi 42

<?xml version="1.0"?><a><b><c>testo 1--c

</c></b><d>

<e>testo 2--e</e><f>testo 3--f</f>

</d></a>

Utilizzo di XML con JSP /tag library

Import e parsingdi un file esterno

Risultato

Esempio 5

Page 43: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 43B6 JSP Paolo Salvaneschi 43

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %><html><head><title>Import / Parse / Set / Out</title>

</head><body bgcolor="#FFFFFF"><h3>Parse / Set / Out</h3><c:import url="testo.xml" varReader="xmlSource">

<x:parse var="doc" xml="${xmlSource}"/></c:import><x:set var="elementod" select="$doc//d"/><x:out select="$elementod/f"/><hr></body></html>

Utilizzo di XML con JSP /tag library

Index.jsp

Il contenuto importato èreso disponibile all’azione nidificata tramite un java.io.Reader

Valore dinamico EL

Page 44: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 44B6 JSP Paolo Salvaneschi 44

Utilizzo di JSTL

<c:import> Importa una risorsa interna (all’applicazione web) (come <jsp:include>) o esterna

• Salvando il contenuto come String (nella variabile var)<c:import url="url" var="var"/>

• Rendendo disponibile ad azioni annidate il contenuto tramite java.io.Reader

<c:import url="url" varReader="varReader" >azioni che utilizzano il Reader

</c:import>

Page 45: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 45B6 JSP Paolo Salvaneschi 45

Utilizzo di JSTL

Esempio 6

Page 46: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 46B6 JSP Paolo Salvaneschi 46

Utilizzo di JSTL

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %><html><head><title>Elabora ordine</title></head><body bgcolor="#FFFFFF"><c:import url="ordine.xml" varReader="xmlSource">

<x:parse var="document" xml="${xmlSource}"/></c:import>

…………………..

Page 47: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 47B6 JSP Paolo Salvaneschi 47

Utilizzo di JSTL

……………….

<h1>Ordine ricevuto</h1><hr>Protocollo N.----<x:out select="$document/ordine/protocollo"/> <br>Ente emittente----<x:out select="$document/ordine/enteEmittente"/> <br>

<hr><h2>Elenco parti</h2><hr><x:forEach select="$document//descrizione">elemento--- <x:out select="."/><br></x:forEach><hr>

</body></html>

Page 48: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 48B6 JSP Paolo Salvaneschi 48

Utilizzo di JSTL

………………<c:import url="ordine.xml" varReader="xmlSource">

<x:parse var="document" xml="${xmlSource}"/></c:import>………………….

Modi alternativi di importare il file xml

Salvando il contenuto come String (nella variabile var)

Rendendo disponibile ad azioni annidate il contenuto tramite java.io.Reader

…………………. <c:import url="ordine.xml" var="xmlSource"/><x:parse var="document" xml="${xmlSource}"/>………………….

Page 49: JSP parte E - Unibg · B6 JSP Paolo Salvaneschi 1 B6_5 V1.11 JSP parte E Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 49B6 JSP Paolo Salvaneschi 49

Utilizzo di JSTL

Esercizio:Aggiungere all’ultimo esempio di utilizzo di database una funzione di import da file XML