1

これが問題です...クエリがあります:

for $item in doc("order.xml")//item 
$name:= doc("catalog.xml")//product[number = $item/@num]/name 
return <item num="{$item/@num" (: a1 :)
    name="{$name}"             (: a2 :)
    quan="{$item/@quantity}"/> (: a3 :)

....コンマはありませんよね?後で、別のクエリについて、「クエリの本文に2つの別々の式があるため、後のコンマfirstresultがないと構文エラーになります」と書かれています。

declare boundary-space preserve;
declare namespace prod = "http://datypic.com/prod";
declare variable $catalog := doc("catalog.xml")//catalog;

<firstResult>{count($catalog/product)}</firstResult>               (: b1 :)
<prod:secondResult>{$catalog/product/number}</prod:secondResult>   (: b2 :)

「個別のクエリ」(b1 と b2) と「同じクエリの個別の部分」(a1、a2、および a3) の間に引かれた線はどこにありますか?

4

1 に答える 1

1

うーん、それだけです...

(a1, a2, a3) は単一の要素ノードですが、複数の行にまたがっています (許可されています!)

一方、(b1、b2) は 2 つの別個の要素ノードであり、シーケンスを作成するにはコンマを入れる必要があります

于 2012-09-21T04:19:58.990 に答える