i problemi maggiori sono:
1) funzione cerca: ho un file xml (prenotazioni.xml)
- Codice: Seleziona tutto
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" ?>
<registro_prenotazioni>
<prenotazione_privati>
<cognome>Schqwe</cognome>
<nome>Carol</nome>
<nota></nota>
<nazionalita>Ceca</nazionalita>
<indirizzo>Via Trento</indirizzo>
<civico>15</civico>
<cap>38023</cap>
<citta>Cles</citta>
<provincia>(Tn)</provincia>
<telefono>0463432568</telefono>
<tesserato>si</tesserato>
<consenso>si</consenso>
<e_mail>rossi@hotmail.com</e_mail>
<giorno_p>12</giorno_p>
<mese_p>07</mese_p>
<anno_p>2004</anno_p>
<giorno_a>17</giorno_a>
<mese_a>07</mese_a>
<anno_a>2004</anno_a>
<provenienza>Rifugio Pedrotti</provenienza>
<motivo>Escursionismo</motivo>
<numero_persone>2</numero_persone>
<numero_notti>1</numero_notti>
<numero_stanza>1</numero_stanza>
</prenotazione_privati>
<prenotazione_privati>
<cognome>Rossi</cognome>
<nome>Mario</nome>
<nota>arriva dopo le ore 18</nota>
<nazionalita>Italiana</nazionalita>
<indirizzo>Via Trento</indirizzo>
<civico>15</civico>
<cap>38023</cap>
<citta>Cles</citta>
<provincia>(Tn)</provincia>
<telefono>0463432568</telefono>
<tesserato>si</tesserato>
<consenso>si</consenso>
<e_mail>rossi@hotmail.com</e_mail>
<giorno_p>12</giorno_p>
<mese_p>07</mese_p>
<anno_p>2005</anno_p>
<giorno_a>17</giorno_a>
<mese_a>07</mese_a>
<anno_a>2005</anno_a>
<provenienza>Rifugio Pedrotti</provenienza>
<motivo>Escursionismo</motivo>
<numero_persone>2</numero_persone>
<numero_notti>1</numero_notti>
<numero_stanza>1</numero_stanza>
</prenotazione_privati>
<prenotazione_gruppi>
<nome_gruppo>Summit</nome_gruppo>
<nota>arriva dopo le ore 18</nota>
<nazionalita>Tedesca</nazionalita>
<indirizzo>Via Trento</indirizzo>
<civico>15</civico>
<cap>36783</cap>
<citta>Innsbruck</citta>
<provincia>(Tn)</provincia>
<telefono>0463432568</telefono>
<e_mail>summit@hotmail.com</e_mail>
<giorno_p>12</giorno_p>
<mese_p>07</mese_p>
<anno_p>2005</anno_p>
<giorno_a>17</giorno_a>
<mese_a>07</mese_a>
<anno_a>2005</anno_a>
<provenienza>Rifugio Pedrotti</provenienza>
<motivo>Ferrate</motivo>
<numero_persone>8</numero_persone>
<numero_notti>2</numero_notti>
<stanze>
<prima_stanza>
<numero_prima_stanza>8</numero_prima_stanza>
<pp_prima_stanza>3</pp_prima_stanza>
</prima_stanza>
<seconda_stanza>
<numero_seconda_stanza>2</numero_seconda_stanza>
<pp_seconda_stanza>4</pp_seconda_stanza>
</seconda_stanza>
<terza_stanza>
<numero_terza_stanza>camerone</numero_terza_stanza>
<pp_terza_stanza>1</pp_terza_stanza>
</terza_stanza>
<quarta_stanza>
<numero_quarta_stanza/>
<pp_quarta_stanza/>
</quarta_stanza>
<quinta_stanza>
<numero_quinta_stanza/>
<pp_quinta_stanza/>
</quinta_stanza>
</stanze>
</prenotazione_gruppi>
ecc.
mediante un form html
- Codice: Seleziona tutto
<FORM action="cercaprenotazionedata.php" method="post">
<p>Inserisci qua la <b>data di arrivo</b> di cui vuoi visualizzare le prenotazioni:
gg <INPUT type="TEXT" size="2" name="giorno_a">
mm <INPUT type="TEXT" size="2" name="mese_a">
aaaa <INPUT type="TEXT" size="4"name="anno_a">
<br><br>
<INPUT type="SUBMIT" name="Invia" value="Cerca"></B></p>
</FORM><br><br>
devo ricercare nel documento e visualizzare le sole prenotaizoni relative a quella data.
Lo script che ho fatto è questo (non da errore ma non appare niente).
- Codice: Seleziona tutto
<?php
$giorno_a = $_POST['giorno_a'];
$mese_a = $_POST['mese_a'];
$anno_a = $_POST['anno_a'];
$testo = '
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="registro_prenotazioni">
<HTML>
<HEAD>
<TITLE>Cerca prenotazioni per data di arrivo</TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT SIZE="7" FACE="Arial">Cerca prenotazioni per data di arrivo</FONT>
<BR/><BR/><BR/>
</CENTER>';
$testo = $testo . "<CENTER><FONT SIZE=\"5\" FACE=\"Arial\">Prenotazioni del $giorno_a/$mese_a/$anno_a</FONT>\n";
$testo = $testo . '<BR/><BR/>
<table border="2" cellpadding="0" cellspacing="2">
<tbody>
<tr>
<th>Data prenot.</th><th>Soggetto<br>gruppo</br></th><th>Nazion.</th><th>Indirizzo</th><th>Telefono</th><th>UIAA</th>
<th>E-mail</th><th>Data di arrivo</th><th>Provenienza</th><th>PP</th><th>Notti</th><th>Stanza Nr. (PP)</th><th>Nota</th>
</tr>
<xsl:apply-templates select="registro_prenotazioni/prenotazione_privati"/>
<xsl:apply-templates select="registro_prenotazioni/prenotazione_gruppi"/></tbody></table></body></html></xsl:template>';
$testo = $testo . "<xsl:template match=\"registro_prenotazioni/prenotazione_privati\"><xsl:if test=\"giorno_a[text()='$giorno_a']\"><xsl:if test=\"mese_a[text()='$mese_a']\"><xsl:if test=\"anno_a[text()='$anno_a']\">\n";
$testo = $testo . '<tr>
<td align="center"></td><td><xsl:value-of select="./giorno_p"/><xsl:text>-</xsl:text><xsl:value-of select="./mese_p"/>
<xsl:text>-</xsl:text><xsl:value-of select="./anno_p"/></td><td><b><xsl:value-of select="./cognome"/><br></br><xsl:value-of select="./nome"/></b></td>
<td><xsl:value-of select="./nazionalita"/>
</td><td><xsl:value-of select="./indirizzo"/><xsl:text> </xsl:text><xsl:value-of select="./civico"/><xsl:text>, </xsl:text><br></br><xsl:value-of select="./cap"/><xsl:text> </xsl:text><xsl:value-of select="./citta"/><xsl:text> </xsl:text><xsl:value-of select="./provincia"/></td>
<td><xsl:value-of select="./telefono"/></td><td align="center"><xsl:value-of select="./tesserato"/></td><td><xsl:value-of select="./e_mail"/></td>
<td><xsl:value-of select="./giorno_a"/><xsl:text>-</xsl:text><xsl:value-of select="./mese_a"/><xsl:text>-</xsl:text><xsl:value-of select="./anno_a"/>
</td><td><xsl:value-of select="./provenienza"/></td><td align="center"><xsl:value-of select="./numero_persone"/></td><td align="center"><xsl:value-of select="./numero_notti"/></td>
<td align="center"><xsl:value-of select="./numero_stanza"/><xsl:text> (</xsl:text><xsl:value-of select="./numero_persone"/><xsl:text>)</xsl:text></td>
<td><xsl:value-of select="./nota"/></td><td><a href="logineliminaprenotazione.html"><img title="elimina prenotazione" border="0" src="cestino.gif"/></a><xsl:text> </xsl:text><a href="loginprenotazionimod.html"><img title="modifica prenotazione" border="0" src="appunti.gif"/></a></td></tr>
</xsl:if></xsl:if></xsl:if>\n</TABLE>
<BR/><BR/><BR/>
<A href="HOME.html">Torna alla home</A>
</CENTER>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>';
$fileName = "cercaprenotazione.xsl";
$fileStream = fopen($fileName, "w");
fwrite($fileStream,$testo);
fclose($fileStream);
system("/usr/lib/java/bin/java -classpath /usr/lib/saxon/saxon.jar com.icl.saxon.StyleSheet prenotazioni.xml cercaprenotazione.xsl");
?>
(in questo manca il template per i gruppi..aspettavo a farlo che funzionasse almento quello dei privati
2)
Devo creare un foglio di stile che riassuma la numerosità divisa per nazionalità (e fin qui nessun problema, ho usato la funzione sum).
Il problema nasce quando devo filtrare per anno, in modo da far apparire una tabella con le sole nazionalità relative alle presenze di un solo anno
- Codice: Seleziona tutto
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
<head>
<title>Prenotazioni</title>
</head>
<center>
<h1>Lista prenotazioni</h1>
</center>
<xsl:if test="//anno_a[text()='2005']">
<table border="2" cellpadding="0" cellspacing="2">
<tbody>
<tr>
<th>nazionalita</th>
<th>numero</th>
</tr>
<tr>
<td>Italiana</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Italiana']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Italiana']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Austriaca</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Austriaca']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Austriaca']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Ceca</td>
<td>
<xsl:if test="anno_a[text()='2005']">
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Ceca']
/../numero_persone | //prenotazione_gruppi/nazionalita[text()='Ceca']/../numero_persone)"/>
</xsl:if>
</td>
</tr>
<tr>
<td>Francese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Francese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Francese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Inglese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Inglese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Inglese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Irlandese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Irlandese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Irlandese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Olandese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Olandese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Olandese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Portoghese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Portoghese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Portoghese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Slovacca</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Slovacca']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Slovacca']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Spagnola</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Spagnola']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Spagnola']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Tedesca</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Tedesca']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Tedesca']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Danese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Danese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Danese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Finlandese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Finlandese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Finlandese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Norvegese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Norvegese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Norvegese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Canadese</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Canadese']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Canadese']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Statunitense</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Statunitense']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Statunitense']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Altro Europa</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Altro Europa']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Altro Europa']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Altro America</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Altro America']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Altro America']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Altro Asia</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Altro Asia']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Altro Asia']/../numero_persone)"/>
</td>
</tr>
<tr>
<td>Altro Oceania</td>
<td>
<xsl:value-of select="sum(//prenotazione_privati/nazionalita[text()='Altro Oceania']
/../numero_persone| //prenotazione_gruppi/nazionalita[text()='Altro Oceania']/../numero_persone)"/>
</td>
</tr>
<tr>
<th>Totale</th>
<td>
<xsl:value-of select="sum(//numero_persone)"/>
</td>
</tr>
</tbody>
</table>
</xsl:if>
</html>
</xsl:template>
</xsl:stylesheet>
COn questo foglio di stile ottengo un risultato: dalla mia tabella scompaiono i cechi, il problema è che ho fatto le prove con 5 cechi del 2005 e 2 del 2004...con questo foglio di stile scompaiono tutti!!!
ho fatto delle domandine belle pesanti.
..quindi mi fermo qui...ma se ci prendete gusto ne ho altri rompicapi!!!
grazie per OGNI AIUTO SAPRETE DARMI!!!
laura