第五章 XSL介绍
- 格式:ppt
- 大小:193.50 KB
- 文档页数:46
1.1通过代码实例跟我学XML XSLT相关的应用技术——XSL和XSLT相关的应用技术1.1.1XSL 相关的应用技术概述1、XSL(1)XSL是什么XSL就是可扩展样式表语言(eXtensible Stylesheet Lanaguage),XSL是参考SGML中的DSSSL(用来设置SGML的表现样式)而设计的。
(2)为什么要提供XSL技术最初设计XSL的目的就是采用XML格式提供一种为XML文档设置表现样式的新方法。
虽然也可以使用CSS来为XML文档设置表现样式(而且CSS还是非常成熟的一套规范,拥有大量的优点),但是CSS所采用的是与XML不同的一套语法,无法使用相同的XML解析器来进行处理,这为开发带来了额外的负担。
(3)XSLT和CSS的比较由于在一般的应用中,采用CSS同样可以格式化XML的文档,那么有了CSS后为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是:1)CSS不能重新排序文档中的元素;2)CSS不能判断和控制哪个元素被显示,哪个不被显示;3)CSS不能统计计算元素中的数据;换句话说,CSS只适合用于输出比较固定的最终文档。
CSS的优点是简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。
因此,我们常常将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。
可以减少响应时间。
2、XSL由两部分组成后来W3C发现制定XSL规范的工作量实在太大,就将整个工作分成了两个部分:(1)XSLT(XSL Transformations)------转换XML文档(2)XSL-FO(XSL Formatting Object)------格式化XML文档。
我们可以这样理解XSL:XSL是一种可以将XML转化成其它类型语言的语言,一种可以过滤和选择XML数据的语言,一种能够格式化XML数据的语言。
XSL简明教程一、XSL入门1.XSL---XML的样式表HTML网页使用预先确定的标识(tags),这就是说所有的标记都有明确的含义,例如<p>是另起一行<h1>是标题字体。
所有的浏览器都知道如何解析和显示HTML网页。
然而,XML没有固定的标识,我们可以建立我们自己需要的标识,所以浏览器不能自动解析它们,例如<table>可以理解为表格,也可以理解为桌子。
由于XML的可扩展性,使我们没有一个标准的办法来显示XML文档。
为了控制XML文档的显示,我们有必要建立一种机制,CSS就是其中的一种,但是XSL(eXtensible Stylesheet Language)是显示XML文档的首选样式语言,它比CSS更适合于XML。
2.XSL --- 不仅仅是一种样式表XSL由两部分组成:一是转化XML文档;二是格式化XML文档。
如果你不理解这个意思,可以这样想:XSL是一种可以将XML转化成HTML的语言,一种可以过滤和选择XML数据的语言,一种能够格式化XML数据的语言。
(比如用红色显示负数。
)3.XSL --- 它能做什么?XSL可以被用来定义XML文档如何显示,可以将XML文档转换成能被浏览器识别的HTML文件,通常的,XSL是通过将每一个XML元素"翻译"为HTML元素,来实现这种转换的。
XSL能够向输出文件里添加新的元素,或则移动元素。
XSL也能够重新排列或者索引数据,它可以检测并决定哪些元素被显示,显示多少。
4.XSL在IE5中的显示注意:IE5.0中,并不能完全兼容W3C组织发布的最新XSL标准。
因为IE5.0是在XSL 标准最终确定以前发布的。
微软已经承诺在IE5.5中修正。
二、XSL的转换1.将XML转换成HTMLXSL是如何将XML文档转换成HTML文件的呢?我们来看一个例子,下面是XML 文档的一部分:<?xml version="1.0" encoding="gb2312"?><Persons><Person><Name>吴冠晖</Name><Nick>wgh</Nick><Mobile>130XXXXXXXX</Mobile><Tel>XXXXXXXX</Tel><Email>wghvideo@</Email><QQ>710061</QQ><Company>XXX</Company></Person></Persons>然后我们将下面的XSL文件作为HTML的模板将XML数据转换为HTML文件:<?xml version="1.0" encoding="gb2312"?><xsl:stylesheet xmlns:xsl="/TR/WD-xsl"><xsl:template match="/"><html><body><table align="center" width="780" cellspacing="1" cellpadding="2" border="0"bgcolor="#666600"><tr class="title" bgcolor="#E5E5E5"><td>姓名</td><td>英文名</td><td>手机</td><td>电话</td><td>Email</td><td>QQ</td><td>所在公司</td></tr><xsl:for-each select="/Persons/Person"><TR BGCOLOR="#FFFFFF"><TD STYLE="color:#990000"><xsl:value-of select="Name"/></TD><TD><xsl:value-of select="Nick"/></TD><TD><xsl:value-of select="Mobile"/></TD><TD><xsl:value-of select="Tel"/></TD><TD><xsl:value-of select="Email"/></TD><TD><xsl:value-of select="QQ"/></TD><TD><xsl:value-of select="Company"/></TD></TR></xsl:for-each></table></body></html></xsl:template></xsl:stylesheet>在上面的代码中,xsl:for-each元素的作用是定位XML文档中的哪些元素需要按以下模板显示。
跟我学XSL(一)——第一个XML文檔随着Internet的发展,越来越多的信息进入互联网,信息的交换、检索、保存及再利用等迫切的需求使HTML这种最常用的标记语言已越来越捉襟见肘。
HTML将资料内容与表现融为一体,可修改性、资料可检索性差,而XML借鉴了HTML与数据库、程序语言的优点,将内容与表现分开,不仅使检索更为方便,更主要的是用户之间资料的交换更加方便,可重用性更强。
XML是一种元标记语言,没有许多固定的标记,为WEB开发人员提供了更大的灵活性。
当我们使用HTML时,标记只是简单的表示内容的显示形式,而与表示的内容没有任何关联,为文档的进一步处理带来极大的不便。
比如要表示个人简历,用HTML的表示方式如下:<HTML> <BODY> <TABLE border=1 cellspacing=0> <TH>姓名<TD>禹希初<TH>性别<TD>男<TH>生日<TD>1977.5 <TR> <TH>技能<TD colspan=5>数据库设计与维护、WEB开发 </TABLE> </BODY> </HTML>在这里,我们无法从标记TH、TD得知其内容表示什幺,如果用XML,相应的文档(文件名:个人简历.xml)就可写成如下形式:<?xml version="1.0" encoding="GB2312"?> <resume> <name>禹希初</name> <sex>男</sex> <birthday>1977.5</birthday> <skill>数据库设计与维护、WEB开发</skill></resume>说明:version──规定了XML文档的版本,此处只能是1.0;encoding──此处规定了XML文文件的编码类型,此处取值为“GB2312”,也就是“简体中文”。
Xsl模板应⽤基础(⼀、介绍)Xsl 的全称是 eXtensible Stylesheet Language,它是专门⽤于以可读格式呈现Xml数据的语⾔。
它能把Xml数据转换为任意形式的⽂本数据,如Html、Xml、Json、C#、Sql语句等。
由于Xsl是 Xml 语⾔的⼦集,因此 Xsl 的书写格式也必须符合Xml的标准。
它继承了Xml语⾔的中⽴性,不偏向任何⼀种编程语⾔,各⼤编程语⾔也对Xsl有良好的⽀持。
甚⾄可以这样说,Xsl⼀次编写,到处运⾏。
Xsl ⽬前最新版本是 2.0,但是2.0并没有⼴泛普及开来,.Net framework 还没有找到Xsl 2.0的影⼦。
得益于其强⼤的扩展能⼒,从过往⼏年的使⽤过程中我感觉1.0版本也⾜够使⽤。
本系列的⽂章主要是在1.0的基础上做演⽰与讲述。
Xsl 的语法⾮常简单,内置函数也很少,Visual Studio 与 Dreamweaver 也都有语法提⽰, 因此,对照教程敲⼀敲代码⼤概半天时间就能上路应⽤Xsl了。
下图是Xsl应⽤时的流程图:各种编程语⾔都有⾃⼰的XML处理器,负责使⽤Xsl格式化Xml数据,得到最终结果。
转换过程还⽀持传⼊两种参数,既能传⼊实体数据(⽂本、数字、Xml节点),还能传⼊⽅法引⽤,⽐如把C#的⽅法传⼊,供Xsl语⾔调⽤,这在后⾯的⽂章会有提及。
下⾯建⽴student.xml与student.xsl两个⽂件来做展⽰。
student.xml:1<?xml version="1.0" encoding="utf-8"?>2<?xml-stylesheet type="text/xsl" href="student.xsl"?>3<root>4<student id="1000">5<name>张三</name>6<sex>male</sex>7<age>16</age>8</student>9<student id="1001">10<name>李四</name>11<sex>female</sex>12<age>15</age>13</student>14<student id="1002">15<name>赵五</name>16<sex>male</sex>17<age>16</age>18</student>19</root>student.xsl:1<?xml version="1.0" encoding="utf-8"?>2<!DOCTYPE xsl:stylesheet [3 <!ENTITY nbsp " ">4<!ENTITY copy "©">5<!ENTITY reg "®">6<!ENTITY trade "™">7<!ENTITY mdash "—">8<!ENTITY ldquo "“">9<!ENTITY rdquo "”">10<!ENTITY pound "£">11<!ENTITY yen "¥">12<!ENTITY euro "€">13]>14<xsl:stylesheet version="1.0" xmlns:xsl="/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:js="/results" extension-element-prefixe 15<xsl:output method="html" encoding="utf-8"/>16<msxsl:script language="javascript" implements-prefix="js">17<![CDATA[18function random(){19 return Math.random();20}21]]>22</msxsl:script>2324<xsl:template match="/">25<xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>26<html>27<head>28<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>29<title>学⽣清单</title>30<script>31 function random(){32 return Math.random();33 }34</script>35</head>36<body>37<table border="1" cellpadding="5" cellspacing="0">38<tr>39<th>ID</th>40<th>姓名</th>41<th>年龄</th>42<th>性别</th>43</tr>44<xsl:for-each select="/root/student">45<tr>46<td>47<xsl:value-of select="@id"/>48</td>49<td>50<xsl:value-of select="name"/>51</td>52<td>53<xsl:value-of select="age"/>54</td>55<td>56<xsl:choose>57<xsl:when test="sex='male'">58<xsl:value-of select="'男'"/>59</xsl:when>60<xsl:when test="sex='female'">61<xsl:value-of select="'⼥'"/>62</xsl:when>63<xsl:otherwise>64<xsl:value-of select="'未知'"/>65</xsl:otherwise>66</xsl:choose>67</td>68</tr>69</xsl:for-each>70</table>7172 Html页⾯脚本调⽤随机数:73<script>74 document.write(random());75</script>76<br/>77转换过程调⽤随机数:<xsl:value-of select="js:random()"/>78<br/>79</body>80</html>8182</xsl:template>83</xsl:stylesheet>Xml 呈现出标准的Html界⾯,浏览器在此处充当了Xml处理器的⾓⾊,IE5.5+,Chrome、Firefox 都⽀持在客户端解析Xsl语⾔。
Docbook1.简介在过去的二十年中,出版的性质已经改变了非常多,现在任何人都可以是出版者。
现在你可以在你的网站上面放置一些网页,然后你将获得世界范围的观众。
或者你也可以使用桌面出版软件来产生具有精美排版的材料,以供世界各地的用户按照需要打印或者下载到打印机内。
使用DocBook你可以从一份材料中产生两种方式的产品。
DocBook是出版技术的一系列标准和工具的集合。
DocBook最初是被一些软件公司的联合财团建立来作为计算机文档的标准。
但是DocBook的基本属性“book”可以被其他类型的内容使用,所以它现在已经适用于多种用途。
DocBook的核心标准是被OASIS中的DocBook技术委员会所维持的DTD (文档类型定义)。
DTD定义了一个作者可以使用的内容元素的词汇表和它们之间的关系。
举个例子:一个book元素可以包含一个title元素,一些描述段落的para元素和一些chapter元素。
使用DTD和XML语法,作者们使用像<chapter>这样被尖括号括起来的标签来标记他们的文本内容。
这个标记与HTML有些相似,但是有更多的标签和更严谨的规则。
被这种标准方法标记的文本可以被一些软件工具所处理。
DocBook的一个重要优点就是它的工具可以来自很多方面而不只是从单一供应商的专有文件格式。
你可以混合和匹配不同的组件来编辑,排版,版本控制盒进行HTML 转换。
你可以组装一个非常适合你的需求的定制系统,其中的许多组件都是免费的。
DocBook的另一个主要优点是有一个可以使用的样式集合。
由Norman Walsh 使用XSL可扩展样式语言编写的样式,可以让任何人将他们的DocBook内容以打印版本和HTML版本进行发表。
现在样式表作为一个SourceForge上的开源项目进行开发和维护。
一个活跃的社区用户和贡献者保持着样式表的开发和问题的回答。
作为一个发行系统,DocBook非常适合下面的这些情况:•大量的内容。