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

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

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

開(kāi)通VIP
xslt輕松入門(mén)(zt)

1.XSLT的概念

1.1 什么是XSLT
1.2 為什么要用XSLT
1.3 XSLT的歷史
1.4 什么是XPath
1.5 XSLT和CSS的比較
1.6 XSLT和IE5

1.XSLT的概念

我們首先來(lái)澄清一個(gè)概念,大家可能聽(tīng)說(shuō)過(guò)XSL(eXtensible Stylesheet Language),XSL和我們這里說(shuō)的XSLT從狹義上理解是一樣的,而按照W3C的標準,XSLT的說(shuō)法更嚴格些,因此我們在文章中統一使用XSLT的稱(chēng)法。它們之間具體的關(guān)系我們會(huì )在下面講述。

1.1 什么是XSLT

XSLT的英文標準名稱(chēng)為eXtensible Stylesheet Language Transformation。根據W3C的規范說(shuō)明書(shū)(http://www.w3.org/TR/xslt),最早設計XSLT的用意是幫助XML文檔(document)轉換為其它文檔。但是隨著(zhù)發(fā)展,XSLT已不僅僅用于將XML轉換為HTML或其它文本格式,更全面的定義應該是:

XSLT是一種用來(lái)轉換XML文檔結構的語(yǔ)言。

1.2 為什么要用XSLT

我們已經(jīng)知道,XML是一種電腦程序間交換原始數據的簡(jiǎn)單而標準的方法。它的成功并不在于它容易被人們書(shū)寫(xiě)和閱讀,更重要的是,它從根本上解決了應用系統間的信息交換。因為XML滿(mǎn)足了兩個(gè)基本的需求:

(1).將數據和表達形式分離。就象天氣預報的信息可以顯示在不同的設備上,電視,手機或者其它。

(2).在不同的應用之間傳輸數據。電子商務(wù)數據交換的與日俱增使得這種需求越來(lái)越緊迫。

為了使數據便于人們的閱讀理解,我們需要將信息顯示出來(lái)或者打印出來(lái),例如將數據變成一個(gè)HTML文件,一個(gè)PDF文件,甚至是一段聲音;同樣,為了使數據適合不同的應用程序,我們必須有能夠將一種數據格式轉換為另一種數據格式,比如需求格式可能是一個(gè)文本文件,一個(gè)SQL語(yǔ)句,一個(gè)HTTP信息,一定順序的數據調用等。而XSLT就是我們用來(lái)實(shí)現這種轉換功能的語(yǔ)言。將XML轉換為HTML,是目前XSLT最主要的功能。

1.3 XSLT的歷史

想很多其他XML家族成員一樣,XSLT是由W3C起草和制定的。它的主要發(fā)展歷程如下:

.1995年由James Clark提議;

.1997年8月正式提案為XSL;

.1998年5月由Norman Walsh完成需求概要;

.1998年8月18日XSL草案發(fā)布;

.1999年11月16日正式發(fā)布XSL 1.0推薦版本。

目前,XSLT仍然在快速的發(fā)展中,XSLT1.1的草案已經(jīng)可以在W3C網(wǎng)站(http://www.w3.org/TR/xslt11)上看到。

1.4 什么是XPath

XPath是XSLT的重要組成部分,我們將在第四章講解它的詳細語(yǔ)法。那么XPath是什么呢?我們首先來(lái)了解一下XSL系列的"家族"關(guān)系。如下圖:



XSL在轉換XML文檔時(shí)分為明顯的兩個(gè)過(guò)程,第一轉換文檔結構;其次將文檔格式化輸出。這兩步可以分離開(kāi)來(lái)并單獨處理,因此XSL在發(fā)展過(guò)程中逐漸分裂為XSLT(結構轉換)和XSL-FO(formatting objects)(格式化輸出)兩種分支語(yǔ)言,其中XSL-FO的作用就類(lèi)似CSS在HTML中的作用。而我們這里重點(diǎn)討論的是第一步的轉換過(guò)程,也就是XSLT。

另外,在學(xué)習XML時(shí)我們已經(jīng)知道XML是一個(gè)完整的樹(shù)結構文檔。在轉換XML文檔時(shí)可能需要處理其中的一部分(節點(diǎn))數據,那么如何查找和定位XML文檔中的信息呢,XPath就是一種專(zhuān)門(mén)用來(lái)在XML文檔中查找信息的語(yǔ)言。XPath隸屬XSLT,因此我們通常會(huì )將XSLT語(yǔ)法和XPath語(yǔ)法混在一起說(shuō)。

用一種比較好理解的解釋?zhuān)喝绻麑ML文檔看作一個(gè)數據庫,XPath就是SQL查詢(xún)語(yǔ)言;如果將XML文檔看成DOS目錄結構,XPath就是cd,dir等目錄操作命令的集合。

1.5 XSLT和CSS的比較

CSS同樣可以格式化XML文檔,那么有了CSS為什么還需要XSLT呢?因為CSS雖然能夠很好的控制輸出的樣式,比如色彩,字體,大小等,但是它有嚴重的局限性,就是:

(1) CSS不能重新排序文檔中的元素;

(2) CSS不能判斷和控制哪個(gè)元素被顯示,哪個(gè)不被顯示;

(3) CSS不能統計計算元素中的數據;

換句話(huà)說(shuō),CSS只適合用于輸出比較固定的最終文檔。CSS的優(yōu)點(diǎn)是簡(jiǎn)潔,消耗系統資源少;而XSLT雖然功能強大,但因為要重新索引XML結構樹(shù),所以消耗內存比較多。

因此,我們常常將它們結合起來(lái)使用,比如在服務(wù)器端用XSLT處理文檔,在客戶(hù)端用CSS來(lái)控制顯示??梢詼p少響應時(shí)間。

1.6 XSLT和IE5

在XSLT草案發(fā)布不久,微軟就在IE4中提供了支持XSL功能的預覽版本,到IE5.0發(fā)布時(shí),正式全面支持XSLT,可是由于IE5發(fā)布的比XSLT1.0標準時(shí)間早,因此在IE5.0中支持的XSTL功能和XSLT 1.0略有不同。(呵呵~~XML推行的主要原因之一就是解決HTML過(guò)分依賴(lài)瀏覽器的問(wèn)題,現在微軟又想標新立異?)。好在微軟的IE5.5中執行的標準已經(jīng)和W3C的XSLT1.0基本相近。但令人頭疼的是IE5.0已經(jīng)發(fā)行了幾百萬(wàn)套,您使用的XSLT很可能不能被客戶(hù)的瀏覽器正確執行。目前XSLT 1.1仍在發(fā)展中,W3C及有關(guān)組織也在和微軟協(xié)商爭取獲得統一。呵呵~~故事還遠遠沒(méi)有結束噢。

注意:本文中提到的語(yǔ)法都是根據XSLT 1.0的標準來(lái)講的,沒(méi)有任何微軟的"方言"。

Posted by 老冒 at 16:11  閱讀(87) 評論(4) 引用(0) 技術(shù)文摘
開(kāi)放權限:所有人可見(jiàn)

引用

http://www2.uuzone.com/app/trackBack.do?type=blog&trackBackID=35758

評論

2.XSLT的實(shí)例

2.1 XSLT如何轉換XML
2.2 一個(gè)實(shí)例
2.3 過(guò)程解析
2.4 XSLT的用途

2.1 XSLT如何轉換XML

我們打個(gè)有趣的比方,你玩過(guò)橡皮泥吧,用不同的模子按上去,就可以做出需要的形狀。如果我們假設XML數據文檔是一塊大橡皮泥,XSLT就象是一個(gè)模子,用力一按,就做出需要的形狀來(lái)---符合不同需要的HTML文檔。

具體看下面的過(guò)程示意圖:



我們將XML原文檔輸入,用XSL作為模板,通過(guò)轉換引擎,最終輸出需要的HTML文檔。其中的轉換引擎就是比喻中"用力一按"的過(guò)程。在具體應用中,有專(zhuān)門(mén)的軟件來(lái)實(shí)現這個(gè)轉換過(guò)程,名為XML Processor。目前已經(jīng)有很多 Processor 軟件(下面將詳細提到),在IE5.5中也已經(jīng)內嵌了XML Processor。

2.2 一個(gè)實(shí)例

現在我們來(lái)看一個(gè)簡(jiǎn)單的XSLT實(shí)際應用例子,獲得一些感官上的認識。很多網(wǎng)頁(yè)設計師看到類(lèi)似HTML的代碼才會(huì )放心,代碼是那樣的親切和熟悉。

例子1: "Hello, world!"

hello world作為第一個(gè)教程已經(jīng)是程序語(yǔ)言中的慣例了。我們也遵守這個(gè)慣例,看看如何利用XSLT來(lái)顯示"hello world"。雖然這個(gè)例子沒(méi)有什么實(shí)際用途,但是請大家不要急,后面還有更詳細的例子。

第一步:建立要輸入XML文檔hello.xml。

<?xml version="1.0" encoding="iso-8859-1"?>

<greeting>Hello, world!</greeting>

這是一個(gè)很簡(jiǎn)單XML文檔,只包含一個(gè)節點(diǎn)的XML結構樹(shù)。

第二步:建立XSLT文檔hello.xsl。提示:默認的XSLT文件的后綴名為.xsl。

<?xml version="1.0" encoding="iso-8859-1"?>

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

<xsl:template match="/">

<html>

<head>

<title>First XSLT example</title>

</head>

<body>

<p><xsl:value-of select="greeting"/></p>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

你現在可以用IE5.0以上版本瀏覽器打開(kāi)這個(gè)hello.xsl文件,看到XSL的結構樹(shù)。

第三步:在XML中調用這個(gè)XSL文件。修改hello.xml的代碼為:

<?xml version="1.0" encoding="iso-8859-1"?>

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

<greeting>Hello, world!</greeting>

ok,到這一步原理上已經(jīng)完成了所有的代碼,接下來(lái)只要用一個(gè)XSLT的處理器(XML Processor)來(lái)執行hello.xml就可以看到"hello
world"的顯示結果了。流行的處理器軟件有以下幾種:

(1).James Clark的XT。下載網(wǎng)址:http://www.jclark.com/xml/xt.html

(2).IBM的XML for Java軟件包,名為L(cháng)otusXSL。下載網(wǎng)址:www.alphaworks.ibm.com/tech/xml4j

(3).Saxon。下載網(wǎng)址:http://www.wrox.com

(4).微軟的MSXML3。下載網(wǎng)址:http://www.microsoft.com/xml

有網(wǎng)友要問(wèn),我想在瀏覽器中看到"hello world"的效果應該怎么做?在微軟的IE5.5內嵌了MSXML3解釋器,你可以用IE5.5打開(kāi)hello.xml文件,就可以看到結果。如果只看到XML結構樹(shù),不是單獨的"hello
world"字樣,說(shuō)明你的瀏覽器沒(méi)有安裝MSXML3版本。

如果沒(méi)有安裝又想看效果怎么辦?那還是用我們在XML教程中的老辦法,采用JS實(shí)現。(這已經(jīng)超出了本文要講的范圍,但為了更加直觀(guān),便于理解,我們在這里提供實(shí)例代碼。)下面是一種實(shí)現的代碼,可以保存為hello.htm,和上面的hello.xml,hello.xsl放在同一目錄下面。最后用IE5.0以上版本打開(kāi)hello.htm就可以看到效果了。

<html>

<head>

<script language="javascript" for="window" event="onload">

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

xmlDoc.async="false";

xmlDoc.load("hello.xml");

nodes = xmlDoc.documentElement.childNodes;

greeting.innerText = nodes.item(0).text;

</script>

<title>First XSLT Example</title>

</head>

<body bgcolor="#FFFFFF">

<span id="greeting"></span><br>

</body>

</html>

2.3 過(guò)程解析

如果你成功的看到效果,你也許想知道這些代碼的具體含義,我們來(lái)詳細解說(shuō):看hello.xsl文件

<?xml version="1.0" encoding="iso-8859-1"?>

這是標準的XML文檔的首行代碼,因為XSLT本身也是XML文檔。encoding屬性用來(lái)定義文檔使用的編碼形式,iso-8859-1主要支持西歐和北美的語(yǔ)言編碼。如果你想使用簡(jiǎn)體中文,那么就應該寫(xiě)成:

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

接下去的代碼是:

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

這是標準的XSLT文件首行代碼。xsl:stylesheet代碼的意思是將文檔作為一個(gè)樣式表來(lái)(stylesheet)處理。xmlns:xsl屬性是一個(gè)名字空間聲明,和XML中的名字空間使用方法一樣,用來(lái)防止元素名稱(chēng)重復和混亂。其中前綴xsl的意思是文檔中使用的元素遵守W3C的XSLT規范。最后的version屬性說(shuō)明樣式表只采用XSLT
1.0的標準功能,這也是目前僅有的標準。

<xsl:template match="/">

一個(gè)<xsl:template>元素定義一個(gè)模板規則。屬性match="/"說(shuō)明XML源文檔中,這個(gè)模板規則作用的起點(diǎn)。"/"是一種XPath語(yǔ)法,我們在后面將詳細講述,這里的"/"代表XML結構樹(shù)的根(root)。

接下去的代碼是:

<html>

<head>

<title>First XSLT Example</title>

</head>

<body>

<p><xsl:value-of select="greeting"/></p>

</body>

</html>

說(shuō)明:當模板規則被觸發(fā),模板的內容就會(huì )控制輸出的結果。例子中,模板大部分內容由HTML元素和文本構成。只有<xsl:value-of>元素是XSLT語(yǔ)法,這里<xsl:value-of>的作用是拷貝原文檔中的一個(gè)節點(diǎn)的值到輸出文檔。而select屬性則詳細指定要處理的節點(diǎn)名稱(chēng)。這是XPath語(yǔ)法,"greeting"的意思就是尋找根節點(diǎn)名為greeting的元素,并用模板來(lái)處理這個(gè)節點(diǎn)。具體的就是找到<greeting>元素,然后將元素的值"hello
world"按模板樣式拷貝到輸出文件。

提示:由于XML文檔是嚴格的層級結構(用IE5查看XML文件,會(huì )看見(jiàn)XML文檔類(lèi)似多級關(guān)聯(lián)菜單),所以我們形象的稱(chēng)XML文檔為文檔樹(shù),其中每一對元素稱(chēng)作樹(shù)的一個(gè)節點(diǎn)。根元素就是根節點(diǎn)。

最后關(guān)閉所有元素:

</xsl:template>

</xsl:stylesheet>

好,例子解說(shuō)完畢。你是否想過(guò)為什么要用這么復雜的方法來(lái)顯示"hello world"呢?

關(guān)鍵不在表面,而在于實(shí)質(zhì):用這種方法,hello world可以從XML文檔中被提取出來(lái),并用各種不同的XSLT模板處理,來(lái)輸出不同需求的文檔。我們來(lái)看看XSLT的主要用途:

2.4 XSLT的用途

XSLT的主要用途就是數據轉換應用。

由于以XML為基礎的電子商務(wù)廣泛普及,XSLT作為數據轉換的角色也越來(lái)越重要。例如直接將電視新聞的數據格式轉換成報紙新聞需要的數據格式;將股票數據直接轉換成圖片顯示在網(wǎng)頁(yè)上;對EDI(電子數據交換)數據進(jìn)行統計,排序等等。

XSLT是處理類(lèi)似工作的理想工具。

Posted by 老冒 at 2005-08-14 16:16:11

通過(guò)前面兩章的介紹,我們已經(jīng)對XSLT的基本概念和它的轉換過(guò)程有了一些了解。下面我們一起來(lái)學(xué)習XSLT的具體語(yǔ)法。說(shuō)到語(yǔ)法總是比較枯燥的,您可以大體上瀏覽一遍,等您真正需要使用XSLT的時(shí)候,再仔細研究它們。

3.XSLT的元素語(yǔ)法

3.1 xsl:template和xsl:apply-templates

3.2 xsl:value-of

3.3 xsl:for-each

3.4 xsl:if

3.5 Xxsl:choose, when, otherwise

3.6 xsl:sort

3.1 xsl:template和xsl:apply-templates


 

模板(template)是XSLT中最重要的概念之一。XSLT文件就是由一個(gè)一個(gè)的模板組成,任何一個(gè)XSLT文件至少包含一個(gè)模板。模板的概念就象是搭積木;你如果是程序員,也可以將模板看作一個(gè)方法,一個(gè)類(lèi),或者一個(gè)模塊。它們可以被拼裝組合,也可以單獨成塊,不同的模板控制不同的輸出格式。

模板(template)由兩部分組成:匹配模式(match pattern)和執行。簡(jiǎn)單的講模式定義XML源文檔中哪一個(gè)節點(diǎn)將被模板處理,執行則定義輸出的是什么格式。兩部分對應的語(yǔ)法為xsl:template和xsl:apply-templates。


 

xsl:template的語(yǔ)法是:


 

<xsl:template

match = pattern

name = qname

priority = number

mode = qname>

<!-- 執行內容 -->

</xsl:template>


 

xsl:template的作用是定義一個(gè)新模板。屬性中name,priority,和mode用來(lái)區別匹配同一節點(diǎn)的不同模板。它們不是常用的屬性。match屬性則控制模板的匹配模式(pattern),匹配模式是用來(lái)定位XML源文檔中哪一個(gè)節點(diǎn)被模板處理。一個(gè)模板匹配一個(gè)節點(diǎn)。我們用一個(gè)例子來(lái)幫助理解:

假設我們要處理一個(gè)包含章節和段落文檔。我們用para元素定義段落,用chapter元素定義章節。我們來(lái)看看match屬性可能的值。下面的語(yǔ)句寫(xiě)法說(shuō)明模板匹配所有的para元素


 

<xsl:template match="para">

</xsl:template>


 

下面的語(yǔ)句寫(xiě)法說(shuō)明模板匹配所有的para元素和所有的chapter元素:


 

<xsl:template match="(chapter|para)">

</xsl:template>


 

下面的語(yǔ)句寫(xiě)法說(shuō)明模板匹配所有的父節點(diǎn)為chapter元素的para元素:


 

<xsl:template match="chapter//para">

</xsl:template>


 

下面的語(yǔ)句寫(xiě)法說(shuō)明模板匹配根節點(diǎn):


 

<xsl:template match="/">

</xsl:template>


 

我們再來(lái)看apply-templates語(yǔ)法:


 

<xsl:apply-templates

select = node set-expression

mode = qname>

</xsl:apply-templates>


 

xsl:apply-templates用來(lái)執行那一個(gè)節點(diǎn)被模板具體處理。你可以將它理解為程序中調用子函數。select屬性用來(lái)定義確切的節點(diǎn)名稱(chēng)。xsl:apply-templates總是包含在xsl:template元素中,象這樣:


 

<xsl:template match="/">

<xsl:apply-templates select="para"/>

</xsl:template>


 

這段代碼說(shuō)明摸板匹配整個(gè)文檔(根節點(diǎn)),具體執行時(shí)處理根節點(diǎn)下所有para元素。


 

<xsl:template match="para">

<p><xsl:apply-templates/></p>

</xsl:template>


 

而這一段代碼則表示摸板匹配para節點(diǎn),所有para下的子元素都將被處理。

3.2 xsl:value-of


 

XSL:value-of用來(lái)將源文檔中元素的文本值寫(xiě)到輸出文檔中。例如:

有一個(gè)個(gè)人資料的XML文檔:


 

<?xml version="1.0" encoding="iso-8859-1"?>

<PERSON>

<name>ajie</name>

<age>28</age>

</PERSON>


 

我如果想在輸出文檔中顯示上面這個(gè)XML源文檔中的name元素的值,可以這樣寫(xiě)XSLT代碼:


 

<xsl:template match="PERSON">

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

</xsl:template>


 

執行后,你會(huì )看到"ajie"被單獨顯示出來(lái)。其中match="PERSON"定義摸板匹配PERSON節點(diǎn),xsl:value-of
語(yǔ)法說(shuō)明需要輸出一個(gè)節點(diǎn)的值,而select="name"則定義需要被輸出的元素為name??催@個(gè)過(guò)程是不是和數據庫里查詢(xún)一個(gè)人的名字很象?當然,xsl:value-of查詢(xún)還有更多,更復雜的語(yǔ)法,因為是涉及尋找和定位的功能,我們會(huì )放在后面的XPath語(yǔ)法中在仔細講解。

同樣功能的還有xsl:copy-of,用法一樣,就不重復解釋了。

3.3 xsl:for-each


 

xsl:for-each語(yǔ)法允許你循環(huán)處理被選擇的節點(diǎn)。例如:有一個(gè)含多個(gè)個(gè)人資料的XML文檔:


 

<?xml version="1.0" encoding="iso-8859-1"?>

<PEOPLE>

<PERSON>

<name>ajie</name>

<age>28</age>

</PERSON>

<PERSON>

<name>tom</name>

<age>24</age>

</PERSON>

<PERSON>

<name>miake</name>

<age>30</age>

</PERSON>

</PEOPLE>


 

我需要顯示所有人的姓名,則可以將XSLT代碼寫(xiě)成:


 

<xsl:template match="PEOPLE">

<xsl:for-each select="child::PERSON">

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

</ xsl:for-each>

</xsl:template>

3.4 xsl:if


 

xsl:if類(lèi)似普通程序語(yǔ)言的if條件語(yǔ)句,允許設定節點(diǎn)滿(mǎn)足某個(gè)條件時(shí),被模板處理。xsl:if的語(yǔ)法格式為:


 

<xsl:if test=布爾表達式>

template body

</xsl:if>


 

例如:


 

<xsl:template match="PEOPLE">

<xsl:if test="@name">

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

</xsl:if>

</xsl:template>


 

這段代碼的意思是檢測PEOPLE節點(diǎn)下所有的元素,如果發(fā)現有<name>元素,則將<name>元素的值輸出。其中@符號是統配符,表示節點(diǎn)下所有的元素。

3.5 xsl:choose, xsl:when 和 xsl:otherwise


 

xsl:if語(yǔ)法沒(méi)有else的屬性。如果我們要進(jìn)行多項選擇,那么就要使用xsl:choose / xsl:when / xsl:otherwise系列流程控制語(yǔ)法了。具體的使用請看下面的XSL文件例子:


 

<xsl:template match="PEOPLE">

<xsl:choose>

<xsl:when test="@name = ‘a(chǎn)jie‘">

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

</xsl:when>

<xsl:when test="@name">

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

</xsl:when>

<xsl:otherwise>

No name available

</xsl:otherwise>

<xsl:choose>

</xsl:template>


 

說(shuō)明:首先在PEOPLE節點(diǎn)下尋找<name>屬性值為ajie的元素,如果找到,將ajie用粗體輸出;如果沒(méi)有發(fā)現值為ajie的<name>元素,則將所有的<name>元素的值都用斜體輸出;如果沒(méi)有發(fā)現任何<name>元素,則顯示"No
name available"。


 

3.6 xsl:sort


 

在XSLT中可以對XML源文檔的元素進(jìn)行重新排序,排序的語(yǔ)法就是xsl:sort。舉例:下面的代碼就是將文檔元素按name排序。


 

<xsl:template match="PEOPLE">

<xsl:apply-templates select="PERSON">

<xsl:sort select="@name"/>

</xsl:apply-templates>

</xsl:template>


 

以上是XSLT的元素的主要語(yǔ)法,還有很多其他的語(yǔ)法,例如:import, include, element, attribute, number, param等等語(yǔ)法,在這里就不一一解釋。我們的目的是讓您對XSLT的語(yǔ)法有基本的概念,理解XSLT作為一種轉換語(yǔ)言的強大功能。

Posted by 老冒 at 2005-08-14 16:17:29

4.XPath的語(yǔ)法

我們在前面已經(jīng)提到過(guò),XPath是用來(lái)幫助XSLT在XML源文檔中查找定位信息的語(yǔ)言。在實(shí)際使用過(guò)程中,XPath和XSLT總是混在一起使用,在上面一章的語(yǔ)法例子中我們已經(jīng)有使用到XPath的語(yǔ)法,只是沒(méi)有明確點(diǎn)出。但W3C將它們分成兩個(gè)標準,所以我們也將它們拆成兩章來(lái)講解。

4.XPath的語(yǔ)法

4.1 當前位置
4.2 尋址操作
4.3 運算符
4.4 功能函數

4.1 當前位置

當我們使用XSLT處理XML源文檔是,我們用Context來(lái)表示當前正在被模板處理的節點(diǎn)位置。比如xsl:template match="/"語(yǔ)句中表示Context在文檔的根(root)節點(diǎn)。我不知道如何準確的翻譯Context這個(gè)詞,它類(lèi)似于C語(yǔ)言里的指針,表示程序當前運行的位置。理解Context對于正確處理XSL模板非常重要,當您的XSL模板輸出的文檔和您想要的不一樣,最先應該分析的就是Context在哪里。
Location Paths是用于設定你想要尋找的Context節點(diǎn)位置。就類(lèi)似DOS的目錄命令。我們看個(gè)例子

<xsl:for-each select="child::PEOPLE/descendant::PERSON">

其中child::PEOPLE/descendant::PERSON就是XPath語(yǔ)法,這個(gè)表達式就是一個(gè)Location Paths,代碼說(shuō)明要顯示所有PEOPLE元素的子元素和所有PERSON元素的子元素。通常我們會(huì )采用更簡(jiǎn)單的寫(xiě)法:

<xsl:for-each select="PEOPLE//PERSON">

我們來(lái)解釋path的兩種表示方法:"/"和"http://"。
"/"是表示當前文檔的節點(diǎn),類(lèi)似DOS目錄分割符。例如:/PEOPLE表示選擇根節點(diǎn)下的PEOPLE元素;PEOPLE/PERSON表示選擇PEOPLE元素下所有的PESON子元素。
"http://"則表示當前文檔所有的節點(diǎn)。類(lèi)似查看整個(gè)目錄。例如://PEOPLE表示選擇文檔中所有的PEOPLE元素,無(wú)論它在什么層次;PEOPLE//PERSON表示在PEOPLE元素下所有的PERSON元素,無(wú)論它的層次多深。

4.2 尋址操作

Axis和Predicate是XPath語(yǔ)法中對Location Paths進(jìn)行定位操作的語(yǔ)法,具體的用法列表如下

Axis語(yǔ)法表
--------------------------------------------------------
表達式 簡(jiǎn)寫(xiě) 說(shuō)明
--------------------------------------------------------
self . 選擇當前的節點(diǎn).。
例子 :
<TD><xsl:value-of select="."/></TD>
代碼表示在當前位置插入當前的節點(diǎn)包含的文本(text)值,
--------------------------------------------------------
parent .. 選擇當前節點(diǎn)的父節點(diǎn)。
--------------------------------------------------------
attribute @ 選擇一個(gè)元素的所有屬性。
例子:
<TD><xsl:value-of select="@PERSONID"/></TD>
選擇PERSON元素的所有屬性.
--------------------------------------------------------
child 選擇當前節點(diǎn)的所有子元素。
--------------------------------------------------------
ancestor 選擇當前節點(diǎn)的所有父元素(包括父元素的父元素,類(lèi)推)
--------------------------------------------------------

Axis幫助我們選擇當前節點(diǎn)周?chē)械墓濣c(diǎn),而Predicate則用來(lái)定位當前節點(diǎn)內部的元素。表示方法為方括號[]中加表達式:[ Expression ]。具體舉例如下:

