XSL是一种转化思想用于将XML文档转化为可用于输出的文档

1.XSL简要介绍:

XSL即可扩展的样式单语言,它比CSS样式单得功能更强。它的主要用途就是将XML文档转换成HTML格式的文件,然后再交付给浏览器,由浏览器显示转化的结果。
2.XSL主要组成:

第一部分是XSLT,即XSL Transformation转化XML文档,可以把XML文档从一种格式转化为令一种格式。它使用XPath匹配节点,把一个XML文档转换为另一个不同格式的文档。XSL的第二部分是XSL格式化对象(Formatting Object).格式化对象提供了CSS的另一种方式来格式化XML文档,并把样式应用到XML文档上。因此,XSL在转换XML文档时分为明显的两个过程。首先转化 文档结构,其次将文档格式化输出。以下我们跟随(www.tyxrc.com )重点来学习一下XSTL的使用:
3.XSTL的使用:
我们知道XML是一种电脑程序间交换原始数据的简单而标准的方法。它的产生从更本上解决了应用系统间得信息交换。因为XML满足了以下两个基本的要求:
a:将数据和表达形式分离。
b: 在不同的应用之间传输数据。电子商务数据交换的与日俱增,使得这种需求越来越紧迫。
4.XSLT与CSS比较:

XSLT不适用在HTML中,而CSS可以适用在HTML中,XSLT是转换语言而CSS不是转化语言。
5.XPath简介:

XPath是XSLT的重要组成部分,是一种专门用来在XML文档中查找信息的语言。对XPath的一种比较容易理解的解释就是:如果将XML文档看作一个数据库,XPath就是SQL查询语言;如果将XML文档看成DOS目录结构,XPath就是cd,dir等目录操作命令的集合。
6.Internet Exporer MSXML 为了用XSL来处理一个XML文档,需要一个带有XSL引擎的XML解析器。
自从IE5.0版本开始,都已经携带XML解析器.目前流行得带有XSL引擎的XML处理器软件有以下几种:
a:微软的MSXML4 ,下载地址:http://www.microsoft.com/xml
b:Saxon 下载地址:http:www.wrox.com
c:IBM的XML for Java 软件包,名为LotusXSL 下载地址:www.alphworks.ibm.com/tech/xml4j
d:XT  下载地址:http://www.jclark.com/xml/xt.html
7.XSLT格式和使用
大家都知道不同的模具就可以生产出不同的零件,如果假设XML数据文档是钢水,XSLT就像是一个模具,使用XSLT就可以做出需要的“形状”,即符合不同需要的html文档。
看一个简单的XSLT示例:
要在XML中调用XSL样式单,应在XML文档中加入<?xml-stylesheet type="text/xsl" href="hello.xsl"?>语句,指明XML文档的转换XSL样式单。由于微软的IE内嵌了XML解析器,直接在IE浏览器中打开xml文件,就可以看到结果了。自己试一下吧。
hello.xml代码为:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="hello.xsl"?>
<greeting>XSL----Important Step in learning XML!</greeting>
001.xsl代码为:
<?xml version="1.0" encoding="utf-8"?>  //xsl文件本身就是一个XML文件,所以有和XML文件一样的声明方式。
<!DOCTYPE xsl:stylesheet  [
 <!ENTITY nbsp   "&#160;">
 <!ENTITY copy   "&#169;">
 <!ENTITY reg    "&#174;">
 <!ENTITY trade  "&#8482;">
 <!ENTITY mdash  "&#8212;">
 <!ENTITY ldquo  "&#8220;">
 <!ENTITY rdquo  "&#8221;">
 <!ENTITY pound  "&#163;">
 <!ENTITY yen    "&#165;">
 <!ENTITY euro   "&#8364;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> //xsl:stylesheet是XSL文件的根元素,在根元素中包含了所有的排版样式,样式表就是由这些排版样式组合成的:xmlns:xsl="http://www.w3.org/1999/XSL/Transform"主要用于说明该XSL样式表是使用W3C所制定的XSL,设定值就是XSL规范所在的URL地址。stylesheet.temolate.for-each等关键字都是这个名称空间所定义的。

<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Untitled Document</title>
</head>

<body>
<p><xsl:value-of select="greeting"/></p>
</body>
</html>

</xsl:template>
</xsl:stylesheet>
8.XSL中的元素分析:
在以上的例子中你可以看到有如下代码:
<xsl:template match="/">
</xsl:template> 这里实际表示了XSL解析器对XML文档的处理过程,它从根节点开始,对XML文档进行遍历,并根据具体的代码从XML文档中取出相关的内容。
这里使用<xsl:value-of select="greeting"/>语句来寻找特定的内容。如果在特定集合中可能存在多个书名元素,如果需要把他们一一列举出来进行处理,就需要使用语句<xsl:for-each select="greeting"/>
以下是一个XML文档用XSL样式转化为HTML文档的例子:
001.xml文档代码:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="002.xsl"?>
<shoppingCart>
<item>
<itemNo>1001</itemNo>
<itemName>三国演义</itemName>
<price>30.00</price>
<publisher>文艺出版社</publisher>
</item>
<item>
<itemNo>1002</itemNo>
<itemName>红楼梦</itemName>
<price>120.00</price>
<publisher>文艺出版社</publisher>
</item>
</shoppingCart>
002.xsl
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xsl:stylesheet  [
 <!ENTITY nbsp   "&#160;">
 <!ENTITY copy   "&#169;">
 <!ENTITY reg    "&#174;">
 <!ENTITY trade  "&#8482;">
 <!ENTITY mdash  "&#8212;">
 <!ENTITY ldquo  "&#8220;">
 <!ENTITY rdquo  "&#8221;">
 <!ENTITY pound  "&#163;">
 <!ENTITY yen    "&#165;">
 <!ENTITY euro   "&#8364;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>网站购物车</title>
<style>
.title{font-size:15pt; font-weight:bold; color:blue}
.name{color:red}
</style>
</head>

<body>
<p class="title">Shooping Cart Contents</p>
<table width="400" border="1" cellpadding="0" cellspacing="0" bordercolor="#6600CC">
  <thead>
    <td align="center">编号</td>
    <td align="center">书名</td>
    <td align="center">价格</td>
    <td align="center">出版社</td>
  </thead>
  <xsl:for-each select="shoppingCart/item">
  <tr>
    <td><xsl:value-of select="itemNo"/></td>
    <td><xsl:value-of select="itemName"/></td>
    <td><xsl:value-of select="price"/></td>
    <td><xsl:value-of select="publisher"/></td>
  </tr>
  </xsl:for-each>
</table>
<p>&nbsp;</p>
</body>
</html>

</xsl:template>
</xsl:stylesheet>
XSL实际上采用的是一种转化思想,它最终将XML文档转化为另一种可用于输出的文档。

posted @ 2012-10-29 08:51  再战耐特  阅读(514)  评论(0编辑  收藏  举报