C# 将嵌入式XSLT包含到另一个嵌入式XSLT中
我正在创建一个应用程序,它使用XSLT转换传入的XML消息。我有多个XSLT,其中一些包括其他XSLT e、 XSLT包括一个包含一些常用函数的.XSLT 我已经将所有XSLT标记为嵌入式资源,因此它将嵌入到可执行文件中。现在,当我使用以下代码加载XSLT时C# 将嵌入式XSLT包含到另一个嵌入式XSLT中,c#,xslt,C#,Xslt,我正在创建一个应用程序,它使用XSLT转换传入的XML消息。我有多个XSLT,其中一些包括其他XSLT e、 XSLT包括一个包含一些常用函数的.XSLT 我已经将所有XSLT标记为嵌入式资源,因此它将嵌入到可执行文件中。现在,当我使用以下代码加载XSLT时 using (Stream objXSLTStream = Assembly.GetAssembly(this.GetType()).GetManifestResourceStream("MyNamespace.XSLContainer.T
using (Stream objXSLTStream = Assembly.GetAssembly(this.GetType()).GetManifestResourceStream("MyNamespace.XSLContainer.Transaction.B.xslt"))
{
using (XmlReader objXSLTReader = XmlReader.Create(objXSLTStream))
{
XslCompiledTransform objXSL = new XslCompiledTransform(true);
objXSL.Load(objXSLTReader);
XmlReader objXMLReader = XmlReader.Create(new StringReader(InputXML));
StringBuilder sbOutputXML = new StringBuilder();
XmlDocument docOutputXML = new XmlDocument();
XmlWriter objXMLWriter = XmlWriter.Create(new StringWriter(sbOutputXML));
objXSL.Transform(objXMLReader, ArgsList, objXMLWriter);
docOutputXML.LoadXml(sbOutputXML.ToString());
return docOutputXML;
}
}
这给了我错误
找不到路径“..\Bin\u Folder\u Location\General\a.xslt”的一部分
在XSLT B中,我使用以下语句包括A.XSLT
<xsl:include href ="../General/A.xslt"/>
是否有人可以建议我如何在C#中将嵌入的xslt包含到另一个xslt中?您需要在xsl:include中使用绝对路径,或者使用自定义XmlUrlResolver,如下所示:
class MyXmlUrlResolver : XmlUrlResolver
{
public override Uri ResolveUri(Uri baseUri, string relativeUri)
{
if (baseUri != null)
return base.ResolveUri(baseUri, relativeUri);
else
return base.ResolveUri(new Uri("http://mypath/"), relativeUri);
}
}
并在XslCompiledTransform的加载函数中使用
resolver=new MyXmlUrlResolver();
xslt.Load(xR,null,resolver);