2

私はInputParamをXSLTCompiledTransformationクラスに渡すことに慣れているので、パーサーはXSLファイルで提供される処理命令でParamを使用してXSLファイルを処理します。

XSLTからC#のようなホスト言語に(たとえばノードの値など)できる方法はありget output paramますか?

XslCompiledTransform xslTransform = new XslCompiledTransform();

string strXmlOutput = string.Empty;
StringWriter swXmlOutput = null;
MemoryStream objMemoryStream = null;
XPathDocument xpathXmlOrig = new XPathDocument(string_xmlInput);
swXmlOutput = new StringWriter();
objMemoryStream = new MemoryStream();

xslArg.AddParam("TESTING", "", SomeVar);
XsltSettings xslsettings = new XsltSettings(false, true);

xslTransform.Load(string_xslInput, xslsettings, new XmlUrlResolver());
xslTransform.Transform(xpathXmlOrig, xslArg, objMemoryStream);

このコードは確かに変換されたXMLを出力しますが、私の質問は、XSL変換(XSLTファイル)からの出力パラメーターとして1つの値だけを取ることができるかということです。

このようなもの:

xslArg.OutputParam("testing"); //Something like this?
........
........
xslTransform.Transform(xpathXmlOrig, xslArg, objMemoryStream);
string outputparam = xslArg.GetParam("testing"); //ideal way of getting param after traformation!

XSLTはこのようなもののスコープを提供しますか?

4

1 に答える 1

0

C# では、<xsl:message>XSLT コードに命令を記述し、 XsltArgumentListクラスのXsltMessageEncounteredイベントにフックするのが最善の策です。

アプリの出力を監視することで、イベントをフックせずに正しい出力が得られることをテストできます。イベント ハンドラーがない場合、メッセージは標準出力にパイプされます。

于 2013-01-04T16:08:56.373 に答える