XSL样式表1

 
第9章 XSL样式表
9。1 什么是xsl
9。2 导入XSL样式表
9。3 不同的XML样式表
9。4 XSL的基本元素
9。5 如何选择节点
9。6 匹配节点的典型情况
9。7 常用的XSL函数介绍
·XSL中文翻译为“可扩展的样式语言”
·包括XSLT变换语言和XSL-FO格式化语言两分
·XSLT
  ·规定如何将XML文档变换成另一个XML文档。
  ·变换后的XML文档可使用原文档的标记和DTD。
  ·大多数情况下,它会使用一组不同的标记,例如,
将原来的XML文档转化为HTML文档
·XSL-FO:应用还相对较少
    ◎如果不作特别说明,以下的XSL都是指XSLT

9.1 什么是XSL
?XML->HTML
!XSL
1.XSLT:通过样式表将一类XML文档转为其它形式
,结构或者类型的XML文档。
2。XSL-FO:定义一系列XSL格式化对象,属性,并通过使
用这些对象和属性来显示XML文档的内容
●XSLT
·XSLT描述了将源文档树转化为目标树的规则。
·构造目标树是通过模式匹配和模版来完成的。
·模式匹配:定位源文档树中的节点。
·模版:定义结点的处理规则,通过结点实例化创建这
位年改革或者部分目标树。
·在构造目标树时,可以对源文档树进行过滤,制以及
添加其它内容,且目标树的结构可以和文档树完全不同

CSS和XSL的异同
·XSL与CSS在很多功能上是重复的
·XSL比CSS更强大
·XSL的功能与其复杂性是分不开的。
·CSS指允许格式化元素的内容,不允许改变或者重新安
排这些内容。XSL没有这些限制。
·XSL能够提取元素内容,属性值,注释文本等几乎所有
的文档节点。

9。2 在文档中导入XSL样式表
导入语法:
<?xml-stylesheet type="text/xsl" href="XSL文件的
URL"?>
·xml-stylesheet:保留字,用以指明样式表处理指令
·type="text/xsl":表明样式表是xsl格式的。浏览器根
据它来调用处理xsl文件的程序处理href所指示的内容。
·href:指示样式表文件的路径
例子:1
XML文档片段
<?xml version="1.0" encoding="gb2312"
standalone="no"?>
<?xml-stylesheet type="text/xsl" href="bids-
table.xsl"?>
<网上拍卖>......</网上拍卖>
例子:2
XSL样式表文件片段:
<?xml version="1.0" encoding="gb2312">
<xsl:stylesheet
xmlns:xsl=" http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
......
</xsl:template>
</xsl:stylesheet>
9.3 使用不同的XSL样式表
·调用不同的XSL样式表可获得不同的表现形式,适应不
同的应用环境
·综合例子说明:
    ·XML文档选用上一节所使用的文件
    ·xml-sytlesheet处理指令的href属性值随样式表的
更换二更换。
    ·第一个例子见上一节。
  例子(2):1
·XML文档使用第二种样式表:
<?xml-stylesheet type="text/xsl" href="bids-
table2.xsl"?>
·第二种样式表的主要功能是将元素"出价"格式化,同
事对元素的顺序进行重排。(具体内容略)
例子3:
·XML文档使用第三种样式表:
<?xml-stylesheet type="text/xsl" href="sort-
bidder+.xsl"?>
·第三种样式表的主要功能是实现数据按照竞价姓名的
升序排列。
例子4
·XML文档使用第四种样式表:
<?xml-stylesheet type="text/xsl" href="sort-
price-.xsl"?>
·第四个样式表的主要功能是实现数据按照出价的降序
排列。
·XML文档使用第五种样式表:
<?xml-stylesheet type="text/xsl"
href="summary.xsl"?>
·第五个样式表的主要 功能:
输出竞价的起拍价合最高价及其它相关信息,并显示拍
卖作品的图片。
例子6:
·XML文档使用第六种样式表:
<?xml-stylesheet type="text/xsl" href="price-
graph.xsl"?>
·第六种样式表的主要功能:
将竞拍价以柱状图形输出。
以上六个例子,显示了XSL的强大,相信大家已经对XSL
产生了强烈的兴趣。

9。4 XSL的基本元素
9。4。1 用于匹配模式的样式表元素
·匹配模式:
用没哦是匹配XML文档种的特定节点,按照模版内容的指
示进行格式化输出。
·此类元素主要有:
  xsl:template:设计模块
  xsl:apply-templates:调用模块
1。xsl:template
使用语法:
  <xsl:template match="节点环境" language="脚本语
