15. april 2003 - 15:51Der er
24 kommentarer og 2 løsninger
Serverside transformation (asp)
Hejsa,
Jeg sidder og prøver at gøre mig lidt klogere på XML/XSLT, og det går ret fint. Jeg har prøvet clientside transformation, og ligeledes serverside transformation, og det har været en positiv oplevelse......lige indtil.....
Ja, de dokumenter jeg har transformeret serverside har været xml dokumenter med *.xml som extention.
Nu sidder jeg og prøver at transformere en *.asp side (kunne også være PHP) vha. xsl serverside, men det kan den ikke lide.
Jeg skriver lige min kode her: ----------------------------------------------------------- <%@ Language=VBScript %> <% 'Load XML set xml = Server.CreateObject("Microsoft.XMLDOM") xml.async = false xml.load(server.MapPath("people.asp"))
'Load XSL set xsl = Server.CreateObject("Microsoft.XMLDOM") xsl.async = false xsl.load(Server.MapPath("xhtml.xsl"))
'Transform file Response.Write(xml.transformNode(xsl)) %> ----------------------------------------------------------- Jeg tror problemet er at det er en asp side. xml.load(server.MapPath("people.asp"))
Har jeg ret???? Hvordan kan jeg ellers bruge asp side (indeholdende ren xml kode) til at blive transformeret servereside.
Håber der er nogen der har et svar på hvad, der går galt, og hvad jeg skal gøre.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Jeg vil lige nævne at jeg bare helt enkelt har taget xml filen og omdøbt med asp som extension, så er jeg gået ind og response.write xml delen ud istedet.
nøøh.. du skal også gøre siden opmærksom på at den skal opføre sig som en XML side :)
Synes godt om
Slettet bruger
15. april 2003 - 17:41#3
Du kan ikke hente en ASP side med Server.MapPath() - den omsætter stien til en lokal sti med drevbogstav, f.eks.: "E:\web\people.asp" - prøv at åbne en ASP side sådan, og su vil opdage hvad det betyder, når WebServeren ikke preprocesserer ASP koden...
Du skal loade filen vha. HTTP - istedet for XMLDOM objektet skal du bruge ServerXMLHTTP...
/CS
Synes godt om
Slettet bruger
15. april 2003 - 17:44#4
Et hurtigt eksempel (tyvstjålet fra noget der hedder "Internet"):
<%@ Language="VBScript" %> <% Dim objSvrHTTP Dim PostData
Det er jo heller ikke det jeg mener, din knallert... :) Selvfølgelig skal man bruge en webserver.. men det er ikke nødvendigt at bruge diverse komponenter hvis XML-filen ligger på samme server som den bliver kaldt fra (test/noget.xml)
Ja, min fil ligger på samme server faktisk sammen med xsl filen. Fik jeg et svar jeg kunne bruge. ---> getalife kan jeg ikke bruge min eksisterende kode, med et par fix fakserier????
Synes godt om
Slettet bruger
15. april 2003 - 23:28#10
Hehe - hvad ved du om min knallert? :-)
Vi snakker forbi hinanden - du referer til en XML fil på samme server - jeg (og Mr. "decrypto") refererer til en ASP fil (der genererer XML) på samme server - det får du bare ikke til at spille uden komponent...
greystate.. hvis man i asp'en skriver at det skal opfattes som en XML (kan ikke lige huske hvad det er.. contentype måske?) Jeg må indrømme at jeg er i tvivl om jeg selv (da jeg gjorde det for et par år siden) includede en fil eller oprettede "XMLen" som en variabel på samme side.
Nå men... decrypto.. du kan som et lille check, udskrive din xml med følgende: Response.Write(xml.xml) Den har reddet mig mange gang hvor jeg ikke vidste om der kom noget xml output ;)
getalife a en smule ret med Response.ContentType = "text/xml", men den har bare ikke virket. Jeg prøver lige at response.write xml'en. Det er sjovt for hvis jeg kalder min xml.asp side, så viser browseren helt rigtigt et xml dokument, men når jeg prøver at transformere den serverside, så sker der nada.
dEcRyPt0
Synes godt om
Slettet bruger
16. april 2003 - 10:48#13
... fordi XML parseren loader vha. Server.MapPath(), som "bare" åbner dokumentet (ala Notepad) og derfor får et XML dokument der indholder tags som "<% Response.Write(blablabla) %>", hvilket ikke er XML.
Igen: Hvis din XML bliver genereret vha. ASP, skal siden loades vha. HTTP.
----> greystate...jeg er begyndt at forstå dit forslag. Vil det sige hvis jeg sidder på en anden server og kalder denne xml.asp på en tredje server, så kan jeg vha. HTTP loade filen og transformere den på min egen server sådan som jeg vil have den???? Evt. omdanne den til SQL som så kan opdatere min database med transformering af xml.asp som ligger på en server langt væk fra mig.
Set objXML = Server.CreateObject("MSXML2.DOMDocument.4.0") Set objXSL = Server.CreateObject("MSXML2.DOMDocument.4.0")
objSvrHTTP.send
'load med ServerXMLHTTP ... objXML.load(objSvrHTTP.responseXML) objXSL.load(Server.MapPath(xhtml.xsl)) ----------------------------------- Kode ---------------------------------- Hvad bruger jeg: PostData til? objSvrHTTP.send til?
Og jeg får denne fejl.
Microsoft VBScript runtime error '800a01a8' Object required: 'xhtml' /FA00EPP/xml/people.asp, line 33
hvor 'data_udtraek.asp' jo er mit xml dokument. Mens denne kode står i people.asp siden.
Det begyndt at blive lidt langhåret.
Så skriver lige hvilke filer jeg med at gøre: 1. data_udtraek.asp //Indeholder xml koden, bare udskrevet vha. vbscript 2. xhtml.xsl //Style sheet filen der skulle transformere indholdet af data_udtraek til noget html kode. 3. people.asp //Er den side brugeren skal kalde og hvori jeg gerne vil have at transformationen af data_udtraekket 'trigges'.
Håber det giver et lidt klarer billede af mit lille xml/xslt serverside eksperiment.
dEcRyPtO
Synes godt om
Slettet bruger
16. april 2003 - 15:58#21
1. PostData smider du bare væk. (Som sagt var det cut'n'paste :-) ) 2. objSvrHTTP.send henter XML filen vha. HTTP - (ja, det er "data_udtraek.asp" du skal bruge.) 3. Fejlen i linje 33: Du skal lige have et par pingelinger rundt om filnavnet - "xhtml.xsl" :-)
Ok, men med pingelingerne sat på så får jeg ingen fejl men bare en blank side nu.
Synes godt om
Slettet bruger
16. april 2003 - 16:08#23
Kanon - så virker det! :-)
Nu kan det jo så være at dit XSLT stylesheet ikke fanger de rigtige elementer osv. - prøv at smide en <p>Det virker!</p> ind i stylesheet'ets rod-template - f.eks.:
<xsl:template match="/"> <p>Det virker!</p> <p>Der er <xsl:value-of select="count(*)" /> elementer i XML filen</p> </xsl:template>
Jamen xsl virker, for når jeg transformerede clientside, så gjorde den det rigtigt, nu har jeg slet ikke pillet ved xsl filen. Jeg prøver lige alligevel dit forslag.
Jeg fik løst problemet selv efter lidt læsning her og der.
Men tak for hjælpen anyway.
Synes godt om
Ny brugerNybegynder
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.