/ / Force xslt document () à charger un document externe sur HTTP plutôt que directement à partir du système de fichiers - .net, asp.net, xml, xslt

Forcer xslt document () à charger un document externe sur HTTP plutôt que directement à partir du système de fichiers - .net, asp.net, xml, xslt

Dans mon application ASP.NET, je charge un fichier XML dans un XSLT avec le document() méthode, comme suit:

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

Cela fonctionne bien lorsque je l'exécute localement, mais échoue lorsque je le déploie sur le serveur car le serveur détecte generateXml.ashx via le système de fichiers, il n’est donc pas traité par IIS.

Si je code l'URL de cette manière:

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

Ensuite, l'adresse du document est toujours résolue surHTTP, donc cela fonctionne de manière cohérente - mais je ne souhaite pas coder l’URL dans le XSLT. Existe-t-il un moyen de forcer document () à utiliser HTTP au lieu de FILE pour un chemin relatif?

Réponses:

0 pour la réponse № 1

Au lieu de charger le XML avec la méthode document () dans le XSLT, utilisez un XmlArgumentsList peupler un <xsl:param> avec le 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);

Puis dans le XSLT:

<xsl:param name="more-xml"></xsl:param>