I am trying to use VBScript to do an XSLT transform on an XML object.
The XSL file I’m translating includes the <xsl:import href="script.xsl"/> directive. If I use the absolute URL (http://localhost/mysite/script.xsl), it imports the style sheet fine; however, if I use the relative path (script.xsl) it reports “resource not found.” I need to be able to port this amongst a set of machines, so I need to be able to use the relative URI. Any suggestions?
Notes:
- VBScript file is at
http://localhost/myscript.asp - first XSL file is at
http://localhost/mysite/styles.xsl - second XSL file is at
http://localhost/mysite/script.xsl - using the relative path
mysite/script.xslalso does not work
Addendum:
Thanks, everyone, for your answers. The more I dig into the code that is doing this, the stranger it is. myscript.asp is a rather unusual compilation of code. What happens is styles.xsl is included in the HTML output of myscript.asp as an XML chunk (<xml src=...>) and then that chunk is loaded as a stylesheet, using VBScript, on the client side. This stylesheet is then used to transform an XML chunk that is retrieved via XMLHTTP. So the problem is the context of styles.xsl is the HTML on the client side and has no relation to where script.xsl is.
First Attempt:
I tried including script.xsl as another xml chunk and changing the import statement in every way I could imagine but without success.
Final solution:
Since the absolute url for includeing script.xsl worked from the beginning, my final solution was to convert style.xsl to style.asp with the correct doctype. In this file I was then able to retrieve the server name, protocol and path and echo them into the right place in the import statement using asp. Then, when this file got included in mysscript.asp, it had the correct absolute url for the server. This is a bit of a hack but the only way I found to solve this rather convoluted situation.