2009-11-08 60 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