分享
 
 
 

J2EE和XML开发——用户接口(三)

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

J2EE应用用户接口开发(三)

作者 KURT A. GABRICK

DAVID B. WEISS

出处 J2EE and XML Development第五章

地址 <<http://www.manning.com/gabrick>>

本文是J2EE和XML开发用户接口的第三部分,如果对文中的例子不熟悉请参见本文的第一、二部分

J2EE和XML开发用户接口(一) <<http://www.csdn.net/develop/article/19/19844.shtm>>。

4.3 扩展为二进制格式

在离开使用XSLT提交接口的主题之前,我们需要重点看看XSLT格式化对象的能力。现今高级Web应用的流行需求是能动态的生成二进制的文件。使用XSLT格式化对象(FO)的实现,你可以从动态XML数据转换为二进制格式的数据,例如PDF格式的文件。这一部分我们通过实现生成股票列表的PDF文件的例子来说明这一点。Apache Software Foundation项目FOP目前已经部分实现了格式化对象。你可以从<http://xml.apache.org/fop下载它的文档和实现>。

为了便于讨论,我们假设需要为股票信息表生成PDF文件而不是HTML文件。修改我们的XSLT版本的例子以生成PDF需要两个步骤

·我们必须修改产生HTML的样式表以用来产生一个FOP格式化对象树取代HTML页

·我们必须在XSLT Filter最后加一步用来调用FOP API并且将格式化对象树转换为PDF文档

所谓格式化对象树是一个特定的XSL样式表,它包含一组打印格式化指令,FOP Driver组件使用这些指令从XML文档创建PDF文件。生成PDF的修改流程如下图示

创建格式化树

上图表明了格式化树样式的基本结构。树包括两个主要构件:布局和页面序列。布局描述了可以被用于一个或多个页面序列的页面模板。每个页面序列定义了显示在PDF中的实际内容,包括所有格式化信息。在我们的例子中,我们创建一个布局(主模板)和一个页面序列。我们的页面序列将包括单独的显示信息页面。

列表4.11包括了产生 US英语版本PDF格式的WatchList页面的完整XSL样式

list 4.11

为了利用FO样式,我们必须调用Apache FOP API。因为我们不想将我们的过滤器实现与特定的FO实现系在一起,所以我们将FOP使用一个类PDFWriter将它包装起来。这个类需要一个格式化树样式的全路径以及一个XML输入数据源,并且将PDF输出到指定的输出流上。要完成这样的工作,PDFWriter使用了Apache FOP和JAXP API for XSLT。这个适配器的代码在列表4.12中。

list 4.12

最后就是修改XSLT过滤器以便当html是输出格式的时候使用PDFWriter。修改后的的类为XSLTPDFFilter在列表4.13中列出

list 4.13

下图显示的是PDF输出的情况

5 XML Web发布框架

Web发布框架合并Java和XML技术成为可使用的体系结构。使用Web发布框架,你可以创建基于XML的表示层而不需要书写任何用于整合XML的定制代码。基于XML的Web发布框架还是相当新的技术,它们的可靠性依赖于使用组件的稳定性,包括XML解析器和XSLT处理器。下面是一些比较流行的Web发布框架产品:

·Webmacro(http://www.webmacro.org

·Enhydra(<http://www.enhydra.org>)

·Cocoon(<http://xml.apache.org/cocoon>)

出于与前述XSLT实现的比较目的,我们现在探讨如何将我们的股票例子用Cocoon Web发布框架来开发。

5.1 Cocoon体系结构介绍

使用Cocoon进行用户接口开发包括XSL样式和XSP页的创建。因为XSP是当前一个限制在Cocoon上的技术,我们将着重考虑Cocoon的XSLT能力。下面是Cocoon处理流程图

XML Server Pages(XSP)是一个用于基于XML的程序生成语言的工作指南。XSP包括能够控制对于给定XML数据集如何被处理的指令。使用Cocoon的最简单的方法是在你的XML数据文档中添加特别的处理指令。这些指令允许Cocoon处理和格式化你的数据并将它发送到请求的客户端。所支持的输出格式包括WML、PDF、XML和XHTML。

Cocoon生产者

生产者是负责生成XML数据的软件构件。它们与Servlet功能相似用来接收和处理HttpServletRequest。这是Cocoon的一个可扩展的地方,你可以实现自己的生产者来获得指定的处理能力。Cocoon使用FileProducer以便从文件系统中读取请求的文件。

Cocoon处理器

数据一旦被产生,它们将可以用于处理。处理器是负责进行操作(如XSLT转换生产者生产的XML数据)的构件。Cocoon包含下列的处理器:

·XSLT处理器

·LDAP处理器

·XSP处理器

书写你自己的处理器与编写JSP定制标记类似。标记被创建,处理一些逻辑并被页面使用。

Cocoon格式化帮手

格式化帮手帮助那些可能被应用于应答请求的构件。它用于包装输出内容并加入附加格式化信息。

5.2 使用Cocoon提交股票信息

让我们实践一下Cocoon,我们将使用标准的Cocoon XSLT处理器作为XSLT转换器对我们的XML数据进行转换。我们已经开发了XSL样式,所以只需要修改返回应用逻辑层的XML文档,在我们的XSL样式中加入Cocoon处理指令,如下所式

<?cocoon-process type=xslt?>

然后我们添加两个指令描述应用于数据的HTML和WML样式。对于US地区,指令如下

<?xml-stylesheet href=watchlist.html.en_US.xsl type=text/xsl ?>

<?xml-stylesheet href=watchlist.wml.en_US.xsl type=text/xsl media=wap ?>

media=wap属性告诉Cocoon为WML用户选择对应的样式。否则就会使用缺省的样式。Cocoon被设计成可以像Servlet那样访问,但是我们也可以通过调用API使用它。在列表4.14中,我们修改了WatchListServlet,添加了处理XML数据文档的合适指令并且调用了Cocoon引擎以便转换和向客户发送结果。

list 4.14

下图说明了我们的新的表示层,它结合了Cocoon和J2EE表示层组件

至此全文完

更多信息

1. <http://www.theserverside.com/>

2. <http://www.javaworld.com/>

如果需要转贴请写明作者和出处

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有