-1

私が実行した最新の成功したクエリは次のとおりです。

let $doc := doc('test')  
for $v in $doc//item 
where $v/product_info/unit[.='9291']
return (
  <div class="seller_company">{ $v/seller_info/seller_company_id[position() lt 2]/text() } 
  </div>,
  <div class="seller_rating">{ $v/seller_info/seller_rating[position() lt 3]/text() }
  </div>
  )

しかし、2 番目の div で 2 つの結果を受け取るため、構造が正しくないようです。コードを見ると、これらの結果が得られるのは理にかなっています。クエリを再構築しようとして、当惑しています。これが私の進歩です:

let $doc := doc('test')//item
for $v in $doc
where $v/product_info/unit[.='9291']
  let $x := return $v/seller_info/seller_company_id,
    $y := return $v/seller_info/seller_rating
    for $resultx in $x/text()
    return
      <div id="seller_company_id>{ $resultx }</div>
    for $resulty in $y/text()
    return
      <div id="seller_rating">{ $resulty }</div>

xml ファイルは次のとおりです。

<item>
<item_number>1171270</item_number>
<seller_info>
<seller_company_id>6356</seller_company_id>
<seller_rating>C31</seller_rating>
<seller_rating>T150 hr.</seller_rating>
</seller_info>
<product_info>
<unit>2022</unit>
<sinfo>55 cases</sinfo>
<sinfo>Yu-gi-oh trading card pack</sinfo>
<sinfo>.45kg per unit</sinfo>
<sinfo>24.7500kg shipment</sinfo>
</product_info>
<product_info>
<unit>9291</unit>
<sinfo>7 units</sinfo>
<sinfo>Naruto, Classic, action figure</sinfo>
<sinfo>1.8kg per unit</sinfo>
<sinfo>12.6kg shipment</sinfo>
</product_info>
</item>

これはクエリを構造化するのに間違った方法であると感じずにはいられません。なぜなら、さらに複雑な構造を追加しなくても、結果を適切に並べ替えることができるとは思えないからです。誰かが目的の出力を理解できる場合は、クエリの再構築を手伝ってください。

現在の出力:

<div>6356</div><div>C31T150 hr.</div>

望ましい出力:

<div class="seller_company_id">6356</div>
<div class="seller_rating">C31</div>
<div class="seller_rating">T150 hr.</div>
4

1 に答える 1

1

有効なコードを投稿してください。そこにはたくさんの構文エラーがあります!コンパイラーによって受け入れられないコードは非常に悪いスタイルであり、問​​題を自分で修正しようとしていることを示していません。問題が何であるかわからない場合は、短い例を作成してもう一度修正してみてください。本当に問題がわからない場合は、ここで質問してください。

  • let-clausesに戻りません
  • "後に行方不明seller_company_id
  • 欠落しているシーケンス(実際には、前回の質問で答えたものとまったく同じです)

idこれはほぼあなたが望むことをします、私はに変更しませんでしたclass。いくつかの-clausesを削除letしました。読みやすいと思われる場合は、もう一度追加してください。

for $v in doc('test')//item
where $v/product_info/unit[.='9291']
return
    for $resultx in $v/seller_info/seller_company_id/text()
    return
    (
      <div id="seller_company_id">{ $resultx }</div>,
      for $resulty in $v/seller_info/seller_rating/text()
      return
        <div id="seller_rating">{ $resulty }</div>
    )
于 2012-09-20T11:28:35.483 に答える