1

同じレベルの1つの属性とより高いレベルの親に値を与えることにより、子属性の値を見つける必要があります。
もう 1 つの要件は
、子属性の値を検索することです。その子属性の値は、同じレベルに最大値を持つ別の属性であり、上位レベルの親に指定された値です。

ここに私のXMLがあります

`<root>
  <ACTS>
    <ACT>Play</ACT>
    <A>
      <Day>1</Day>
      <time>Fri Feb 28 13:21:42 IST 2014</time>
    </A>
    <A>
      <Day>2</Day>
      <time>Fri Feb 28 13:21:43 IST 2014</time>
    </A>    
  </ACTS>
  <ACTS>
    <ACT>Study</ACT>
    <A>
      <Day>1</Day>
      <time>Fri Feb 28 13:21:42 IST 2014</time>
    </A>
    <A>
      <Day>2</Day>
      <time>Fri Feb 28 13:21:43 IST 2014</time>
    </A> 
    <A>
      <Day>3</Day>
      <time>Fri Feb 28 13:21:43 IST 2014</time>
    </A>   
  </ACTS>
</root>
`   

要件は、Day=3 および ACT =Study として値を指定することにより、時間属性の値を見つけることです。

ACT =Study および Day= ACT=Study の下の最大値である時間を見つけます

私はxpathで同じことを試みましたが、混乱してしまいました(Nodelistから値を取得できません)。

誰かがこのためにxqueryとJavaでのその使用法を教えてください..

この状況では、xquery または xpath が最適です。

4

1 に答える 1

4
let $x :=

<root>
<ACTS>
<ACT>Play</ACT>
<A>
  <Day>1</Day>
  <time>Fri Feb 28 13:21:42 IST 2014</time>
</A>
<A>
  <Day>2</Day>
  <time>Fri Feb 28 13:21:43 IST 2014</time>
</A>    
</ACTS>
<ACTS>
<ACT>Study</ACT>
<A>
  <Day>1</Day>
  <time>Fri Feb 28 13:21:42 IST 2014</time>
</A>
<A>
  <Day>2</Day>
  <time>Fri Feb 28 13:21:43 IST 2014</time>
</A> 
<A>
  <Day>3</Day>
  <time>Fri Feb 28 13:21:43 IST 2014</time>
</A>   
</ACTS>
</root>

XQuery -

let $maxDay := max($x//ACTS[ACT="Study"]/A/Day)
for $y in $x//ACTS[ACT/text()="Study"]/A[Day/text()=$maxDay]/time
 return $y

XPath -

//ACTS[ACT/text()="Study"]/A[Day/text()=max(//ACTS[ACT="Study"]/A/Day)]/time

あなたは言った-「誰かがこれのためにxqueryとJavaでのその使用法を教えてください..」

これについては、次の投稿を参照してください -

  1. Java で XPath を使用して XML を読み取る方法

  2. Java で XPath を使用して XML を解析する

あなたの Java コードが正しいと仮定すると、あなたの XPath 式はあなたを混乱させたと思います。ところで、上記のリンクはJavaコードの正確さをガイドします。

あなたは尋ねました-「この状況では、xqueryまたはxpathのどちらが最適ですか。」

「XQuery と XPath の違い」を Google で検索すると、答えが得られます。

HTH :)

于 2014-03-12T05:44:45.247 に答える