亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 20:03:03
字體:
來源:轉載
供稿:網友

  通過前面兩章的介紹,我們已經對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)和執行。簡單的講模式定義xml源文檔中哪一個節點將被模板處理,執行則定義輸出的是什么格式。兩部分對應的語法為xsl:template和xsl:apply-templates。


 

xsl:template的語法是:


 

<xsl:template

match = pattern

name = qname

PRiority = number

mode = qname>

<!-- 執行內容 -->

</xsl:template>


 

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

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


 

<xsl:template match="para">

</xsl:template>


 

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


 

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

</xsl:template>


 

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


 

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

</xsl:template>


 

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


 

<xsl:template match="/">

</xsl:template>


 

我們再來看apply-templates語法:


 

<xsl:apply-templates

select = node set-expression

mode = qname>

</xsl:apply-templates>


 

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


 

<xsl:template match="/">

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

</xsl:template>


 

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


 

<xsl:template match="para">

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

</xsl:template>


 

而這一段代碼則表示摸板匹配para節點,所有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>


 

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

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

3.3 xsl:for-each


 

xsl:for-each語法允許你循環處理被選擇的節點。例如:有一個含多個個人資料的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條件語句,允許設定節點滿足某個條件時,被模板處理。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節點下所有的元素,如果發現有<name>元素,則將<name>元素的值輸出。其中@符號是統配符,表示節點下所有的元素。

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節點下尋找<name>屬性值為ajie的元素,如果找到,將ajie用粗體輸出;如果沒有發現值為ajie的<name>元素,則將所有的<name>元素的值都用斜體輸出;如果沒有發現任何<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作為一種轉換語言的強大功能。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩日本欧美亚洲| 国语自产精品视频在线看| 国产精品久久久久久亚洲影视| 国产亚洲美女久久| 久久影视电视剧免费网站清宫辞电视| 亚洲午夜精品视频| 国产日韩欧美自拍| 4444欧美成人kkkk| 国色天香2019中文字幕在线观看| 国产欧美精品va在线观看| 国产精品久久久久影院日本| 日本久久久久久久| 精品久久久久久久久久久久| 亚洲韩国青草视频| 在线观看欧美成人| 久久久久国产精品www| 国产亚洲精品日韩| 国产成+人+综合+亚洲欧洲| 国模私拍一区二区三区| 久久久久国产精品免费| 欧美巨猛xxxx猛交黑人97人| 亚洲精品按摩视频| 欧美第一黄网免费网站| 亚洲高清久久网| 精品偷拍一区二区三区在线看| 在线看欧美日韩| 91久久久久久| 国产精品丝袜高跟| 伊人亚洲福利一区二区三区| 日韩精品久久久久| 久久久久久国产三级电影| 欧美尤物巨大精品爽| 久久天堂av综合合色| 麻豆国产精品va在线观看不卡| 色樱桃影院亚洲精品影院| 国产精品欧美激情在线播放| 欧美日韩ab片| 亚洲成人久久电影| 国产极品jizzhd欧美| 精品国产老师黑色丝袜高跟鞋| 97视频com| 亚洲一区二区日本| 亚洲xxx大片| 色婷婷综合久久久久中文字幕1| 亚州成人av在线| 久久久综合av| 日韩国产高清视频在线| 色综合男人天堂| 国产精品91一区| 色综合伊人色综合网| 欧美视频在线看| 日韩精品在线观看网站| 国产精品久久久久久久7电影| 国产亚洲欧洲在线| 91中文字幕一区| 久久精品国产欧美激情| 日韩精品亚洲视频| 欧美成人免费观看| 亚洲人成网站999久久久综合| 欧美精品videos另类日本| 亚洲色图偷窥自拍| 成人精品一区二区三区电影免费| 日韩av电影手机在线| 日韩免费在线视频| 在线电影欧美日韩一区二区私密| 亚洲精品一区二区网址| 日韩av在线免费观看| 福利视频导航一区| 在线一区二区日韩| 中文字幕日韩av| 欧美电影在线免费观看网站| 欧美日韩一区免费| 欧美成aaa人片在线观看蜜臀| 欧美天天综合色影久久精品| 国产精品国产亚洲伊人久久| 久久国产精品亚洲| 国产精品久久久久久久app| 久久中文字幕国产| 中文字幕亚洲无线码在线一区| 黑人巨大精品欧美一区二区一视频| 国产一区视频在线| 日韩视频―中文字幕| 日韩精品中文字幕在线| 91精品国产九九九久久久亚洲| 国产精品国语对白| 久久久久久亚洲| 欧美黑人巨大xxx极品| 夜夜躁日日躁狠狠久久88av| 国产一区二区三区欧美| 色多多国产成人永久免费网站| 亚洲精品国产美女| 国产v综合ⅴ日韩v欧美大片| 久久色在线播放| 国产免费久久av| 日韩在线视频免费观看| 欧美精品在线观看91| 成人深夜直播免费观看| 欧美激情一区二区三区在线视频观看| 一本色道久久综合亚洲精品小说| 91亚洲精华国产精华| 久久久久久999| 亚洲色图av在线| 亚洲缚视频在线观看| 亚洲免费视频一区二区| 亚洲国产成人爱av在线播放| 在线播放精品一区二区三区| 色老头一区二区三区在线观看| 中文字幕av一区| 久久久在线免费观看| 热草久综合在线| 狠狠久久亚洲欧美专区| 成人黄色在线免费| 欧美日韩国产成人高清视频| 亚洲欧美日本另类| 91在线|亚洲| 国语自产精品视频在线看抢先版图片| 高潮白浆女日韩av免费看| 日韩精品在线观看视频| 国产一区在线播放| 日韩精品在线免费观看视频| 精品无人区太爽高潮在线播放| 亚洲男人天堂2019| 91在线观看免费网站| www.欧美精品一二三区| 国产欧洲精品视频| 国产精品无码专区在线观看| 日韩欧美一区二区三区久久| 欧美大尺度电影在线观看| 久久久久久亚洲| 欧日韩在线观看| 亚洲电影免费观看高清完整版在线| 热久久这里只有| 欧美日韩一区二区免费视频| 26uuu另类亚洲欧美日本老年| 日本亚洲欧美成人| 欧美亚洲成人xxx| 不卡在线观看电视剧完整版| 久久久久久久一区二区| 亚洲视频网站在线观看| 国产一区二区在线免费视频| 中文字幕成人精品久久不卡| 成人激情av在线| 国产69精品久久久久99| 亚洲精品欧美一区二区三区| 欧美另类高清videos| 欧美激情第一页xxx| 日韩午夜在线视频| 国产精品自拍小视频| 欧美日韩视频免费播放| 4388成人网| 亚洲成人教育av| 国产91色在线免费| 欧美亚洲另类激情另类| 69影院欧美专区视频| 在线观看日韩av| 国产精品欧美日韩| 国产啪精品视频网站| 国产精品久久久久久一区二区| 自拍偷拍亚洲精品| 久久久久久久国产精品视频| 日韩av影视综合网| 亚洲精品视频播放| 精品久久久久久久大神国产| 国产精品欧美久久久|