使用Altova MapForce生成的XSLT文件时出现XslCompiledTransform异常

时间:2012-07-23 09:26:44

标签: c# xml xslt xslcompiledtransform altova

我正在使用.NET的XslCompiledTransform来执行XSLT转换。当我尝试使用XSLT文件时,我已经使用Altova的MapForce工具自动生成了,我得到了例外:

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识别这些外部函数?

2 个答案:

答案 0 :(得分:2)

我不知道Mapforce的任何细节,但我知道人们成功地使用Saxon运行Mapforce生成的样式表。也许(我推测)如果你要求mapforce生成2.0样式表,那么它就不需要任何Altova扩展,然后你可以使用2.0处理器运行样式表,比如Saxon或XmlPrime。

(顺便说一下,微软已经明确表示他们并不打算将XsltCompiledTransform升级到XSLT 2.0,所以你正在使用一种死端技术.Saxon,Altova和XmlPrime都在前进; Saxon和XmlPrime不仅支持XSLT 2.0,还支持3.0大块。你可以从中获得大量的生产力优势。)

答案 1 :(得分:1)

通常,扩展不可移植,只有一些EXSLT扩展(如exsl:node-set)受到各种XSLT 1.0处理器的支持,包括XslCompiledTransform。如果您使用XML Spy开发并希望使用.NET代码执行其样式表,那么您可以考虑将AltovaXML与.NET一起使用,请参阅http://manual.altova.com/AltovaXML/altovaxmlcommunity/index.html?axnetinterface.htm,而不是使用XslCompiledTransform。