欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
XML認證教程,第 4 部分: XSL樣式單
對于一批XML數據,應用處理程序要綜合XML文檔、文檔類(lèi)型說(shuō)明(Dtd/Schema) 以及樣式單三方面要素來(lái)處理和顯示它。

什么是樣式單
對于一批XML數據,應用處理程序要綜合XML文檔、文檔類(lèi)型說(shuō)明(Dtd/Schema)以及樣式單三方面要素來(lái)處理和顯示它。

在XML文檔中只包含了數據信息,并沒(méi)有涉及文檔如何顯示。不錯,制定XML標準的目的是要使數據結構化,賦予其明確的語(yǔ)意,使之易于進(jìn)行數據交換。XML早已不再把目光局限在文字圖象的顯示上,而是要建立它們之間的內在關(guān)系??梢哉f(shuō),XML文檔本身是重內容而不重形式。

可是,XML結構化地組織信息固然好,但如果不加修飾地把一大堆枯燥的數據擺在那里,也足以令人眼花頭痛。

樣式單(StyleSheet)是一種專(zhuān)門(mén)描述結構文檔表現方式的文檔,它既可以描述這些文檔如何在屏幕上顯示,也可以描述它們的打印效果,甚至聲音效果。樣式單一般不包含在XML文檔內部,而以獨立的文檔方式存在。

樣式單可以實(shí)現非常復雜的顯示效果,但由于樣式描述與數據描述相分離,顯示細節的描述并不影響文檔中數據的內在結構。

樣式單的最大優(yōu)點(diǎn)是:XML關(guān)于文檔瀏覽的基本思想是將數據與數據的顯示分別定義。這樣一來(lái),XML格式文檔不會(huì )重蹈某些HTML文檔結構混雜、內容繁亂的覆轍,XML的編寫(xiě)者也可以集中精力于數據本身,而不受顯示方式的細枝末節的影響。不僅如此,樣式單還帶來(lái)另一個(gè)好處,即定義不同的樣式表可以使相同的數據呈現出不同的顯示外觀(guān),從而適合于不同應用,甚至能夠在不同的顯示設備上顯示。這樣,XML數據就可以得到最大程度上的重用性,滿(mǎn)足不同的應用需求。

XSLT
W3C已經(jīng)給出了兩種樣式單語(yǔ)言的推薦標準,一種是層疊樣式單CSS(Cascading Style Sheets),另一種是可擴展樣式單語(yǔ)言XSL(eXtensible Stylesheet Language)。本章講的是XSL。

XSL本身就是一個(gè)XML文檔,它是通過(guò)XML進(jìn)行定義的,遵守XML的語(yǔ)法規則,是XML 的一種具體應用。因此系統可以使用同一個(gè)XML解釋器對XML文檔及其相關(guān)的XSL文檔進(jìn)行解釋處理。XSL由兩大部分組成:第一部分描述了如何將一個(gè)XML文檔進(jìn)行轉換,轉換為可瀏覽或可輸出的格式;第二部分則定義了格式對象FO(fomatted object)。由于到目前為止,W3C還未能出臺一個(gè)得到多方認可的FO,因此本章主要XML變換--XSL transformations(XSLT)?,F在一般所說(shuō)的XSL大都指的是XSLT。

XSLT的應用
XSLT主要的功能就是轉換,它將一個(gè)沒(méi)有形式表現的XML內容文檔作為一個(gè)源樹(shù),將其轉換為一個(gè)有樣式信息的結果樹(shù)。在XSLT文檔中定義了與XML文檔中各個(gè)邏輯成分相匹配的模板,以及匹配轉換方式。它可以很好地描述XML文檔向任何一個(gè)其它格式的文檔作轉換的方法,例如轉換為另一個(gè)邏輯結構的XML文檔、HTML文檔、 XHTML文檔、VRML文檔、SVG文檔等等,不一而足。

使用XSL定義XML文檔顯示方式的基本思想是:通過(guò)定義轉換模板,將XML源文檔轉換為帶樣式信息的可瀏覽文檔。

限于目前瀏覽器的支持能力,大多數情況下是轉換為一個(gè)HTML文檔進(jìn)行顯示。

在XML中聲明XSL樣式單的方法為:<?xml-stylesheet type="text/xsl" href="mystyle.xsl"?>
至于具體的轉換過(guò)程,既可以在服務(wù)器端進(jìn)行,也可以在客戶(hù)端進(jìn)行。

