导读:上篇博客说了在XML文档中实现表现形式的一种形式:CSS层叠样式表,本篇博客将接着说明其另一种实现方式XSL,并将分析XSL和CSS之间的 关系。

一、XSL简介

XSL(eXtensible Stylesheet Language,可扩展样式表语言):是为XML文档定义的一种标识语言。简单的XML可以被CSS解释,但是面对复杂的高度结构化的XML数据或者是XML文档,则只能依赖XSL极强的格式化的能力而展现给用户。

XSL是包含了一套元素集的XML语法规范,二改语法规范将被用来把XML文档转换为HTML文档。一个XSL样式表集合了一系列设计规则,以用于将信息从XML文档中提取出来。并将其转换为其他格式,例如:HTML。XSL能使web浏览器直接根据用户的不同需求改变文档的表示法,从而不需要再与服务器进行交互通信。XSL介于CSS和SGML的DSSSL(Document style semantics and
specification Language,文档样式语义和规范语言)之间,DSSSL定义格式化对象的全特征模式,但是由于DSSSL使用框架语法,而且特别复杂,并未得到推广。

可扩展样式表语言包括两个部分:转换语言和格式化语言。每种语言都是一种XML应用,转换语言提供定义规则的元素,如何将XML文档转换为另一个XML文档,转换的文档可以使用源文档的标记和DTD,也可以使用一组完全不同的标记。甚至可能使用XSL的格式化对象定义的标记。

二、XSL的编程思想

对于作为表现对象的XML文档,XSL把它看做是一颗由许多节点组成的树,这棵树称为源树。其中的根元素和子元素都是源树的节点。当设计XSL文件来表现XML文档时,从源树中将相应的数据取出,利用这些数据形成一棵新树,称为结果树。

注意:结果树和源树是相互分离的,对结果树中的数据进行操作并不会影响源树中的数据,XSL正是通过这样的方式实现了XML文档的内容和表现形式彻底分离。

组成的结果树,存放在XSL的模板中,通常使用HTML来制作放置结果树的模板,这个模板称作HTML模板。通过设置HTML标记的style属性来定义需要的样式。

XSL思想:设计者编写XSL文件,实际上是在编写某种格式的模板,这个模板将用来存放XML文档提取出的数据,完成由源树构造结果树的工作。

三、XSL和CSS的比较

3.1,CSS:HTML的样式表语言

HTML使用预先确定的标记,所以这些标记的含义都很好理解。比如<P>元素定义一段,<H1>元素定义一个标题。使用CSS向HTML元素增加显示格式是一个简单的过程,很容易告诉浏览器用某种字体或颜色去显示某个元素,浏览器知道如何显示这些元素。

3.2,XSL:XML的样式表

XML不使用预先确定的标记,因此标记的含义并不能被直接理解。比如<table>可以表示一个HTML表格,也可以表示为一个家具,为了显示XML文档,必须有一个机制来描述如何显示文档。这些机制之一是CSS,但是作为XML文档的首选,是XSL。

3.3,XSL:不仅是一个样式表

XSL包含3个部分:

XSLT:一种用于转换XML文档的语言

XPath:一种用于在XML文档中导航的语言

XSL-FO:一种用于格式化XML文档的语言

四、XSL转换XML格式的方式

4.1,客户端

XML文档和相关的样式单都是用户客户端的,然后客户端程序按照样式单中指定的格式变换文档,并将它呈现给用户。

4.2,服务端

服务器将XSL样式单应用于XML文档,以便此文档能够变换成其他格式(通常为HTML),并将变换后的文档发送到客户端程序。

4.3,通过HTML

将原XML文档变换成其他格式后,才把此文档放置在服务器上,服务器和客户程序只处理变换后的文档。

4.4,综述

这三种方法,虽然都使用相同的XML文档和XSL样式,但每一种都使用不同的软件。将XML文档发送到Internet explorer的普通web服务器使用第一种方法。使用IBM alphawork的XML功能将文档应用于与applet兼容的web浏览器使用第二种方法。使用命令行XT程序来将XML文档变换成HTML文档,然后将HTML文档放置在web服务器上,采用的是第三种方法。

注:这三种方法,都使用相同的XSL语言。

五、总结

对于XSL也从整体上了解了,但是CSS之前用过,而这个XSL文档,也就是在之前的例子中,写过一次,还不是很熟练,还需要多加练习。

