1

我有一个类似于这个的 SOAP 响应:

<items>
 <item date="2009-10-02"> </item>
 <item date="2010-10-02"></item>
 <item date="2012-10-02"></item>
</items>

我需要使用 xQuery 和我已经拥有的正则表达式检查每个项目中的日期是否具有正确的格式。我已经尝试过迭代,但它一直警告我:“当前响应中有多个匹配项”。这是我已经尝试过的:

 let $items:= (//items)
 for $i in $items
    return 1

谢谢!

4

2 回答 2

0

我终于自己找到了一些有用的东西:

for $z in //item[1]
return matches($z/@date, 'regularexp')
于 2013-04-05T14:32:18.937 回答
0

如果您的查询处理器支持 XQuery 3.0 并且您对所有日期的组合结果感兴趣,请使用“every-satisfies”语法。

every $date in //item/@date satisfies matches($date, '[-\d]+')

如果处理器不支持该语法,您可以使用如下内容:

not(//item/@date/matches(., '[-\d]+') != true())

如果它只支持 XQuery 1.0,您可能需要环绕matchesXPath 序列:

not(matches(//item/@date, '[-\d]+') != true())

如果您对单个值感兴趣,请使用:

//item/@date/matches(., '[-\d]+')

或者对于 XQuery 1.0:

for $date in //item/@date
return matches($date, '[-\d]+')
于 2013-04-05T16:00:55.827 回答