一个用于执行XSLT转换的IBM Mashup Center插件

Mashup Center v2.0 插件 API 简介

简介

IBM Mashup Center 带有一个数据 mashup 编辑器,该编辑器可用于组合和转换来自多个来源的 XML。这个数据 mashup 编辑器易于使用,但是在某些情况下,使用 XSLT 执行 XML 转换更为高效。您可以了解如何从这两种类型的转换中获益,本文展示如何构建一个可以执行 XSLT 转换的 IBM Mashup Center 插件。

之前有两篇文章 “Extend the reach of data for IBM Mashup Center” 和 “ An IBM Mashup Center plug-in to convert HTML to XML” 描述了如何扩展 IBM Mashup Center 的功能。这两篇文章是基于 Mashup Center Version 1 的。本文关注的重点是 Version 2 插件 API 中的新功能,例如 Basic 和基于表单的认证支持。本文只讨论 Version 1 与 Version 2 插件 API 之间有明显差异的地方。

本文假设您已经熟悉编写 IBM Mashup Center 插件的基础知识。特别是,您应该知道如何用 Java、JSP、JavaScript 和 XSLT 编程。

v2.0 插件 API 变化小结

不同的插件可能要求不同版本的 Java 包。为了提供必要的隔离,从 Version 2 开始,每个插件的类由单独的类装载器来装载。类和特定于插件的 jar 存放在特定于插件的文件夹中,不再像 Version 1 中那样复制到同一个位置。与框架的交互现在主要通过接口而不是具体类来完成。例如,在 Version 1 中,renderEditor 方法以两个具体类 RequestData 和 Entry 作为参数。而在 v2.0 中,类实例改为接口,如清单 1 所示。

清单 1. 使用接口作为参数

// v1.1 public ViewBean renderEditor(RequestData rdata, Entry entry)
   public Object renderEditor(IEditorContext context)

以上变化对于插件的实现并无明显的影响。v2.0 中最值得注意的变化在插件 JSP 的实现中。由于 JSP 是由 Web 容器的 JSP 类装载器装载的,它们不能访问特定于插件的(ViewBean)类。v2.0 插件 JSP 不是使用特定于属性的 getter 方法,而是使用通用的名/值对来获取属性。后面一个小节将对此进行演示。

设置 Eclipse 项目

如 Application Programming Interface Reference, Version 2.0中的第 6.1 节所述,在启动期间,服务器搜索放在 <WebApplication>/WEB-INF/plugins 文件夹中的包含第三方插件的 ZIP 文件。这种 ZIP 归档文件必须有以下文件夹结构:

/client/plugins/PLUGIN_DIR — 包含用于浏览器的文件,例如图像和 JavaScript 文件。

/server/plugins/PLUGIN_DIR — 包含插件 manifest 和插件用来显示界面的文件(JSP 页面)。

/server/plugins/PLUGIN_DIR/classes — 包含插件 Java 类。这可以是一个文件夹层次结构。

/server/plugins/PLUGIN_DIR/lib — 包含插件(第三方)使用的 JAR 文件。

如果您熟悉 v1.1 插件的开发,您也许会注意到,classes 和 lib 文件夹不再放在 WEB-INF 文件夹下。为了简化最终的构建和插件的打包,可以使用您喜欢的 IDE 创建一个项目,该项目应具有与最终 ZIP 归档文件相符的目录结构。图 1 显示一个示例 Eclipse 项目的布局。

图 1. Eclipse 项目

时间: 2024-10-26 05:25:30

一个用于执行XSLT转换的IBM Mashup Center插件的相关文章

窗体-C#-当从一个数字执行强制转换时,值必须是一个小于无限大的数

问题描述 C#-当从一个数字执行强制转换时,值必须是一个小于无限大的数 OldDbDataReader reader = new OldDbDataReader(); long price = new long(); if(reader.read()) price = (long)reader["PRICE"]; 报错说强制类型转换出错,并说"当从一个数字执行强制转换时,值必须是一个小于无限大的数".数据库PRICE字段设置成了"数字",是长整型

.Net框架下的XSLT转换技术简介