言环境">
其中:martch确定在何种情况下执行此模版
  match:匹配的条件,最上层的模版match设为"/".
  language:确定在此模版中执行什么脚本语言,其取值
与HTML中的script标记的language属性的取值相同。缺
省值为Jscript.
XSL用match属性从xml文档中选取带施加样式的结点,针
对这些特定的节点,形成一个特定的输出形式的模版。
  xsl:template:是要运用的实际模版,模版可能包含逐
字显示在输出文档中的文本,同时也包含用于把XML原文
档数据复制到结果文档中的XSL指令。XSL模版将XSL的设
计分割成一个个的模版,最后再将这些模版组合成一个
完整的XSL,这种方法可以使设计者先从整体上考虑XSL
的设计,然后
将一些表现形式细化为不同的模块,再具体设计这些模
块,最后通过调用将它们结合在一起。
使用XSL模版,可以实现模块化的设计。那么在模块设计
完成以后,应该如何调用呢?
那就需要xsl:apply-templates元素来实现了。
2。xsl:apply-tempates
使用语法:
<xml:apply-templates select="模式" order-by="排序
列表">
其中:
  ·select:选择节点环境,并对其施加相应的
xsl:template标记所建立的模版。
  ·order-by:以分号分隔的排序列表作为其属性值。
例子1:
  XML文档片段:
<?xml version="1.0" encoding="gb2312">
<?xml-stylesheet type="text/xsl" href="job-
hunt.xsl"?>
<求职人员>
<简历>
<姓名>熊辉</姓名>
......
<技能>web开发</技能>
</简历>
</求职人员>
例子2:
XSL文档片段:
<!--根模版-->
<xsl:template match="/">
......
<xsl:apply templates select="求职人员/简历"/>
......
</xsl:template>
<!--简历模版-->
<xsl:template match=简历">
......
</xsl:template>
9。4。2 用于选择模式的样式表元素
·选择模式:
  用选择方式将数据从XML文档中提取出来。
  这是一种在XML中应用广泛,且操作简单的获得数据
的方法。
  ·选择模式:
        用选择方式将数据从文档中提取出来。
  ·此类元素主要有:
      xsl:for-each
      xsl:value-of
      xsl:apply-templates
1.xsl:value-of
·使用语法:
  <xsl:value-of select="模式">
  其中,Select用于指定要提取的对象。
·作用:从XML文档中提取指定节点中的数据,并将该数
据结合到样式表中。
例子1:
XML文档片段:
<jobs>欢迎到通讯集团工作
<job>软件编程</job>
<job>硬件设计</job>
<job>数据库管理</job>
<job>网络维护</job>
</jobs>
XSL文档片段:
<xsl:template match="/">
<xsl:value-of/>
</xsl:template>
通过该XSL,浏览器将把XSL中指定的当前结点的各个子
元素度的文本内容依次输出,并用空格符分开。??
2。xsl:for-each
用于循环获取节点的内容
·xsl:value-of:只能获得指定节点的内容。
·xsl:for-each:循环获取节点的内容。
·使用语法:
<xsl:for-each select="模式" order-by="排序列表">
其中:
  order-by:指定按照哪一个控制标记进行排序。如果属
性值前有“+”号,则按照升序排列;如果有“—”,
则按照降序排列。默认情况下按照升序排列。
例子 :
XML文档片段:
<jobs>
<greeting>
欢迎到通讯集团工作</greeting>
<job>软件编程</job>
<job>硬件设计</job>
<job>数据库管理</job>
<job>网络维护</job>
<email>
fans@fans.com
</email>
</jobs>
 
XSL文档片段:
<xsl:for-each select="jobs/job">
<div align="center">
<xsl:value-of/>
</div>
</xsl:for-each>
jobs/job的意义是将jobs下的job作为循环的种子,每次
遇到该元素,就由<xsl:value-of/>输出文本内容。于是
,所有job元素的job内容被逐一输出。
注意:<xsl:for-each>好像必须是<xsl:template>元素
的子元素??
关于排序的例子1:
XML文档片段:
<jobs>
<job>
  <jobname>软件编程</jobname>
  <salary>7000/m</salary>
</job>
<job>
  <jobname>硬件设计</jobname>
  <salary>6000/m</salary>
</job>
......
</jobs>
关于排序的例子2:
XSL文档片段:
<xsl:for-each select "jobs/job" order-by="-
salary">
<div align="center">
<xsl:value-of/>
</div>
</xsl:for-each>
order-by="-salary表示按照salary的降序排列。

