用于数据的XML: 用EXSLT扩展XSLT的功能

http://tech.ddvip.com   2007年10月25日    社区交流

内容摘要:本专栏文章简要概述了 XSLT 1.0 的 EXSLT 标准化扩展。它确定了由 EXSLT 扩展所提供的一些比较重要的功能,并包括了一些有关这些功能的用法指南。

  正如在过去的几篇专栏文章中所看到的那样,XSLT 1.0 提供了很好的文本转换功能,但实际上它还不够完善,不足以提供好的数据操作能力。客观地说,它从未打算要做到这一点;设计 XSLT 1.0 时,它的创建者无法知道它将会有怎样的复杂用法。但是,XSLT 1.0 规范的的确确提供了通过额外的元素和函数来扩展 XSLT 功能的机制。规范中的相关段落如下:

  元素扩展机制允许将名称空间指定为扩展名称空间。当将名称空间指定为扩展名称空间,并且模板中出现带有该名称空间中名称的元素时,那么认为该元素是指令而不是文字结果元素。名称空间确定了指令的语义。 如果 FunctionCall 表达式中的 FunctionName 不是 NCName (也就是说,如果它包含了一个冒号),那么就将它当作是对扩展函数的调用。使用求值上下文中的名称空间声明将 FunctionName 扩展成一个名称。

  这意味着,如果 XSLT 处理器开发人员想要添加更多的功能,他们可以随意而为 - 只要支持该功能的元素和函数名称出现在他们自己的名称空间里。利用这一特性而获得的首要成就之一就是 Mike Kay 的 Saxon XSLT 处理器:通过包括 saxon: 名称空间中的元素和属性,开发人员可以创建能执行复杂源文档操作的样式表。其弊端是这些样式表不再是可移植的了:它们在非 Saxon 处理器中不能正常运行。同样地,XSLT 的某些 Java 实现通过使用 java: 名称空间允许从样式表直接进行 Java 调用,从而扩展功能,但是在不支持该名称空间中元素和属性的处理器上,该样式表无法正常工作。

  EXSLT 是什么?

  为使 XSLT 扩展更加可移植,一组开发人员已经创建出了 EXSLT 规范。这是在设法标识对 XSLT 1.0 的有用扩展功能并将它们分成可在“照菜单点”的基础上实现的功能组。EXSLT 工作是开放式的;希望对此做出贡献的任何人都可以如愿以偿。

来源:ibm    作者:Kevin Williams    责编:豆豆技术应用

正在加载评论...