.net框架|转换 一.前言: XSLT转换技术是XML中的一项重要技术,本文将向XML开发者介绍.Net框架下的一些不同的XSLT转换技术.同时,本文还将介绍如何运用各种不同的输入数据源以完成一个XSLT转换.在.Net框架下,System.Xml.Xsl.XslTransform类能根据一个XSLT样式表文件转换一个XML文档,它是XSLT转换中最重要的一个类,同时它能够支持W3C的XSLT 1.0的语法,其运用的命名空间是http://www.w3.org/1999/XSL/Transfo

ASP处理XSLT转换XML的实现

使用ASP处理XSLT转换XML比较简单,思路如下:创建一个XSLTemplate的对象,再创建一个XMLDOM对象,然后在家Xml文件和XSLT文件,最后使用方法transform即可,包含到类里面,具体代码如下: 以下是引用片段: Class Cls_Xml_Transform Private lInput,XSLTemplate Private p_Output Public Property Get Output() Output = p_Output End Property Priv

一个用于Gnome桌面的下拉式终端: Guake 0.7.0 发布

一个用于Gnome桌面的下拉式终端: Guake 0.7.0 发布 Linux的命令行是最好.最强大的东西,它使新手着迷,并为老手和极客的提供极其强大的功能.那些在服务器和生产环境下工作的人早已认识到了这个事实.有趣的是,Linux终端是Linus Torvald在1991年写内核时实现的第一批功能之一. 终端是个强大的工具,由于它没有什么可调整的部分,所以十分可靠.终端介于控制台环境和GUI环境之间.终端自身作为一个GUI程序,运行在桌面环境下.有许多终端是适用于特定的桌面环境的,其它的则是通

T-Coin之我见:-每一个用于传播的硬币,都有对位价值

T-Coin之我见:每一个用于传播的硬币,都有对位价值 引言:2009年,迪思数字业务全面整合,原数码世纪与朗德团队进行了合并组成迪思数字,随即提出了T-COIN的传播主张:实效传播,为客户的每一枚铜板负责. 作为一个"局"中人,我体会到其中发生的一些微妙变化,那就是以效果为导向的全传播理念在网络营销中的充分应用.在数十次的比稿中,我们发现,客户的需求原来与我们主张惊人地吻合:我们也更加确信,以效果为导向.深具销售力的方案,会帮助我们赢得竞标.赢得客户的认同. 网络营销,已从浮华开始向

C++第17周项目4 数组用于进制转换

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目4]数组用于进制转换:编一个程序,其中调用函数void tran(int n, int d)用于将十进制数n转换为d进制数输出,并输出d进制数中最大位值是多少,在第几位.d的取值在2-32之间,数制d超过10时,依次用ABC...代表其基本符号,如对17进制而言,G代表其最大符号,对应十进制的16. 提示:用递归函数完成十进制向d进制的转换是需要掌握的,但对于本题而

如何打造一个具有执行力的SEO团队

现在企业或者团队都在讲执行力,可见执行力在所有项目中占很大的比重.那么对于SEO来说也是比较重要的一个环节;如果做SEO,团队或者个人的执行力不够的话,等于是这个SEO项目已经失败了一大半,那么对于SEO主管,顾问或者是企业怎么才能打造一个具有执行力的SEO团队呢,下面说说就执行力的问题. 首先,做一个seo项目的话先要和老板沟通,沟通一般是需要技巧的,对于你的老板来说,绝对不会是怕承担风险的人.在很多时候有些人跟老板沟通错误的一点就是觉得老板唯利是图的人,感觉这个对自己的生意比较有利可图才上该

link中对一个变量可以强制转换,那么能不能强制转换一个函数为静态函数?

问题描述 link中对一个变量可以强制转换,那么能不能强制转换一个函数为静态函数? link中对一个变量可以强制转换,那么能不能强制转换一个函数为静态函数? 解决方案 你也太任性了.变量可以强制转换,那函数就可以转换啊. 面包可以吃,那秤砣也可以吃啊.什么逻辑?

类调用窗体控件-关于一个C++动态库转换成C#接口后,消息接收的问题!急急急!

问题描述 关于一个C++动态库转换成C#接口后,消息接收的问题!急急急! #ifndef USBDLL_H #define USBDLL_H #ifdef USBDLL_EXPORTS #define USBDLL_API __declspec(dllexport) #else #define USBDLL_API __declspec(dllimport) #endif #include #include #define RECORD_LOCAL 0 #define RECORD_TALK 1