Avatar billede mo-bo Nybegynder
24. januar 2004 - 15:34 Der er 7 kommentarer og
1 løsning

xml xslt transform

Hej

Jeg er kommet så langt at jeg har fået xml ud af min sql ( FOR XML RAW ) Nu vil jeg gerne ligge XLST på og så udskrive det hele....men hvordan ? Har prøvet som i kan se nedenunder, man kan ikke lige lure den....hjælp :D

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import NameSpace="System.Data.SqlClient" %>
<%@ Import NameSpace="System.Xml" %>
<%@ Import NameSpace="System.Xml.XPath" %>
<%@ Import NameSpace="System.Xml.Xsl" %>
<%
SqlDataReader myDataReader;
SqlConnection myConnection = new SqlConnection( "server=kingkong;uid=bla; pwd=bla;database=bla" );
myConnection.Open();
SqlCommand myCommand = new SqlCommand( "Select * from bla FOR XML RAW", myConnection );
myDataReader = myCommand.ExecuteReader();


XmlDocument doc = new XmlDocument();
doc.Load(myDataReader[0].ToString());

XslTransform trans = new XslTransform();
trans.Load("test.xslt");

Xml1.Document = doc;
Xml1.Transform = trans1;



myDataReader.Close();
myConnection.Close();


%>
Avatar billede burningice Nybegynder
24. januar 2004 - 16:02 #1
well... du går allerede galt i byen ved din doc.Load()... har du overhovedet kigget i SDK'et hvilke overloads Load() har ?! jeg ser ingen steder at den kan tage hele xml-dokumentet som en streng !! (hint: den kan loade fra en strem, textreader eller xmlreader).

Udover det, så burde det virke.
Avatar billede mo-bo Nybegynder
24. januar 2004 - 16:09 #2
hey Cyber

Jeg har simpelthen ikke tid, hvis du har 2 min til at fixe det for mig så er der 100 points oveni ?

/Mobo
Avatar billede burningice Nybegynder
24. januar 2004 - 16:15 #3
well.. for at få en string over i en textreader skal du bruge StringReader-klassen

StringReader sr = new StringReader(myDataReader[0].ToString());

den textreader du nu har fået kan du bruge i din XmlDocument.Load() sådan her

doc.Load(sr);

resten af koden skulle være ok, så det bliver altså til

StringReader sr = new StringReader(myDataReader[0].ToString());

XmlDocument doc = new XmlDocument();
doc.Load(sr);

XslTransform trans = new XslTransform();
trans.Load("test.xslt");

Xml1.Document = doc;
Xml1.Transform = trans1;
Avatar billede mo-bo Nybegynder
24. januar 2004 - 16:33 #4
Nice!
Men nu for jeg en fejl ved "xml1.Document = Doc;" ??

--------------------------

<%@ Import Namespace="System.Data" %>
<%@ Import NameSpace="System.Data.SqlClient" %>
<%@ Import NameSpace="System.Xml" %>
<%@ Import NameSpace="System.Xml.XPath" %>
<%@ Import NameSpace="System.Xml.Xsl" %>
<%@ Import NameSpace="System.IO" %>

<%
SqlDataReader myDataReader;
SqlConnection myConnection = new SqlConnection( "server=bla;uid=bla; pwd=tmadmin;database=bla" );
myConnection.Open();
SqlCommand myCommand = new SqlCommand( "Select * from bla FOR XML RAW", myConnection );
myDataReader = myCommand.ExecuteReader();

StringReader sr = new StringReader(myDataReader[0].ToString());

XmlDocument doc = new XmlDocument();
doc.Load(sr);

XslTransform trans = new XslTransform();
trans.Load("test.xslt");

Xml1.Document = doc;
Xml1.Transform = trans;



myDataReader.Close();
myConnection.Close();
%>
Avatar billede burningice Nybegynder
24. januar 2004 - 16:38 #5
hvilket id har du givet din <asp:xml> control?
Avatar billede thor.ostergaard Nybegynder
25. januar 2004 - 08:00 #6
Ja, det er ikke helt let. Jeg fandt et par gode referencer da jeg skulle lave noget tilsvarende:
http://www.net-language.com/CodeExample.aspx?i=239
http://www.aspfree.com/c/a/ASP.NET-Code/XSL-Transformation-in-C-by-Jochen-Hofmann/ (den skal lige copy pastes en tur så koden kommer til at stå så det bliver læseligt.

Den kode jeg endte med at skrive ser sådan her ud:
        Dim xdNav As XPathNavigator
        Dim tr As Xsl.XslTransform
        Dim sw As StringWriter
        xdNav = xmlMedlemmer.CreateNavigator()
        tr = New Xsl.XslTransform
        tr.Load(Server.MapPath("../Commonfiles/Sort.xslt"))
        sw = New StringWriter
        tr.Transform(xdNav, Nothing, sw)
        xmlMedlemmer.LoadXml(sw.ToString())
Avatar billede burningice Nybegynder
25. januar 2004 - 13:31 #7
thor.ostergaard>> hvorfor skyde spurve med kanoner... det nemmeste er da helt klart at bruge den indbyggede System.Web.UI.WebControls.Xml klasse som jo netop er der for det samme.
Avatar billede mo-bo Nybegynder
18. maj 2004 - 10:39 #8
close
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester