在XQUERY中使用子字符串

问题描述 投票:0回答:1

我有多个日期为样式的节点:2019-11-16

我想获取论文日期的月份,到目前为止,我已经尝试过此方法以及对此方法的一些更改:

let $DATE:=data(//activity/DATE)
let $month:=substring($DATE, 6, 2)
return $month

但是我有一个错误,说基数与期望的参数不匹配,我知道它是一个与字符串有关的问题,如果我手动插入像'1999-12-24'这样的日期,它将返回期望的值,但是我需要它阅读日期,然后按照子字符串中的指示返回日期,有什么想法吗?我以为data(“ ...”)返回了一个字符串,但似乎没有

xml xpath xquery
1个回答
0
投票

[最可能的原因是路径//activity/DATE选择了多个元素,您需要检查一下,如果是,请决定是否只选择(//activity/DATE)[1]head(//activity/DATE)中的第一个元素,然后可以即使不使用substring功能,也一定要在该选定元素上调用data

如果要从DATE元素序列中提取月数序列,则可以使用//activity/DATE/substring(., 6, 2)

但是请注意,您的格式适合xs:date数据类型,因此使用//activity/DATE/xs:date(.)似乎更适合处理日期,然后可以利用xs:date//activity/DATE/month-from-date(xs:date(.))https://www.w3.org/TR/xpath-functions/#func-month-from-date上的函数。

© www.soinside.com 2019 - 2024. All rights reserved.