2009-11-19 46 views
0

在我的ASP.NET應用程序,我加載一個XML文件與document()方法的XSLT加載外部文件,內容如下:力XSLT文檔()通過HTTP而不是直接從文件系統

<xsl:variable name="more-xml" select="document('generateXml.ashx')" /> 

當我在本地運行它時正常工作,但由於服務器通過文件系統找到generateXml.ashx,因此它不會被IIS處理,因此在將它部署到服務器時失敗。

如果我硬編碼的網址是這樣的:

<xsl:variable name="more-xml" select="document('http://server/app/generateXml.ashx')" /> 

然後將文檔地址總是解決通過HTTP,所以它的工作原理一致 - 但我不想硬編碼的網址進入XSLT。有沒有辦法強制document()使用HTTP而不是FILE作爲相對路徑?

回答

0

使用XmlArgumentsList用XML填充<xsl:param>,而不是使用XSLT中的document()方法加載XML。

XsltArgumentList args = new XsltArgumentList(); 
args.AddParam("more-xml", string.Empty, myXmlDocument.CreateNavigator().SelectChildren(XPathNodeType.All)); 

// pass the argument list to the transform 
myXslCompiledTransform.Transform(sourceXml, args, myXmlWriter); 

然後在XSLT:

<xsl:param name="more-xml"></xsl:param> 
相關問題