XmlResolverクラスに問題があります。 MS SQLデータベースにxmlデータ型の列で保存されたいくつかのXSLTファイルがあります。私はファイルからではなく、データベースからテキストをロードする、XmlResolverクラスの実装を記述しようとしています。しかし、私はXSLTコンパイラのエラーを取得しています。 (XSLTXmlResolver:XSLTコンパイラエラー
class myResolv : XmlResolver
{
public override Uri ResolveUri(Uri baseUri, string relativeUri)
{
return base.ResolveUri(baseUri, relativeUri);
}
public override System.Net.ICredentials Credentials
{
set { throw new NotImplementedException(); }
}
public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
{
string fileName = System.IO.Path.GetFileName(absoluteUri.ToString());
if (fileName == "test.xslt")
{
string newXslt = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:msxsl=""urn:schemas-microsoft-com:xslt"" exclude-result-prefixes=""msxsl"" >
<xsl:variable name=""MyVariable"" select=""1"" />
</xsl:stylesheet>";
StringReader read = new StringReader(newXslt);
XmlReader xmlread = XmlReader.Create(read);
return xmlread;
}
else
throw new NotImplementedException();
}
}
実行がTransform.Load行に失敗します。ここで は非常に簡単な例(両方の入力のテキストとXSLTここではハードコードされた)である。
static void Main(string[] args)
{
string xslt = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:msxsl=""urn:schemas-microsoft-com:xslt"" exclude-result-prefixes=""msxsl"" >
<xsl:import href=""test.xslt"" />
<xsl:output method=""xml"" indent=""yes""/>
<xsl:template match=""*"">
<xsl:value-of select=""$MyVariable""/>
</xsl:template>
</xsl:stylesheet>";
XDocument transformationInput = XDocument.Parse("<test />");
myResolv res = new myResolv();
XslCompiledTransform transform = new XslCompiledTransform(true);
XsltSettings sett = new XsltSettings(true, true);
StringReader transr = new StringReader(xslt);
XmlReader tranReader = XmlReader.Create(transr);
transform.Load(tranReader, sett, res);
}
}
そして、ここでは非常に単純なXmlResolverのクラスですコンパイラエラー)。ファイルから変換を読むとき、リゾルバは正常に動作します。しかし、私はファイルからそれを読んではいけません。 ありがとう、 Petr
素晴らしい!それは完璧に動作します:-)多くのありがとう – Petr