运行时将数据与XSLT样式表集成

本文描述了一种用于进行下列操作的机制:分别开发应用程序业务数据和表示数据,然后使用通用的 XSLT 样式表将它们组合在一起。应用程序业务数据被格式化成 XML 形式,而表示数据可以用传统工具来创建。附加属性增强了表示数据,样式表使用这些属性来将表示细节应用于实际内容。对于最终格式的创建,不需要专门的编程,因为这个过程是由 XSLT 处理器完成的。

为最充分地理解本文,您应该了解 XML 和 XSLT 的基础知识。请参阅 参考资料一节,以获得至可作为这些主题介绍的教程和文章的链接。这里显示的所有示例都是使用 Apache Xerces XML 解析器,版本 2.0.1 和 Apache Xalan XSLT 处理器,版本 2.3.1(请参阅 参考资料中的 Apache XML Project)产生的。

应用程序体系结构

对于应用程序体系结构,我选择了 Java 2 企业版(J2EE)提议的 n 层体系结构,如图 1 所示。

图 1. n 层体系结构

这里,我将集中讨论第 1 层和第 2 层。如果您期望用户输出由 servlet 处理,则可以改进这个体系结构。这个 servlet 调用与后端通信的应用程序业务逻辑。这个后端可以是(例如)存在于网络中独立服务器上的 Enterprise JavaBean。可以假设所有业务数据都被格式化成 XML。然后,通过使用 Java Server Page(JSP)准备该数据以进行表示,并将它发回客户机,如图 2 所示。

图 2. 使用 JSP 准备用于表示的数据

如果将该图片转换成“模型-视图-控制器(Model-View-Controller (MVC))”设计模式上,则 servlet 充当控制器角色,应用程序逻辑代表模型,JSP 是视图元素。(诚然,这种分配是简化了的,但它显示了基本原理。)

准备用于表示的应用程序数据

为了充分利用使用 XML 创建应用程序数据的好处,必须先将数据转换成可表示的格式。做到这一点的常用方法是 XSLT 样式表。在 XSL 规范(另见 参考资料中的可扩展样式表语言(eXtensible Stylesheets Language))中有两种可能的方法。您可以:

使用所谓的 格式化对象(FO)

创建简单的 XSLT 样式表

FO 通常创建二进制输出格式,但至今仍未被广泛使用(即使它们更专用于编辑表示数据)。另外,常用的 XSL 处理器和工具几乎也不支持它们。而另一方面,XSLT 样式表被更广泛地使用,所以本文中我将集中讨论 XSLT 样式表。

XSLT 样式表处理结构

XSLT 样式表始终使用一个 XML 文档来充当其输入。XSL 处理器根据样式表中的规则来处理这个输入文档。这会产生一个新的 XML 输出文档,如图 3 所示。

图 3. 使用 XSLT 样式表来处理 XML 文档

在大多数情况下,这种结构会导致样式表中规则和表示数据的混合。我假设我有 XML 格式的地址数据,需要将这些数据转换成 HTML,以在浏览器中表示。清单 1 显示了 XML 输入数据。注:XSLT 样式表处理步骤的输出是另一个 XML 文档。HTML 不一定是格式良好的,所以这里将始终产生 XHTML(XHTML 一定始终是格式良好)。稍后再讨论这个问题。

时间: 2024-08-30 22:12:22

运行时将数据与XSLT样式表集成的相关文章

利用客户端XSLT样式表转换xml文档

源xml文档和那两个xslt样式表我没有提供哦,大家自己写写算了<html><head><style type="text/css">body {font-family:Tahoma,Verdana,Arial,sans-serif; font-size:14px}.head {font-family:Tahoma,Verdana,Arial,sans-serif; font-size:18px; font-weight:bold}</styl

如何让xslt样式表接受参数

我们经常会有这样的需求:有多份数据,需要共享一份样式表来转换.他们的 区别可能就在于顶部会有一些小的差异,那么如何解决这个事情呢? 1. 在XSLT中定义参数 <?xml version="1.0" encoding="utf- 8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:m

将XSLT作为HTML的样式表的使用方法示例

 简介 当听到样式表这个词时,您可能会想到 CSS 样式表.XSLT 样式表通常用于 XML 转换,比如在 Web 服务之间映射数据.因为 XSLT 非常适合此用途,所以创建了顶层元素 <stylesheet> 的 <xsl:transform> 别名,虽然这很少使用.这种 XSLT 转换的输入结构与输出结构有很大的不同.最重要的是,命名空间的不同. XSLT 样式表的输入结构与输出结构相似,但却更简单些.其中已经扩充了一些标记,但大部分标记只是原样复制到输出.输入和输出的命名空间

样式表概述:CSS实用代码介绍

css|样式表 CSS(Cascading Stylesheets,层叠样式表)是一种制作网页的新技术,现在已经为大多数的浏览器所支持,成为网页设计必不可少的工具之一.使用CSS能够简化网页的格式代码,加快下载显示的速度,也减少了需要上传的代码数量,大大减少了重复劳动的工作量.尤其是当你面对的是有数百个网页的站点时,CSS简直象是神对我们的恩赐! 前言 CSS(Cascading Stylesheets,层叠样式表)是一种制作网页的新技术,现在已经为大多数的浏览器所支持,成为网页设计必不可少的工

z/OS LE对程序运行时参数的支持

z/OS 操作系统中Language Environment(LE) 组件为应用程序提供了一组强大的运行时参数(run- time option : RTO)支持.对于开发人员来说,通过在应用程序中设置恰当的RTO,不仅可以快速查看运行时环境数据,提高程序调试的效 率:而且还能够设置LE提供的一系列Callable Services,快速处理异常和中断. 1 RTO分类 LE RTO 主要分为系统环境(eg. ENV),文件(eg. FILEHIST),堆栈管理(eg. HEAP,  HEAPP

update-这是一个oracle计税公式,运行时出错missing right parenthesis

问题描述 这是一个oracle计税公式,运行时出错missing right parenthesis update 表名 t set 扣税= case (t.计税工资) when ((t.计税工资 <= 1500) and (t.计税工资 > 0)) then t.计税工资*0.03 when ((t.计税工资 <= 4500) and (t.计税工资 > 1500)) then t.计税工资*0.1-105 when ((t.计税工资 <= 9000) and (t.计税工

emit-dapper.net IDataReader数据类型转换报错:操作可能会破坏运行时稳定性

问题描述 dapper.net IDataReader数据类型转换报错:操作可能会破坏运行时稳定性 object item3 = ((IDataRecord)this)[num8]; if (item3 is DBNull) { } else { string str1 = item3 as string; str = str1; if (str1 == null) { pluginType = (PluginType)Convert.ToByte(item3); } else { plugin

JVM运行时数据区

本文是<The Java Virtual Machine Specification (Java SE 7 Edition)>2011年6月版的运行时数据区的翻译 原文参见:http://download.oracle.com/javase/7/specs/jvms/JVMS-JavaSE7.pdf  译者:方腾飞 JVM定义了若干个程序执行期间使用的数据区域.这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁.而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁.

AssetHook:Android应用资源数据运行时编辑工具

本文讲的是AssetHook:Android应用资源数据运行时编辑工具,AssetHook是一个工具,它可以让Android安全研究人员和普通用户能够在无需修改APK本身的情况下随时修改Android应用程序的部分Asset.这样的修改使研究人员可以改变嵌入式数据,以更好地评估和测试移动应用程序.目前来看AssetHook比现有方法更容易使用,且比传统方法更有效. 背景 去年年底,我开始关注Android启用React Native 后 Facebook的新框架,它将跨平台移动开发统一到Java