SQL server e xsl

lunedì 20 febbraio 2006 - 14.40

getfar Profilo | Junior Member

Ciao ,
sto usando SQL SERVER con xml.
Con l'istruizione for xml ottengo in uscita un file .xml
Per visualizzarlo devo pero' avere anche un file .xsl , giusto?
Come faccio a produrlo con SQL server?

grazie 1000


Brainkiller Profilo | Guru

>Ciao ,
>sto usando SQL SERVER con xml.
>Con l'istruizione for xml ottengo in uscita un file .xml
>Per visualizzarlo devo pero' avere anche un file .xsl , giusto?
>Come faccio a produrlo con SQL server?

Ciao,
con SQL Server di solito puoi farti restituire dal database una rappresentazione XML dei dati richiesti oppure lo schema associato ad essi. Per l'XSL ci sono due strade, o te lo costruisci tu manualmente, oppure lo fai costruire a Tools ad Hoc come Xml Spy e simili.
SQL Server non produce XSL/XSLT.
Ciao


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

getfar Profilo | Junior Member

ma il file xml che fornisce in uscita sql server (io non conosco xml) è già utilizzabile o va manipolato?

grazie di tutto

lbenaglia Profilo | Guru

>ma il file xml che fornisce in uscita sql server (io non conosco
>xml) è già utilizzabile o va manipolato?

Ciao getfar,

SQL Server a partire dalla versione 2000 dispone della clausola FOR XML che ti permette di generare uno stream XML la cui struttura può essere generata automaticamente oppure dichiarata esplicitamente.
Ti allego un link che rimanda ai Books Online di SQL Server 2005 dove troverai vari links per approfindire il funzionamento di questa clausola:

"Constructing XML Using FOR XML"
http://msdn2.microsoft.com/en-us/library/ms178107.aspx

>grazie di tutto
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

getfar Profilo | Junior Member

ok letto!
Ho fatto progressi.
Mi rimarrebbe un piccolo problema, visto che non lavoro con sql server 2000.
Io posso utilizzare la clausola for xml auto, elements, ma se scrivo

select [tipologia veicolo],p1
from veicolo
where [tipologia veicolo] like 'am%'
FOR XML auto, elements;

lui mi restituisce <veicolo><tipologia_x0020_veicolo>AM02L</tipologia_x0020_veicolo><p1>4.800000000000000e+001</p1></veicolo>
<veicolo><<tipologia_x0020_veicolo>AM02L</tipologia_x0020_veicolo><p1>4.800000000000000e+001</p1> </veicolo>

ma il tag <veicolo> ripetuto per ogni riga gli da fastidio.
Sapete aiutarmi?
grazie per la pazienza

lbenaglia Profilo | Guru

>lui mi restituisce <veicolo><tipologia_x0020_veicolo>AM02L</tipologia_x0020_veicolo><p1>4.800000000000000e+001</p1></veicolo>
><veicolo><<tipologia_x0020_veicolo>AM02L</tipologia_x0020_veicolo><p1>4.800000000000000e+001</p1>
></veicolo>
>
>ma il tag <veicolo> ripetuto per ogni riga gli da fastidio.

A chi "gli da fastidio"?
Qual è il problema che riscontri?
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

getfar Profilo | Junior Member

il problema è che quando vado ad aprire il file xml con explorer mi da errore.
L'errore è che la radice viene ripetuta.
Se infatti lascio il tag <veicolo> solo all' inizio e alla fine del listato xml il problama scompare.
Cioè il problema è che per usare il file xml che mi proviene da MS Sql devo prima rimetterci le mani e fare delle correzioni.

Ma tutto cio' mi sembra strano.

Che ne pensi?

grazie 1000

Tieni presente che uso SQL SERVER 8.0 ed alcune oppzioni del for xml non le prende.



lbenaglia Profilo | Guru

>il problema è che quando vado ad aprire il file xml con explorer
>mi da errore.
>L'errore è che la radice viene ripetuta.

Non viene ripetuta la radice, proprio non esiste
In SQL Server 2000 la clausola FOR XML restituisce dei Fragment XML, ovvero degli stream XML senza l'elemento di ROOT.
SQL Server 2005 ha implementato l'opzione ROOT appunto per specificare tale elemento.

Purtoppo non hai scappatoie, devi inventarti un sistema per aggiungere l'elemento ROOT al Fragment XML.
Un esempio lo trovi nel seguente post:
http://groups.google.it/group/microsoft.public.it.sql/msg/34bd79c5db67a407

>grazie 1000
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

getfar Profilo | Junior Member

grazie Lorenzo ora mi è chiaro.

Sei stato veramente fortissimo.


A presto

Get far

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5