0

Saxon.Api.XsltTransformerXML ドキュメントの変換に使用できるオブジェクト を取得するために、次のコードを作成しました。TransformationXsltXSLT を含む文字列です。

XmlDocument document = new XmlDocument();
document.LoadXml(TransformationXslt);
Saxon.Api.XdmNode input = processor.NewDocumentBuilder().Build(document);
Saxon.Api.XsltCompiler xsltCompiler = processor.NewXsltCompiler();
Saxon.Api.XsltExecutable xsltExecutable = xsltCompiler.Compile(input);
Saxon.Api.XsltTransformer xsltTransformer = xsltExecutable.Load();
xsltTransformers.Add(transformation.Name, xsltTransformer);
return xsltTransformer;

任意のXSLTから呼び出せるようにしたい 10 個以上の XSLT テンプレートがあるとします。Saxon.Api.XsltTransformer結果のオブジェクトでそれらを使用できるようにするにはどうすればよいですか。

次のようなものがあるとします。

string commonXslt = "<xsl:param name="Use_This_In_Every_Xslt">Foo!</xsl:param>";

この「共通」の xslt をトランスフォーマーで使用できるようにするにはどうすればよいですか?

4

1 に答える 1

1

XSLT を使用してスタイルシート モジュールを記述する通常の方法は、XSLT プロセッサ API に依存せず、コードをスタイルシート (例: ) に配置し、またはmodule1.xslを使用して他のスタイルシートに含めるかインポートします。詳細については、 http://www.w3.org/TR/xslt20/#combining-modulesを参照してください。ただし、モジュールが完全で整形式の XSLT ドキュメントであり、単一の要素ではないことを確認する必要があります。xsl:includexsl:importxsl:param

もちろん、すべての XSLT をメモリ内で文字列としてのみ使用できる場合は、XsltCompiler 用に設定したhttp://www.saxonica.com/documentation/dotnetdoc/Saxon/Api/XsltCompiler.html#XmlResolverを確認する必要があります。相対 URL を解決して、文字列から別のモジュールをロードします。

于 2013-09-24T16:59:28.563 に答える