使用Dreamweaver创建XSL[china_zhao整理]

本章将详细地介绍如何使用Dreamweaver 4创建XSL来表现XML、使用XSL处理程序、XSL模式语言、XSL查询语言等内容。
CSS适用于那些元素顺序不变的文件。对于那些需要经常按不同元素排序的文件,必须要用XSL。XSL较CSS更强大, 因为它使Web建造者创建可以动态改变其表现的文档。例如可以包含这样的程序语句:“如果一个XML元素的属性为数值5,则显示为黄色,否则为绿色”。
XSL包括变换语言(transformation language)和格式化语言(formatting language)。每种语言都是一个XML应用程序。变换语言提供定义规则的元素如何将XML文档变换成另一个XML文档,被变换的XML文档可能使用原文档的标记和DTD,或者使用一组完全不同的标记。
7.1? XSL概述
在本节中将讲述一些XSL的基本知识,如XSL的优越性、XSL是如何工作的,以及XSL的组成等。
7.1.1? 为什么要使用XSL
XSL(Extensible Stylesheet Language,可扩展样式语言)是为XML文件定义的一种标识语言,它将提供远远超过CSS的强大功能,如将元素再排序等。实际上简单的XML已能被CSS所解释,然而复杂的高度结构化的XML数据或XML文档则只能依赖于XSL极强的格式化能力展现给用户。
XSL已包含一套用来把XML文件变换成HTML文件或XML文档的XML语法规范。XSL替换部分能够将一个标记替换为另一个标记。通过定义替换规则,使用标准的HTML标记代替XML标记或者使用HTML标记与CSS属性来替换XML标记。同时还可以在文档中重新安排元素和在XML文档中添加没有出现过的附加内容。
XSL格式化部分把功能强大的文档视图定义为页面。XSL格式化功能能够指定页面的外观和编排,包括多个专栏、围绕主题的字数、行间距、相配的字体属性等。它的功能非常强大,足以为网络和打印自动处理来自于相同源文档的编排任务。例如,XSL格式化允许包含有Show Times(在线播放)和广告的XML文档生成本地报纸上电视节目单的打印及在线版本。因此,尽管XSL是一项新的标识语言,但程序员完全可以继续充分发挥其所熟练的HTML或脚本语言的优势。XSL凭借其可扩展性,能够控制无穷无尽的标签,而控制每个标签的方式也是无穷尽的,这就给Web提供了高级的布局特性。例如旋转的文本、多列和独立区域。它支持国际书写格式,可以在一页上混合使用从左至右、从右至左和从上至下的书写格式。
XSL能使Web浏览器直接根据用户的不同需求改变文档的表示法,例如数据的显示顺序改变,从而不需要再与服务器进行交互通信。通过变换样式表,同一个文档可以显示得更大,或者经过叠折只显示外面的一层,或者变为打印格式。可以设想一个适合用户学习的技术手册,它为初学者和更高一级的用户提供不同的样式,而所有的样式都是根据同样的文本产生的。
微软最近发布了两种XSL处理器,一个是可以从XML文档和XSL样式层产生HTML输出的命令行应用程序,另一个是一种ActiveX控件,用于在浏览器中显示XML。微软的这种XSL处理器适合在Windows 95,Windows 2000和Windows NT环境下通过Internet Explorer 4.0浏览器使用。
IBM公司及其Lotus子公司日前发布了XSL的原型,这是一个能将XML格式变换成HTML或其他Web格式的变换引擎,可在WWW.alphaworks.ibm.com免费下载。这个变换引擎称为Lotus XSL,基于WWW联合会最新的XSL工作草案完成的。除了能将XML文档变换成HTML外,XSL还能将XML变换为PGML(Precision Graphics Markup Language,精确图形描述语言)。如果电子商务中用XML表示产品数据,用户可以使用XSL定义网站中数据的格式以及信息图形显示方式等。Lotus XSL打包成一个JavaBean,用户可用Lotus XSL创建样单,定义变换方式,就可将文档变换为相应的格式,供浏览器显示。
7.1.2? XSL是怎样工作的
XSL处理器把XML源文件通过XSL检验后产生一个HTML表现文件,这样XML源文件就在网络浏览器上有了表现。其实最终的目标并不只是产生HTML文件,而可以是各种各样的文件,比如TXT,RTF等。XML源文件中有下面一行“<?xml-stylesheet type="text/xsl" href="test.xsl">”,用以指明它的style sheet文件类型与位置。每一个XSL文件都包含了Template Rules(匹配模板规则)的集合。Template Rules包含有两个部分:Patterns和Actions。
Patterns用以指出这个规则适用于那一个元素,Actions指出这个元素以及它的子元素要怎样展现。这样一来XML源文件中的结构树就被变换成了一个Flow Objects(流程产物)树。
7.1.3? XSL的组成
XSL由以下三个模块组成。

  1. XSL模式(XSL Pattern)。
  2. XSL定义一种“模式”句法标识XML文档中的节点,这项功能类似于SQL中WHERE语句。
  3. XSL名域(XSL Namespace)。

