分享
 
 
 

XML之样式表

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

XML是一种电脑程序间交换原始数据的简单而标准的方法,然而基于XML的数据本身并不包含数据显示的信息。样式表是一种专门描述结构文档表现方式的文档,即可以描述这些文档如何在屏幕上显示,也可以描述它们的打印效果,甚至声音效果。

使用样式表定义XML文档数据的显示方式,将XML数据与其表达分离的做法符合业界提倡的数据或内容与表示层分开的思想。这样一来,XML格式或文档不会重蹈某些HTML文档结构混杂,内容繁乱的覆辙。XML的编写者也可以集中于数据本身,而不受显示方式的细枝末节的影响。不仅如此,样式表还带来另一个好处,即定义不同的样式表可以使相同的数据呈现不同的显示外观,从而适合不同应用,甚至能够在不同的显示设备上显示。这样,XML数据就可以得到很大程度上的重用性,满足不同的应用需求。

W3C给出了两种样式表语言的推荐标准:CSS,Cascading Style Sheets,级连样式表语言,XSL extensible Style sheet,可扩展样式表语言。

CSS

级连样式表语言CSS是一种样式描述规则,是一种针对HTML而提出的样式表语言,现在同样可以很好地应用于描述XML文档的显示,利用CSS,我们可以定义HTML或XML文档中元素的显示效果,包括元素的位置,颜色,背景,边框,字体,排版格式等等。

<?xml-stylesheet type=”text/css” href=”CSS样式表文件路径”?>

<?xml version="1.0"?>

<?xml-stylesheet type="text/css" href="hello.css"?>

<xsampdoc>

<greeting>Hello,<extension>there!</extension></greeting>

<answer class="ans">

<extension>Good morning!</extension>

<question>How are you?</question>

</answer>

</xsampdoc>

hello.css

xsampdoc

{

margin-top:.7in;

margin-bottom:.7in;

margin-left:1.5in;

margin-right:1in;

color:navy;

background-color:white;

display:block

}

greeting

{

display:block;

font-family: Arial, Helvetica, sans-serif;font-size: 32pt;

width: 30em;

color: red

}

question

{

display:block;

font-size: x-large;

color: black

}

answer.ans

{

display: block;

font-size: 20pt;

color: blue

}

XSL

XSL是一种用来转换XML文档的样式表,它包含转换和格式化XML文档的规则。

XSL在转换XML文档时分为明显的两个过程:首先转换文档结构,然后将文档格式化输出。这两个步骤可以分离开单独处理,因此在XSL发展过程中逐渐分裂为两种分支:XSLT(结构转换)和XSL-FO(格式化输出)。其中XSL-FO的作用类似于CSS在HTML中的作用,但是发展还不成熟,这里不做介绍。

Xpath是一种专门用在XML文档中查找信息的语言,用来如何描述如何识别,选择,匹配XML文档中的各个构成元件,包括元素,属性,文字内容等。Xpath隶属XSLT,因此,我们通常会将XSLT和Xpath语法混在一起说。XML是数据库,XPath就是SQL语言,XML是文件系统,XPath就是目录导航命令

XSL包含XSLT和Xpath的强大功能,从而可以把XML文档转换成任何一种其它格式的文档,例如XNL文档,HTML文档,XHTML文档,VRML文档,SVG文档。

XSL的基本语法

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

<?xml-stylesheet type="text/xsl" href="student.xsl"?>

<roster>

<student ID="101">

<name>李华</name>

<sex>男</sex>

<birthday>1978.9.12</birthday>

<score>92</score>

<skill>Java</skill>

<skill>Oracle</skill>

<skill>C Sharp</skill>

<skill>SQL Server</skill>

</student>

<student ID="102">

<name>倪冰</name>

<sex>女</sex>

<birthday>1979.1.12</birthday>

<score>89</score>

<skill>Visual Basic</skill>

<skill>SQL Server</skill>

<skill>ASP</skill>

</student>

<student ID="103">

<name>张君宝</name>

<sex>男</sex>

<birthday>1982.9.9</birthday>

<score>98</score>

<skill>C Sharp</skill>

<skill>SQL Server</skill>

<skill>UML</skill>

</student>

</roster>

student.xsl

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

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

<xsl:template match="/">

<html>

<head>

<title>学生成绩单</title>

</head>

<body>

<h2 align="center">学生成绩单</h2>

<table border="1" cellpadding="0" align="center">

<tr><th>姓名</th><th>性别</th><th>生日</th><th>成绩</th></tr>

<xsl:for-each select="/roster/student">

<tr>

<td><xsl:value-of select="name"/></td>

<td><xsl:value-of select="sex"/></td>

<td><xsl:value-of select="birthday"/></td>

<td><xsl:value-of select="score"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

XSL本身是结构完整的XML文档,所以在书写时要注意标签的匹配问题。<xsl:stylesheet>即是XSL的声明语句,也是跟元素,必须位于文件的首部,通常也要利用xmlns属性指明XSL的命名空间。样式表中所有的模板都有标签<xsl:template>标明,模板可以说明处理的对象(元素,属性),处理的方式或是转换的结果。

XSL模板

XSL文件是由模板组成的,一个XSL文件至少包含一个买办。可以把XSL的设计细化成一个个模板,最后再将这些模板组合成一个完成的XSL。这种方法如同程序中模块化设计细化一样,可以使你先从整体上考虑整个XSL的设计,然后将一些表现形式细化成不同的模块,再具体设计这些模块,最后将他们整合在一起。

定义一个模板:<xsl:template match=”匹配模式”>

调用一个模板:<xsl:apply-templates select=”模式”>

XSL通过<xsl:if>,<xsl:for_each>,<xsl:choose>,<xsl:sort>语句对文档内容过滤,排序输出。

CSS与XSL比较

用途不同:CSS主要针对HTML,XSL具备CSS无法达到的功能,如用命令将一个XML文档转换为另一个文档并存盘。

处理结果不同:XSL采用一种转换的思想,它将一种不含显示信息的XML文档转换为另一种可以用某中浏览器浏览的文档,转换湖的输出码或者存为一个新的文档,或则暂存于内存中,但都不修改源代码。而CSS没有任何转换动作,只是针对结构文档中的各个成分,依照样式规定一一设定外观式样,再由浏览器依据这些式样显示文档,整个过程没有任何新码产生。

表现能力不:XSL支持排序,超连结等等。

语法不同:CSS自成体系,XSL根据XML的语法定义。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有