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 的任何细节,但我知道人们使用 Saxon 成功运行了 Mapforce 生成的样式表。也许(我推测)如果您要求 mapforce 生成 2.0 样式表,那么它就不需要任何 Altova 扩展,然后您可以使用 Saxon 或 XmlPrime 等 2.0 处理器运行样式表。

(顺便说一句,微软已经明确表示他们不打算将 XsltCompiledTransform 升级到 XSLT 2.0,因此您使用的是一种死胡同。Saxon、Altova 和 XmlPrime 都在向前发展;Saxon 和 XmlPrime 不仅支持 XSLT 2.0 以及 3.0 的大块。你错过了很多生产力优势。)

于 2012-07-23T11:23:47.380 回答
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。

于 2012-07-23T09:35:40.773 回答