3

私は次のクエリの何が問題になっているのかを理解しようとしています。

for $item in doc("rss.xml")//item
let $title := lower-case($item/title)
let $description := lower-case($item/description)
where contains($title, "keyword") or
  contains($description, "keyword") or
  some $category in $item/category 
    satisfies contains($category, lower-case("keyword"))
return <tr>
  <td>{data($item/title)}</td>
  <td>{data($item/pubDate)}</td>
  </tr>

いくつかの条件を満たす条件を追加した後、構文エラーが発生し始めました。

some $category in $item/category 
        satisfies contains($category, lower-case("keyword"))

私が得ている構文エラーは次のとおりです。

静的エラー[err:XPST0003]:無効な式:構文エラー、予期しない「$」

Zorbaを使用してクエリを処理しています。rss.xmlファイルにはRSSフィードが含まれています。私が言ったように、クエリは2つのcontainsテストだけで正常に機能します。

4

1 に答える 1

3

QuantifiedExprに埋め込むには、 の周りに追加の括弧のペアが必要OrExprです。

                                ... or
  (some $category in $item/category 
    satisfies contains($category, lower-case("keyword")))
return ...

QuantifiedExprよりも優先順位が低くなりますOrExpr。XQuery文法を調べると、を追加するOrExprには が必要であることがわかります。ParenthesizedExprQuantifiedExpr

かっこがない場合、some構文的には aQNameであり$、その後の有効な継続ではありません。したがって、Zorba が不平を言うのは正しいことであり、他の XQuery パーサーもおそらく同じことをするでしょう。

于 2012-08-24T08:11:31.003 に答える