主頁 > 知識庫 > XSLT輕松入門第三章:XSLT的元素語法

XSLT輕松入門第三章:XSLT的元素語法

熱門標簽:南寧網(wǎng)絡外呼系統(tǒng)運營商 高德地圖地圖標注服務中心 微信地圖標注合并了 400電話辦理包年 如何修改多個百度地圖標注 東營電銷 r語言數(shù)據(jù)可視化地圖標注 隨州外呼調(diào)研系統(tǒng) 本地電話機器人

  通過前面兩章的介紹,我們已經(jīng)對XSLT的基本概念和它的轉(zhuǎn)換過程有了一些了解。下面我們一起來學習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í)行內(nèi)容 -->

/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é)點被模板具體處理。你可以將它理解為程序中調(diào)用子函數(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 = 'ajie'">

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作為一種轉(zhuǎn)換語言的強大功能。

標簽:拉薩 益陽 果洛 德州 西雙版納 宿遷 黃石 寧夏

巨人網(wǎng)絡通訊聲明:本文標題《XSLT輕松入門第三章:XSLT的元素語法》,本文關(guān)鍵詞  XSLT,輕松,入門,第三章,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《XSLT輕松入門第三章:XSLT的元素語法》相關(guān)的同類信息!
  • 本頁收集關(guān)于XSLT輕松入門第三章:XSLT的元素語法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章