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样式表
导入语法:
URL"?>
·xml-stylesheet:保留字,用以指明样式表处理指令
·type="text/xsl":表明样式表是xsl格式的。浏览器根
据它来调用处理xsl文件的程序处理href所指示的内容。
·href:指示样式表文件的路径
例子:1
XML文档片段
standalone="no"?>
table.xsl"?>
<网上拍卖>......
例子:2
XSL样式表文件片段:

xmlns:xsl=" http://www.w3.org/TR/WD-xsl">

......

9.3 使用不同的XSL样式表
·调用不同的XSL样式表可获得不同的表现形式,适应不
同的应用环境
·综合例子说明:
    ·XML文档选用上一节所使用的文件
    ·xml-sytlesheet处理指令的href属性值随样式表的
更换二更换。
    ·第一个例子见上一节。
  例子(2):1
·XML文档使用第二种样式表:
table2.xsl"?>
·第二种样式表的主要功能是将元素"出价"格式化,同
事对元素的顺序进行重排。(具体内容略)
例子3:
·XML文档使用第三种样式表:
bidder+.xsl"?>
·第三种样式表的主要功能是实现数据按照竞价姓名的
升序排列。
例子4
·XML文档使用第四种样式表:
price-.xsl"?>
·第四个样式表的主要功能是实现数据按照出价的降序
排列。
·XML文档使用第五种样式表:
href="summary.xsl"?>
·第五个样式表的主要 功能:
输出竞价的起拍价合最高价及其它相关信息,并显示拍
卖作品的图片。
例子6:
·XML文档使用第六种样式表:
graph.xsl"?>
·第六种样式表的主要功能:
将竞拍价以柱状图形输出。
以上六个例子,显示了XSL的强大,相信大家已经对XSL
产生了强烈的兴趣。

9。4 XSL的基本元素
9。4。1 用于匹配模式的样式表元素
·匹配模式:
用没哦是匹配XML文档种的特定节点,按照模版内容的指
示进行格式化输出。
·此类元素主要有:
  xsl:template:设计模块
  xsl:apply-templates:调用模块
1。xsl:template
使用语法:
 
其中: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
使用语法:

其中:
  ·select:选择节点环境,并对其施加相应的
xsl:template标记所建立的模版。
  ·order-by:以分号分隔的排序列表作为其属性值。
例子1:
  XML文档片段:

hunt.xsl"?>
<求职人员>
<简历>
<姓名>熊辉
......
<技能>web开发


例子2:
XSL文档片段:


......

......



......

9。4。2 用于选择模式的样式表元素
·选择模式:
  用选择方式将数据从XML文档中提取出来。
  这是一种在XML中应用广泛,且操作简单的获得数据
的方法。
  ·选择模式:
        用选择方式将数据从文档中提取出来。
  ·此类元素主要有:
      xsl:for-each
      xsl:value-of
      xsl:apply-templates
1.xsl:value-of
·使用语法:
 
  其中,Select用于指定要提取的对象。
·作用:从XML文档中提取指定节点中的数据,并将该数
据结合到样式表中。
例子1:
XML文档片段:
欢迎到通讯集团工作
软件编程
硬件设计
数据库管理
网络维护
XSL文档片段:



通过该XSL,浏览器将把XSL中指定的当前结点的各个子
元素度的文本内容依次输出,并用空格符分开。??
2。xsl:for-each
用于循环获取节点的内容
·xsl:value-of:只能获得指定节点的内容。
·xsl:for-each:循环获取节点的内容。
·使用语法:

其中:
  order-by:指定按照哪一个控制标记进行排序。如果属
性值前有“+”号,则按照升序排列;如果有“—”,
则按照降序排列。默认情况下按照升序排列。
例子 :
XML文档片段:


欢迎到通讯集团工作

软件编程
硬件设计
数据库管理
网络维护

[email protected]


 
XSL文档片段:





