怎樣用XML和XSL來生成動態(tài)頁面(3)_Xml教程
推薦:XML與HTML的結(jié)合(下)XML的嵌套處理 一般情況下,我們從數(shù)據(jù)庫中查詢得到的結(jié)果集可能很大,所以從服務(wù)器返回到客戶端時,數(shù)據(jù)會被分成若干個頁面分別進(jìn)行傳遞。此時,利用TABLE元素中的DATAPAGESIZE屬性可以指定每
三、用xsl作為模板語言
為了得到html輸出,我們把生成的xml文件和控制xml數(shù)據(jù)如何表示的xsl模板相結(jié)合。我們的xsl模板由精心組織的xsl和html標(biāo)簽組成。
開始建模板
我們的xsl模板開始部分與下面這段代碼類似。第一行代碼為必需代碼,將本文件定義為xsl樣式表。xmlns:xsl=屬性引用本文件所使用的xml名稱空間,而version=屬性則定義名稱空間的版本號。在文件的末尾,我們關(guān)閉標(biāo)簽。
由<xsl:template>開始的第二行代碼確定了xsl模板的模式。match屬性是必需的,在這里指向xml標(biāo)簽<basketpage>。在我們的系統(tǒng)里,<basketpage>標(biāo)簽里包含<product> 標(biāo)簽,這使得xsl模板可以訪問嵌在<product>標(biāo)簽內(nèi)的產(chǎn)品信息。我們又一次必須在文件末尾關(guān)閉<xsl:template>標(biāo)簽。
接下來,我們來看一看組織良好的html。由于它將被xml解析引擎處理,所以必須符合組織良好的xml的所有規(guī)則。從本質(zhì)上來講,這意味著所有的開始標(biāo)簽必須有對應(yīng)的結(jié)束標(biāo)簽。例如,通常不被結(jié)束的<p>標(biāo)簽,必須用</p>關(guān)閉。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform"
version="1.0">
<xsl:template match="basketpage">
<html>
<head>
<title>shopping bag / adjust quantity</title>
</head>
<body bgcolor="#cccc99" bgproperties="fixed" link="#990000" vlink="#990000">
<br>
?br> </xsl:template>
</xsl:stylesheet>
在模板的主體內(nèi),有很多xsl標(biāo)簽被用于為數(shù)據(jù)表示提供邏輯。下面解釋兩個常用的標(biāo)簽。
choose
<xsl:choose>標(biāo)簽類似于傳統(tǒng)編程語言中if-then-else結(jié)構(gòu)的開始部分。在xsl中,choose標(biāo)簽表示在代碼進(jìn)入的部分中,賦值將觸發(fā)動作的發(fā)生。擁有賦值屬性的<xsl:when>標(biāo)簽跟在choose標(biāo)簽后面。如果賦值是正確的,位于<xsl:when>的開始和結(jié)束標(biāo)簽之間的內(nèi)容將被使用。如果賦值錯誤,就使用<xsl:otherwise>的開始和結(jié)束標(biāo)簽之間的內(nèi)容。整個部分用</xsl:choose>來結(jié)束。
在這個例子里,when標(biāo)簽會為quantity標(biāo)簽檢查xml。如果quantity標(biāo)簽里含有值為真的error屬性,quantity標(biāo)簽將會顯示列在下面的表格單元。如果屬性的值不為真,xsl將會顯示otherwise標(biāo)簽間的內(nèi)容。在下面的實例里,如果error屬性不真,則什么都不會被顯示。
<xsl:choose>
<xsl:when test="quantity[@error='true']">
<td bgcolor="#ffffff"><img height="1" width="1" src="http://www.hl5o.cn/http://img.sparks.com/images/i-catalog/sparks_images/sparks_ui/clearpixel.gif"/></td>
<td valign="top" bgcolor="#ffffff" colspan="2"><font face="verdana, arial" size="1" color="#cc3300"><b>*not enough in stock. your quantity was adjusted accordingly.</b></font></td>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
for-each
<xsl:for-each>標(biāo)簽可以用來對相似xml數(shù)據(jù)的多種情況應(yīng)用同一個樣式表。對于我們來說,可以從數(shù)據(jù)庫中取出一系列產(chǎn)品信息,并在web頁上進(jìn)行統(tǒng)一格式化。這里有一個例子:
<xsl:for-each select="package">
<xsl:apply-templates select="product"/>
</xsl:for-each>
for-each 循環(huán)在程序遇到標(biāo)簽時開始。這個循環(huán)將在程序遇到標(biāo)簽時結(jié)束。一旦這個循環(huán)運行,每次標(biāo)簽出現(xiàn)時都會應(yīng)用這個模板。
分享:如何用XSLT把ADO記錄集轉(zhuǎn)換成XML孟憲會 由于XML(可擴展標(biāo)記語言:eXtensible Markup Language)真正的平臺無關(guān)性,它正在逐漸成為數(shù)據(jù)傳輸?shù)闹饕橘|(zhì)。XML是一種自描述的語言,數(shù)據(jù)本身就已經(jīng)包含了元數(shù)據(jù),即關(guān)于數(shù)據(jù)本身的
- xml創(chuàng)建節(jié)點(根節(jié)點、子節(jié)點)
- WML開發(fā)教程之 WAP網(wǎng)站服務(wù)器配置方法
- WMLScript的語法基礎(chǔ)
- 收集的WML Script標(biāo)準(zhǔn)函數(shù)庫
- WML教程之文本框控件Input
- 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)
- xml文件的結(jié)構(gòu)解讀
- 關(guān)于XSL - XSL教程
- 選擇模式 - XSL教程 - 2
- XPath入門 - XSL教程 - 3
- 匹配模式 - XSL教程 - 4
- 測試模式 - XSL教程 - 5
- 相關(guān)鏈接:
- 教程說明:
Xml教程-怎樣用XML和XSL來生成動態(tài)頁面(3)
。