XSL的变换部分能表达为一个XML名域,它控制将查询结果具体化为一个XML文档。XSL格式化的功能可以用一个XML的语法文件来表达。XSL模式句法还比较简洁,不能提供强大的查询能力。它参照了目录导航的方法,作为一种基于字符串的语法,它能够在属性值、脚本语言和URL中定位。“XSL”名域定义了一套命令集合,实现将查询结果具体化为XML。一个XSL文档包括XSL名域中规定的元素,它们可能是以下一些。
(1)定义构造部分输出的模块。
(2)对来自XML源文件中的数据应用模板。
(3)将该模板结合查询。
(4)将一套这样的查询-模板结合进行组合,用于内部或者递归处理。
(5)将查询结果进行过滤和排序。
7.2? 使用Dreamweaver创建简单的XSL
在本节中,通过一个具体的实例来讲述如何使用Dreamweaver创建简单的XSL来表现XML文档,以及按一定的规则对XML数据进行排序等内容。
通过前面章节的学习,可以清楚地知道每个结构整洁的XML文档都是树形结构。树形结构是一种数据结构,它是由连接起来的节点(node)组成的,这些节点起始于一个称为根节点(root)的单节点。根节点连接它的子节点,每个子节点可以连接零个或多个它自己的子节点,依次类推。没有自己的子节点的节点称为叶节点(leave)。树形结构的图表更像家谱,列出各个先辈的后代。树形结构最有用的特征是每个节点及其子节点也会形成树形结构。因此,一个树形结构就是所有树形结构的分级结构,在此分级结构中,各树形结构都是由更小的树形结构建立的。
XML树形结构的节点就是元素及元素的内容。但是,对于XSL,特性、命名域(namespace)、处理指令以及注释必须也作为节点看待。而且文档的根节点必须与根(基本)元素区别开来。因此,XSL处理程序假定XML树形结构包含下列七类节点:根节点、元素、文本、特性、命名域、处理指令、注释。
XSL变换语言通过将XML树形结构变换成另一个XML树形结构来操作。这种语言含有操作符,此操作符用来从树形结构中选择特定节点、对节点重新排序以及输出节点。如果有一个节点是元素节点,那么它本身可能就是整个树形结构。所有的用于输入和输出的操作符都只能操作一个树形结构,它们不是用于变换任意数据的通用的正常表达语言。
7.2.1? 使用Dreamweaver生成和组装模板
XSL文档包含一组模板规则及其他规则。模板规则拥有模式(pattern)以及模板(template),模式用来指定模板规则所适用的树形结构,而模板是用来在与此模式匹配时进行输出。当XSL处理程序使用XSL样式单来格式化XML文档时,它对XML文档树形结构进行扫描,依次浏览每个子树形结构。当读完XML文档中的每个树形结构时,处理程序就把它与样式单中每个模板规则的模式进行比较。当处理程序找到与模板规则的模式相匹配的树形结构时,它就输出此规则的模板。这个模板通常包括一些标记、新的数据和从原XML文档的树形结构中复制来的数据。
XSL使用XML来描述这些规则、模板和模式。XSL文档本身也是xsl:stylesheet元素,每个模板规则都是xsl:template元素。规则的模式是xsl:template元素的match特性值。输出模板是xsl:template元素的内容。模板中所有的指令都是由一个或另一个XSL元素来完成的,而这些指令是来完成某种动作,如选择输入树形结构中要包括在输出树形结构的部分。这些由元素名上的xsl:前缀来标识,没有xsl:前缀的元素为结果树部分。
首先来看一个实例,其具体的操作步骤如下:
(1)启动Dreamweaver 4,新建一个文档,然后单击工具栏上的图标,切换到代码视图窗口,在该窗口中输入如下代码:
<?xml version="1.0"? encoding="gb2312" ?>
<bookInformation xmlns:dt="urn:schemas-microsoft-com:datatypes">
<book>
<title> Dreamweaver 4 动感网页设计教程</title >
<author>高萍</author>
<press>科学出版社</press>
<price dt:dt="number">29.00</price>
<resume >本书全面细致地介绍了Dreamweaver4的功能。全书分为两大部分。前半部分结合典型实例讲解Dreamweaver4的基本功能,从网页的布局排版、软件的基本操作到站点管理,涵盖了网页设计人员所必需的基本知识和基本技能。后半部分是综合实例,利用Dreamweaver4功能进行综合练习的同时,针对Dreamweaver4在Javascript、扩展功能方面的一些不足,从源代码编辑方面略做补充。
</resume >
</book>

