XML简明教程(四)

类别:.NET开发 点击:0 评论:0 推荐:
四、xslt简介

    了解XML的基本语法、Schema的语法还远远不够,XML是对数据和数据结构的存储,而Schema是对XML数据类型的定义。直到这

里还没有对XML数据的显示进行处理。虽然可以通过内置有XML解析器的浏览器直接对XML数据进行查看,但毕竟看到的只是以树状结构

显示的XML数据。

    如果要把XML数据以漂亮的形式显示出来就需要XSLT帮忙了。XSLT可以把XML处理成HTML形式输出、WAP形式输出,甚至也可以

是Word文档的格式。其中最常用到的还是HTML的格式,下面讲解中用到的所有例子都以HTML的转换格式为例子。那就不说废话了,还

是先看一个XSLT的例子吧!

   这个XSLT用到的一个XML文档,文档如下:

  <?xml version = "1.0" encoding="GB2312"?>

  <?xml:stylesheet type="text/xsl" href="s_xlt.xslt"?>

   <resumes>

   <resume>

   <name>张立东</name>

   <sex>男</sex>

   <age>28</age>

   <birthday>

   <year>1974</year>

   <month>8</month>

   <day>10</day>

   </birthday>

   <address>北京市 海淀区</address>

    </resume>

   <resume>

   <name>张三</name>

   <sex>男</sex>

   <age>50</age>

   <birthday>

   <year>1951</year>

   <month>6</month>

    <day>9</day>

   </birthday>

   <address>山西省</address>

   </resume>

   <resume>

   <name>李四</name>

   <sex>男</sex>

    <age>29</age>

   <birthday>

   <year>1973</year>

    <month>7</month>

    <day>12</day>

   </birthday>

    <address>山东省</address>

   </resume>

  </resumes>

   注:在上面的XML文档中多了下面的一句:

  <?xml:stylesheet type="text/xsl" href="s_xlt.xslt"?>

    这一句就是对XSLT的引用,其中href中的内容是对具体XSLT文档位置的指定,有关s_xlt.xslt中的内容就是下面要介绍的XSL

T例子的内容。有关如何对XML,XLST、Schema的使用和测试,可以参考“一个应用了xml、schema和xlst的例子”部分。

   对这个XML文档进行转换处理的XSLT文档如下:

  [1]<?xml version="1.0" encoding="GB2312"?>

  [2]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">

  [3] <xsl:template match="/">

  [4] <HTML>

  [5] <HEAD>

  [6] <TITLE>个人简历</TITLE>

  [7] </HEAD>

  [8] <BODY>

  [9] <xsl:for-each select="/resumes/resume">

  [10] <P>

  [11] <TABLE border="1" >

  [12] <CAPTION style="font-size: 150%; font-weight: bold">

  [13] 个人简历

  [14] </CAPTION>

  [15] <TR>

  [16] <TH>姓名</TH><TD><xsl:value-of select="name"/></TD>

  [17] <TH>性别</TH><TD><xsl:value-of select="sex"/></TD>

  [18] <TH>生日</TH><TD><xsl:value-of select="birthday/year"/>年

  <xsl:value-of select="birthday/month"/>月<xsl:value-of select="birthday/day"/>日</TD>

  [19] </TR>

  [20] <TR>

  [21] <TH>地址</TH><TD colspan="5"><xsl:value-of select="address"/></TD>

  [22] </TR>

  [23] </TABLE>

  [24] </xsl:for-each>

  [25] </BODY>

  [26] </HTML>

  [27] </xsl:template>

  [28]</xsl:stylesheet>

   [1]XML的序言,从第一条语句可以看出XSLT也是符合XML语法的。

   [2]XSLT的名域。Xsl:stylesheet是XSLT的根元素,xsl是XSLT的名域标识。所以都要在XSLT的语句前面加上xsl:来表明是XSLT

的语句。

   [3] <xsl:template match="/"> 是XSLT语言的匹配模式,主要是和引用它的XML文档的根进行匹配。其中/是代表XML文档根的含

义。 例如:个人简介中的name可以用/resumes/resume/name 

的方式进行引用。(由于这里只是对XSLT入门的一个初步介绍,对有关XML路径想详细了解的读者可以参考XML文档的XPATH部分。)

   [4]-[8]可以直接输出,这部分是符合HTML语法的信息结构,HTML文档的开始部分和head的定义。

   [9] <xsl:for-each select="/resumes/resume">是XSLT语言的选择模式,是循环的对所有的/resumes/resume元素和这个元素所

包含的子元素进行处理。

   [10]-[15] 可以直接输出,符合HTML的语法结构。

   [16] <TH>姓名</TH><TD><xsl:value-of select="name"/></TD> 

在这一行中有HTML的语句和也有XSLT的语句。其中<xsl:value-of select="name"/>也是属于选择模式的语句,可以直接把select选中

的元素内容提取处理,处理以后的结果应该是:<TH>姓名</TH><TD>张立东</TD>。

   [18]-[23]分别是对其他部分信息的显示处理,其中也包含了部分的HTML语句。

   [24] <xsl:for-each> 语句的结束部分。

   [25]-[26]HTML语句。

   [27] <xsl:template> 语句的结束部分。也就是对整个XML文档处理的结束。因为每个XML文档只有一个根而这条语句是对根的部

分处理,所以是对整个XML文档处理的结束。

   [28] XSLT文档的结束。

    经上面对这个简单例子的介绍,大家对XSLT对XML文档的处理可能已经有了一个基本的了解,可以简单的通过XSLT对XML进行

处理啦。在结束这个部分之前对XSLT的语法做一个简单的小结:

    可以大致的把模式语言分为三种:

    选择模式

    <xsl:for-each>、<xsl:value-of>,和 <xsl:apply-templates> 

    测试模式

    <xsl:if> 和<xsl:when>

    匹配模式

    <xsl:template>

    选择模式语句将数据从XML中提取出来,这是一种简单获得数据的方法。这几个标记都有一个select属性,选取XML中特定结

点名的数据。

    测试模式是对数据的一个判断,然后根据判断和匹配的结果进行处理。有些和程序语言中的判断语句和多判断语句形似。

    匹配模式是一个可以单独列出来的XSLT语句片断,可以完成对一个特定部分的XSLT处理。有些和程序设计中的子程序相似。

本文地址:http://com.8s8s.com/it/it43539.htm