Заставить xslt document () загружать внешний документ по HTTP, а не напрямую из файловой системы. - PullRequest
0 голосов
/ 19 ноября 2009

В моем приложении ASP.NET я загружаю файл XML в XSLT с помощью метода document() следующим образом:

<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 для относительного пути?

1 Ответ

0 голосов
/ 20 ноября 2009

Вместо загрузки XML с помощью метода document () в XSLT используйте XmlArgumentsList, чтобы заполнить <xsl:param> 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...