Avatar billede mik789 Nybegynder
11. april 2004 - 18:29 Der er 9 kommentarer og
1 løsning

serverside transformation

Jeg er nu klar til at transformere min første xml fil. Jeg vil helst kunne gøre det på serveren med en php-fil. Jeg har:

MA_bib.xml
MA_bib.xsd
MA_bib.xsl

Og så har jeg MA_bib.php der ser sådan ud:

<?php
$xh = xslt_create();
xslt_process($xh, 'MA_bib.xml', 'MA_bib.xsl');
xslt_free($xh);
?>

Disse funktioner er del af php's xml ekstension. xslt_create() laver en xslt processor; xslt_process() tranformerer xml-filen ved hjælp af xsl filen og outputter resultatet direkte i browseren; og xslt_free() afslutter processen.

Problemet er at serveren ikke vil kendes ved disse funktioner, da ekstensionen åbenbart ikke er installeret på denne server.

Måske det vil gå nemmere med asp. Hvad ville være den tilsvarende kode i asp?

//mik
Avatar billede nute Nybegynder
13. april 2004 - 10:22 #1
samme kode i ASP:

Dim objXMLDoc             : Set objXMLDoc = Server.CreateObject( "MSXML2.DOMDocument" )
Dim objXMLFreeThread     : Set objXMLFreeThread = Server.CreateObject( "MSXML2.FreeThreadedDOMDocument" )
Dim objXSLDoc             : Set objXSLDoc = Server.CreateObject( "MSXML2.XSLTemplate")
' Loading XML
objXMLDoc.async = false
objXMLDoc.load( Server.MapPath( "fil.xml" ) )
' Loading XSL
objXMLFreeThread.async = false
objXMLFreeThread.load( Server.MapPath( "fil.xsl" ) )

' Setting stylesheet
objXSLDoc.stylesheet = objXMLFreeThread
' Creating processor
Dim objProcessor : Set objProcessor = objXSLDoc.createProcessor()
' Setting parameter
Call objProcessor.addParameter( "param", "value" )
' Setting xml to transform
objProcessor.input = objXMLDoc

' Transforming
objProcessor.transform()

' output
Dim strOutput : strOutput = objProcessor.output

/nute
Avatar billede mik789 Nybegynder
13. april 2004 - 11:17 #2
nute> det er sikkert helt elementært... og jeg har ikke før arbejdet med asp,
men jeg går ud fra at jeg bare skal erstatte "fil.xml" og "fil.xsl" med de relevante filnavne og så bare lægge hele din kode ind i en asp- tag, dvs.:

<%
Dim objXMLDoc            : Set objXMLDoc = Server.CreateObject( "MSXML2.DOMDocument" )
Dim objXMLFreeThread    : Set objXMLFreeThread = Server.CreateObject( "MSXML2.FreeThreadedDOMDocument" )
Dim objXSLDoc            : Set objXSLDoc = Server.CreateObject( "MSXML2.XSLTemplate")
' Loading XML
[...]
%>

og så bare kalde dokumentet noget med .asp og lægge det på serveren. Men når jeg så åbner det får jeg bare en side med denne asp-kode skrevet ud i stedet for mit transformerede xml-dokument. Why?
Avatar billede nute Nybegynder
13. april 2004 - 11:22 #3
yup ... du erstatter bare fil.xml/fil.xsl med henholdsvis din xml og din xsl fil. du behøver hellere ikke dennne linie:

Call objProcessor.addParameter( "param", "value" )

den postet jeg bare som et eksempel hvis du ville sende parametre til din xsl.

Hvis du vil have skrevet ud dit transformerede xml-dok, så skal du lave en response write helt til sidst:

Response.Write( strOutput )

hmm ... du er sikker på at der er asp tilgængelig på din server ?
Avatar billede mik789 Nybegynder
13. april 2004 - 11:39 #4
Ja, jeg har tjekket at der er asp på serveren. Nu svarer den:

Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed

[dvs. den første Server.CreateObject]
/xml/MA_bib.asp, line 3

System message, messageid = 0x800401f3
Avatar billede nute Nybegynder
13. april 2004 - 11:41 #5
så er det nok fordi msxml ikke er installeret på serveren ...
Avatar billede mik789 Nybegynder
13. april 2004 - 11:47 #6
yeps - ligesom den der xml extesnion til php heller ikke er det - øv - skodservere (web10 og b-one)!
Avatar billede nute Nybegynder
13. april 2004 - 12:32 #7
du kan prøve dette:

Dim xml : Set xml = Server.CreateObject("Microsoft.XMLDOM")
Dim xsl : set xsl = Server.CreateObject("Microsoft.XMLDOM")

xml.load( "fil.xml" )
xsl.load( "fil.xsl" )
Response.write xml.transformNode(xsl)
Avatar billede mik789 Nybegynder
28. juli 2004 - 23:13 #8
nute, det er længe siden, men kan du ikke lægge et svar
Avatar billede nute Nybegynder
29. juli 2004 - 09:32 #9
- svar -

:-)
Avatar billede mik789 Nybegynder
20. august 2004 - 11:57 #10
ups, det er endnu engang længe siden
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
Kurser inden for grundlæggende programmering

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