XSLT樣式單文檔舉例
下面是一個(gè)具體的xslt樣式單文檔:

 <?xml version="1.0" encoding="gb2312" ?>  <xsl:stylesheet xmlns:xsl="http://www.w3.org/tr/WD-xsl">  <xsl:template match="/"> 	 <HTML> 		<HEAD> 		<TITLE>學(xué)生花名冊</TITLE> 			<STYLE> .title{font-size:15pt; font-weight:bold; 				color:blue } .name{color:red}			</STYLE> 		</HEAD> 		<BODY> 			<P class="title" >學(xué)生花名冊</P> 			<xsl:apply-templates select="學(xué)生花名冊"/> 		</BODY> 	</HTML>  </xsl:template>   <xsl:template match="學(xué)生花名冊"> 	 <table BORDER="1"> 		<THEAD> 		  <td> <B>姓名</B> </td>		  <td> <B>籍貫</B> </td> 		  <td> <B>年齡</B> </td> 		  <td> <B>電話(huà)</B> </td> 		</THEAD>		<xsl:for-each select="學(xué)生" order-by="名字"> 		<tr> 		  <td><B><xsl:value-of select="名字"/></B></td> 		  <td><xsl:value-of select="籍貫"/></td> 		  <td><xsl:value-of select="年齡"/></td> 		  <td><xsl:value-of select = "電話(huà)號碼"/></td> 		</tr>		</xsl:for-each>	   </table>  </xsl:template>  </xsl:stylesheet>

模板在XSLT中的應用
將上例的XML文檔用XSL樣式轉換為HTML文檔的步驟是:先用XML解釋器將XML文檔解釋成DOM對象,相當于建立了原文檔的一個(gè)節點(diǎn)樹(shù)。然后用XML解釋器解釋XSL文檔,用模板匹配的方法去遍歷XML節點(diǎn)樹(shù),將樹(shù)中的節點(diǎn)按模板的設定轉換為模板指示的顯示語(yǔ)言,即HTML語(yǔ)言。

要了解這段程序,就要先了解模板。xsl:template是模板元素,用于定義模板,通常每個(gè)xsl:template有一個(gè)節點(diǎn)匹配屬性,由"match="指定。在對模板進(jìn)行匹配時(shí)使用"xsl:apply-templates",用"select"屬性選擇要匹配的模板,相當于一個(gè)調用的過(guò)程。比如在
<xsl:apply-templates select="學(xué)生花名冊"/>
這段語(yǔ)句中用到了xsl:apply-templates,于是系統就跳到了用<xsl:template match="學(xué)生花名冊">括起的“函數”中生成HTML代碼。

如果在xsl:apply-templates語(yǔ)句中沒(méi)有指定select屬性,那么就調用所有可以調用的模板。

接著(zhù)介紹xslt常用的幾條語(yǔ)句。

  • 介紹一下XSL的幾條主要語(yǔ)句:
  • xsl:stylesheet 聲明語(yǔ)句
  • xsl:for-each select = "" 循環(huán)語(yǔ)句,遍歷與引號中的屬性值相同的節點(diǎn)
  • xsl:value-of select = "" 賦值語(yǔ)句,取出引號中指定的屬性值

分析XSLT代碼執行過(guò)程
在作過(guò)XML聲明和XSL聲明之后,系統最先匹配XML源樹(shù)的根節點(diǎn)。根節點(diǎn)用"/"表示,它的匹配方法在一對<xsl:template match="/">括起的源碼中聲明。按照這段代碼,首先生成帶有樣式信息的HTML文檔的開(kāi)頭一段代碼:

 <HTML>   <HEAD>     <TITLE>學(xué)生花名冊</TITLE>     <STYLE> .title{font-size:15pt; font-weight:bold; color:blue }	.name{color:red}    </STYLE>   </HEAD>   <BODY>     <P class="title" >學(xué)生花名冊</P>  

接著(zhù),系統看到了<xsl:apply-templates select="學(xué)生花名冊"/>的指示,于是,它在XML源樹(shù)中尋找標記為“學(xué)生花名冊”的節點(diǎn)進(jìn)行匹配。就象函數調用一樣,現在系統跳到了用<xsl:template match="學(xué)生花名冊">括起的“函數”中繼續生成下面的 HTML代碼:

  <table BORDER="1">      <THEAD>        <td> <B>姓名</B> </td>       <td> <B>籍貫</B> </td>        <td> <B>年齡</B> </td>        <td> <B>電話(huà)</B> </td>       </THEAD> 

現在,系統又接到了新的指示 <xsl:for-each select="學(xué)生" order-by="名字">。這條指示要求系統尋找標記為“student”的子節點(diǎn),并按照“名字”下的內容將這些節點(diǎn)排序,然后一一處理。

