2014-09-04 45 views
-1

我想返回一定的一組值,但查詢並不完全返回我想要的值。我想返回作者「Hennie J. Steenhagen」按年分組的記錄。然而,如果它與Hennies記錄的年份相同,它將返回的是按年份分組的記錄。不僅亨尼斯。Xquery不返回所需的值

例如,如果我們有記錄<www><author>Hennie*</author><year>1990</year></www><www><author>Derpie</author><year>1990></year></www>查詢將返回1990年分組的兩個記錄,我只想返回Hennies。

for $y in /*/*/year where $y/../author ="Hennie J. Steenhagen" return <year-Pub>{$y}{/*/*[year = $y]}</year-Pub> 

回答

2

您的問題很難理解,因爲您的XPath處理的是比您提供的示例XML更大的XML節點樹。但是對於這個例子,我會假設你的記錄被命名爲record。你的XPath輸出對我來說也沒什麼意義,但我會假設你知道你想要什麼!

由於XML:

<record> 
    <www> 
     <author>Hennie J. Steenhagen</author> 
     <year>1990</year> 
    </www> 
    and 
    <www> 
     <author>Derpie</author> 
     <year>1990></year> 
    </www> 
</record> 

如果你有一個XQuery 3.0處理器,可以使用下列內容:

/record/www[author = "Hennie J. Steenhagen"] ! <year-Pub>{year}{.}</year-Pub> 

如果您只能訪問一個XQuery 1.0處理器,那麼你可以回落到以下:

for $w in /record/www[author = "Hennie J. Steenhagen"] 
return 
    <year-Pub>{$w/year}{$w}</year-Pub> 

我的兩個例子只使用一個謂詞只會過濾一次數據。鑑於您的自我找到的解決方案同時使用謂詞和where表達式,因此必須對數據進行兩次過濾。

0

固定它,

for $y in /*/*/year where $y/../author ="Hennie J. Steenhagen" and /*/*[year=$y] return <year-Pub>{$y/../*}</year-Pub> 

感謝的人把時間花在找任何一個。