PERSON[position()=2]
這句代碼表示尋找第二個(gè)"PERSON" 元素

PERSON[starts-with(name, "B")]
這句代碼表示尋找所有名稱(chēng)以"B"開(kāi)頭的PERSON元素。

4.3 運算符

這一節介紹XPath的運算符(Expressions),列表如下:
--------------------------------------------------------
運算符 說(shuō)明
--------------------------------------------------------
and, or 就是普通意義的and, or
--------------------------------------------------------
= 等于
--------------------------------------------------------
!= 不等于
--------------------------------------------------------
>, >= 大于,大于等于
--------------------------------------------------------
<, <= 小于,小于等于。注意:在XSL文件中,<符號要用< 表示
--------------------------------------------------------
+, -, *, div 加減乘除
--------------------------------------------------------
mod 取模
--------------------------------------------------------
| 兩個(gè)節點(diǎn)一起計算
--------------------------------------------------------

4.4 功能函數(Functions)

在XPath里有很多功能函數可以幫助我們精確尋找需要的節點(diǎn)。

count()功能
作用:統計計數,返回符合條件的節點(diǎn)的個(gè)數。
舉例:<p><xsl:value-of select="count(PERSON[name=tom])"/></p>
說(shuō)明:代碼的用途是顯示PERSON元素中姓名屬性值為tom有幾個(gè)。

number()功能
作用:將屬性的值中的文本轉換為數值。
舉例:<p>The number is: <xsl:value-of select="number(book/price)"/></p>
說(shuō)明:代碼的用途是顯示書(shū)的價(jià)格。

substring() 功能
語(yǔ)法:substring(value, start, length)
作用:截取字符串。
舉例:<p><xsl:value-of select="substring(name, 1, 3)"/></p>
說(shuō)明:代碼的用途是截取name元素的值,從第一個(gè)字母開(kāi)始顯示到第三個(gè)。

sum()功能
作用:求和。
舉例:<p>Total Price = <xsl:value-of select="sum(//price)"/></p>
說(shuō)明:代碼的用途是計算所有價(jià)格的和。

上面這些功能只是XPath語(yǔ)法中的一部分,還有大量的功能函數沒(méi)有介紹,而且目前XPath的語(yǔ)法仍然在不斷發(fā)展中。通過(guò)這些函數我們可以實(shí)現更加復雜的查詢(xún)和操作。

看到這里,我們的入門(mén)教程就快結束了。通過(guò)走馬觀(guān)花式的快速學(xué)習,希望大家對XSLT應該有了一點(diǎn)基本概念:XSLT是一種轉換XML文檔的語(yǔ)言,它包含兩個(gè)過(guò)程:轉換和格式化。XSLT的功能比CSS強大得多,它有類(lèi)似數據查詢(xún)的語(yǔ)法。如果您對XSLT感興趣,那么以上的知識是遠遠不夠的,需要查詢(xún)更多的資料。阿捷在最后一章附錄為大家提供了主要的XSLT資源。

