Originariamente inviato da filo84
Ciao Sidur,
grazie mille per la tua disponibilità e precisione.
Utilizzare xquery come linguaggio di programmazione lato server è proprio quello che stavo cercando di fare.
Ho seguito le tue indicazioni e sono riuscito ad interrogare i dati utilizzando exist senza problemi.
La mia difficoltà ora è nella presentazione della risposta... ti spiego:
dopo non poche peripezie sono riuscito a fare in modo da ottenere, invocando il file.xql, una pagina formattata mediante un xsl (che a sua volta richiama un css). In poche parole la pagina è esattamente come deve essere visualizzata all'utente, ma è un file .xql
Mi chiedo: è giusto che sia così, o dovrei lavorare su un altro file e/o in un altro modo?
E' giusto che sia cosi'. E' equivalente ad avere un file php... es: http://www. un sito .it/index.php
Altro esempio preso dal sito ufficiale di exist: http://demo.exist-db.org/exist/xquery/functions.xql
Penso che ci sia una funzione per nascondere l'indirizzo dalla barra se vuoi, o forse e' un parametro di configurazione del server, non son sicuro.
Credo proprio che l'approccio XQ + XSL + CSS sia giusto, in particolare se i risultati della tua interrogazione sono complessi. Ma per risultati gestibili all'intero di espressioni FLOWR eviterei XSLT completamente.
Esempio:
codice:
<html>
<head>
<title/>
<style type="text/css">
</style>
</head>
<body>
{
let $elementi := collection("/home/usr/xml/")//elemento
for $e in $elementi
order by $e/@attr ascending
return
<table>
<tr>
<td>Elemento</td>
<td>Attributo</td>
</tr>
<tr>
<td>{$e/text()}</td>
<td>{string($e/@attr)}</td>
</tr>
</table>
}
</body>
</html>
E probabilmente puoi cavartela per gestire cose piu' complesse con funzioni e chiamate alle funzioni. Per esempio (preso da call.xq in eXist/samples/xquery/call.xq)
codice:
declare namespace f="urn:my-functions";
declare function f:plus($a as xs:integer, $b as xs:integer) {
$a + $b
};
<body>
The sum of numbers 1 to 4 is:
{seq:fold(util:function("f:plus", 2), 1 to 4, 0)}</p>
</body>
Purtroppo non ho sperimentato abbastanza con xquery come linguaggio di programmazione lato server, ma credo che sia abbastanza potente se ci si abitua alla sintassi e al modo di programmare per "query".
Ciao