2014-07-17 178 views
0

即時通訊應該與xQuery一起工作並確定矩陣大小。矩陣的格式爲:矩陣大小確定

<matrix> 
    <row> 
     <c>1</c> 
     <c>2</c> 
     <c>3</c> 
    </row> 
    <row> 
     <c>4</c> 
     <c>5</c> 
     <c>6</c> 
    </row> 
</matrix> 

什麼即時通訊目前正在做的是這樣的:

xquery version "1.0" encoding "UTF-8"; 
module namespace wob="http://wob.iai.uni-bonn.de/exercises/xquery/matrix"; 

declare function wob:dimensions($ma as element(matrix)) as xs:integer* { 
    let $m := fn:count($ma/row) 
    let $tmp := (for $currentRow in $ma/row 
     return count($currentRow/c)) 

    let $result := ($m, $tmp[1]) 

    $result = (for $i in (2 to count($tmp)) 
     if ($tmp[1] != $tmp[$i]) 
     then return() 
     else() 
    ) 

    return $result 
}; 

從Java來了,在我的理解這一點應在不平等的行距的情況下返回一個空序列。因爲我只想返回矩陣維度,如果它是一個有效的矩陣。

與撒克遜解析這個問題,我得到的錯誤

Error on line 11 column 3 of matrixops.xqm: 
    XPST0003 XQuery syntax error near #...lt := ($m, $tmp[1]) $result#: 
    expected "return", found "$" 

這是否意味着我不能分配給它這樣的,還是我必須返回的東西?

此外,有沒有這樣做的ide?似乎很難學習語法,因爲對我來說它真的很難看。

回答

1

這是一個語法問題,您在$result之前錯過了另一個let。此外,您在作業中忘記了冒號。

let $result := (for $i in (2 to count($tmp)) 
+0

對不起,我有你的代碼意味着什麼,但我沒有得到我失去了冒號的地方。你介意把它整合到我的代碼中嗎? :) 噢,好,非常感謝,非常感謝你,你是一個拯救生命的人 –