?? 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 + -