? <book>
<title>精通 Visio 2000</title>
<author>郑乔予 </author>
<press>科学出版社</press>
<price dt:dt="number">54.00</price>
<resume >本书是一本由入门到精通Visio 2000书籍,内含标准版、专业版与企业版的所有功能介绍,以StepByStep的方式引导读者进人Visio 2000的殿堂,从认识Visio 2000开始,逐项介绍图形编辑、自定义模板、编辑图件清单、数据库、Office、lnternet的整合应用等,一应俱全。本书适合计算机专业人员、大中专学生、计算机爱好者等各方面人士。
</resume >
</book>

? <book>
<title> Flash 5 白皮书</title>
<author>张仁川</author>
<press>科学出版社</press>
<price dt:dt="number">61.00</price>
<resume>本书以精美的实例,向读者介绍Flash 5的各种功能和操作技巧。图文对照、版式活泼是本书的重要特点,作者精心制作的实例定能引导您进入Flash的动画世界。
</resume>
</book>

?<book>
<title>概率论与数理统计</title>
<author>王展青</author>
<press>科学出版社</press>
<price dt:dt="number">15.00</price>
<resume>本书讲述了概率论与数理统计的基本知识,内容包括随机事件及其概率、随机变量及其概率分布、随机变量的数字特征、样本及抽样分布、参数估计、假设检验、线性回归分析与方差分析、SAS软件应用等.各章都有适量例题及习题,并附有课外阅读材料,书末附有习题参考答案及各种统计表.
</resume>
</book>

<book>
<title> Photoshop 高级应用技巧</title>
<author>王炜</author>
<press>科学出版社</press>
<price dt:dt="number">26</price>
<resume>本书以生动、翔实的实例介绍了应用Photoshop5.0进行高级图象处理的方法,使读者从实例人手,轻松掌握Photoshop5.0的精髓和应用技巧。本书共分十一章,第一章介绍了进行图象处理的基本理论;第二、三、四、五章从典型实例入手,以实际创作的方法向读者展现了Photoshop的关键技术和使用技巧;第六章、第七章利用滤镜对图象进行特殊效果处理;第八章。第十一章综合运用本书的高级技术,创造出几个典型实例,引导读者进入栩栩如生的图象世界。
</resume>
</book>
</bookInformation >
(2)选择File|Save命令,将此文件保存为7book1.xml。
(3)通过以上源代码可以看出,本实例的数据是有规则的重复,book的元素结构是作为相同的子元素而被不断重复若干次。bookInformation将会按照每本书独占一行,每一行包括title、author、price和resume的单元格的形式在一个表格中显示出来。首先该使用Dreamweaver 4创建一个HTML元素模板,用于显示这样一个表格。选择File|New命令,新建一个文档。
(4)在文档窗口中输入“科学出版社书讯”,并通过对应的属性设置面板,设置该段文本居中放置、蓝色、字体大小为5、加粗。
(5)选择Insert|Table命令,在文档窗口中插入一个2行5列的表格。
(6)在第一行的5个单元格中分别输入“书名”、“作者”、“价格”、“出版社”、“摘要”。
(7)为了使用从XSL文件中得到的数据来组装这个模板,可以人工地插入XML文件中得到的数据,这恰是XSL执行的基本过程。从XSL命名域而来的元素被用于定位XML文件中的数据,以及把它插入HTML模板:
<HTML>
<BODY>
<p align="center"><font size="5" color="#0000FF"><b>
科学出版社书讯</b></font></p>
<TABLE BORDER="2">
<TR>
<TD>书名</TD>
<TD>作者</TD>
<TD>价格</TD>
<TD>出版社</TD>
<TD>摘要</TD>
</TR>
<xsl:for-each select="bookInformation/book" order-by="price">
<TR>
<TD><xsl:value-of select="title"/></TD>
<TD><xsl:value-of select="author"/></TD>
<TD><xsl:value-of select="price"/></TD>
<TD><xsl:value-of select="press"/></TD>
<TD><xsl:value-of select="resume"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>

 


[下一页]