1

XMLドキュメントでXQueryを実行して、<Start>時間の後に来るかどうかを確認<End>し、それらの数を返すPythonの検証モジュールがあります。クエリは次のとおりです。

    for $d at $count in ./ty:Detections/Detection
        where $d/Start > $d/End
        return $count

これで、ミリ秒が終了時刻に追加され、開始時刻には追加されない場合を除いて、すべてのケースで問題なく機能します。たとえば、次のようになります

        <Start>2009-02-23T02:53:14Z</Start>
        <End>2009-02-23T02:53:14.226Z</End>

明らかに 14 は 14.22 より小さいにもかかわらず、これは常に True を返します。<Start>ここで時刻に小数点以下 1 桁を追加すると機能しますが、より良い解決策はありますか?

4

1 に答える 1

4

おそらく、StartandEnd要素に対して有効なスキーマ バインディングはありません。その場合、クエリは xs:untypedAtomic 比較を実行しています。これにより、実質的に文字列値が"Z"比較されます"."

必要なのは xs:dateTime の比較であるため、要素の値をその型にキャストした後で比較する必要があります。したがって、クエリは次のようになります。

    for $d at $count in ./ty:Detections/Detection
    where xs:dateTime($d/Start) > xs:dateTime($d/End)
    return $count
于 2015-01-28T21:18:20.580 に答える