2010-06-23 55 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

尝试:

//测试/文件类型/文件类型[文本()= '人'] /@优先