FLWOR式for節メモ

うう、また教科書にきもい仕様が書いてある……。何なんだよFLWOR式。あ、ちなみにFLWORって、for, let, where, order by, returnの略ですう。

for $x1 in fn:doc("data.xml")/abc/def[1]/x,
    $x2 in fn:doc("data.xml")/abc/def[2]/x
return <result>{ $x1, $x2 }</result>

これと、

for $x1 in fn:doc("data.xml")/abc/def[1]/x
for $x2 in fn:doc("data.xml")/abc/def[2]/x
return <result>{ $x1, $x2 }</result>

これが等価ですってよ、奥さん。中括弧つけてインデントする書き方のほうがきれいだと思うんだけどなあ。どうもW3Cと気が合わないらしい。と言うか、Lisperが多すぎなんだと思う。関数型言語指向の人が。いや、いいんだけど。関数型言語好きだから。

私はどっちで書くの統一しようか。やっぱり前者かな。手続き、引数リストって感じでいいよね。どっちが一般的なんだろ。そもそもXQueryなんて流行ってねーよ。XMLDBは終わりです。終ー了ー。でかい企業は流行りに着いていくのが遅いよなあ……閑話休題。ちなみに教科書は前者。

で、サンプルも載せておくと、

data.xml

<abc>
  <def>
    <x>1</x>
    <x>2</x>
  </def>
  <def>
    <x>3</x>
    <x>4</x>
  </def>
</abc>

結果XMLデータ

<result>
  <x>1</x>
  <x>3</x>
</result>
<result>
  <x>1</x>
  <x>4</x>
</result>
<result>
  <x>2</x>
  <x>3</x>
</result>
<result>
  <x>2</x>
  <x>4</x>
</result>

まあ普通に2重ループですね。だからこそ、上記のFLWOR式はきもい。

うはwwこんなスレあったwwww

【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
http://pc11.2ch.net/test/read.cgi/tech/1140006937/