国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
xslt輕松入門(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的概念

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

1.1 什么是XSLT

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

XSLT是一種用來轉換XML文檔結構的語言。

1.2 為什么要用XSLT

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

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

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

為了使數(shù)據(jù)便于人們的閱讀理解,我們需要將信息顯示出來或者打印出來,例如將數(shù)據(jù)變成一個HTML文件,一個PDF文件,甚至是一段聲音;同樣,為了使數(shù)據(jù)適合不同的應用程序,我們必須有能夠將一種數(shù)據(jù)格式轉換為另一種數(shù)據(jù)格式,比如需求格式可能是一個文本文件,一個SQL語句,一個HTTP信息,一定順序的數(shù)據(jù)調用等。而XSLT就是我們用來實現(xiàn)這種轉換功能的語言。將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的重要組成部分,我們將在第四章講解它的詳細語法。那么XPath是什么呢?我們首先來了解一下XSL系列的"家族"關系。如下圖:



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

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

用一種比較好理解的解釋:如果將XML文檔看作一個數(shù)據(jù)庫,XPath就是SQL查詢語言;如果將XML文檔看成DOS目錄結構,XPath就是cd,dir等目錄操作命令的集合。

1.5 XSLT和CSS的比較

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

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

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

(3) CSS不能統(tǒng)計計算元素中的數(shù)據(jù);

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

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

1.6 XSLT和IE5

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

注意:本文中提到的語法都是根據(jù)XSLT 1.0的標準來講的,沒有任何微軟的"方言"。

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

引用

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

評論

2.XSLT的實例

2.1 XSLT如何轉換XML
2.2 一個實例
2.3 過程解析
2.4 XSLT的用途

2.1 XSLT如何轉換XML

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

具體看下面的過程示意圖:



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

2.2 一個實例

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

例子1: "Hello, world!"

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

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

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

<greeting>Hello, world!</greeting>

這是一個很簡單XML文檔,只包含一個節(jié)點的XML結構樹。

第二步:建立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>

你現(xiàn)在可以用IE5.0以上版本瀏覽器打開這個hello.xsl文件,看到XSL的結構樹。

第三步:在XML中調用這個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)完成了所有的代碼,接下來只要用一個XSLT的處理器(XML Processor)來執(zhí)行hello.xml就可以看到"hello
world"的顯示結果了。流行的處理器軟件有以下幾種:

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

(2).IBM的XML for Java軟件包,名為LotusXSL。下載網(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)友要問,我想在瀏覽器中看到"hello world"的效果應該怎么做?在微軟的IE5.5內嵌了MSXML3解釋器,你可以用IE5.5打開hello.xml文件,就可以看到結果。如果只看到XML結構樹,不是單獨的"hello
world"字樣,說明你的瀏覽器沒有安裝MSXML3版本。

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

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

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

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

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

接下去的代碼是:

<xsl:stylesheet

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

version="1.0">

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

<xsl:template match="/">

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

接下去的代碼是:

<html>

<head>

<title>First XSLT Example</title>

</head>

<body>

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

</body>

</html>

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

提示:由于XML文檔是嚴格的層級結構(用IE5查看XML文件,會看見XML文檔類似多級關聯(lián)菜單),所以我們形象的稱XML文檔為文檔樹,其中每一對元素稱作樹的一個節(jié)點。根元素就是根節(jié)點。

最后關閉所有元素:

</xsl:template>

</xsl:stylesheet>

好,例子解說完畢。你是否想過為什么要用這么復雜的方法來顯示"hello world"呢?

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

2.4 XSLT的用途

XSLT的主要用途就是數(shù)據(jù)轉換應用。

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

XSLT是處理類似工作的理想工具。

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

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

3.XSLT的元素語法

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文件就是由一個一個的模板組成,任何一個XSLT文件至少包含一個模板。模板的概念就象是搭積木;你如果是程序員,也可以將模板看作一個方法,一個類,或者一個模塊。它們可以被拼裝組合,也可以單獨成塊,不同的模板控制不同的輸出格式。

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


 

xsl:template的語法是:


 

<xsl:template

match = pattern

name = qname

priority = number

mode = qname>

<!-- 執(zhí)行內容 -->

</xsl:template>


 

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

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


 

<xsl:template match="para">

</xsl:template>


 

下面的語句寫法說明模板匹配所有的para元素和所有的chapter元素:


 

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

</xsl:template>


 

下面的語句寫法說明模板匹配所有的父節(jié)點為chapter元素的para元素:


 

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

</xsl:template>


 

下面的語句寫法說明模板匹配根節(jié)點:


 

<xsl:template match="/">

</xsl:template>


 

我們再來看apply-templates語法:


 

<xsl:apply-templates

select = node set-expression

mode = qname>

</xsl:apply-templates>


 

xsl:apply-templates用來執(zhí)行那一個節(jié)點被模板具體處理。你可以將它理解為程序中調用子函數(shù)。select屬性用來定義確切的節(jié)點名稱。xsl:apply-templates總是包含在xsl:template元素中,象這樣:


 

<xsl:template match="/">

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

</xsl:template>


 

這段代碼說明摸板匹配整個文檔(根節(jié)點),具體執(zhí)行時處理根節(jié)點下所有para元素。


 

<xsl:template match="para">

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

</xsl:template>


 

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

3.2 xsl:value-of


 

XSL:value-of用來將源文檔中元素的文本值寫到輸出文檔中。例如:

有一個個人資料的XML文檔:


 

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

<PERSON>

<name>ajie</name>

<age>28</age>

</PERSON>


 

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


 

<xsl:template match="PERSON">

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

</xsl:template>


 

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

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

3.3 xsl:for-each


 

xsl:for-each語法允許你循環(huán)處理被選擇的節(jié)點。例如:有一個含多個個人資料的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代碼寫成:


 

<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類似普通程序語言的if條件語句,允許設定節(jié)點滿足某個條件時,被模板處理。xsl:if的語法格式為:


 

<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節(jié)點下所有的元素,如果發(fā)現(xiàn)有<name>元素,則將<name>元素的值輸出。其中@符號是統(tǒng)配符,表示節(jié)點下所有的元素。

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


 

xsl:if語法沒有else的屬性。如果我們要進行多項選擇,那么就要使用xsl:choose / xsl:when / xsl:otherwise系列流程控制語法了。具體的使用請看下面的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>


 

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


 

3.6 xsl:sort


 

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


 

<xsl:template match="PEOPLE">

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

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

</xsl:apply-templates>

</xsl:template>


 

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

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

4.XPath的語法

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

4.XPath的語法

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

4.1 當前位置

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

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

其中child::PEOPLE/descendant::PERSON就是XPath語法,這個表達式就是一個Location Paths,代碼說明要顯示所有PEOPLE元素的子元素和所有PERSON元素的子元素。通常我們會采用更簡單的寫法:

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

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

4.2 尋址操作

Axis和Predicate是XPath語法中對Location Paths進行定位操作的語法,具體的用法列表如下

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

Axis幫助我們選擇當前節(jié)點周圍所有的節(jié)點,而Predicate則用來定位當前節(jié)點內部的元素。表示方法為方括號[]中加表達式:[ Expression ]。具體舉例如下:

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

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

4.3 運算符

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

4.4 功能函數(shù)(Functions)

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

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

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

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

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

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

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

4.4 功能函數(shù)(Functions)

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

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

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

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

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

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

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

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


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

聯(lián)系客服