深入XSLT第一章序言—什么是XSL-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

深入XSLT第一章序言—什么是XSL

简介: 序言—什么是XSL XSL是XML的样式表语言CSS:HTML的样式表语言   由于HTML使用预先确定的标记,因此这些标记的含义都很好理解:元素定义一段,元素定义一个标题。

序言什么是XSL

XSLXML的样式表语言
CSSHTML的样式表语言 
  由于HTML使用预先确定的标记,因此这些标记的含义都很好理解:<p>元素定义一段,<h1>元素定义一个标题。浏览器知 道如何显示这些元素。使用CSSHTML元素增加显示格式是一个简单的过程:很容易告诉浏览器用某种特殊字体或颜色来显示各个元素,浏览器也很容易理 解。 

XSLXML的样式表 
  由于XML不使用预先确定的标记(我们可以根据需要使用任意标记),因此标记的含义并不能被直接理解:<table>可以表示一个 HTML表格,也可以表示一件家具。由于XML的特性,浏览器不知道如何显示一个XML文档。为了显示XML文档,必须要有一个机制来描述如何显示文档。 这些机制之一是CSS,但是XSL(可扩展的样式表语言)是XML的首选样式表语言,它要比HTML使用的CSS复杂得多。 

XSL:不仅仅是一个样式表 
  XSL包含3部分:一个转换XML文档的方法; 一个定义XML部分和模式的方法;一个格式化XML文档的方法。 
  如果对此还不能理解,那么可以先将XSL理解成:一种将XML转换成HTML的语言,一种可以过滤和分类XML数据的语言,一种可以对一个XML文档 的部分进行寻址的语言,一种可以基于数据值格式化XML数据的语言(如用红色显示负数),一种向不同设备输出XML数据的语言(如屏幕、纸或声音)。 

XSL是一种WWW标准 
  XSLWWW协会推荐的一种标准。这种语言的前两部分在199911月已经成为W3C推荐标准。2000年,包括XSL格式化部分的完整XSL推荐标准成为W3C的候选标准。 

XSL语言 
  XSL实际上包含三种语言,其中最重要的是XSLTXSL是三种语言的结合体上面提到,XSL实际上包含三种语言,具体是:XSLT是一种转换XML的语言;XPath是一种定义XML部分或模式的语言;XSL格式化对象是一种定义XML显示方式的语言。 
 XSLT是一种用来将XML文档转换成其他类型文档或其它XML文档的语言。XPath是一种对XML文档的部分进行寻址的语言。设计XPath是要让XSLT使用的。格式化是将一个XSL转换的结果变成适于读者或听众使用的输出格式的过程。 
 19991116日,XSLTXPath被作为两个单独的W3C推荐标准发布。目前对于XSL格式化对象还没有单独的W3C文档,但是在XSL1.0推荐标准内有一个描述。 

XSLTXSL转换 
  XSLTXSL标准中最重要的部分,它用于将一个XML文档转换成另一个XML文档或另一种类型的文档,也就是将一个XML文档转换成浏览器所能识别的一种格式。这其中之一就是HTML。通常,XSLT将每个XML元素都转换成一个HTML元素。 
  XSLT还可以向输出文件中增加全新的元素,或去掉一些元素。它可以重新安排这些元素并对元素进行分类,测试并确定显示哪些元素等等。 
  描述这种转换过程的一个常用说法是:XSLXSLT将一个XML来源树转换成另一个XML结果树(或将一个XML源文档转换成另一个XML结果文档)。

XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是: 

XSLT是一种用来转换XML文档结构的语言。 

-------------------------------------------------------- 

CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是: 

(1) CSS不能重新排序文档中的元素; 

(2) CSS不能判断和控制哪个元素被显示,哪个不被显示; 

(3) CSS不能统计计算元素中的数据; 

换句话说,CSS只适合用于输出比较固定的最终文档。CSS的优点是简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。 

因此,我们常常将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章