导读:上篇博客说了在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. Spark作业调度

    Spark在任务提交时,主要存在于Driver和Executor的两个节点. (1)Driver的作用: 用于将所有要处理的RDD的操作转化为DAG,并且根据RDD DAG将JBO分割为多个Stage ...

  2. 2.Could not open Selected VM debug port (8700). Make sure you do not have another instance of DDMS or of the eclipse plugin running

    在eclipse.ini配置文件最后加上:-Djava.net.preferIPv4Stack=true 其他类似

  3. 【转】H264编码原理以及I帧B帧P帧

    前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以 ...

  4. ALITUM DESIGNER 多PIN脚IC元件封装的制作

    多IC芯片的管教众多,一个一个的添加引脚效率较低,网上有好的方法,现总结如下 1 在元件库.schlib中新建元件,画出框图和添加第一个PIN脚 2利用smart paste快速放置众多PIN脚(具体 ...

  5. haxm intelx86加速模拟器的安装

    http://blog.csdn.net/huang9012/article/details/18082601 如果安装了还出现 创建模拟器 选项 CPU/abi的时候还出现 no system im ...

  6. spring外部化配置

    例如 <bean id="dataSource" class="....." p:username="aa" p:password=& ...

  7. web.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...

  8. 运行测试Caused by: java.lang.UnsatisfiedLinkError: no attach in java.library.path错误解决

    解决办法:看到错误里面有个Caused by,说我的jdk运行到了32位的了,于是我查看环境变量,发现是昨天设置成32位的没有设置回来,于是设置回64位的jdk就ok了

  9. oracle 游标笔记

    declare v_x number; v_y number; v_geo clob; cursor cur is select c_x, c_y from t_map_data where c_ty ...

  10. NOIP201305转圈游戏

    2016.1.25 试题描述 有n个小伙伴(编号从0到n-1)围坐一圈玩游戏.按照顺时针方向给n个位置编号,从0到n-1.最初,第0号小伙伴在第0号位置,第1号小伙伴在第1号位置,……,依此类推.   ...