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

首頁 > 開發 > XML > 正文

XSLT輕松入門第四章:XPath的語法

2024-09-05 20:53:20
字體:
來源:轉載
供稿:網友

4.XPath的語法

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

4.XPath的語法

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

4.1 當前位置

當我們使用XSLT處理XML源文檔是,我們用Context來表示當前正在被模板處理的節點位置。比如xsl:template match="/"語句中表示Context在文檔的根(root)節點。我不知道如何準確的翻譯Context這個詞,它類似于C語言里的指針,表示程序當前運行的位置。理解Context對于正確處理XSL模板非常重要,當您的XSL模板輸出的文檔和您想要的不一樣,最先應該分析的就是Context在哪里。
Location Paths是用于設定你想要尋找的Context節點位置。就類似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://"。
"/"是表示當前文檔的節點,類似DOS目錄分割符。例如:/PEOPLE表示選擇根節點下的PEOPLE元素;PEOPLE/PERSON表示選擇PEOPLE元素下所有的PESON子元素。
"http://"則表示當前文檔所有的節點。類似查看整個目錄。例如://PEOPLE表示選擇文檔中所有的PEOPLE元素,無論它在什么層次;PEOPLE//PERSON表示在PEOPLE元素下所有的PERSON元素,無論它的層次多深。

4.2 尋址操作

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

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

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

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

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

4.3 運算符

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

4.4 功能函數(Functions)

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

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

number()功能
作用:將屬性的值中的文本轉換為數值。
舉例:<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語法中的一部分,還有大量的功能函數沒有介紹,而且目前XPath的語法仍然在不斷發展中。通過這些函數我們可以實現更加復雜的查詢和操作。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品99久久香蕉国产色戒| 中文字幕亚洲欧美| 国产一区av在线| 亚洲成人av在线播放| 日本sm极度另类视频| 51久久精品夜色国产麻豆| 精品福利在线观看| 伊人亚洲福利一区二区三区| 国产一区私人高清影院| 亚洲精品一区中文字幕乱码| 亚洲午夜激情免费视频| 米奇精品一区二区三区在线观看| 国语自产精品视频在线看抢先版图片| 91精品国产91久久久久| 亚洲最大成人在线| 国产91精品在线播放| 欧美一区二三区| 午夜精品久久久久久99热| 日韩欧美在线视频免费观看| 欧美日韩国产限制| 久久久国产精品一区| 国产精品丝袜视频| 国产精品久久久久久网站| 大量国产精品视频| 亚洲免费视频观看| 美女av一区二区三区| 亚洲欧美制服中文字幕| 国产精品日韩在线一区| 国产精品情侣自拍| 久久av在线看| 亚洲最大福利网站| 91精品国产综合久久香蕉922| 久久久久久高潮国产精品视| 国产一区私人高清影院| 日韩午夜在线视频| 国产第一区电影| 国产在线观看一区二区三区| 成人h视频在线观看播放| 国产999精品久久久| 国产精品稀缺呦系列在线| 欧美一级片久久久久久久| 欧美激情一区二区三区成人| 亚洲色图25p| 久久久这里只有精品视频| 国产精品久久久久久久天堂| 日韩精品免费观看| 日韩欧美在线一区| 欧美wwwxxxx| 欧美日韩激情视频8区| 日韩中文在线视频| 国产98色在线| 国产亚洲视频在线| 国产一区二区成人| 国内精品久久久久影院 日本资源| 日韩一区二区av| 日韩中文综合网| 欧美激情精品久久久久久变态| 欧美亚洲另类在线| 97视频免费在线看| 欧美一级成年大片在线观看| 国产精品视频免费在线| 国产精品视频地址| 久久久久久国产精品| 亚洲黄色免费三级| 91精品免费看| 最近2019中文免费高清视频观看www99| 91精品在线看| 国产日韩精品入口| 亚洲欧美制服丝袜| 欧美在线视频观看| 日韩中文字幕第一页| 91香蕉国产在线观看| 日韩在线观看免费全| 亚洲精品视频网上网址在线观看| 国产精品久久久久免费a∨大胸| 国产成人一区二| 一本色道久久综合狠狠躁篇怎么玩| 97视频在线观看免费高清完整版在线观看| 久久精品视频va| 日韩美女写真福利在线观看| 久久精品国产亚洲7777| 日韩欧美国产一区二区| 日本不卡高字幕在线2019| 国产成人精品电影久久久| 77777少妇光屁股久久一区| 狠狠躁夜夜躁人人爽超碰91| 69久久夜色精品国产69| 中文字幕亚洲一区二区三区五十路| 国产精品久久久久久一区二区| 91综合免费在线| 欧美综合第一页| 欧洲中文字幕国产精品| 怡红院精品视频| 国产日韩综合一区二区性色av| 57pao成人永久免费视频| 性色av一区二区三区免费| 久久精品小视频| 欧洲s码亚洲m码精品一区| 欧美伊久线香蕉线新在线| 久久这里有精品视频| 丝袜亚洲欧美日韩综合| 最近2019中文字幕mv免费看| 深夜福利国产精品| 秋霞av国产精品一区| www.日韩免费| 97精品国产97久久久久久免费| 日韩高清a**址| 国产经典一区二区| 亚洲人成自拍网站| 久久久av一区| 亚洲综合在线做性| www亚洲精品| 91视频免费在线| 3344国产精品免费看| 91精品久久久久久久久久另类| 97久久久久久| 欧美中文在线视频| 丁香五六月婷婷久久激情| 国产精品视频一区二区三区四| 亚洲人成人99网站| 免费91麻豆精品国产自产在线观看| 久久91亚洲精品中文字幕| 亚洲国产精品久久91精品| 日韩欧美成人区| 神马国产精品影院av| 亚洲欧美另类在线观看| xxxx欧美18另类的高清| 国产欧美精品在线| 欧美中在线观看| 亚洲精品成人av| 伊人男人综合视频网| 亚洲一二在线观看| 日韩精品日韩在线观看| 亚洲欧美日韩直播| 91精品国产91久久| 国产精品爽爽爽爽爽爽在线观看| 国产精品揄拍一区二区| 欧美日韩一区二区免费视频| 91精品久久久久久久久不口人| 国产午夜精品视频免费不卡69堂| 日韩中文字幕视频在线观看| 久久九九免费视频| 久久成人免费视频| 国产精品福利小视频| 国产精品免费视频xxxx| 大桥未久av一区二区三区| 欧美大尺度电影在线观看| 亚洲一区www| 97色伦亚洲国产| 欧美午夜性色大片在线观看| 亚洲色图校园春色| 黑人极品videos精品欧美裸| 国产精品网站大全| 美女视频久久黄| 福利精品视频在线| 欧美疯狂性受xxxxx另类| 日韩av中文在线| 久久露脸国产精品| 中文字幕一区二区精品| 国产日韩在线一区| 国产91在线高潮白浆在线观看| 欧美交受高潮1| 中文字幕亚洲第一| 97国产精品人人爽人人做|