基于XSLT的XML文档转换技术

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:wolfop
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:XML因为它在可扩展性和灵活性上的优点以及W3C不遗余力的为它制定各种标准,已经成为Internet上的主要语言。如何对XML文档进行转换以满足不同用户的需要,成为一个非常重要的问题,利用XSLT可以很好的解决这个问题。本文详细描述了基于XSLT转换XML文档的方法,深入讨论其工作原理,并结合一个具体应用实例,进一步阐明了基于XSLT转换XML文档的过程。
  关键词:XML;XSLT;XML转换
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)03-10750-01
  
  1 引言
  
  XML(eXtensible Markup Language)[1]是一种由SGML(Standard Generalized Markup Language)衍生而来的简单的、灵活的文本格式。XML具有这样一些特点和应用:(1)灵活的扩展能力;(2)高度结构化、层次化的数据组织形式;(3)数据与表现形式分离;(4)数据结构的开放性;(5)设计与特定领域相关的标记语言。
  由于XML的各种良好特性,将会有越来越多的数据以XML的格式保存和传输。在很多应用场合中需要把XML文档转换成其他格式的文档。例如,构建网站时需要把XML转换成常见的HTML文档;在电子商务中,企业间通过XML文档交换数据,但在接收数据后就可能先要把XML文件转换成企业内部的数据格式,才能往下处理。
  因为XML的灵活性和无限性,对同一类数据结构,不同人之间、甚至同一个人不同时期设计的XML文档数据层次关系乃至元素命名都会有所不同。因此,XML文档之间同样存在结构转换的问题。解决了这个问题,XML才能更好的作为数据传输通用格式而在各种应用场合得到广泛应用。
  目前存在几种转换XML文档的方法[2]:(1)自己编制程序;(2)利用SAX(Simple API for XML);(3)利用DOM(Document Object Model);(4)基于XSLT。其中基于XSLT方法是当前最重要的方法,也是本文想要讨论的方法。
  
  2 XSLT的概述
  
  XSLT(eXtensible StylesheetLanguage Transformation)错误!未找到引用源。,是W3C正在制定的规范XSL错误!未找到引用源。(eXtensible Stylesheet Language)中的一部分[5],负责XML文档的转换。它详细规定了转换所需要的词汇表和词汇表中的词汇对应的语义。由于XSLT所具有的优异特性,他越来越多地使用在不同XML文档格式转换的场合中:从一种逻辑结构的XML向另一种逻辑结构的XML转换,或是转换为可浏览的HTML文档等。
  XSLT文档本身是格式良好的XML文档,通过使用XML的尖括号标记语法来表示文档的结构,所以在书写时要注意标签的匹配问题。既是XSL的声明语句,也是根元素,必须位于文件的首部,所有的XSLT命令都必须在元素中。利用域名机制把XSLT指令区别于其他的XML内容,样式表中所有指令都必须注明属于“http://www.w3.org/1999/XSL/Transform”这个XSLT专属的域名,一般是以“XSL”作为前缀。XSLT定义了源树和结果树中对应部分的转换规则,即模板规则,由标签标明,它可以说明处理的对象(元素/属性)、处理的方式或是转换的结果。
  
  3 XSLT的工作原理
  
  XSLT转换的基本思路是将XML文档视为一种树结构,转换过程就是从源树生成结果树的过程。结果树与源树是分离的,结果树的结构可以与源树完全不同。创建结果树时,来自源树的元素可以被过滤和重排序,并可以添加任意结构。XSLT定义了源树和结果树中对应部分的模板规则(Template Rules),每条模板规则中包含了一个模板(template),并对应着一种模式(pattern)。模板定义了转换的具体内容,即怎样转换,而模式是一个XPath错误!未找到引用源。表达式,它是模板的一个属性,规定了需要进行转换的元素或属性对象,即在什么情况下需要应用这个模板规则。模式与源树中的元素相匹配,模板被实例化产生部分结果树。例如在XSLT转换样式表片段中,定义了一个模板规则,元素的match属性值”/”是模式的一个实例。它规定模板规则只有在XSLT处理器遇到文档元素结点下的根结点时才被实例化。
  XSLT转换通常涉及三个文档:源文档、目标文档和含有模板规则的文档,即XSLT转换样式表。XSLT转换器以XML文件为输入,利用预先编写好的转换模板(XSLT转换样式表)把它转换成目标文件,如图1所示。其中,目标文件可以是XML文件,也可以是其他格式的文件如HTML,甚至C程序源文件等等。XSLT不依赖于任何一种编程语言,它本身也是一种符合XML规范的标记语言,可以看作XML的一种应用,发挥了XML元语言的特点,而反过来对XML文档进行转换操作。首先,XML源文档被解析成DOM树存放在内存中,接着对文档进行分析,每一个DOM树中的节点都会与一个模式相比较,当二者匹配时,就会按照模板定义的规则进行转换,否则继续往下匹配。如此循环,直到整个文档处理完毕。具体流程如图2所示。
  XSLT按以下规则对源树进行处理,以最终得到结果树。(1)源树中的每一个节点都有可能经处理用来创建结果树片段,此过程是通过模板规则实现的;(2)对源节点列表中的节点按顺序进行处理,产生的结果树片段附加到已产生的结果树中。在创建结果树时,从包含源树根节点的节点列表开始处理;(3)节点的处理需要找到所有匹配本节点的模板,然后按一定规则从中选择一个最佳的模板,被选中的模板将本节点作为当前节点、源节点列表作为当前节点列表进行处理;(4)模板一般通过一个指令来选择一个新的源节点列表继续处理。由于此动作由一个指令完成,因此选择新的源节点列表以及继续处理是不可分的一个步骤;(5)匹配、处理和选择是不断地递归执行,直到没有选择任何新的源节点。模板中选择新的源节点列表来继续处理的指令通过元素定义,并可以通过其select属性选择源节点列表。按照这个规则,XSLT從源树的根节点开始,选择合适的模板来处理根节点。此时根节点被视为为当前节点(current node)。如果此模板中选择了一个源节点列表并继续应用模板,则对此源节点列表中的每个节点顺序处理,重新选择合适的模板来处理此节点,此节点被视为为当前节点,此源节点列表被称为当前节点列表(current node list)。如此递归处理下去,直到没有任何新的源节点被选择。
  
  4 案例说明
  
  本小节通过给出一个实际的例子来详细说明基于XSLT转换XML文档的方法。这个例子实现了从XML文档中提取数据生成一个文本文档。数据以XML文档格式提供,内容如下:
  其中xmns:z为名称空间定义。在Xpath中使用名称空间轴对应处理这些内容,在样式表头声明这些名称空间后,样式表中就可以用相应的名称空间前缀引用相应节点。将源XML文件通过处理得到文本格式文件的过程如图3所示。
  实际使用的样式表内容如下:
  转换结果为一个文本文档,内容如下:
  
  5 结束语
  
  XSLT作为一种操纵XML文档的转换语言有着丰富的命令和函数,利用XSLT技术可以方便地完成对XML文档内容的分析、处理,同时可以将源XML文档转换为多种不同的格式。
  参考文献:
  [1]Jean Paoli, Francois Yergeau. Extensible Markup Language(XML) 1.0[S]. Available at http://www.w3.org/TR/2006/REC-xml-20060816/,16 August 2006.
  [2]李力鴻, 邵敏, 等. XML文档信息的几种转换方法分析与应用实例[J]. 计算机科学, 2003,30(2):40-44.
  [3]James Clark. XSL Transformation (XSLT) Version 1.0 [S]. Available at http://www.w3.org/TR/1999/REC-xslt-19991116/,16 November 1999.
  [4]Anders Berglund. Extensible Stylesheet Language (XSL) Version 1.1[S]. Available at http://www.w3.org/TR/xsl/, 05 December 2006.
  [5]Lionel Villard, Nabil Layaida. An Incremental XSLT Transformation Processor for XML Document Manipulation [A]. In: ACM. Proceedings of the 11th international conference on World Wide Web[C]. ACM Press, 2002,474-485.
  [6]James Clark, Steve DeRose. XML Path Language (XPath) version 1.0 [S]. Available at http://www.w3.org/TR/xpath, 16 November 1999.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:能让网站上的天气预报自动更新,不仅可减轻网站维护的工作量,还可使用户享受到准确、及时的天气服务。该文论述了如何通过开放的、支持多种协议的Windows下的网络编程接口WinSock,用VB编制一套程序,定时自动从中央气象台网站上下载气象信息,用于自己的网站。使访客能及时得到所需的天气信息。  关键词:WinSock;网站;VB  中图分类号:TP311文献标识码:A 文章编号:1009-30