4.4 功能函數(Functions)

在XPath里有很多功能函數可以幫助我們精確尋找需要的節點(diǎn)。

count()功能
作用:統計計數,返回符合條件的節點(diǎn)的個(gè)數。
舉例:<p><xsl:value-of select="count(PERSON[name=tom])"/></p>
說(shuō)明:代碼的用途是顯示PERSON元素中姓名屬性值為tom有幾個(gè)。

number()功能
作用:將屬性的值中的文本轉換為數值。
舉例:<p>The number is: <xsl:value-of select="number(book/price)"/></p>
說(shuō)明:代碼的用途是顯示書(shū)的價(jià)格。

substring() 功能
語(yǔ)法:substring(value, start, length)
作用:截取字符串。
舉例:<p><xsl:value-of select="substring(name, 1, 3)"/></p>
說(shuō)明:代碼的用途是截取name元素的值,從第一個(gè)字母開(kāi)始顯示到第三個(gè)。

sum()功能
作用:求和。
舉例:<p>Total Price = <xsl:value-of select="sum(//price)"/></p>
說(shuō)明:代碼的用途是計算所有價(jià)格的和。

上面這些功能只是XPath語(yǔ)法中的一部分,還有大量的功能函數沒(méi)有介紹,而且目前XPath的語(yǔ)法仍然在不斷發(fā)展中。通過(guò)這些函數我們可以實(shí)現更加復雜的查詢(xún)和操作。

看到這里,我們的入門(mén)教程就快結束了。通過(guò)走馬觀(guān)花式的快速學(xué)習,希望大家對XSLT應該有了一點(diǎn)基本概念:XSLT是一種轉換XML文檔的語(yǔ)言,它包含兩個(gè)過(guò)程:轉換和格式化。XSLT的功能比CSS強大得多,它有類(lèi)似數據查詢(xún)的語(yǔ)法。如果您對XSLT感興趣,那么以上的知識是遠遠不夠的,需要查詢(xún)更多的資料。阿捷在最后一章附錄為大家提供了主要的XSLT資源。

Posted by 老冒 at 2005-08-14 16:19:14


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
歡迎光臨 - 琳婕小筑-老貓的理想 - XSLT輕松入門(mén) -
XSL基本概念
C#操作XML
XSLT 是什么類(lèi)型的語(yǔ)言?
XSLT輕松入門(mén)第二章:XSLT的實(shí)例
XML復習題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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