9。3。3 用于测试模式的样式表 元素
·测试模式:先对选择对象进行测试,然后对符合条件
的对象进行规定的处理。
·此类元素主要有:
    xsl:if
    xsl:choose
    xsl:when
    xsl:otherwise
  1.xsl:if
      ·根据不同模式改变输出的样式。
      ·使用语法:
          <xsl:if test="测试条件" script="script式子"
language="script使用的语言">
      ·test属性含有选择表达式,计算布尔 值。如果此
表达式为true,则输出xsl:if元素的内容;否则,不输出
xsl:if元素的内容。
例子1:
<证券>
<股票 证券分类="泸市股票">
<股票名称>交通银行</股票名称>
<股票代码>600000</股票代码>
<股票价格>20.20</股票价格>
</股票>
.....
</证券>
·XSL文档片段:
<xsl:if test="@证券分类[.='深市股票']">
(深)
</xsl:if>
·作用:
测试元素的属性"证券分类"是否等于‘深市股票’,若
是则输出“(深)”标记
2。◆xsl:choose
·xsl:choose:对数据同时测试多个条件,根据不同条件
输出不同的结果。
·形式上和编程语言的switch语句十分相似。
·没有属性设置,表示一个多选测试的开始。
·测试上xsl:when和xsl:otherwise子元素完成。
·使用语法:
        <xsl:choose>
  ◆xsl:when子元素
·使用语法:
<xsl:when expr="脚本语言表达式" language="脚本语
言类型" test="模式">
·其中:
  expr:脚本语言表达式,计算结果为真或者假;如果结
果为真,且通过test,则在输出时显示其中内容(可省略
此项属性)。
  language:expr属性中表达式的脚本语言类型,缺省为
JScript。
test:源数据的测试条件。
◆xsl:otherwise子元素
·如果xsl;when元素都不为真,那么显示xsl:otherwise
子元素的内容。
·该元素无属性设置
·使用语法:
<xsl:otherwise>
例子:
XML文档片段:
<证券>
<股票 证券分类="泸市股票">
<股票名称>交通银行</股票名称>
<股票代码>600000</股票代码>
<股票价格>20.20</股票价格>
</股票>
.....
</证券>
XSL文档片段:
<xsl:choose>
<xsl:when test="股票价格[.$le$
15]">normal</xsl:when>
<xsl:when test="股票价格[.$le$
25]">italic</xsl:when>
<xsl:otherwise>bold</xsl:otherwise>
</xsl:choose>
定义输出格式。
9。4。4 其他元素
1。xsl:element
·使用语法:
<xsl:element name="欲插入的元素名">
·xsl:element将元素插入到输出文档中。
·元素名由xsl:element元素的内容给出。
2。xsl:attribute
·使用语法;
<xsl:Lattribute name="欲插入的元素名">
·xsl:attribute将属性插入到输出文档中。
·属性名由xsl:attribute元素的name属性指定。
·属性值由xsl:attribute元素的内容指出。
3。xsl:pi
·使用语法:
    <xsl:pi name="处理指令的名称">
·xsl:pi将处理指令插入到输出文档中。
·处理指令名称由xsl:pi元素的name属性值给出。
·处理指令的参数内容由xsl:pi元素的内容给出。
·xslL:pi元素常用来在输出文档中插入xml声明。
例子:
<xsl:pi name="xml">version="1.0"
encoding="gb2312"</xsl:pi>
4.xsl:comment
·使用语法:
<xsl:comment>
·xsl:comment用于在输出文档中插入注释。
·没有自己的属性。
·元素内容即为输出文档的注释内容。
例如:
<xsl:comment>
这是一个提供手机销售信息的文档。
</xsl:comment>
5。xsl:eval_r(1)
·使用语法:
<xsl:eval language="脚本语言名称">
·其中:
    xsl:eval元素用于计算脚本表达式,其元素内容就是
所要执行的脚本。
    language属性规定了脚本语言的名字,可用的属性值
有Jscript,VBScript等,缺省为JScript。
5。xsl:eval_r(2)
例子:
  <xsl:eval>total(this)</xsl:eval>
      -----表明要调用一个"total()"函数
  <xsl:eval>balance&lt;0?"red":"black"</xsl:eval>
      -----意为如果balance小于0则输出red值,否则出
black。
6。xsl:script
·使用语法:
<xsl:script language="脚本语言名称">
其中:
·xsl:script元素用于声明脚本中的全局变量或者定义
函数
·language属性规定了脚本语言的名字,可用的属性有
JScript,VBScript等,缺省为JScript。
xsl:script例子:
<xsl:script>
<![CDATA[
//变量赋值
balance=0;
...
//定义函数
function total(e){......}
function even(e){.....}
]]>
</xsl:script>
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值