使用XPath比较指定的时间和当前时间

时间:2017-03-12 05:41:00

标签: xml xpath

<em>2017-03-10+08:00</em>

//em                                           ->    2017-03-10+08:00
//em/codepoint-equal(., '2017-03-10+08:00')    ->    true
//em/codepoint-equal(., '')                    ->    false
//em/codepoint-equal(., current-date())        ->    ERROR!

如何在最后一种情况下修复错误?

1 个答案:

答案 0 :(得分:1)

要避免上一种情况下的类型不匹配错误,请在current-date()中包裹string()

//em/codepoint-equal(., string(current-date()))

以便xs:date按预期xs:string显式转换为codepoint-equal()

是否需要进行明确的类型转换?

根据XPath 2.0 function conversion rules

  

如果在上述转换后,结果值与SequenceType Matching的规则不符合预期类型,则type error会被引发 [err:XPTY0004]。请注意,SequenceType Matching的规则允许派生类型的值替换其基类型的值。

请注意使用 permit 这个词而不是 require 。也许在上一种情况下产生错误的XPath库将函数转换规则解释为允许但不要求从xs:date转换为xs:string