XML 和 WebSphere Studio Application Developer - 第 7 部分: 使用 XSL Editor 和 XSL Debugger 开发 XSL 样式表

本文主要是介绍XML 和 WebSphere Studio Application Developer - 第 7 部分: 使用 XSL Editor 和 XSL Debugger 开发 XSL 样式表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言
IBM® WebSphere® Studio Application Developer 是一种应用程序开发环境,它支持用 JSP、servlet、HTML、XML、Web 服务、数据库和 EJB 等不同的技术构建多种应用程序。Application Developer 还特别提供了 XML 和关系数据之间的紧密集成。凡是 WebSphere Application Server 支持的数据库,Application Developer 都支持,包括 DB2®、Oracle、Sybase 和 Microsoft® SQL Server™。

本文是着重讲述 WebSphere Studio Application Developer 附带的各种 XML 工具的系列文章的第 7 部分。第 7 部分演示如何使用 WebSphere Studio Application Developer 版本 5.0 提供的一些新 XSL 工具来开发 XSL 样式表。

创建一个简单的样式表
我们将从零开始创建一个新的 XSL 样式表。在开始之前,请下载 下面提供的 xslExample1.zip 文件。切换到 XML 透视图。创建一个名为 Simple 的新项目,然后将 videos.xml 文件从 xslExample1.zip 文件导入到 Simple 项目中。按如下步骤启动 New XSL 文件向导:

  1. 选择 File =>New =>XSL以启动 New XSL 向导。
  2. 在 File name 域中,输入 videos.xsl 。单击 Next
  3. 在 Select XML file 页中,选择您已经导入的 videos.xml 文件。这会把 videos.xml 文件和 videos.xsl 文件 关联起来。
  4. 单击 Finish。这样就创建了 videos.xsl 文件,并且 XSL Editor 自动为您打开。

创建样式表
XSL Editor 提供了许多向导来帮助您创建样式表中的内容。它还提供了一单击即转换功能,让您很快就能看到转换的结果。在这一部分,我们将向您展示如何用三个简单的步骤创建一个简单的 XSL 样式表并用它把 videos.xml 数据格式化成一张 HTML 表格:

第 1 步:添加一个 HTML 模板头
为创建 HTML 文档,我们将添加一个模板用来生成 HTML 头信息和定义文档的输出方法。

  1. 把光标放到 videos.xsl 文件中 <xsl:stylesheet> 元素后面的空行上。
  2. 从菜单中选择 XSL =>HTML Template。这将创建一个 <xsl:output> 元素(它将以 HTML 格式输出结果)和一个模板(它将用 videos.xml 文件中处理所有直接子元素的 <xsl:apply-templates> 规则生成 HTML 头)。

第 2 步:创建一张 HTML 表格
接下来,我们将创建一个将产生 HTML 表格的模板。

  1. 把光标放到在上面的第 1 步中生成的 </xsl:template> 元素后面的空行上。
  2. 从菜单中选择 XSL =>HTML Table。这会启动如下面图 1 所示的 XSL Table Wizard
  3. 选择 VIDEO元素作为用于构建 HTML 表格的上下文节点。这意味着 VIDEO 元素的所有子元素都将作为表格中的列被添加。
  4. 选择 Wrap table in a template复选框指出我们想把这个表格包装到新的模板中。
  5. 选择 Include Header复选框指出我们想在这个表格中包含一个表头。
  6. (可选步骤)单击 Next转到下一页,为该表格添加表格边框和背景色。
  7. 单击 Finish。这将在 videos.xsl 文件中创建一个将生成 HTML 表格的新 VIDEOS 模板。

图 1. XSL Table Wizard
XSL Table Wizard 的抓屏

第 3 步:保存和转换

  1. 选择 File =>Save 保存 videos.xsl 文件。将对 videos.xsl 文件运行 XSL 验证(XSL Validation)。完成后的 videos.xsl 文件包含在 xslExample1.zip 文件中。
  2. 从菜单中选择 Debug =>Transform。这将调用 Xalan 处理器来转换与这个 XSL 文件相关联的 XML 文件( videos.xml )。所得到的 HTML 文件如下面的图 2 所示。

图 2. videos.xml 的简单 HTML 表格
videos.xml 的简单 HTML 表格的抓屏

把一个样式表与多个 XML 文档关联起来
当我们创建 videos.xsl 文件时,我们把它和 videos.xml 文件关联了起来。您可以在 Associations 对话框中更改这种关联。先选择 videos.xsl文件,然后选择 Properties。这会启动 videos.xsl 文件的 Properties 页。单击如图 3 所示的 Associations 选项卡启动 Associations 对话框。您可以看到 videos.xml 文件目前已被关联起来了。

图 3. 把多个 XML 文档与一个 XSL 样式表关联起来
videos.xsl 的 Properties 对话框的抓屏

使用 Associations 对话框,您可以添加或删除关联,还可以设置缺省关联。如果某个 XML 文件被设置为一个 XSL 文件的缺省关联,那么对 XSL 文件的任何需要知道实例文件的处理(例如,转换、调试或 XPath 向导调用)都将自动使用该缺省关联进行。

