0

.NETのXslCompiledTransformを使用してXSLT変換を実行しています。AltovaのMapForceツールを使用して自動的に生成したXSLTファイルを使用しようとすると、例外が発生します。

XSL conversion is failed: Cannot find the script or external object that implements prefix 'http://www.altova.com/xslt-extensions'.

XSLスタイルシート定義から:

<xsl:stylesheet ... xmlns:ns0="http://www.altova.com/xslt-extensions" ... >

... AltovaはXSLTに対して独自の拡張関数を定義しているようで、XslCompiledTransformはそれらを見つける方法を知りません。XslCompiledTransformにこれらの外部関数を認識させるにはどうすればよいですか?

4

2 に答える 2

2

Mapforce の詳細はわかりませんが、Mapforce で生成されたスタイルシートを Saxon で正常に実行している人がいることは知っています。おそらく (私は推測しています) mapforce に 2.0 スタイルシートを生成するように依頼すると、Altova 拡張は必要なく、Saxon や XmlPrime などの 2.0 プロセッサでスタイルシートを実行できます。

(ちなみに、Microsoft は、XsltCompiledTransform を XSLT 2.0 にアップグレードする予定がないことを明確にしているため、行き止まりのテクノロジを使用しています。Saxon、Altova、および XmlPrime はすべて前進しています。Saxon と XmlPrime は XSLT をサポートするだけではありません。 2.0 ですが、3.0 の大きなチャンクもあります。見逃されている生産性の利点が非常に多くあります。)

于 2012-07-23T11:23:47.380 に答える
1

exsl:node-set通常、拡張機能は移植可能ではなく、XslCompiledTransformを含む幅広い XSLT 1.0 プロセッサでサポートされているような一部の EXSLT 拡張機能のみがサポートされています。XML Spy で開発し、そのスタイルシートを .NET コードで実行したい場合は、AltovaXMLを.NET で使用することを検討できます XslCompiledTransform を使用する代わりに。

于 2012-07-23T09:35:40.773 に答える