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

JavaScript技术    2012-11-06 17:27  

  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 “ ”>

  <!ENTITY copy “©”>

  <!ENTITY reg “®”>

  <!ENTITY trade “™”>

  <!ENTITY mdash “—”>

  <!ENTITY ldquo ““”>

  <!ENTITY rdquo “””>

  <!ENTITY pound “£”>

  <!ENTITY yen “¥”>

  <!ENTITY euro “€”>

  ]>

  <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 “ ”>

  <!ENTITY copy “©”>

  <!ENTITY reg “®”>

  <!ENTITY trade “™”>

  <!ENTITY mdash “—”>

  <!ENTITY ldquo ““”>

  <!ENTITY rdquo “””>

  <!ENTITY pound “£”>

  <!ENTITY yen “¥”>

  <!ENTITY euro “€”>

  ]>

  <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> </p>

  </body>

  </html>

  </xsl:template>

  </xsl:stylesheet>

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

  文章来源:http://www.cnblogs.com/591aspx/archive/2

在线留言

我要留言