Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将嵌入式XSLT包含到另一个嵌入式XSLT中_C#_Xslt - Fatal编程技术网

C# 将嵌入式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

我正在创建一个应用程序,它使用XSLT转换传入的XML消息。我有多个XSLT,其中一些包括其他XSLT

e、 XSLT包括一个包含一些常用函数的.XSLT

我已经将所有XSLT标记为嵌入式资源,因此它将嵌入到可执行文件中。现在,当我使用以下代码加载XSLT时

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);