2012-08-29 29 views
0

这里是非常基本的开发人员。我目前使用mappath在服务器端转换我的XSL和XML。这个着名的作品,但只使用这个BC这是在W3C学校网站上使用的例子。我试图通过通过URL字符串传递参数来扩展我的页面的一些功能。正如您可能已经知道的,我无法通过mappath方法传递URL参数。我不能为我的生活找出如何以任何其他方式做到这一点。谷歌没有提供和清晰的例子,也没有我的wrox书。我的服务器端转换不会将参数传递给XSL

有人请赐教我如何完成传递参数到XSLT?

我想我需要使用一种新的方法进行服务器转换,或者我需要了解一种传递参数的新方法。

感谢您在过去的所有帮助,使我的项目发生了巨大的变化!

KG

我当前的代码

<html><title>Report</title> 
<head> 
</head> 
<% 
'Load XML 
set xml = Server.CreateObject("Microsoft.XMLDOM") 
xml.async = false 
xml.load(Server.MapPath("/XML/XMLData/View.xml")) 

'Load XSL 
set xsl = Server.CreateObject("Microsoft.XMLDOM") 
xsl.async = false 
xsl.load(Server.MapPath("Data.xsl")) 
'Transform file 
Response.Write(xml.transformNode(xsl)) 
%> 
</html> 

回答

0

只要是迂腐了一下,它不是地图是在这里做转换路径。所有Server.MapPath都会将相对路径或虚拟路径(在您的情况下为“/XML/XMLData/View.xml”)转换为服务器上的物理目录,然后由XML处理器加载。在你的情况下,你使用ASP,所以处理器是MSXML。

幸运的是,您确实支持传递参数,但您必须做一些额外的工作。尝试使用此代码示例

<html><title>Report</title> 
<head> 
</head> 
<% 
' Load XML 
set xmldoc = Server.CreateObject("Msxml2.DOMDocument") 
xmldoc.async = false 
xmldoc.load(Server.MapPath("/XML/XMLData/View.xml")) 

' Load XSLT (as XML) 
Set xsldoc = Server.CreateObject("Msxml2.FreeThreadedDOMDocument") 
xsldoc.async = false 
xsldoc.load(Server.MapPath("Data.xslt")) 

' Set up stylesheet 
set xslt = Server.CreateObject("Msxml2.XSLTemplate") 
xslt.stylesheet = xsldoc 

' Create a processor to do the transform 
Set xslproc = xslt.createProcessor() 
xslproc.input = xmldoc 
xslproc.addParameter "myParam", "Hello World" 
xslproc.transform() 

Response.Write xslproc.output 
%> 
</html> 

在XSLT本身中,您显然需要指定参数。这是通过使用xsl:参数元素完成的。这需要在XSL中去:样式元,接近顶部,任何XSL之外:模板元素,你有

<xsl:param name="myParam" select="'Good Morning'" /> 

注意,选择在这种情况下属性指定一个默认值如果参数不能被调用代码设置。

我注意到你已经标记了问题asp.net,在这种情况下,你可能想要了解XSLTCompliled转换,这是你在.Net中进行XSLT转换时使用的类。

相关问题