FLWOR式return節メモ

あーあー、return節単体じゃ書けないのか。

FLWORExpr ::= (ForClause | LetClause)+ WhereClause? OrderByClause? "return" ExprSingle

http://www.w3.org/TR/xquery/#id-grammar

for節か、let節が必ずひとつ以上要るのね。
はあ……これくらいならいいけど、全部EBNF覚えてらんないよ。XMLマスターのばーか、ばーか。

要するに、

return (<hoge/>, <piyo/>, <fuga/>)

こんなんダメってこと。

(<hoge/>, <piyo/>, <fuga/>)

FLWOR式じゃなくて、これだけ書くならいい。()はなくてもいい。return節には単一式しか書けないから要る。

yuno.xml

<ひだまりスケッチ xmlns="×365">
  <X><_><X/></_></X>
  <来週も見てくださいね/>
</ひだまりスケッチ>

XQuery

declare default element namespace "×365";
let $_ := fn:doc("yuno.xml")/*[X / _ / X << 来週も見てくださいね]
return
  fn:concat(
    fn:name($_),
    fn:namespace-uri($_),
    " ",
    fn:name($_/*[fn:last()]),
    "!"
  )