Saxon 9.3でパラメータを設定する際に問題があります。私は、文字列[]名、および文字列[] valがパラメータ名と対応する値と等しい長さのアレイであるSaxon XSLT passingパラメータ
private void runXSLT(String inFile, String xslt, String outFile, String[] name, String[] val)
{
Processor proc = new Processor();
XdmNode input = proc.NewDocumentBuilder().Build(new Uri(inFile));
XsltTransformer transformer = proc.NewXsltCompiler().Compile(new Uri(xslt)).Load();
transformer.InitialContextNode = input;
if (name != null)
for (int i = 0; i < name.Length; i++)
transformer.SetParameter(new QName("", "", name[i]), new XdmAtomicValue(val[i]));
Serializer serializer = new Serializer();
FileStream outStream = new FileStream(outFile, FileMode.Create, FileAccess.Write);
serializer.SetOutputStream(outStream);
transformer.Run(serializer);
outStream.Close();
}
私の基本的な変換機能を有しています。例:name [0]は "version"、val [0]は "1.0"、name [1]は "filename"、val [1]は "test.xml"
この関数はサンプルに基づいています私は、xsltに渡すパラメータがある場合を除いて、私の様々なxslt変換のために正しく機能します。パラメータが設定されていないかのように変換が行われます。
デバッグから、私の名前配列の各値に対してプログラムがSetParameterを実行することがわかりました。 xsl:paramがxsltの各ドキュメントで定義されています。コマンドラインツールTransform.exeを使用すると、パラメータが入力され、正しい変換が得られます。
パラメータを渡す方法に問題がありますか?
応答をお寄せいただきありがとうございました。私の機能をテストするのに役立ちました。私はこの機能を実行するために特別なプログラムを作成し、それが機能していることを理解しました。つまり、関数にパラメータを入力する方法に曖昧な一貫したエラーがなければなりません。私が他の問題を抱えているなら、私はサクソンヘルプをフォローアップします。 –