xml基本语法描述(如何应用XMLXSLT)
xml基本语法描述(如何应用XMLXSLT)读者也许还会有许多的疑问,比如为什么要多此一举?请读者保持耐心,继续往下阅读。但由于本文章的篇幅有限,读者如果需要详细了解和学习XML、XSLT和XHTML等相关的语法、技术和应用等,可以参考作者的《J2EE Web核心技术——XHTML与XML应用开发》一书中相关章节内容。基于XML语言及应用技术的XSLT(Extensible Stylesheet Language Transformations,扩展样式表转换语言)的主要作用是将XML由一种格式转换为另一种格式(当然,也可以为其它格式,如HTML网页,纯文字等),而在J2EE Web应用系统的开发实现中,应用XSLT技术能够实现将XML格式的源文档通过转换引擎并按照XSL(eXtensible Stylesheet Lanaguage,扩展样式表语言)模板的格式最终转换输出目标HTML格式的文档。如下示例图中的代码为某个XSLT文档
软件项目实训及课程设计指导——如何应用XML XSLT技术分离Web表示层数据和样式1、"XML XSLT"技术在J2EE技术平台中的应用
Java语言及相关的应用技术的产生解决了跨平台的软件应用系统的开发,但没有解决如何实现跨平台的数据交换问题。在传统的软件应用系统中,为了能够实现在不同的系统平台之间交换数据、同时还要保证数据的完整性,是相对比较麻烦的一件事情。
基于此应用的目的和要求,诞生了XML(eXtensible Markup Language,可扩展标记语言)技术。应用XML语言可以实现软件应用系统中的"内容"与"表现"相互分离,并且XML还是一种可扩展的标签语言。
如下示例图中的代码为一个定义学生信息的XML格式文档示例,读者从此示例中可以了解到XML格式文档只定义数据内容(或者应用系统处理的最终结果),而这些数据或者结果最终在什么终端设备显示、以及以什么风格显示都没有定义。
基于XML语言及应用技术的XSLT(Extensible Stylesheet Language Transformations,扩展样式表转换语言)的主要作用是将XML由一种格式转换为另一种格式(当然,也可以为其它格式,如HTML网页,纯文字等),而在J2EE Web应用系统的开发实现中,应用XSLT技术能够实现将XML格式的源文档通过转换引擎并按照XSL(eXtensible Stylesheet Lanaguage,扩展样式表语言)模板的格式最终转换输出目标HTML格式的文档。
如下示例图中的代码为某个XSLT文档文件的内容,其中包含有<xsl:stylesheet>、<xsl:template>等标签,同时在<xsl:template></xsl:template>标签内包含有一个完整的HTML文件所应该具有的标签。这些标签都起什么作用?源XML文档最终在浏览器中的显示结果如何?
由于XSLT文档文件本身也是一个 XML格式的文档,因此它也总是由如下的XML声明语句起始:<?xml version="1.0" encoding="gb2312"?>
但由于本文章的篇幅有限,读者如果需要详细了解和学习XML、XSLT和XHTML等相关的语法、技术和应用等,可以参考作者的《J2EE Web核心技术——XHTML与XML应用开发》一书中相关章节内容。
读者也许还会有许多的疑问,比如为什么要多此一举?请读者保持耐心,继续往下阅读。
2、XSL技术概述及在J2EE系统平台中的应用
(1)XSL是什么
XSL就是可扩展样式表语言(eXtensible Stylesheet Lanaguage),XSL是参考SGML(Standard Generalized Markup Language,标准通用标记语言)中的DSSSL(Document Style Semanticsand Specification Language 文档样式语义和规范语言,它主要是用来设置SGML的表现样式)而设计的。
(2)为什么要提供XSL技术
尽管"CSS Div"能够为Web应用系统的页面开发人员分离Web页面中的结构和风格,从而实现分离Web页面中的数据和表现。但如果其中的数据是采用XML格式表示,此时如果再继续采用CSS层叠样式表技术来为该XML格式文档数据设置表现样式,由于CSS层叠样式表采用的是与XML完全不同的一套语法规则定义,无法使用相同的XML解析器进行处理和解析,这为软件应用系统项目开发带来了许多额外的负担。
最初设计XSL的主要目的就是希望采用XML格式的语法规则提供一种为XML文档设置表现样式的新方法。而CSS的主要问题是由于没有逻辑控制的能力——CSS不能重新排序文档中的元素、也不能判断和控制哪个元素被显示、哪个不被显示、当然也不能统计计算元素中的数据等功能要求。
因此CSS层叠样式表技术一般只适合用于输出固定内容的最终Web页面文档,但CSS层叠样式表技术的主要优点是简洁、消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗系统内存量比较多。
在企业级的软件应用系统开发中,一般常常将CSS和XSLT两者相互结合使用。比如在Web服务器端用XSLT处理相关的文档,而在客户端则用CSS层叠样式表技术来控制数据在浏览器端的最终显示风格,这样的设计方案能够大大地减少响应时间。
3、XSL技术主要包括两个组成部分
XSL技术主要包括两个组成部分:XSLT(eXtensible Stylesheet Language Transformation)和XSL-FO(XSL Formatting Object)。
其中的XSLT主要是实现转换XML格式的文档,而XSL-FO主要是格式化XML文档。其中XSL-FO的作用就类似CSS层叠样式表技术在HTML页面中的作用,但作者在本文中重点为读者介绍XSLT相关的技术及应用。
因此,XSL从本质上可以看着为是一种可以将XML转化成其它类型语言的语言、一种可以过滤和选择XML数据的语言、一种能够格式化XML数据的语言。
4、XSLT主要是面向转换类型的应用
XSLT的主要作用是将XML文档数据内容由一种格式转换为另一种格式——比如,将XML格式的文档转换为HTML/XHTML(或者WML)等格式的文档是目前XSLT应用最为广泛的应用领域。
为什么要应用XSLT及相关的技术?因为XML格式的数据文档能够便于交换但不便于人类的阅读和理解、特别是机器自动化地阅读。因此如何能够按照人类的要求显示XML格式文档中的数据?如何实现将同一个XML格式文档中的数据在不同的显示平台中显示输出?
5、XSLT数据格式转换的基本实现原理
数据格式转换的重要思想是要把XML格式文档视为一种树形结构,转换的过程其实就是从源XML格式文档树生成结果树的过程。其中的XSL样式单定义了源XML格式文档树和结果树中对应部分的转换规则,在每条规则中包含了一个模板,并对应着一种模式——模板定义了转换的结果和转换的基本规则,而模式则规定了需要进行转换的元素或属性对象。
6、XSLT数据格式转换的实现过程
首先,将XML格式文档转换为DOM(Document Object Model,文档对象模型)树结构,这主要是利用XSLT来实现——XSLT处理器首先要做的是通过XML解析器(比如DOM或SAX)技术读取XML格式文档中的各个标签和数据,并将XML树状结构重新整理和组合产生出一个临时的树状结构,这个树状结构称为XML文档结果树。
其次,再对转换后的DOM树进行格式化并转换为其它的目标形式,这主要是利用XSL-FO来实现。XSL处理程序将这些数据转换(也就是格式化过程)为另一种格式良好的XML文件(如:WML、HTML、VoiceXML等)。
目前在微软IE浏览器中已经内嵌有实现这个转换过程的XML处理器程序。欢迎读者继续阅读作者的另一篇文章《软件项目实训及课程设计指导--应用XML XSLT技术分离Web表示层数据和样式示例》可以详细学习和了解如何在软件应用系统开发中应用XML XSLT技术。
7、应用XSLT实现对XML格式文档中的数据转换和合并的应用示例
为了能够让读者对"XML XSLT"技术在企业级软件应用系统开发中的应用有感性的认识,作者在下文中给出一个典型示例加以说明。
在下面示例中的XML格式文档中的"学生信息"节点中有多个"班级"节点,可以通过XSLT中的<xsl:for-each>标签把这些节点数据在一个表格单元格中显示出来,从而产生出合并数据的应用效果。当然,也可以实现其它的应用效果,读者可以自行实现。
(1)示例中所对应的XML格式文档
该XML文档文件名称为student.xml,其中在<?xml-stylesheet?>标签中通过href属性指定对应的XSLT文件,该文件名称为student.xsl。
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<?xml-stylesheet type="text/xsl" href="student.xsl" ?>
<软件学院学生信息>
<学生信息 性别="男">
<姓名>张三</姓名>
<出生日期>1987/10/18</出生日期>
<专业>软件工程</专业>
<班级 方向="J2EE软件开发">软件1班</班级>
<班级>9教东201</班级>
</学生信息>
<学生信息 性别="女">
<姓名>李四</姓名>
<出生日期>1988/2/18</出生日期>
<专业>软件工程</专业>
<班级 方向="数字媒体方向">软件2班</班级>
<班级>9教东202</班级>
</学生信息>
</软件学院学生信息>
(2)示例中的XML文档所对应的XSLT文档(student.xsl) 文件
在student.xsl 文件中应用了XSL语言中的一些标签,而XSLT文件中的标签语法大致可分为如下的三种类型:
1)选择模式,如<xsl:for-each>、<xsl:value-of>和 <xsl:apply-templates>等标签,这些选择模式的标签语句将数据从XML文档中提取出来,是一种简单获得数据的方法。在这些标签中都有一个select属性,选取XML文档中特定的节点名的数据。
2)测试(识别)模式,如<xsl:if> 和<xsl:when>等标签,类似于编程语言中的条件语句,主要是用于条件判断和识别等用途。
3)匹配模式,如<xsl:template>标签,它用于构建和定义一个模板。该标签中的match 属性主要是用于关联 XML文档中的标签元素和转换模板,但match 属性的值是 XPath (XML Path Language,XML路径语言)表达式(比如match="/" 则是定义整个XML格式文档);位于<xsl:template> 标签元素内部的内容则定义了写到输出结果的 HTML标签代码。
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>XX交通大学软件学院学生信息</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="软件学院学生信息">
<h3>下面为XX交通大学软件学院学生信息表</h3>
<table border="1">
<th>姓名</th>
<th>性别</th>
<th>出生日期</th>
<th>专业</th>
<th>班级</th>
<th>专业方向</th>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="学生信息">
<tr>
<td><xsl:value-of select="姓名"/></td>
<td><xsl:value-of select="@性别"/></td>
<td><xsl:value-of select="出生日期"/></td>
<td><xsl:value-of select="专业"/></td>
<td>
<xsl:for-each select="班级">
<xsl:value-of />
</xsl:for-each>
</td>
<xsl:apply-templates/>
</tr>
</xsl:template>
<xsl:template match="班级">
<td><xsl:value-of select="@方向"/></td>
</xsl:template>
</xsl:stylesheet>
在student.xsl 文件中应用了<xsl:apply-templates> 标签元素产生模板嵌套的应用效果,因为<xsl:apply-templates> 标签元素可把一个模板应用于当前的标签元素或者当前标签元素的子节点中。
如果向 <xsl:apply-templates> 标签元素添加一个 select 属性,则此标签元素就会仅仅处理与由其select 属性所定义的XML标签中属性值相匹配的XML标签元素,从而可以过滤XML标签。
(3)本示例在Web浏览器中最终执行的结果
如何应用CSS Div分离Web表示层数据处理逻辑和展现逻辑
如何应用策略设计模式分离JDBC数据库连接中的外部环境信息
如何应用策略设计模式的思想设计通用的数据库连接类
如何正确地创建和销毁软件应用系统中JDBC数据库连接对象实例
如何应用观察者设计模式重构系统中日志处理功能实现的程序代码