2014-07-17 137 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

对不起,我有你的代码意味着什么,但我没有得到我失去了冒号的地方。你介意把它整合到我的代码中吗? :) 噢,好,非常感谢,非常感谢你,你是一个拯救生命的人 –