2009-11-08 63 views
0

我有一个XML文件是这样的:XPath表达式帮助

<students> 
<student name=....> 
</student> 
<student name=....> 
</student> 
<student name=....> 
</student> 
<student name=....> 
    <failedcourses> 
      ... 
    </failedcourses> 
</student> 
<student name=....> 
    <failedcourses> 
      ... 
    </failedcourse> 
</student> 
</students> 

即我有一份学生名单,其中一部分有一个子元素,但大多数学生没有这个子元素。

我想获得名称 n失败课程的学生,我该怎么做?

我想要一个可以工作的XPath表达式,我不关心性能。

回答

2
(/students/student[failedcourses])[3]/@name 
2

好吧,所以答案似乎很容易。只需使用括号:

(/student/failedcourses)[3]/../@name 

在这个例子中,n = 3

0

你介意使用一个XQuery?

让$ studentsWhoFailed:= $ myxml /学生/学生/ failedcourse

回报$ studentsWhoFailed [N]/@名称

(语法可能不是100%正确的,因为我的天堂”牛逼测试它)

0

嗯,只是为了好玩和各种(和其后期的方式,所以我不会保证语法):

student[count(failedcourses) > 0][3]/@name