📄 0403-0100.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0403-0100 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 4.3.1 XSL概述</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt9 {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt10 {
FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋体"
}
.TempOutline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.TempOutline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage0 {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage111 {
FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>
<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0
onload=""><!-- 以下为主体内容 -->
<div align="center">
<center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD width=35 rowSpan=2></TD>
<TD vAlign=center width="555" ><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=35 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="555" ><!-- 正文内容 -->
<DIV class=pt10><B>4.3.1 XSL概述</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>在上一节中我们已经讲了两种样式单中的一种——层叠样式单CSS,本节要介绍的另一种是可扩展样式单语言 XSL(eXtensible
Stylesheet Languge),它也是由W3C制定的。
XSL这个样式语言自提出以来争议颇多,前后经过了几番大的修改。XSL最近的一个草案于2000年3月提出,仍然有待进一步修改完善,因此还不能作为正式依据。</P>
<P>CSS是一种静态的样式描述格式,其本身不遵从XML的语法规范。而XSL不同,它是通过XML进行定义的,遵守XML的语法规则,是XML的一种具体应用。这也就是说,XSL本身就是一个XML文档,系统可以使用同一个XML解释器对XML文档及其相关的XSL文档进行解释处理。</P>
<P>XSL由两大部分组成:第一部分描述了如何将一个XML文档进行转换,转换为可浏览或可输出的格式;第二部分则定义了格式对象FO(fomatted
object)。在输出时,首先根据XML文档构造源树,然后根据给定的XSL将这个源树转换为可以显示的结果树,这个过程称作树转换,最后再按照FO解释结果树,产生一个可以在屏幕上、纸上、语音设备或其它媒体中输出的结果,这个过程称作格式化。
</P>
<P>到目前为止,W3C还未能出台一个得到多方认可的FO,但是描述树转换的这一部分协议却日趋成熟,已从XSL中分离出来,另取名为XSLT(XSL
Transformations),其正式推荐标准于1999年11月16日问世,现在一般所说的XSL大都指的是XSLT。与XSLT一同推出的还有其配套标准XPath,这个标准用来描述如何识别、选择、匹配XML文档中的各个构成元件,包括元素、属性、文字内容等。</P>
<P>如前所述,XSLT主要的功能就是转换,它将一个没有形式表现的XML内容文档作为一个源树,将其转换为一个有样式信息的结果树。在XSLT文档中定义了与XML文档中各个逻辑成分相匹配的模板,以及匹配转换方式。值得一提的是,尽管制定XSLT规范的初衷只是利用它来进行XML文档与可格式化对象之间的转换,但它的巨大潜力却表现在它可以很好地描述XML文档向任何一个其它格式的文档作转换的方法,例如转换为另一个逻辑结构的XML文档、HTML文档、XHTML文档、VRML文档、SVG文档等等,不一而足。</P>
<P>使用XSL定义XML文档显示方式的基本思想是:通过定义转换模板,将XML源文档转换为带样式信息的可浏览文档。最终的可浏览文档可以是HTML格式、FO格式、或者其它面向显示方式描述的XML格式(如前面提到的SVG和SMIL),限于目前浏览器的支持能力,大多数情况下是转换为一个HTML文档进行显示。</P>
<P>在XML中声明XSL样式单的方法与声明CSS的方法大同小异: </P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><?xml-stylesheet type="text/xsl"
href="mystyle.xsl"?> </TD></TR></TBODY></TABLE></CENTER></DIV>
<P>至于具体的转换过程,既可以在服务器端进行,也可以在客户端进行。两者分别对应着不同的转换模式:
<UL>
<LI>服务器端转换模式 <BR>在这种模式下,XML文件下载到浏览器前先转换成HTML,然后再将HTML文件送往客户端进行浏览。有两种方式:
<UL>
<LI>动态方式;即当服务器接到转换请求时再进行实时转换,这种方式无疑对服务器要求较高。
<LI>批量方式;实现将XML用XSL转换好一批HTML文件,接到请求后调用转换好的HTML文件即可。 </LI></UL>
<LI>客户端转换模式 <BR>这种方式是将XML和XSL文件都传送到客户端,由浏览器实时转换。前提是浏览器必须支持XML+XSL。
</LI></UL>
<P>下面我们将着重介绍一些XSLT对XML文档的显示转换功能,并将XPath作为XSLT的基础予以介绍。对于FO,因为它的发展道路是路漫漫其修远兮,所以只用较小的篇幅介绍一下,使读者对其有一个概括性的了解。<BR></P></DIV>
<P></P>
<P></P></TD></TR></TBODY></TABLE>
</center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -