Un elenco di libri può essere considerato come una collezione di

Transcript

Un elenco di libri può essere considerato come una collezione di
Laboratorio di sistemi
XML e JSTL
JSP [NetBeans]
Un elenco di libri può essere considerato come una collezione di oggetti di tipo libro. Ogni libro
è caratterizzato da una serie di informazioni “atomiche” come autore e prezzo o “aggregate”
come edizione formato da editore e anno di pubblicazione. L’isbn costituisce un attributo di
libro e serve come identificativo di ogni singolo libro.
Forniamo una rappresentazione XML della collezione di libri.
libri.xml
<?xml version="1.0" encoding="UTF-8"?>
<libri>
<libro isbn="88-4343-543-6">
<titolo>Jsp e database</titolo>
<autore>Maurizio Cozzetto</autore>
<edizione>
<editore>Loescher</editore>
<anno>2005</anno>
</edizione>
<prezzo>11,50</prezzo>
</libro>
<libro isbn="66-3455-998-0">
<titolo>Java web 2.0</titolo>
<autore>Maurizio Cozzetto</autore>
<edizione>
<editore>Mondadori</editore>
<anno>2005</anno>
</edizione>
<prezzo>7,90</prezzo>
</libro>
<libro isbn="55-3333-222-1">
<titolo>Php</titolo>
<autore>Maurizio Cozzetto</autore>
<edizione>
<editore>Mondadori</editore>
<anno>2006</anno>
</edizione>
<prezzo>6,90</prezzo>
</libro>
jstl_xml_libri.pdf
Pag. 1/3
Cozzetto ©
Laboratorio di sistemi
XML e JSTL
JSP [NetBeans]
<libro isbn="55-1234-665-2">
<titolo>Perl Programming</titolo>
<autore>Fabrizio Cozzetto</autore>
<edizione>
<editore>Mondadori</editore>
<anno>2006</anno>
</edizione>
<prezzo>12,90</prezzo>
</libro>
</libri>
Vogliamo produrre una pagina jsp che legga le informazioni dal file XML e le rappresenti in forma
tabellare.
leggiLibri.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Libri Page</title>
<style type="text/css">
<!-body,td,th {
font-family: Trebuchet MS;
font-size: 10pt;
}
-->
</style>
</head>
<body>
<h3>Libri Page</h3>
<!-- importiamo il file e memorizziamolo nella variabile docString -->
<c:import var="docString" url="libri.xml"/>
<!-- facciamo il parsing del file xml memorizzando il risultato nella variabile doc -->
<x:parse var="doc" doc="${docString}"/>
<c:out value="${docString}"/><br/>
<br/>
jstl_xml_libri.pdf
Pag. 2/3
Cozzetto ©
Laboratorio di sistemi
XML e JSTL
JSP [NetBeans]
<!-- Mediante espressioni XPath, estraiamo da ogni record il codice isbn -->
<-- il titolo, l’autore, l’editore, l’anno e il prezzo -->
<table border=1>
<tr><th>ISBN</th><th>Titolo</th><th>Autore</th><th>Editore</th><th>Anno</th><th>P
rezzo</th></tr>
<x:forEach select="$doc/libri/libro" var="libro">
<tr>
<td><x:out select="$libro/@isbn"/></td>
<td><x:out select="$libro/titolo"/></td>
<td><x:out select="$libro/autore"/></td>
<td><x:out select="$libro/edizione/editore"/></td>
<td><x:out select="$libro/edizione/anno"/></td>
<td><x:out select="$libro/prezzo"/></td>
</tr>
</x:forEach>
</table>
</body>
</html>
Ecco l’output del programma. Per comodità nell’output abbiamo riportato anche il file XML di
origine.
Ricordiamoci comunque di aggiungere al nostro progetto la libreria Xalan (di solito il file jar
xalan.jar). Il sito web del progetto è http://xalan.apache.org/.
Tratto da Wikipedia:
Xalan is a popular open source software library from the Apache Software Foundation,
originally created by IBM under the name LotusXSL, that implements the XSLT XML
transformation language and the XPath XML query language. The Xalan XSLT processor is
available for both the Java and C++ programming languages.
jstl_xml_libri.pdf
Pag. 3/3
Cozzetto ©