我想學習XQuery,我還沒有想出如何在我所做的以下xml文件中選擇不同的教師。我查了distinct-values(),但它似乎只返回一串字符串。如果我只想運行XQuery而不聲明函數如functx:distinct-deep和functx:來自http://www.xqueryfunctions.com/xq/c0015.html#c0053的distinct-nodes,是否有一種方法可以選擇同一年在信用和非信用課程中教過的不同教師從下面的XML文件?我會很感激你的幫助。謝謝。XQuery:選擇不同的節點
<DB>
<credit>
<course_title>biology101</course_title>
<teacher>
<lastname>Smith</lastname>
<firstname>Amy</firstname>
</teacher>
<teacher>
<lastname>Hanson</lastname>
<firstname>John</firstname>
</teacher>
<teacher>
<lastname>Lee</lastname>
<firstname>Sandra</firstname>
</teacher>
<year>2013</year>
</credit>
<credit>
<course_title>chemistry101</course_title>
<teacher>
<lastname>Richardson</lastname>
<firstname>Rob</firstname>
</teacher>
<teacher>
<lastname>Hanson</lastname>
<firstname>John</firstname>
</teacher>
<year>2013</year>
</credit>
<noncredit>
<course_title>physics101</course_title>
<teacher>
<lastname>Hanson</lastname>
<firstname>John</firstname>
</teacher>
<teacher>
<lastname>Head</lastname>
<firstname>Peter</firstname>
</teacher>
<year>2013</year>
</noncredit>
<noncredit>
<course_title>physics101</course_title>
<teacher>
<lastname>Lee</lastname>
<firstname>Sandra</firstname>
</teacher>
<teacher>
<lastname>Head</lastname>
<firstname>Peter</firstname>
</teacher>
<teacher>
<lastname>Hanson</lastname>
<firstname>John</firstname>
</teacher>
<year>2013</year>
</noncredit>
</DB>
我用下面的XQuery:
let $DB := doc("myDB.xml") /DB
let $credit_teacher := $DB/credit/teacher
for $noncredit_teacher in $DB/noncredit/teacher
where $DB/credit/year = $DB/noncredit/year
and $credit_teacher/lastname = $noncredit_teacher/lastname
and $credit_teacher/firstname = $noncredit_teacher/firstname
return $noncredit_teacher
但複製教師返回:
<teacher>
<lastname>Hanson</lastname>
<firstname>John</firstname>
</teacher>
<teacher>
<lastname>Lee</lastname>
<firstname>Sandra</firstname>
</teacher>
<teacher>
<lastname>Hanson</lastname>
<firstname>John</firstname>
</teacher>
如果我使用不同的值,則返回字符串的序列: HansonJohn LeeSandra
joemfb,感謝您的諮詢。我嘗試使用functx:distinct-nodes()和functx:distinct-deep,但仍然得到相同的結果,沒有任何重複數據刪除。你知道我可以嘗試的其他方法嗎?再一次感謝你。 – jf1034