导读:上篇博客说了在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. 黄聪:MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法(转)

    转自:http://www.cnblogs.com/susuyu/archive/2013/05/28/3104249.html 环境:linux,mysql5.5.21 错误:Host is blo ...

  2. JQuery validate 在IE兼容模式下出现 js错误(成员找不到)的修正:

    JQuery validate 在IE兼容模式下 下出现 js错误(成员找不到)的修正: // Add novalidate tag if HTML5. //this.attr( "nova ...

  3. Report_SRW在RDF中初始化的重要性(案例)

    2015-02-01 Created By BaoXinjian 一.摘要 在开发oracle report(report 6i)的时候,常常会用到fnd_global或fnd_profile来获取当 ...

  4. php 预定义接口

    Traversable Traversable { } 作用:检测一个类是否可以使用 foreach 进行遍历的接口. php代码中不能用.只有内部的PHP类(用C写的类)才可以直接实现Travers ...

  5. vim使用快捷键

    vim使用快捷键 索引 1. 关于Vim 1.1 Vim的几种模式 2. 启动Vim 3. 文档操作 4. 光标的移动 4.1 基本移动 4.2 翻屏 4.3 标记 5. 插入文本 5.1 基本插入 ...

  6. C API 连接MYSQL

    #include <iostream> #include <mysql.h> #include <string> #include <assert.h> ...

  7. C++学习2

    命名空间(Namespace)主要为了避免命名冲突,其关键字为namespace 在多人代码整合过程中常用到: namespace Li{ //小李的变量声明 ; } namespace Han{ / ...

  8. TFS如何设置在客户端独占签出

    步骤:1.打开源代码管理资源管理器,点击“工作区”的下拉框,选择,“工作区”2.选择编辑3.选择“高级”4.进入编辑工作区,tfs中“位置”选项中,默认的时本地,如果想独占签出,这里我们就必须设置成“ ...

  9. buildbot 自动启动

    buildbot的master或者slave,一般配置好了之后, 总希望永久可用,即使机器因为某些原因重启了,也会自动启动. 官网文档不推荐使用root启动master. 而是使用用户级别的cront ...

  10. jQuery.loadTemplate客户端模板

    jQuery.Template虽然用起来没有Mustache简洁和方便,还是学习了解一下,做个笔记. 模板可以定义在页面script标签,如下 <script type="text/h ...