将一个 XSL 样式表应用于许多个结构相同但内容有别的 XML 文档是很常见的。您可以使用 Associations 对话框来设置所有关联。当您更改 XSL 样式表时,您只需单击一下鼠标就可以选择 Transform all XMLs 操作来转换所有已与 XSL 样式表关联在一起的 XML 文件。

图 4. Transform all XMLs
显示 Transform all XMLs 命令的下拉菜单的抓屏

改善录像商店的设计
至此,我已经演示了如何使用 XSL Editor 中的向导来根据 XML 文档快速创建样式表。但对于一个真实的录像商店来说,这个 HTML 表格看起来不是很吸引人。例如,您更愿意看到录像的真实图像吗?一种更吸引人的设计可能如下面的图 5 所示。当您访问该录像商店时,会给您显示一个最受欢迎影片的列表。接着,您可以通过单击链接选择某部特定的影片;这样将会显示一张图像和详细的描述,如下面的图 6 所示。

图 5. 影片列表
显示 Most Popular Movies 列表的 Web 浏览器的抓屏

图 6. 一部被选中的影片
显示一部被选中影片的 Web 浏览器的抓屏

这样一个 Web 站点可以使用与它的数据源相同的 videos.xml 。但是,要使用 XSL 样式表创建这个 Web 站点,您需要执行以下步骤:

  • 创建能够处理超链接( href )的样式表。
  • 设计并部署将在运行时把 XSL 转换成 HTML 的 Web 应用程序。

在本文余下的几部分中,我们将着重讨论第一项任务。我们将研究可以用来调试 XSL 样式表的 XSL Debugger。在本系列的下一部分,我们将讨论如何构建将把这些样式表应用于输入数据以将输入数据转换成如上面的图 5 和图 6 所示的 HTML 输出的 Web 应用程序。

调试 XSL 样式表
创建一个名为 Scenario 的新项目,然后把 xslExample1.zip 的 Scenario 目录中的所有文件导入到本项目中。您将注意到,在 xsl 文件夹中有两个 XSL 样式表: movieList.xslmovieDetail.xslmovieList.xsl 样式表用来显示影片列表。 moveDetail.xsl 样式表用来显示一部特定影片的详细信息。

为了搞清楚 movieList.xsl 的工作原理,我们将使用 XSL Debugger 来研究它。选择 movieList.xsl文件和 videos.xml文件。选择 Apply XSL =>As HTML。这会在 XSL Debug 透视图中启动 XSL Debugger,如下面的图 7 所示:

图 7. XSL Debugger
XSL Debugger 的抓屏

XSL Debugger 具有下列视图:

  • Sessions 视图显示调试会话列表。您可以从这个视图使用工具栏按钮在当前转换上单步向前 


    XSL Debugger 的 Sessions 视图中的 Step Forward 图标

    或单步向后 


    XSL Debugger 的 Sessions 视图中的 Step Backward 图标

    ,如果在 XSL 源代码中设置了断点的话可以运行到某个断点 


    XSL Debugger 的 Sessions 视图中的 Run to a Breakpoint 图标

    ,或者在结果文档上打开浏览器


    XSL Debugger 的 Sessions 视图中的 Open the Browser 图标



  • Current XSL Element 视图在您一步步执行转换的过程中显示 XSL 样式表中某个元素的详细信息。Actual Value 列显示该 XSL 元素被求值时的实际值。

  • Breakpoints 视图显示在 XSL 样式表上所设置的断点的列表。您可以使用这个视图除去断点。

  • Template Call Stack 视图显示调用堆栈中的模板的列表。当进入某个模板时,将会有一个条目被添加。当模板完成执行时,该条目就被从堆栈中除去。

XSL Debugger 还在一个平铺编辑器中打开输入 XML 和 XSL,以便在您一步步执行转换时把 XML 和 XSL 并排放在一起,这样看起来就很方便。不过,如果您的 XSL 样式表包含其他样式表,或者如果您的样式表转换多个文档,那么平铺编辑器读起来就很困难了,您可能会想简单地把各个编辑器层叠起来。要更改这一点,您可以选择 Windows =>Preference =>XML =>XSL Debugging,然后取消对“Show all debugging files in a tile editor”复选框的选择,如下面的图 8 所示:

图 8. XSL Debugging 首选项
XSL Debugging 首选项对话框的抓屏

使用 XSL Debugger 研究 movieList.xsl 文件
在 Sessions 视图中,单击


XSL Debugger 的 Sessions 视图的 Step Forward 图标

按钮开始一步步执行转换。正被执行的 XSL 规则在 XSL 源代码编辑器中被突出显示。继续单步向前,直到到达下面定义变量 id 的这一行。
<xsl:variable name="id" select="VID_ID"/>

XSL Debugger 在碰到结束标记时对变量进行求值。在这个简单的例子中,该变量在同一行中就结束了,但对于更复杂的变量声明,一个变量的值可能会涉及到调用另一个可能跨越多行的模板。请仔细查看 Current XSL Element 视图,看看 </xsl:variable> 标记出现时所求得的结果。您将看到求得的上下文节点的值为 100,它是 VID_ID 元素在当前迭代时的值。

