【问题标题】:Force xslt document() to load an external document over HTTP rather than directly from the file system强制 xslt document() 通过 HTTP 而不是直接从文件系统加载外部文档
【发布时间】:2009-11-19 02:35:19
【问题描述】:

在我的 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 作为相对路径?

【问题讨论】:

    标签: .net asp.net xml xslt


    【解决方案1】:

    不要使用 XSLT 中的 document() 方法加载 XML,而是使用 XmlArgumentsList 来使用 XML 填充 &lt;xsl:param&gt;。

    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>
    

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2016-12-03
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多