0

For 命令を使用してコレクションまたはドキュメントでループを作成する方法は知っていますが、item()* でループを作成するのに問題があります。

item()* の内容:

<Placemark>
    <blabla id="1">
        <value>abcd</value>
    </blabla>
    <blabla id="2">
        <value>abcd</value>
    </blabla>
    ...
</Placemark>
<Placemark>
    ...
</Placemark>

たとえば、<blabla>要素のみが必要です。ドキュメントの古典的なループでは、次のようにアクセスします。

for $x in doc("/db/data.xml")/Placemark
return $x

しかし、item()* のループでは、次のようには機能しません:

declare function local:fct($content as item()*) as item()* {
    for $x in $content/Placemark
    return $x
};

エラーはありません。結果は空白です。なぜそれが機能しないのか誰かが知っていますか?

4

2 に答える 2

2

ループは既に項目を繰り返し処理しているため、ソリューションは空の の子をPlacemark要求します。PlacemarkPlacemark

declare function local:fct(
  $content as element(Placemark)*
) as element(blabla)* {
    for $x in $content
    return $x/blabla
};
于 2013-07-03T18:24:29.923 に答える