在我的ASP.NET应用程序中,我使用document()
方法将XML文件加载到XSLT中,如下所示:
<xsl:variable name="more-xml" select="document('generateXml.ashx')" />
当我在本地运行它时工作正常,但是当我将它部署到服务器时失败,因为服务器通过文件系统找到generateXml.ashx
,因此IIS不处理它。
如果我像这样对URL进行硬编码:
<xsl:variable name="more-xml" select="document('http://server/app/generateXml.ashx')" />
然后文档地址始终通过HTTP解析,因此它可以一致地工作 - 但我不想将URL硬编码到XSLT中。有没有办法强制document()使用HTTP代替FILE作为相对路径?
答案 0 :(得分:0)
不使用XSLT中的document()方法加载XML,而是使用XmlArgumentsList
使用XML填充<xsl:param>
。
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>