0

Web サービスから返された次の XML があります (映画を推測するための 5 つの追加ポイント)。

<ArrayOfSub xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <Sub>
    <SubId>862</SubId>
    <SubStreamId>1</SubStreamId>
    <SubTimeStart>00:01:04.4450000</SubTimeStart>
    <SubTimeEnd>00:01:08.2450000</SubTimeEnd>
    <SubText>Wikus van de Merwe
MNU Alien Affairs

    </SubText>
  </Sub>
  <Sub>
    <SubId>863</SubId>
    <SubStreamId>1</SubStreamId>
    <SubTimeStart>00:02:11.3430000</SubTimeStart>
    <SubTimeEnd>00:02:14.8430000</SubTimeEnd>
    <SubText>Sarah Livingstone
Sociologist, Kempton Park University

    </SubText>
  </Sub>
</ArrayOfSub>

<SubText>次の条件を満たすすべての要素の要素が必要です。

SubTimeStart < now && SubTimeEnd > now

Palm Pre の WebOs アプリ用に、Javascript でこれを行っています。私のprototype.js PeriodicExecuterに適切な解像度が正確にはわかりませんが、1/100秒は問題なく動作しているようです。

現在画面上にあるはずのものを表す要素を返す XPath クエリはどれですか?

4

3 に答える 3

1

これを試して:


var district = 9; // hint

var now = "00:00:00.123"; // manual format is an option?
var xpath = "/ArrayOfSub/Sub["+
    " SubTimeStart <= " + now + " and " +
    " SubTimeEnd   >= " + now + "]/SubText"
 
于 2009-10-05T00:52:06.577 に答える
0

XPath2 は日付と時刻をサポートしているため、WebOs が XPath2 を使用している場合は、次のような簡単なことを実行できます。

//Sub[(SubStartTime < '00:02:13.243') and SubEndTime > '00:02:13.243']

それ以外の場合は、次のように時間を単純な整数に変換できます。

//Sub[
  (concat(substring(SubTimeStart,1,2), substring(SubTimeStart,4,2), substring(SubTimeStart,7)) < '000213.243')
and
  (concat(substring(SubTimeEnd,1,2), substring(SubTimeEnd,4,2), substring(SubTimeEnd,7)) > '000213.243')
]

これらのクエリは、2 番目の項目を選択する必要があります。

于 2009-10-05T00:54:21.740 に答える
0

XPath にはいくつかの日付処理関数がありますが、そのリストにはミリ秒についての言及はないようです。

クエリは次のようになると思います。

nowH = 0;
nowM = 2;
nowS = 26;

/ArrayOfSub/sub     //linebreaks added for readability
    [fn:hours-from-time(SubTimeStart) <= nowH]
    [fn:minutes-from-time(SubTimeStart) <= nowM]
    [fn:seconds-from-time(SubTimeStart) <= nowS]
    [fn:hours-from-time(SubTimeEnd) >= nowH]
    [fn:minutes-from-time(SubTimeEnd) >= nowM]
    [fn:seconds-from-time(SubTimeEnd) >= nowS]
    /SubText
于 2009-10-05T00:30:05.253 に答える