XPath関数メモ fn:string()
hoge.xml
<course> <master><last>中林</last><first>太郎</first></master> <master><last>中</last><first>林太郎</first></master> </course>
hoge.xq
for $master in fn:doc("hoge.xml")/course/master return <result> <master>{ fn:string($master) }</master> </result>
結果XMLデータ
<result> <master>中林太郎</master> </result> <result> <master>中林太郎</master> </result>
で、教科書読み進めてみたら、こんな解決策が!
<master>{ $master/last/text() } { $master/first/text() }</master>
……。まあいいです……ここではfn:string()の動きが知りたかっただけなので。
ちなみに、
<master>{ $master/last } { $master/first }</master>
これは、要素がそのまま出力されて、
<result> <master><last>中林</last><first>太郎</first></master> </result> <result> <master><last>中</last><first>林太郎</first></master> </result>
こうなります。あと、text()使わずに、fn:string()とかね。やらないけどね。
<master>{ fn:string($master/last) } { fn:string($master/first) }</master>
あ、属性のときはやるか。
piyo.xml
<course> <master last="中林" first="太郎"/> <master last="中" first="林太郎"/> </course>
piyo.xq
for $master in fn:doc("piyo.xml")/course/master return <result> <master>{ fn:string($master/@last) } { fn:string($master/@first) }</master> </result>