我有多个日期为样式的节点:2019-11-16
我想获取论文日期的月份,到目前为止,我已经尝试过此方法以及对此方法的一些更改:
let $DATE:=data(//activity/DATE)
let $month:=substring($DATE, 6, 2)
return $month
但是我有一个错误,说基数与期望的参数不匹配,我知道它是一个与字符串有关的问题,如果我手动插入像'1999-12-24'这样的日期,它将返回期望的值,但是我需要它阅读日期,然后按照子字符串中的指示返回日期,有什么想法吗?我以为data(“ ...”)返回了一个字符串,但似乎没有
[最可能的原因是路径//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上的函数。