對于每一個(gè)“學(xué)生”子樹(shù)中的內容,系統為其生成表中一行的內容。每一行包含四列,分別把標記為“名字”、“籍貫”、“年齡”、“電話(huà)號碼”的子節點(diǎn)的內容填進(jìn)去。其中“名字”下的內容還是粗體顯示。對應到本例中的XML數據,生成的HTML代碼為:

    <tr>       <td><B>李華</B></td>       <td>河北</td>       <td>15</td>       <td>62875555</td>     </tr>     <tr>       <td><B>張三</B></td>       <td>北京</td>       <td>14</td>       <td>82873425</td>     </tr>

處理完<xsl:for-each select="學(xué)生" order-by="名字">中的內容,系統繼續生成HTML代碼:

</table> 

至此,系統已處理完<xsl:template match="學(xué)生花名冊">中的所有內容,可以“函數返回”了。系統返回到<xsl:template match="/">括起的源碼中,完成HTML最后兩行代碼的生成:

	</BODY>	</HTML> 

把上面的HTML代碼串起來(lái),就是生成的轉換結果文件。

XSLT文件文檔結構
前面說(shuō)過(guò),XSLT文檔本身是XML文檔,因此文檔的第一句自然是:

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

接下來(lái)是樣式單部分:

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

xmlns:xsl指示了XSL的命名空間,在XSLT標準中,定義了XSLT的命名空間為 http://www.w3.org/1999/XSL/transform,然而在ie5中不支持這個(gè)名字空間,需要用到微軟自己的名字空間http://www.w3.org/tr/WD-xsl。

XSLT在進(jìn)行轉換時(shí),首先遍歷XML源文檔樹(shù),找到要處理的節點(diǎn),然后將定義好的模板信息施加到該節點(diǎn)中。
下面將要介紹xslt樣式單的語(yǔ)法。

樣式單模板xsl:template
xsl:template元素有一個(gè)mode屬性,可以根據需要去匹配不同模式的模板。若將前例作如下修改:

	<xsl:template match="/" mode="blue"> 		...	<TITLE>學(xué)生花名冊</TITLE> 	<STYLE> .title{font-size:15pt; font-weight:bold; color:blue }		...	<xsl:template match="/" mode="red"> 		...	<TITLE>學(xué)生花名冊</TITLE> 	<STYLE> .title{font-size:15pt; font-weight:bold; color:red }

如果要將TITLE輸出為藍色,則用下面語(yǔ)句匹配:
<xsl:apply-templates select="/" mode="blue"/>

如果要將title輸出為紅色,則寫(xiě)為:
<xsl:apply-templates select="/" mode="red"/>

此外,模板總是與節點(diǎn)相對應的,一個(gè)節點(diǎn)可能對應于不同的模板,那么如何確定各模板匹配的先后次序呢?XSLT中可為xsl:template設置優(yōu)先級,寫(xiě)法是:
<xsl:template match="student" priority="n"> //n為優(yōu)先級數

xsl:value-of計算節點(diǎn)值
在使用XSLT進(jìn)行轉換時(shí),常常需要獲取節點(diǎn)值,使用xsl:value-of元素可達到這個(gè)目的,如下例:
<xsl:value-of select="籍貫"/>

得到的是學(xué)生原籍的值,select屬性指定要獲取的是哪一個(gè)節點(diǎn)的節點(diǎn)值。

xsl:for-each循環(huán)處理
使用xsl:for-each可對所選節點(diǎn)依次進(jìn)行處理,如例中在生成表格處理中,就是利用循環(huán)將各個(gè)學(xué)生的信息取出放入表格中的,寫(xiě)法是:

	<xsl:for-each select="student" order-by="name"> 		... 	</xsl:for-each> 

可以認為<xsl:for-each select="">能實(shí)現多個(gè) <xsl:apply-templates select="">的功能。

xsl:sort排序處理
對于用xsl:for-each或xsl:apply-templates匹配的節點(diǎn),可使用xsl:sort將所選節點(diǎn)內容進(jìn)行排序

  1. 按大小寫(xiě)排序
    <xsl:sort case-order="upper-first" select="@id"/> 以id為關(guān)鍵字按大寫(xiě)優(yōu)先排序
    <xsl:sort case-order="lower-first" select="@id"/> 以id為關(guān)鍵字按小寫(xiě)優(yōu)先排序
  2. 按字母順序排序
    <xsl:sort order="ascending" select="@id "/> 以id為關(guān)鍵字按字母升序排序
    <xsl:sort order="descending" select="@id "/> 以id為關(guān)鍵字按字母降序排序
  3. 按數據類(lèi)型排序
    <xsl:sort data-type="text" select="@id"/> 以id為關(guān)鍵字按文本類(lèi)型排序,如對于一組id數據101,2,44,305 來(lái)說(shuō),排序結果是101,2,305,44
    <xsl:sort data-type="number" select="@id"/> 以id為關(guān)鍵字按數據類(lèi)型排序,上面一組數據的排序結果是2,44,101,305
    另外,還有一種指定排序的方法,就是在前面學(xué)生花名冊例中所使用的order-by: <xsl:for-each select="student" order-by="name"> 也可使得輸出學(xué)生時(shí)按名字排序。

