1

Empty.xslt ファイルにこの xslt スタイルシートがあります。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:nrki="http://www.essox.cz/xslt/nrki" xmlns:date="http://www.essox.cz/xslt/date" version="1.0" exclude-result-prefixes="msxsl" extension-element-prefixes="nrki date"> <xsl:import href="C:\Users\pparik.ESSOX\Desktop\Xslt\General.xslt" /> <xsl:import href="C:\Users\pparik.ESSOX\Desktop\Xslt\Nrki\General.xslt" /> <xsl:output method="text" indent="yes" /> <xsl:template match="@* | node()"> <xsl:if test="nrki:IsInLastDays('15042011', 6)"> je </xsl:if> </xsl:template> </xsl:stylesheet>

メニュー項目 (Visual Studio で) XML / Show XSLT Output を選択すると、正しい結果が得られます。しかし、コード (XslCompiledTransform) を使用して同じことをしようとすると、コンパイル エラー例外が発生します。

string output = string.Empty;
XslCompiledTransform transform = new XslCompiledTransform(true);
XsltSettings sett = new XsltSettings(true, true);
transform.Load(new XmlTextReader(@"C:\Users\pparik.ESSOX\Documents\Essox\Zdrojové kódy\SES\Visual studio\SesSolution\TestXslt\Xslt sablony\Empty.xslt"), sett, null);
StringWriter sr = new StringWriter();
transform.Transform(this.EvaluationInput.CreateNavigator(), null, sr);
output = sr.ToString();

理由はありますか?どうもありがとう、ペトル

4

1 に答える 1

1

XmlResolver渡す引数のコメントを参照してくださいnull

これが null の場合、外部リソースは解決されません。

まだ外部リソースですC:\Users\pparik.ESSOX\Desktop\Xslt\General.xslt new XmlUrlResolver()の代わりに a を渡してみてくださいnull

また、使用して負荷を過度に複雑にしていますXmlTextReader-これは簡単です:

transform.Load(path, sett, new XmlUrlResolver());

情報については、必要に応じて独自のカスタム リゾルバーを提供できます。たとえば、相対パスを resx のコンテンツに再マップするものを作成したため、ファイルは IDE で通常どおり編集できますが、埋め込みリソースとして含めることができます (ただし、兄弟を正しく解決します)。

于 2011-04-21T15:04:03.677 に答える