我有一个类似于这个的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
谢谢!
答案 0 :(得分:0)
我终于找到了一些有用的东西:
for $z in //item[1]
return matches($z/@date, 'regularexp')
答案 1 :(得分:0)
如果您的查询处理器支持XQuery 3.0,并且您对所有日期的组合结果感兴趣,请使用“every-satisfies”语法。
every $date in //item/@date satisfies matches($date, '[-\d]+')
如果处理器不支持该语法,您可以使用以下内容:
not(//item/@date/matches(., '[-\d]+') != true())
如果它只支持XQuery 1.0,则可能需要在XPath序列周围包装matches
:
not(matches(//item/@date, '[-\d]+') != true())
如果您对个别值感兴趣,请使用以下命令:
//item/@date/matches(., '[-\d]+')
或者再次针对XQuery 1.0:
for $date in //item/@date
return matches($date, '[-\d]+')