jackrabbit中Xpath的用法

2021-06-05 09:55:52 字數 3248 閱讀 4454

<?xml version="1.0" encoding="utf-8"?>

< root>

smiky

20boy

歐陽瘋24

girl

< /root>

< !--

*xpath的七種節點型別:

*元素,屬性,文字,文件節點(即根節點),命名空間,注釋,處理指令

**節點關係:

*父、子、兄弟、先輩、後代

**xpath常用符號:

*/ 從根節點開始選

*// 從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置 (example://name,會選擇兩個name元素,不考慮name元素出現在那)

*. 當前節點

*..父節點

*| 表示或 (example: //person[1] | person[2] 會選擇兩個person)

*@ 選取屬性 (example: //@multiple 會選取歐陽瘋中的值true)

* * 用於匹配任意元素

* @*用於匹配任意屬性

*node()匹配任意節點(//person/age/node())

*text()匹配文字節點(//person/age/text())

//node()與text()相關於乙個節點來使用

*last()匹配最後乙個節點 (//person[last()-1]匹配倒數第二個person)

*position()匹配某個位置(如//person[position=1]選擇第乙個person)

//last()與position看樣子只能在謂語中使用**

*xpath的12個軸:

*ancestor 父輩(包括父節點及祖父等)

*ancestor-or-self 相對於ancestor多了它自身

*descentdant 後輩(包括子節點及孫節點)

*descentdant-or-selt 相對於descendant多了它自身

*attribute 選擇當前節點的屬性

*child 選取當前節點的子節點

*parent 選擇當前節點的父節點

*self 選擇當前節點

*namesapce 選取當前節點的所有命名空間節點

*following 選擇當前節點標籤結束之後的所有節點(如//person[1]/following::*,不僅會選第二個person,還會選person[2]中的name,age,***)

*preceding 與following相反,選擇當前節點開始之前的所有節點

*preceding-sibling 選擇preceding的兄弟節點

**軸的使用:

*//person[2]/ancestor-or-self::*[1]

* 軸 ::軸中對應的節點[謂語(進一步選擇)]

**xpath運算子

*|,+,-,div(除),mod,*(乘法),>,>=,<,<=,=,!=,and,or

*運算子好像只能用在謂語裡面對節點進行進一步的過濾

//person[age>=20 and age=24] 根據子元素的值選擇

//person[@lang="cn"] 根據屬性選擇

1. /bookstore/book/@category

2. /bookstore/book[@category]

這兩者之間的區別:1選取的是乙個屬性節點,2選取的是具有category屬性的book,2中屬性只是謂語,用於限定選取結果

xslt常用元素:

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

< xsl:for-each select="" >

< xsl:sort select=""/>

< xsl:if test="">

< xsl:choose>

23">

20">

< /xsl:choose>

這裡相當於:

if(age>23)else if(age>20)else

xquery:

xquery 使用函式來提取 xml 文件中的資料。

doc() 用於開啟 "books.xml" 檔案:

doc("books.xml")/bookstore/book[price>30],xquery 使用謂語來限定從 xml 文件所提取的資料

flwor:

for 語句把 bookstore 元素下的所有 book 元素提取到名為 $x 的變數中。(測試過,變數名前要加$,不加報錯)

where 語句選取了 price 元素值大於 30 的 book 元素。

order by 語句定義了排序次序。將根據 title 元素進行排序。

return 語句規定返回什麼內容。在此返回的是 title 元素。

for, let, where, order by, return

for $book in doc("books.xml")/bookstore/book

where $book/price>30

order by $book/price

return $book/title

for $book in doc("books.xml")/bookstore/book

order by $book/price

return $book/title

< ul>

//data($x)用於獲取$x的值,必須用{}括起來,不然就會原樣輸出data($x)

}< /ul>

可以看出xquery用{}來區分**與非**部分(如同jsp中的<%%>)

當**與非**連線時一定要用{}括起**部分,否則xquery將全部當成非**處理(即當字成符),對於只有**的話不用括起來

xquery 的基礎語法規則:

一些基本的語法規則:

•xquery 對大小寫敏感

•xquery 的元素、屬性以及變數必須是合法的 xml 名稱。

•xquery 字串值可使用單引號或雙引號。

•xquery 變數由 「$」 並跟隨乙個名稱來進行定義,舉例,$bookstore

•xquery 注釋被 (: 和 :) 分割,舉例,(: xquery 注釋 :)

xquery注意事項:

xquery返回的要麼只有資料,要麼是有正常開始結束標籤的字串(123,這樣123會報錯)

可以出現這種結果:

123123

< abc>123

並且在只有**時不能用{}括著**

如:會報錯

-->

理解Jackrabbit中的Version機制

1.乙個會產生version的節點,它的node type 一定包含有 mix versionable。在jackrabbit裡面,只有實現了mix versionable的node 才可以做checkin checkout的操作。2.要讓乙個node產生新的version,你做的第一步應當是che...

python selenium模組 xpath定位

附w3xpath語法位址 總結 返回匹配到所有符合條件的第乙個節點,物件是 find element by xpath 返回匹配到所有符合條件的所有節點,物件是個list find elements by xpath 通過屬性定位 p 屬性 模糊定位 a contains text 文字 li co...

Jackrabbit 體系結構

jackrabbit的一般體系結構可以描述為三層 內容應用層,api層和內容儲存庫實現層。content repository api層分為兩個主要部分 只有極少數 大多數是管理應用程式 使用jackrabbit提供的非jsr 170 api。架構圖中的框並不直接表示表示包名或類名,而主要是按語義分...