jobs/job的意义是将jobs下的job作为循环的种子,每次
遇到该元素,就由输出文本内容。于是
,所有job元素的job内容被逐一输出。
注意:好像必须是元素
的子元素??
关于排序的例子1:
XML文档片段:


  软件编程
  7000/m


  硬件设计
  6000/m

......

关于排序的例子2:
XSL文档片段:





order-by="-salary表示按照salary的降序排列。

9。3。3 用于测试模式的样式表 元素
·测试模式:先对选择对象进行测试,然后对符合条件
的对象进行规定的处理。
·此类元素主要有:
    xsl:if
    xsl:choose
    xsl:when
    xsl:otherwise
  1.xsl:if
      ·根据不同模式改变输出的样式。
      ·使用语法:
         
language="script使用的语言">
      ·test属性含有选择表达式,计算布尔 值。如果此
表达式为true,则输出xsl:if元素的内容;否则,不输出
xsl:if元素的内容。
例子1:
<证券>
<股票 证券分类="泸市股票">
<股票名称>交通银行
<股票代码>600000
<股票价格>20.20

.....

·XSL文档片段:

(深)

·作用:
测试元素的属性"证券分类"是否等于‘深市股票’,若
是则输出“(深)”标记
2。◆xsl:choose
·xsl:choose:对数据同时测试多个条件,根据不同条件
输出不同的结果。
·形式上和编程语言的switch语句十分相似。
·没有属性设置,表示一个多选测试的开始。
·测试上xsl:when和xsl:otherwise子元素完成。
·使用语法:
       
  ◆xsl:when子元素
·使用语法:

·其中:
  expr:脚本语言表达式,计算结果为真或者假;如果结
果为真,且通过test,则在输出时显示其中内容(可省略
此项属性)。
  language:expr属性中表达式的脚本语言类型,缺省为
JScript。
test:源数据的测试条件。
◆xsl:otherwise子元素
·如果xsl;when元素都不为真,那么显示xsl:otherwise
子元素的内容。
·该元素无属性设置
·使用语法:

例子:
XML文档片段:
<证券>
<股票 证券分类="泸市股票">
<股票名称>交通银行
<股票代码>600000
<股票价格>20.20

.....

XSL文档片段:

normal
italic
bold

定义输出格式。
9。4。4 其他元素
1。xsl:element
·使用语法:

·xsl:element将元素插入到输出文档中。
·元素名由xsl:element元素的内容给出。
2。xsl:attribute
·使用语法;

·xsl:attribute将属性插入到输出文档中。
·属性名由xsl:attribute元素的name属性指定。
·属性值由xsl:attribute元素的内容指出。
3。xsl:pi
·使用语法:
   
·xsl:pi将处理指令插入到输出文档中。
·处理指令名称由xsl:pi元素的name属性值给出。
·处理指令的参数内容由xsl:pi元素的内容给出。
·xslL:pi元素常用来在输出文档中插入xml声明。
例子:
version="1.0"
encoding="gb2312"
4.xsl:comment
·使用语法:

·xsl:comment用于在输出文档中插入注释。
·没有自己的属性。
·元素内容即为输出文档的注释内容。
例如:

这是一个提供手机销售信息的文档。

5。xsl:eval_r(1)
·使用语法:

·其中:
    xsl:eval元素用于计算脚本表达式,其元素内容就是
所要执行的脚本。
    language属性规定了脚本语言的名字,可用的属性值
有Jscript,VBScript等,缺省为JScript。
5。xsl:eval_r(2)
例子:
  total(this)
      -----表明要调用一个"total()"函数
  balance<0?"red":"black"
      -----意为如果balance小于0则输出red值,否则出
black。
6。xsl:script
·使用语法:

其中:
·xsl:script元素用于声明脚本中的全局变量或者定义
函数
·language属性规定了脚本语言的名字,可用的属性有
JScript,VBScript等,缺省为JScript。
xsl:script例子:

//变量赋值
balance=0;
...
//定义函数
function total(e){......}
function even(e){.....}
]]>
 

你可能感兴趣的:(xsl,文档,xml,脚本,语言,xslt)