期刊
摘要:本文详细介绍为通过拨号上网的用户分配私有IP地址,再通过路由器NAT技术进行转换,结合AAA技术对拨号上网用户进行身份认证的综合解决方案,在互联网中具有广泛应用空间。  关键词:拨号;NAT;AAA;路由器  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)03-10718-02    1 引言    随着互联网技术的高速发展,互联网用户的数量急剧增加,加快了信息
期刊
摘要:自从八十年代末期简单网络管理协议面世以来,网络管理技术在短短的十几年里得到了突飞猛进的发展,网络管理技术正逐步成为网络构建和维护中必不可少的重要因素。本文主要介绍了Socket通讯原理及其通讯方式[3],并对SNMP协议通信原理进行了论述,最后实现了一种基于Java的SNMP协议的接收和发送报文的Socket通讯。  关键词:SNMP;Socket;同步;异步  中图分类号:TP393.03
期刊
摘要:面向方面编程(AOP)是面向对象编程(OOP)的一种扩展技术,能够很好的解决横切关注点问题,使得大型软件的设计和实现都能保持功能分离,解除代码耦合。采用AOP技术设计的软件,功能划分清晰,代码保持独立,系统维护简单。Spring AOP是AOP技术的一种实现技术。  关键词:Spring;AOP;Java;框架  中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)0
期刊
摘要:Koch分形曲线是分形图形中一种较为典型的平面曲线。本文对Koch分形曲线算法进行深入研究,并把其推广至树形分形曲线、矩形分形曲线等分形图形,实践证明这种算法的执行效率较高。  关键词:分形图形;Koch分形曲线;算法  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10751-02    1 引言    分形图形是计算机图形学中研究的对象之一。因为日常生
期刊
摘要:在相关理论分析和研究的基础上,设计并实现了一个基于纯P2P平台的包含文件共享、远程计算调用以及共享白板的应用。该应用使用数据对等传输,避免了传统传输方式下服务器引发的瓶颈问题,具有良好的共享和协作计算能力。  关键词:P2P;文件共享;远程计算调用;白板  中图分类号:TP317文献标识码:A 文章编号:1009-3044(2007)03-10726-03    1 引言    早期的互联网
期刊
摘要:本文对在Visual C++6.0的MFC程序设计过程中,通过实例形式,给出了三种全局变量和全局函数的三种基本方法。  关键词:MFC;全局变量;全局函数  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10766-02    1 引言    在教授学生使用Visual C++6.0中的MFC基本应用时,由于MFC制作的工程由很多文件构成,它不能象一般C+
期刊
摘要:XPS(XML Paper Specification)格式将是Microsoft Windows Vista中用于电子文档发布的首选格式,是继PDF文件格式之后的一种新的输出文件类型。在微软和各大印刷硬件厂商的支持下,XPS将有望超越PDF成为全球电子文档发布的开放式标准。本文针对XPS文档的几种快速页面处理方法给出了设计方案与实现。  关键词:XPS;页面处理;缩放;旋转;反转  中图分
期刊
摘要:随着因特网的飞速发展以及128位地址的IPV6的出现,路由表变得日益庞大,这给IP目标地址的查找速度提出了更高的要求。 IP地址查询使用的不是精确匹配,而是最长前缀匹配,因查询极其复杂。论文针对现有的IP查询技术的缺点和不足,提出了一种基于多处理器结构的搜索技术,这种技术减少了查找的比较次数和存储空间。  关键词: IP地址搜索;高效路由;多处理器结构  中图分类号:TP393文献标识码:A
期刊
摘要:针对学校数字校园建设的需要,本文提出基于J2EE和工作流技术的办公自动化设计方案。介绍了OA系统的优点,讨论了系统的整体设计目标和在设计时要注意的问题,阐述了系统的整体结构和工作流平台系统的构成。  關键词:工作流;OA;J2EE;工作流引擎  中图分类号:TP317文献标识码:A文章编号:1009-3044(2007)03-10746-02    1 引言    在信息技术飞速发展的今天,
期刊