我应该使用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 "$"
这是否意味着我不能像那样分配它,或者我必须返回一些东西吗?
此外,还有一个想法吗?似乎很难学习语法,因为对我来说它真的很难看。
答案 0 :(得分:1)
这是一个语法问题,您在let
之前错过了另一个$result
。此外,你在作业中忘记了冒号。
let $result := (for $i in (2 to count($tmp))