【发布时间】:2013-07-20 03:53:25
【问题描述】:
我有以下代码:
<Table><ColumnHeaders>
<ColumnHeader name='Title' type='xs:string' />
<ColumnHeader name='EventDate' type='xs:date' />
<ColumnHeader name='today' type='xs:date' />
<ColumnHeader name='day-week' type='xs:integer' />
<ColumnHeader name='dur-end' type='xs:integer' />
<ColumnHeader name='start-date' type='xs:date' />
<ColumnHeader name='end-date' type='xs:date' />
</ColumnHeaders>
<Data>{let $today := fn:current-date()
let $day-week := functx:day-of-week($today)
let $dur-end := 6-$day-week
let $start-date := xs:date($today)-(xs:dayTimeDuration('P1D')*$day-week)
let $end-date := xs:date($today)+(xs:dayTimeDuration('P1D')*$dur-end)
for $ancestor0 in $queryresponse//*:row
where ($ancestor0/@ows_EventDate)>=$start-date
return<Row>
<Title>{fn:data($ancestor0/@ows_Title)}</Title>
<EventDate>{fn:data($ancestor0/@ows_EventDate)}</EventDate>
<today>{fn:data($today)}</today>
<day-week>{fn:data($day-week)}</day-week>
<dur-end>{fn:data($dur-end)}</dur-end>
<start-date>{fn:data($start-date)}</start-date>
<end-date>{fn:data($end-date)}</end-date>
</Row>}
</Data></Table>
在“for 语句”中添加 where 子句后,xquery 失败并出现以下错误:
ZorbaDynamicException 失败。 Zorba 引擎遇到动态错误。 错误类型:XQuery 引擎错误。传递的项目(UNTYPED_ATOMIC 类型)不能转换为传递的目标类型(xs:date)。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
我已经在an answer to your original question 中描述过:您拥有的日期表示与 XQuery 日期不兼容,因此您必须对其进行转换。
-
您好,我是 Xquery 的新手,其实我没看懂您对我原帖的回答,我不好意思请您详细解释。这就是为什么我尝试了自己的逻辑,但不幸的是它也不起作用。如果你有时间,你能试着解释一下吗?此外,如果有任何 xquery 书籍可以推荐给初学者,那就太好了。问候,
-
哪些部分你不明白?我承认,如果您不习惯声明性语言,那么一开始学习 XQuery 并不容易。无法帮助您提出一本书的建议,我是在大学讲座中学到的。当前的问题是您的日期格式不是标准的 ISO 日期格式,因此需要对齐,我在回答中使用正则表达式解决了这一问题。
-
一本非常好的学习 XQuery 的书是"XQuery" by Priscilla Walmsley。
标签: xquery