Nogen vil måske kalde mig en idiot nu, men jeg har lige brug for at juble
lidt
Jeg har de sidste par timer siddet og undret mig over at jeg ikke kunne få
følgende kode til at virke:
strXML = "Noget xml"
Dim objXML
set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = false
objXML.loadXML( "<?xml version=""1.0"" encoding=""iso-8859-1""?>" & strXML )
Dim objXSL
Set objXSL = Server.CreateObject("Microsoft.XMLDOM")
objXSL.async = false
objXSL.load(Server.MapPath("/xsl/fil.xsl"))
objXML.transformNodeToObject objXSL, Response
Og efter lang tids søgen fandt jeg ud af at fejlen opstod i at jeg i mit XSL
dokument gør brug af xsl:import elementet, og MSXML kan åbenbart ikke finde
ud af at dette er en relativ stiangivelse som dette:
<xsl:import href="/xsl/templates/template.xsl" />
derfor kan den ikke gennemføre transformeringen. Og så var det jeg lige sad
og opfandte dette fix som jeg lige ville dele med jer andre:
Dim import
For Each import in objXSL.getElementsByTagName("xsl:import")
import.setAttribute "href", Server.MapPath(import.getAttribute("href"))
Next
som skifter alle de relative stier i import elementerne ud med de absolute
stier "on-the-fly" så slipper man for at skrive:
<xsl:import href="c:\filer\xsl\templates\template.xsl" />
i alle sine XSL filer, hvilket ikke ville være særlig smart hvis de skulle
flyttes lidt rundt på et tidspunkt.
--
Jakob Andersen
Som har lidt svært ved at få armene ned efter løsningen på et par timers
hovedbrud