2011-02-28 58 views
1

匹配函數針對字符串(其中結果是字符串類型的單個項目)起作用。尋找使用XPath的方法來執行相同的正則表達式匹配,但針對項目(結果是一系列節點/項目)?Xpath匹配againt項目

+0

如果您正在討論XPath 2.0的結果['matches()'](http://www.w3.org/TR/xquery-operators /#func-matches)函數評估,那麼你錯了:評估結果是'xs:boolean'的一個實例。 – 2011-02-28 21:12:23

+0

@Alejandro我認爲他的意思是說,當'/ foo/bar'的結果是一個字符串時,你可以'匹配'(/ foo/bar,'regexp')'。 (或者更確切地說,只有一個元素的列表)。 – biziclop 2011-02-28 21:21:58

+0

@biziclop:對此有一些限制:不是單例序列不能轉換爲xs:string,它會產生錯誤。一個好的XSLT處理器也可能會產生靜態錯誤。 – 2011-02-28 21:28:48

回答

2
//foo/bar[matches(., 'regexp')] 

這是你在找什麼或我誤解你的問題。這將根據每個節點的字符串值過濾//foo/bar節點列表。 (元素的字符串值是其中所有文本節點的串聯。)

+0

確實....有趣的只是測試了相同的東西,但與火柴(文本(),''),但感謝您的幫助! – 2011-02-28 21:11:56

+1

@Matthew Young雖然與text()有一點區別,但它返回該元素中所有文本節點的列表。所以如果你有' text1 text2','matches()'會報錯。 – biziclop 2011-02-28 21:14:50

+0

不錯....感謝您的提示! – 2011-03-01 14:14:49