1

次のコードスニペットがあります

this.xslCompiledTransform = new XslCompiledTransform();

// initialize xsl transform
using (Stream xsltStream = currentAssembly.GetManifestResourceStream(this.TransformationFile))
using (XmlReader schemaReader = XmlReader.Create(xsltStream))
{
    XsltSettings settings = new XsltSettings() { EnableScript = true };
    this.xslCompiledTransform.Load(schemaReader, settings, null);
}

NullReferenceExcecption をスローすることもあれば、同じ xslt ファイルで動作することもあります。

上記のコードの何が問題なのか教えてください。どんな助けでも大歓迎です。

以下はスタックトレースです

    Object reference not set to an instance of an object.

Stack Trace:
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitFor(QilIterator ndFor)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisitEnsureStack(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitXPathNodeValue(QilUnary ndVal)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisitEnsureStack(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitXsltInvokeEarlyBound(QilInvokeEarlyBound ndInvoke)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitTextCtor(QilUnary ndText, Boolean disableOutputEscaping)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitLoop(QilLoop ndLoop)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitElementCtor(QilBinary ndElem)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitElementCtor(QilBinary ndElem)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitSequence(QilList ndSeq)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitElementCtor(QilBinary ndElem)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.VisitConditional(QilTernary ndCond)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd, Type itemStorageType, Boolean isCached)
   at System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisit(QilNode nd)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Function(QilFunction ndFunc)
   at System.Xml.Xsl.IlGen.XmlILVisitor.Visit(QilExpression qil, GenerateHelper helper, MethodInfo methRoot)
   at System.Xml.Xsl.XmlILGenerator.Generate(QilExpression query, TypeBuilder typeBldr)
   at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
4

1 に答える 1

1

XslCompiledTransform.Load メソッドの注記セクションから直接コピー:

デバッグ モードでコンパイルされた XSLT とリリース モードでコンパイルされた XSLT には違いがあります。状況によっては、デバッグ モードでコンパイルされたスタイル シートは、読み込み中にエラーをスローしませんが、後で変換中に失敗します。リリース モードでコンパイルされた同じスタイル シートは、ロード中に失敗します。このような動作の例としては、ノード セット タイプではない変数が、ノード セットが必要な式に割り当てられている場合があります。

于 2012-05-29T05:57:09.800 に答える