继续单步向前,直到到达下面定义 href 链接的行:

<a href="/VideoWeb/main/detail?videoId={$id}">

这个 href 属性定义了单击链接时将转到的页面的链接。那么,这个 href 中包含什么内容呢?这个 href 的第一部分定义了一个 URL /VideoWeb/main/detail ,它在 Web 应用程序中运行时有意义。我们将在本系列的下一篇文章中重新探讨这一部分。这个 href 的第二部分定义了一个参数 videoId ,它的值是根据 {$id} 变量的值计算出来的。要求出对 videos.xml 文件执行转换时这个 href 的确切值,请在 Current XSL Element视图(如下面的图 9 所示)中查看它。注意,如果实际值很长,您可以使用 ... 按钮打开一个对话框。

图 9. 求 href 属性的值
显示 href 属性的详细信息的抓屏

您可以单步遍历 <xsl:for-each> 循环在 XSL 元素被执行时查看每一个 XSL 元素,如果您只对查看某些值感兴趣的话也可以设置一个断点。我们来通过双击 <a href> 元素所在的行在该元素上设置一个断点。您将注意到在第 28 行处添加了一个断点(一个绿色圆点),如图 7 所示。

现在,单击


XSL Debugger 的 Sessions 视图的 Run to a Breakpoint 图标

按钮运行到该断点。注意,每次单击鼠标时,Current XSL Element 视图都会显示一个对应于 videos.xml 文件中的 VID_ID 元素的新 href 属性值。

使用 XSL Debugger 研究 movieDetail.xsl 文件
接下来,我们将使用 XSL Debugger 仔细研究一下 movieDetail.xsl 文件。先选择 movieDetail.xsl文件和 videos.xml文件,然后选择 Apply XSL =>As HTML 启动一个新的调试会话。

请回想一下, movieDetail.xsl 文件是被用来显示被选中影片的详细信息。必须将该影片的标识 videoId 传递给这个样式表。在本系列的下一篇文章中,我们将向您展示当 URL 被请求时,如何从 servlet 动态传入这样一个参数。下面您将看到,出于设计这个样式表的目的,您可以用一个支架(scaffolding)值来代替。

在 XSL 源代码编辑器中,在下面这一行上设置一个断点,该行根据变量 $videoId 测试 VID_ID 值。

<xsl:if test="VID_ID=$videoId">

在 Sessions 视图中,单击


XSL Debugger 的 Sessions 视图的 Run to a Breakpoint 图标

按钮运行到该断点。在 Current XSL Element 视图中,请注意求出的 <xsl:if test> 的值将是 true 。这是因为这个变量在这一行中被设置为值 100 ,并且这个值与来自 vidoes.xml 文件的第一个元素值相匹配。
<xsl:variable name="videoId" select="100"/>

如果您再次单击


XSL Debugger 的 Sessions 视图的 Run to a Breakpoint 图标

按钮,那么 <xsl:if test> 元素将返回 false ,因为下一个 VID_ID 值与当前值 100 不匹配。

您可以修改 XSL 或 XML 源代码,然后重新启动 XSL Debugger 来立即看到结果。让我们像下面这样将 videoId 值改为 103 ,然后保存文件。

<xsl:variable name="videoId" select="103"></xsl:variable>

在 Sessions 视图中,选择当前会话并启动弹出菜单(参见图 10)。选择 Relaunch 开始一次新转换。单击


XSL Debugger 的 Sessions 视图的 Open the Browser 图标

按钮在新转换上打开浏览器。您将会看到另一个影片描述。

图 10. 重新启动一个新的调试会话
显示在弹出菜单中选择了 Relaunch 选项的抓屏

结束语
本文描述了如何使用 WebSphere Studio Application Developer 版本 5.0 中的一些新的 XSL 工具。这些工具可以帮助初学者很快就可以开始使用 XSL,并且可以帮助 XSL 程序员中的高手提高工作效率。

WebSphere Studio Application Developer 5.0 中本文未描述的其他与 XSL 有关的工具包括:

  • XSL from XHTML 向导。它根据 XHTML 文件生成 XSL 样式表。如果您想把现有的 HTML 文件迁移到 XSL 和 XML 基础架构中,它还可以把数据转换成 XML 格式(可选)。
  • Java bean XML/XSL Web client 向导。它接受 Java bean,然后生成一个 DOM、一些可以应用于这个 DOM 的关联的 XSL 样式表和一个能够将这些 XSL 样式表应用于该 DOM(这样您便可以使用 XML 和 XSL 快速创建 Web 应用程序的前端)的 servlet。
  • 支持使用 XSLTC的编译后的 XSL 样式表。
  • 帮助您构建和测试 XPath表达式的 XPath 向导。

在本系列的下一篇文章中,我们将讲述如何开发和部署将使用我们在本文中创建的 XSL 样式表的 Web 应用程序。

下载
Name Size Download method
xslExample1.zip 46 KB HTTP

这篇关于XML 和 WebSphere Studio Application Developer - 第 7 部分: 使用 XSL Editor 和 XSL Debugger 开发 XSL 样式表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/171178

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意