【HTML/XML 8】XSL,可扩展样式表语言的更多相关文章

  1. XSLT可扩展样式表语言转换 System.Xml.Xsl、XslCompiledTransform类

    XML文件 books.xml: <?xml version="1.0" encoding="utf-8" ?> <bookstore> ...

  2. XML XSD XSL区别与联系

    XML: XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准 ...

  3. XML、XSL、XSLT、DTD、XSD的区别

    前言: 在众神的努力之下,js已经可以跨出浏览器走向不同的领域了 也因为这个,对前端工程师的要求也不仅仅是会写写h5页面做交互.前端涉及的领域越来越广,对开发人员对素质能力要求越高. 以前因设备不同导 ...

  4. 使用 XSLT 作为 HTML 的样式表

    简介 当听到样式表这个词时,您可能会想到 CSS 样式表.XSLT 样式表通常用于 XML 转换,比如在 Web 服务之间映射数据.因为 XSLT 非常适合此用途,所以创建了顶层元素 <styl ...

  5. WebService错误:使用 XSL 样式表无法查看 XML 输入

    在浏览器中输入URL: 'http://localhost/test.aspx'  出现下面错误提示信息: 无法显示 XML 页. 使用 XSL 样式表无法查看 XML 输入.请更正错误然后单击 刷新 ...

  6. 微软BI 之SSIS 系列 - XML Task 中XSLT 样式表转换错误记录

    开篇介绍 此文章专门记录 XSLT 样式表转换过程中的语法问题 错误一 值与属性的倒置 修改了几次样式表,但还是一如既往的报错,报错信息如下: [XML Task] Error: An error o ...

  7. htm,html,xhtml,xml,xsl,dhtml,shtm和shtml的区分

    介绍一下htm,html,xhtml,xml,shtml的区分,以下内容来自百度后的知识整理. HTML和htm: HTML(Hypertext Markup Language)超文本传输语言,是ww ...

  8. XML通过XSL格式化的那点事(XML到自定义节点折叠显示)

    引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又 ...

  9. CSS样式----图文详解:css样式表和选择器

    主要内容 CSS概述 CSS和HTML结合的三种方式:行内样式表.内嵌样式表.外部样式表 CSS四种基本选择器:标签选择器.类选择器.ID选择器.通用选择器 CSS三种扩展选择器:组合选择器.后代选择 ...

随机推荐

  1. Hadoop 2.6.0集群搭建

    yum install gcc yum install gcc-c++ yum install make yum install autoconfautomake libtool cmake yum ...

  2. Markdown 编辑模板

    Hello,我是s1124yy. 名字的由来呢,是因为我QQ前4位是1124,但有的账号不能数字开头,所以就随手打了几个字母,最后就这么叫了.其实我很菜,但是我会努力的~~ 由于看到qsc的博客,所以 ...

  3. [MySQL] 常用SQL技巧--18.5

    1.正则表达式使用 MySQl利用REGEXP命令,提供正则表达式功能. 例子:select 'abcdef' REGEXP '^a'; select 'efg' REGEXP '[^XYZ]'; 2 ...

  4. Linux命令(15)查看系统版本信息

    一,查看Linux内核版本命令(两种方法) 1.cat /proc/version [user@fgejjw7Z home]$ cat /proc/version Linux version -.el ...

  5. mongodb,redis,mysql 简要对比

    本篇内容大部分不是原创,转载的会贴有链接. 准备学习下数据库,想对目前的主流数据库做一个简单的了解分析,就搜集了资料整理到了一块. 当下主流的要数NoSql数据库了,拥有强大的高并发能力. mongo ...

  6. purple-accessData

    ylbtech-class:purple-accessData A, 返回顶部 1,送货时间 #region 送货时间 /// <summary> /// 送货时间 /// </su ...

  7. Python & MapReduce

    使用Python实现Hadoop MapReduce程序 原文请参考: http://blog.csdn.net/zhaoyl03/article/details/8657031/ 下面只是将mapp ...

  8. C语言 段位

    C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为"位段"或"位域" 在结构体中位段的定义格式为: unsignede < ...

  9. C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

    迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...

  10. C++学习18 派生类的析构函数

    和构造函数类似,析构函数也是不能被继承的. 创建派生类对象时,构造函数的调用顺序和继承顺序相同,先执行基类构造函数,然后再执行派生类的构造函数.但是对于析构函数,调用顺序恰好相反,即先执行派生类的析构 ...