Avatar billede getalife Nybegynder
28. februar 2001 - 00:28 Der er 6 kommentarer og
2 løsninger

Importere variabler?

Hvordan kan jeg importere variabler fra en URL til min XSL?
Feks:
http://www.eksperten.dk/opretspm.phtml?id=100

Her vil jeg gerne have værdien af id.
Avatar billede gandalfthewhite Nybegynder
28. februar 2001 - 12:26 #1
Det kan ikke umiddelbart lade sig gøre. Så skal du lave xsl i php koden og \"generere\" en xsl fil/streng som du så kan bruge op mod dim xml parser.

Hvis du bruger msxml kan en fil loades med .load og en streng (genereret i kode) med .loadxml.
Avatar billede getalife Nybegynder
28. februar 2001 - 13:57 #2
Hmm.. det havde jeg også overvejet, men ville helst holde mig til ren xsl. Men jeg må åbenbart overgive mig :o(
Nu benytter jeg mig af ASP.. skal min contenttype være:  Response.ContentType = \"text/xsl\"

Og hvad gør jeg med min parser? Den er lavet i VB script.. skal filnavn.xsl bare ændres til filnavn.asp?
Avatar billede getalife Nybegynder
28. februar 2001 - 13:59 #3
method = filnavn.xsl
\' Responde to request
  \'Load the XML
  set xml = Server.CreateObject(\"Microsoft.XMLDOM\")
  xml.async = false
  xml.load(Server.MapPath(sti & liste & \".xml\"))

  \'Load the XSL
  set xsl = Server.CreateObject(\"Microsoft.XMLDOM\")
  xsl.validateOnParse = false
  xsl.async = false
  xsl.load(Server.MapPath(method))

  \'Transform the file
  Response.Write(xml.transformNode(xsl))
Avatar billede gandalfthewhite Nybegynder
28. februar 2001 - 14:36 #4
Jeg har haft samme problem, og det gør kodningen noget mere omstændig. Jeg savner samme \"feature\".
Dit output vil være html, da transformeringen fra xml til html foregår på serveren. Det er altså html der \"kommer ud\" af asp siden hvor du fletter xml og xsl.

Din filnavn.xsl skal så være xslfil.asp og den skal have Response.ContentType = \"text/xsl\".

Jeg er ikke helt sikker på hvad du mener med parser. Parseren du bruger er XMLDOM og den er skrevet i C++. Xsl filen er en transformationsfil, ikke en parser, hvis det var den du tænkte på.
Avatar billede getalife Nybegynder
28. februar 2001 - 15:37 #5
Hmm.. jeg tror jeg går den anden vej og laver min XML vha ASP.
Det vil også gøre det noget nemmere for mig på et senere tidspunkt med henblik på designændringer.

Det jeg mente med \"parser\" var om jeg så bare kunne ændre min method variabel til filnavn.asp i scriptet ovenover :o)
Avatar billede gandalfthewhite Nybegynder
28. februar 2001 - 16:06 #6
Ja, det er nok at ændre navnet til filnavn.asp i metoden ovenfor.

I filnavn.asp skal du så sætte response.contenttype = \"text/xsl\".

PROBLEM:
Jeg har prøvede på et tidspunkt at klistre mine parametre på filnavn.asp?id=34

Når du giver det sti-navn til xml.load så får man en fejl! (stien indeholdte ulovlige karaktere. Jeg kan ikke huske om jeg også brugte & til flere parametre).

Løsningen er at i filnavn.asp (som indeholder xsl)
genereres xsl som en text-streng.

I en include fil har du din parser-funktion f.eks.
mergeXML(xmlfilsti, xslstring). xsl filen skal så loades med følgende:

xsl.loadXML(xslstring)
Avatar billede getalife Nybegynder
03. marts 2001 - 15:07 #7
Jeg er totalt lost.. :o(

For at holde det helt nede ved jorden..
Hvordan tilføjer jeg en linie til min XML inden den bliver parset?
Avatar billede js26 Nybegynder
03. marts 2001 - 22:20 #8
Jeg har fundet svaret på Microsoft
http://msdn.microsoft.com/library/psdk/xmlsdk/xmld5pgy.htm
Min ASP kode ser lidt forkortet sådan ud og den virker:

<object id=xmldoc progid=Microsoft.XMLDOM runat=Server></object>
<object id=xslt progid=Msxml2.XSLTemplate runat=Server></object>
<object id=xsldoc progid=Msxml2.FreeThreadedDOMDocument runat=Server></object>
xmldoc.async=false;
xmldoc.load(Server.MapPath(\"MyLink.xml\"));     
var xslProc;
xsldoc.async = false;
xsldoc.load(Server.MapPath(\"Mylink.xslt\"));

I XSLT importerer ved at skrive
<xsl:param name=\"status\"/>
<xsl:value-of select=\"$status\"/></p>

Håber du kan bruge det!!
xslt.stylesheet = xsldoc;
xslProc = xslt.createProcessor();
xslProc.input = xmldoc;
xslProc.addParameter(\"status\", Session(\"status\")); 
xslProc.transform();
result = xslProc.output;
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