元素與屬性創(chuàng )建
XSLT是一個(gè)動(dòng)態(tài)的樣式單,在處理過(guò)程中可產(chǎn)生新的元素或元素屬性,方法如下:

內 容元 素舉 例轉換結果
創(chuàng )建元素xsl:element<xsl:element name="TITLE">學(xué)生花名冊</xsl:element>學(xué)生花名冊
創(chuàng )建屬性xsl: attribute<TITLE><xsl:attribute name="style">color:blue </xsl:attribute>學(xué)生花名冊</TITLE ><TITLE style="color:blue">學(xué)生花名冊</TITLE>
創(chuàng )建文本xsl:text (可以保護文本中的空白字符)<xsl:text> 這是學(xué)生花名冊 </xsl:text >這是學(xué)生花名冊
創(chuàng )建處理指令xsl:processing-instruction<xsl:processing-instruction name="xml-stylesheet"> href="book.css" type="text/css" </xsl:processing-instruction><?xml-stylesheet href="book.css" type="text/css"?>
創(chuàng )建注釋xsl:comment<xsl:comment> 以下是學(xué)生花名冊,請勿刪改! </xsl:comment><!-- 以下是學(xué)生花名冊,請勿刪改!-->

節點(diǎn)拷貝
在對XML文檔進(jìn)行處理時(shí),XSLT還可以通過(guò)拷貝的方式復制節點(diǎn),方法是利用 xsl:copy和xsl:copy-of。其中xsl:copy只拷貝當前節點(diǎn),不包括子節點(diǎn)和屬性;而xsl:copy-of的拷貝內容則包括當前節點(diǎn)、子節點(diǎn)和屬性。例如對于:
<p id="p1">A <B>is a char</B> </p>

如果樣式單寫(xiě)為如下形式:

	<xsl:stylesheet version="1.0" 	xmlns:xsl="http://www.w3.org/1999/XSL/transform"> 	<xsl:template match="p"> 	  <DIV>		<xsl:text> copy-of : </xsl:text> 		<xsl:copy-of select="."/> 	  </DIV> 	  <DIV>		<xsl:text> copy : </xsl:text> 		<xsl:copy/> 	  </DIV> 	</xsl:template> 	</xsl:stylesheet> 

轉換后生成如下代碼:

	<DIV> 	  copy-of : <p id="p1">A <B>is a char</B> </p>	</DIV>	<DIV> 	  copy : <p/>	</DIV> 

由此可見(jiàn),兩種拷貝方式結果大相徑庭。

輸出格式與編碼問(wèn)題
XSLT是一個(gè)轉換語(yǔ)言,它的目的是將XML源文檔轉換為另一種格式文檔,它的輸出結果可以是HTML文檔,也可以是帶CSS的XML文檔。具體的輸出格式由xsl:output 指定。如果要輸出為HTML文檔,則寫(xiě)為: <xsl:output method="html"/>

同樣,要輸出XML文檔寫(xiě)為: <xsl:output method="xml"/>

如果文檔中不出現xsl:output,將缺省輸出為XML文檔,但如果在匹配模板時(shí)使用了 <HTML>標記,則輸出為HTML文檔。輸出為HTML文檔時(shí)系統都會(huì )自動(dòng)加上下面語(yǔ)句: <!DOCTYPE html PUBLIC "-//W3C//Dtd HTML 4.0 transitional//EN">

此外,還可以利用xsl:output指定編碼方式,如UTF-8,UTF-16,GB2312等。例如: <xsl:output method="html" encoding="GB2312"/> 它指定了該XSLT的輸出結果是HTML格式,編碼方式為中文。


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
"DXML":將 TOC 從 XML 帶到 DHTML
XSLT輕松入門(mén)第二章:XSLT的實(shí)例
XSLT語(yǔ)法概要
XSLT 是什么類(lèi)型的語(yǔ)言?
Templates文件夾里面的東西能刪除嗎?
XML復習題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久