矩阵大小确定

时间:2014-07-17 06:06:21

标签: matrix xquery

我应该使用xQuery并确定矩阵大小。 Matrix的格式为:

<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的

,根据我的理解,这应该在行宽度不等的情况下返回一个空序列。因为我想仅在它是有效矩阵时返回矩阵维度。

用saxon解析这个,我得到错误

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

这是否意味着我不能像那样分配它,或者我必须返回一些东西吗?

此外,还有一个想法吗?似乎很难学习语法,因为对我来说它真的很难看。

1 个答案:

答案 0 :(得分:1)

这是一个语法问题,您在let之前错过了另一个$result。此外,你在作业中忘记了冒号。

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