0

Xquery について質問があります。出力 xml にタイムスタンプ要素があります。要素が存在する場合にのみ、入力 xml から要素の値を取得する必要があります。それ以外の場合は、既定値を返す必要があります。これを達成するにはどうすればよいですか:

たとえば、入力 xml は次のようになります。

<test>
    <timestamp1>2014-12-31T12:00:00.285Z</timestamp1>
    <timestamp2></timestamp2>
</test>

次の xml を返すには、xquery を記述する必要があります。

<response>
    <time1>2014-12-31T12:00:00.285Z</time1>
    <time2>2038-01-02T00:00:00.285Z</time2>
    <time3>2038-01-02T00:00:00.285Z</time3>
</response>

出力 xml には 3 つの時間要素がすべて含まれている必要があり、空にすることはできないことに注意してください。入力 xml には要素が含まれていませんが (出力 xml の要素が値を取得する場所でした)、出力には対応する要素が必要です。

どんな助けでも大歓迎です!どうもありがとう!!!

4

1 に答える 1

1

timestampX要素が空 の場合、これはデフォルトで出力の時間になります。

declare function local:first-or-default(
  $time as xs:dateTime
) as xs:dateTime
{
  (., xs:dateTime('2038-01-02T00:00:00.285Z'))[1] 
};

let $test := 
  <test>
      <timestamp1>2014-12-31T12:00:00.285Z</timestamp1>
      <timestamp2></timestamp2>
  </test>

return 
  element response {
    $test/timestamp1/element time1 { local:first-or-default(.) }
    $test/timestamp2/element time2 { local:first-or-default(.) }
    $test/timestamp3/element time3 { local:first-or-default(.) }
  } 
于 2013-05-08T19:24:22.320 に答える