我正在使用.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" ... >...it似乎为XSLT定义了自己的扩展函数,而XslCompiledTransform不知道如何找到它们。如何让XslCompiledTransform识别这些外部函数?
发布于 2012-07-23 17:35:41
通常,扩展是不可移植的,包括XslCompiledTransform在内的各种XSLT1.0处理器只支持一些EXSLT扩展,比如exsl:node-set。如果您使用XML进行开发,并希望使用.NET代码执行其样式表,那么可以考虑将AltovaXML与.NET一起使用,请参阅http://manual.altova.com/AltovaXML/altovaxmlcommunity/index.html?axnetinterface.htm,而不是使用XslCompiledTransform。
发布于 2012-07-23 19:23:47
我不知道Mapforce的任何细节,但我知道人们成功地使用Saxon运行了Mapforce生成的样式表。也许(我在猜测)如果您要求mapforce生成2.0样式表,那么它将不需要任何Altova扩展,然后您就可以使用2.0处理程序(如Saxon或XmlPrime )运行该样式表。
(顺便说一句,微软已经明确表示,他们不打算将XsltCompiledTransform升级到XSLT2.0,因此您使用的是一种没有前途的技术。Saxon、Altova和XmlPrime都在向前发展;Saxon和XmlPrime不仅支持XSLT2.0,而且还支持3.0的大量版本。你错过了很多生产力方面的好处。)
https://stackoverflow.com/questions/11609742
复制相似问题