簡體   English   中英

帶有謂詞的XQuery表達式

[英]XQuery expression with predicates

我正在嘗試使用帶有謂詞的表達式來顯示每個父節點的子節點(該練習看起來很愚蠢,因為這是測試數據:最終的解決方案必須從其他xml文件中提取數據)。

數據樣本如下:

<Schools>
<School>
<name>St John's</name>
<AcademicYear year = "2017"></AcademicYear>
<Subject>English</Subject>
<Subject>Geography</Subject>
<Subject>Maths</Subject>
<AcademicYear year = "2016"></AcademicYear>
<Subject>Maths</Subject>
<Subject>Textiles</Subject>
<Subject>English</Subject>
<AcademicYear year = "2015"></AcademicYear>
<Subject>History</Subject>
<Subject>French</Subject>
<Subject>Spanish</Subject>
</School>

<School>
<name>Marsh Academy</name>
<AcademicYear year = "2017"></AcademicYear>
<Subject>Science</Subject>
<Subject>Geography</Subject>
<Subject>Computer science</Subject>
<AcademicYear year = "2016"></AcademicYear>
<Subject>English</Subject>
<Subject>History</Subject>
<Subject>Maths</Subject>
<AcademicYear year = "2015"></AcademicYear>
<Subject>French</Subject>
<Subject>Geography</Subject>
<Subject>Art</Subject>
</School>

</Schools>

查詢如下:

<Schools>
{for $School in doc("test.xml")/Schools/School
return
<School>
  <Name>
  {$School/name}
  </Name>
  {for $i in doc("test.xml")/Schools/[School = $School]/AcademicYear
  return
  <AcademicYear>
    {$i/@year}
    <subject><teacher></teacher><scale></scale></subject>
  </AcademicYear>}
   </School>}
</Schools>

出現錯誤,顯示與第8行有關的“期望的節點,找到了數組”。我嘗試了一個for循環,並簡單地將一個表達式放在學年標記內,如下所示

{doc(“ test.xml”)/學校/ [學校= $學校] / AcademicYear / @ year}

抱歉-我敢肯定這很簡單。 我是初學者!

謂詞之前沒有子節點。

選擇School元素時,將其移動到謂詞外部作為從Schools元素中選擇的子節點,然后在謂詞過濾器內部,使用引用當前的School元素.

for $i in doc("test.xml")/Schools/School[. = $School]/AcademicYear

但是,如果要遍歷同一文檔中的元素,為什么不只使用已經選擇的$School

for $i in $School/AcademicYear

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM