2010-06-23 54 views
2

我試圖編寫一個表達式,該表達式將返回過濾值的優先級。到目前爲止,我在篩選屬性以返回值時能夠得到正確的結果,但不是相反。任何幫助?用於過濾值返回屬性的XML表達式

//測試/文件類型/ FILETYPE [@priority = '10']返回人

//測試/文件類型/文件類型/ @優先返回三個屬性值(10,11,20)

//測試/文件類型/文件類型[文件= '人']/@優先返回任何

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

<Test> 
    <FileTypes> 
     <FileType Priority="10">Person</FileType> 
     <FileType Priority="11">Job</FileType> 
     <FileType Priority="20">Check</FileType> 
    </FileTypes> 
</Test> 
+0

問得好(+1)。請參閱我的回答以解釋問題和正確的表達方式。 :) – 2010-06-23 15:59:56

回答

3

//Test/FileTypes/FileType[FileType = 'Person']/@Priority返回任何

,因爲它應該。 A FileType沒有名爲FileType的孩子。

使用

/Test/FileTypes/FileType[.= 'Person']/@Priority

+0

謝謝,這工作很好。 。=是什麼意思? – Jerry 2010-06-23 16:10:25

+0

@Jarek,'.'是上下文節點(或者'self :: node()')的縮寫。 '。 ='Person''的計算結果是將上下文節點的字符串值與字符串'Person''進行比較的布爾值(true()of false())。 – 2010-06-23 16:21:03

3

嘗試:

//測試/文件類型/文件類型[文本()= '人'] /@優先